# GCP K8s 部署指南 ## 概述 GCP 環境使用本地映像部署,不依賴 Docker Registry。 ### 部署架構 ``` 本地/CI ──> docker build ──> docker save ──> scp ──> GCP VM │ ▼ k3s ctr images import │ ▼ kubectl rollout restart ``` ## 快速部署 ### 方法一:在 GCP VM 上執行 ```bash # 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 ``` ### 方法二:從本地推送 ```bash # 在本地建構映像 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 | ## 常用命令 ```bash # 查看 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 ``` ## 資料庫管理 ```bash # 進入 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 無法啟動 ```bash # 查看詳細狀態 sudo kubectl describe pod -n momo # 查看事件 sudo kubectl get events -n momo --sort-by='.lastTimestamp' ``` ### 映像找不到 ```bash # 檢查映像是否已匯入 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 ``` ### 連線問題 ```bash # 檢查服務 sudo kubectl get svc -n momo # 測試內部連線 sudo kubectl exec -it deployment/momo-app -n momo -- curl -s http://momo-postgres:5432 ```