Files
ewoooc/k8s/gcp
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 01:21:13 +08:00
..

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