GitOps 的目标不是禁止所有现场操作,而是让每次偏离期望状态都可见、可解释、可回收。自动同步前必须先理解差异来源。
漂移的三种来源
- 人工
kubectl edit或紧急补丁。 - 控制器、Webhook 添加的默认字段。
- 模板渲染、版本或环境参数不一致。
argocd app diff <APP>
kubectl diff -f rendered-manifests/
对动态字段配置 ignore 规则时要限制到具体 JSON 路径,避免忽略整个资源。
紧急变更流程
现场修复必须同时创建回补 Git 的任务,记录操作者、原因和过期时间。回补前不要开启无条件自动同步,否则控制器可能立即撤销止血动作。
自动回收边界
低风险、验证充分的资源可以自动 self-heal;数据库、网络入口和安全策略更适合先告警再审批。删除孤儿资源前确认它不是由其他控制器管理。
验收指标
跟踪漂移持续时间、手工变更次数、回补耗时和被自动回滚的紧急操作。漂移长期存在,通常说明 Git 流程太慢或所有权不清晰。