All checks were successful
CD Pipeline / deploy (push) Successful in 2m34s
E-1: K8s configmap 對齊三主機級聯(清舊配置遺留) - k8s/02-configmap.yaml: - 移除寫死的 OLLAMA_HOST=192.168.0.188:11434(早已過時) - 改注入 OLLAMA_HOST_PRIMARY/SECONDARY/FALLBACK 三個變數 - llama3:70b → qwen3:8b(與目前 prod 一致) - k8s/gcp/02-configmap.yaml: - 移除「OLLAMA_HOST=空 + AI_PROVIDER=gemini」自相矛盾 - 改三主機級聯 + AI_PROVIDER=ollama(與 docker-compose.yml 一致) E-2: ppt_audit 加 RAG「相似失敗修法」 - 對最近 3 筆 audit_status='failed'/'error' 跑 rag_service.query - 從 ai_insights 召回相似案例(cosine ≥ 0.6, top 2) - template 加「RAG 自動修法建議」card E-3: Telegram obs_health/obs_budget 加 inline action button (L2) - cmd:obs_health:任一主機標記異常時,inline 顯示「🩹 修 GCP-A/GCP-B/111」按鈕 - cmd:obs_heal:{label}:新 handler,在 Telegram 內直接觸發 AutoHeal (白名單 GCP-A/GCP-B/111,非 unhealthy 拒絕) - cmd:obs_budget:warn 時 inline 顯示「⚡ 立即重算節流狀態」按鈕 - cmd:obs_force_throttle:新 handler,Telegram 內直接觸發 evaluate_throttle_status 最終升級對應: - RAG 整合 4/6 → 5/6(補 ppt_audit) - AI 自動化:Web L2×4 + Telegram L2×2 = 6 個一鍵自動化入口 - K8s 配置一致性:三套 (docker-compose / k8s/* / k8s/gcp/*) 統一 指向 GCP-A → GCP-B → 111 三主機鏈 Phase 38+39+40+41 累計 7 commits 觀測台戰役完整收官。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GCP K8s 部署指南
概述
GCP 環境使用本地映像部署,不依賴 Docker Registry。
部署架構
本地/CI ──> docker build ──> docker save ──> scp ──> GCP VM
│
▼
k3s ctr images import
│
▼
kubectl rollout restart
快速部署
方法一:在 GCP VM 上執行
# SSH 到 GCP
gcloud compute ssh momo-pro-gcp --zone=asia-east1-b --project=astral-gateway-484913-d7
# 同步程式碼
cd ~/momo-pro-system
git pull
# 執行部署
./k8s/gcp/deploy.sh --full
方法二:從本地推送
# 在本地建構映像
docker build -t momo-pro-system:latest .
# 儲存並傳輸
docker save momo-pro-system:latest | gzip > /tmp/momo.tar.gz
scp /tmp/momo.tar.gz wooo@35.194.233.141:/tmp/
# SSH 到 GCP 執行匯入
ssh wooo@35.194.233.141 << 'EOF'
gunzip -c /tmp/momo.tar.gz | sudo k3s ctr images import -
sudo kubectl rollout restart deployment/momo-app deployment/momo-scheduler -n momo
rm /tmp/momo.tar.gz
EOF
方法三:透過 GitLab CI/CD
推送到 main 分支後,在 GitLab UI 手動觸發 deploy-gcp Job。
配置檔案說明
| 檔案 | 說明 |
|---|---|
00-namespace.yaml |
Kubernetes namespace |
01-secrets.yaml |
密碼和敏感資訊 |
02-configmap.yaml |
環境變數配置 |
03-postgres.yaml |
PostgreSQL StatefulSet |
04-momo-app.yaml |
主應用 Deployment |
05-scheduler.yaml |
排程器 Deployment |
deploy.sh |
一鍵部署腳本 |
與 UAT 的差異
| 項目 | UAT | GCP |
|---|---|---|
| 映像來源 | Registry (registry.wooo.work) | 本地構建 |
| imagePullPolicy | Always | Never |
| imagePullSecrets | registry-secret | 無 |
| Ollama AI | http://192.168.0.188:11434 | 不可用 (內網) |
| AI Provider | ollama | gemini |
| 域名 | mo.wooo.work | momo.wooo.work |
常用命令
# 查看 Pod 狀態
sudo kubectl get pods -n momo
# 查看日誌
sudo kubectl logs -f deployment/momo-app -n momo
# 進入 Pod
sudo kubectl exec -it deployment/momo-app -n momo -- /bin/bash
# 重啟服務
sudo kubectl rollout restart deployment/momo-app -n momo
# 查看服務
sudo kubectl get svc -n momo
資料庫管理
# 進入 PostgreSQL
sudo kubectl exec -it momo-postgres-0 -n momo -- psql -U momo -d momo_analytics
# 備份資料庫
sudo kubectl exec momo-postgres-0 -n momo -- pg_dump -U momo momo_analytics > backup.sql
# 還原資料庫
cat backup.sql | sudo kubectl exec -i momo-postgres-0 -n momo -- psql -U momo momo_analytics
故障排除
Pod 無法啟動
# 查看詳細狀態
sudo kubectl describe pod -n momo <pod-name>
# 查看事件
sudo kubectl get events -n momo --sort-by='.lastTimestamp'
映像找不到
# 檢查映像是否已匯入
sudo k3s ctr images list | grep momo
# 重新匯入
docker save momo-pro-system:latest -o /tmp/momo.tar
sudo k3s ctr images import /tmp/momo.tar
連線問題
# 檢查服務
sudo kubectl get svc -n momo
# 測試內部連線
sudo kubectl exec -it deployment/momo-app -n momo -- curl -s http://momo-postgres:5432