實戰: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 部署方式。

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!