首页/开发/CI/CD 与发布速查/Argo CD 与 GitOps 持续部署
工具链要点63 条

Argo CD 与 GitOps 持续部署

把集群期望状态放进 Git:Argo CD 持续对比并同步,自动纠偏;发布等价于合并 Git 变更,回滚等价于回到上一个提交。

CI/CD 与发布速查开发更新于 2026-10-13

Argo CD 是什么

Argo CD 是 Kubernetes 上的 GitOps 持续部署控制器:把集群期望状态放进 Git 仓库,它持续对比期望与实际,并按策略同步。发布等价于合并 Git 变更,回滚等价于回到上一个提交。与 CI 解耦:CI 只负责产出镜像并更新清单仓库里的版本号,集群侧由 Argo CD 写入。清单本身可以是 Helm Chart、Kustomize 或纯 YAML 目录。

基本信息

模型Git 仓库为期望状态的唯一来源
同步手动或自动(automated,含 selfHeal 与 prune)
回滚选历史版本回退或 revert 提交
观察应用树展示资源层级、同步与健康状态
健康聚合各资源的健康状态供值班一眼判断

典型使用场景

  • 清单仓库模式:应用清单与代码仓分离,环境差异用 overlays 表达
  • 自动纠偏:手工改集群被 selfHeal 还原,集群状态回归 Git
  • 多环境多集群:同一套清单按目录部署到 dev/prod 等目标
  • 回滚:history 选择历史版本回退,或回退 Git 提交再同步
  • 权限收敛:集群只允许 Argo CD 写入,人走 Git 评审流程

Application 资源

Application 资源
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: {name: web, namespace: argocd}
spec:
  project: default
  source:
    repoURL: https://git.example.com/ops/web.git
    targetRevision: main        # 跟踪分支或标签
    path: overlays/prod         # 环境对应目录
  destination:
    server: https://kubernetes.default.svc
    namespace: prod
  syncPolicy:
    automated:
      prune: true               # 删除已从 Git 移除的资源
      selfHeal: true            # 偏差自动纠偏

同步状态读法

状态含义处理
Synced集群与 Git 一致无需动作
OutOfSync存在偏差先看 diff 再决定同步或改 Git
Progressing正在同步中观察是否推进,卡住查资源事件
Degraded资源不健康看应用树定位到具体对象
Unknown无法获取状态检查集群连通与权限
开启自动同步与 prune 后直接改集群会被纠偏:紧急手工修改要回写 Git 或临时停止自动同步,否则改动会被还原甚至被 prune 删除。
CI 与 CD 分工写清楚:CI 只推镜像并更新清单仓库,部署动作全部交给 Argo CD,避免两边同时写集群。
清单仓库同样走 PR 评审:targetRevision 跟踪分支或标签都行,关键是把「谁能改清单」与代码仓同等管控。

易错点

  • Git 与集群长期分叉:自动同步把计划外改动全部还原,手工操作必须先回写 Git
  • prune 删除策略未评估:自动清理误删资源影响面大,先小环境验证再开
  • 多环境共用一份清单不做区分:改一处波及全部环境,用 overlays 或分支隔离
  • 同步卡在 Progressing 无人跟进:应用长时间未收敛,要对同步耗时设告警
  • 只在界面点同步不留记录:集群改动来源不可追溯,同步尽量由 Git 触发或留操作日志

数据来源与参考

  • Argo CD 文档《Declarative Setup》
  • Argo CD 文档《Sync Policies》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌