ArgoCD Application 管理

Vibe Prompt

「幫我用 ArgoCD CLI 建立一個 Application,從 Git Repo 部署到 K8s。」

CLI 指令

# 建立 Application
argocd app create guestbook \
  --repo https://github.com/argoproj/argocd-example-apps.git \
  --path guestbook \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

# 查看狀態
argocd app get guestbook

# 同步
argocd app sync guestbook

# 查看同步歷史
argocd app history guestbook

# 回滾到第 2 版本
argocd app rollback guestbook 2

# 刪除
argocd app delete guestbook

Sync 階段

1. 🔄 從 Git 拉取最新設定
2. 📝 比較 Git 狀態與 K8s 狀態
3. 🔧 套用差異(Create / Update / Delete)
4. ✅ 等待部署完成
5. 📊 更新同步狀態

健康狀態

| 狀態 | 說明 | |------|------| | Healthy | 所有資源正常運行 | | Progressing | 正在部署或更新 | | Degraded | 部分資源異常 | | Missing | 資源不存在 | | Suspended | 暫停 | | Unknown | 無法確定 |


關鍵要點

  • ✅ 請根據本章主題補充具體的學習重點
  • ✅ 建議加入比較表格、程式碼範例或流程圖
  • ✅ 確保內容扎實且有價值

ArgoCD Application 規格

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/username/my-repo.git
    targetRevision: HEAD
    path: k8s/overlays/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

| 欄位 | 說明 | |------|------| | source.repoURL | Git 儲存庫網址 | | source.path | Kubernetes YAML 所在目錄 | | destination.namespace | 部署到哪個 K8s 命名空間 | | syncPolicy.automated.prune | 自動刪除 Git 中已移除的資源 | | syncPolicy.automated.selfHeal | 自動修復手動變更 |



ArgoCD:GitOps 的大腦

ArgoCD 是 Kubernetes 的 GitOps 工具。它持續比對 Git Repo 中的宣告式設定和 K8s 叢集的實際狀態——如果兩者不一致,ArgoCD 會自動修正。

ArgoCD Application

ArgoCD 的核心概念是 Application——一個 Application 定義了「從哪個 Git Repo 的哪個路徑,部署到哪個 K8s 命名空間」。

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/user/my-app-manifests.git
    targetRevision: main
    path: overlays/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

為什麼 ArgoCD 比傳統部署好?

  • 自動修正偏移:有人手動改了 K8s 資源 → ArgoCD 自動恢復成 Git 中的版本
  • 可視化:Web UI 顯示每個 Application 的同步狀態
  • 多叢集:一個 ArgoCD 可以管理多個 K8s 叢集

下一章預告:Kustomize

ArgoCD 負責同步,Kustomize 負責管理不同環境的 YAML 差異——下一章教你如何用 Kustomize 管理 dev/staging/production 三套環境設定。

解鎖完整教學內容

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