實戰:GitOps 部署流水線
Vibe Prompt
「幫我建立一個完整的 GitOps 部署流程:GitHub 推送 → CI 建置 Image → Image Updater → ArgoCD 同步 → K8s 部署。」
完整 GitHub Actions
name: Build & Push
on:
push:
branches: [main]
paths-ignore:
- 'k8s/**' # 避免無限循環
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
push: true
tags: |
ghcr.io/${{ github.repository }}:${{ github.sha }}
ghcr.io/${{ github.repository }}:latest
目錄結構
myapp/
├── .github/workflows/build.yml
├── src/
├── Dockerfile
└── k8s/
├── base/
│ ├── deployment.yaml # image: ghcr.io/myorg/myapp:latest
│ ├── service.yaml
│ └── kustomization.yaml
└── overlays/
└── production/
└── kustomization.yaml
課程總結
GitOps 課程完成!
- ✅ GitOps 核心思想
- ✅ ArgoCD 安裝與管理
- ✅ Kustomize 多環境
- ✅ Image Updater
- ✅ 完整 GitOps 流水線
關鍵要點
GitOps Pipeline 流程
開發者提交 PR → CI 自動化測試 → Code Review →
Merge 到 main → ArgoCD 偵測變更 →
自動同步到 K8s → 健康檢查 → 完成
成功 GitOps 的關鍵
| 要素 | 說明 | |------|------| | 完全的宣告式配置 | 所有基礎設施與應用都用程式碼定義 | | Git 作為唯一事實來源 | 任何變更都必須透過 Git | | 自動同步 | 系統自動修正偏離 Git 的狀態 | | Pull 而非 Push | ArgoCD 從 Git 拉取,而非 CI 推送 | | 可觀察性 | 監控同步狀態與應用健康狀態 |
常見陷阱
- Secret 管理:不要將明文 Secret 放在 Git 中,使用 Sealed Secrets 或 External Secrets Operator
- 資料庫遷移:GitOps 不擅長處理有狀態的資料庫變更,需要搭配 Flyway 等工具
- 同步衝突:多個應用同時變更可能導致 Race Condition,需設定同步順序
完整 GitOps 部署流水線
前面的章節學會了 ArgoCD、Kustomize、Image Updater。這章把它們全部整合——建立一條從開發者 Commit 到 Production 部署的完整 GitOps 流水線。
流水線架構
開發者 Push 程式碼
→ CI Pipeline(GitHub Actions):
1. 跑測試
2. 建置 Docker Image
3. Push 到 Container Registry
4. 更新 Manifests 中的 Image Tag
→ Git Push(自動更新 Manifests Repo)
→ ArgoCD 偵測到變更
→ 自動 Sync 到 Staging 環境
→ 人工審核(Promotion to Production)
→ ArgoCD Sync 到 Production 環境
為什麼需要這條流水線?
| 問題 | GitOps 流水線的解法 | |:----|:-----------------| | 部署耗時 | 自動化後從 30 分鐘降到 2 分鐘 | | 人為錯誤 | 所有變更都是程式碼,經過 Code Review | | 環境差異 | Staging 和 Production 用同一組 Manifests | | 事故復原 | git revert 即可 rollback,ArgoCD 自動同步 |
課程總結
這堂 GitOps 課程你從 GitOps 核心思想、ArgoCD 應用管理、Kustomize 環境管理、Image Updater 自動更新到完整 GitOps 流水線——你現在可以為團隊建立一套完整的 GitOps 部署體系。這套方法在許多企業中已經取代了傳統的 CI/CD 部署方式。