Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 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>
144 lines
3.3 KiB
Markdown
144 lines
3.3 KiB
Markdown
# 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 <pod-name>
|
|
|
|
# 查看事件
|
|
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
|
|
```
|