首页/开发/CI/CD 与发布速查/Argo CD 回滚与历史同步
质量门禁与回滚51 条

Argo CD 回滚与历史同步

GitOps 下有两种回退方式:在 Argo CD 历史快照上回滚,或回退 Git 提交让应用重新同步;团队需约定单一入口,避免双轨。

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

两种回退路径是什么

GitOps 下有两种回退方式:在 Argo CD 应用历史快照上直接回滚,或回退 Git 提交让应用重新同步。关键分歧在于:界面回滚不修改 Git,若开启自动同步与 selfHeal,很快会被纠回 Git 声明状态,故障版本再被拉回来。团队需要约定单一入口——以 Git 为准的团队把回滚定义为 revert 提交。

基本信息

方式一Application 历史版本回滚(界面或 CLI)
方式二回退 Git 提交(revert),等待自动同步
风险两种方式混用:Git 与实际状态分叉,被 selfHeal 纠偏
建议以 Git 为准的团队约定:回滚等于 revert 提交
前提先确认自动同步与 selfHeal 的开启状态

典型使用场景

  • 紧急回退:revert 提交后等待同步,链路全自动且留痕
  • 历史对比:用应用历史快照确认差异来源
  • 漂移修复:界面手改造成的漂移,用同步纠回 Git 声明
  • 复盘定位:回滚记录与 Git 历史对齐,找到引入问题的提交
  • 演练:定期演练回滚路径,确认权限与耗时
  • 双轨治理:把统一回退入口写进事故手册

Git 侧回退示例

Git 侧回退示例
git revert --no-edit <bad-commit>   # 生成反向提交,历史留痕
git push origin main
argocd app get web --refresh        # 观察同步状态变化
argocd app history web              # 查看部署历史版本

两种方式对照

维度界面回滚Git revert
变更对象集群实际状态Git 仓库声明
与 selfHeal 关系会被纠回无冲突
留痕位置Argo CD 历史Git 提交历史
适用场景无自动同步时的应急常规与推荐路径
界面回滚不修改 Git:若开启自动同步与 selfHeal,很快会被纠回 Git 声明状态。
先确认同步策略:自动同步与 selfHeal 的组合决定哪种回退方式真正有效。
回滚也要确认结果:用 argocd app get 看同步与健康状态,别停留在假设上。

操作注意

  • 多环境回滚:各环境是独立应用,按环境逐个执行并确认结果
  • 审计价值:Git 侧回滚保留完整提交历史,复盘中能查清问题版本的来路
同步状态刷新有延迟:观察回滚结果时多等一轮刷新,再判定是否完成。

易错点

  • 不回退 Git 只做界面回滚:自动同步会把故障版本再拉回来
  • revert 后无人确认同步结果:回滚是否生效停留在假设上
  • 回滚期间又推新提交:两条线交叉拉长故障窗口,先冻结相关提交再回退
  • 平时不演练回滚权限:事故时才发现没有 revert 权限,日常就要演练

数据来源与参考

  • Argo CD 官方文档《Sync Policies》
  • Argo CD 官方文档(app rollback 命令)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌