两种回退路径是什么
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 侧回滚保留完整提交历史,复盘中能查清问题版本的来路
同步状态刷新有延迟:观察回滚结果时多等一轮刷新,再判定是否完成。