GitOps 配置漂移:检测、归因与安全回收

识别集群实际状态与 Git 期望状态的差异,区分紧急操作、控制器默认值和真实漂移。

文章目录 · 4 节

GitOps 的目标不是禁止所有现场操作,而是让每次偏离期望状态都可见、可解释、可回收。自动同步前必须先理解差异来源。

漂移的三种来源

  1. 人工 kubectl edit 或紧急补丁。
  2. 控制器、Webhook 添加的默认字段。
  3. 模板渲染、版本或环境参数不一致。
argocd app diff <APP>
kubectl diff -f rendered-manifests/

对动态字段配置 ignore 规则时要限制到具体 JSON 路径,避免忽略整个资源。

紧急变更流程

现场修复必须同时创建回补 Git 的任务,记录操作者、原因和过期时间。回补前不要开启无条件自动同步,否则控制器可能立即撤销止血动作。

自动回收边界

低风险、验证充分的资源可以自动 self-heal;数据库、网络入口和安全策略更适合先告警再审批。删除孤儿资源前确认它不是由其他控制器管理。

验收指标

跟踪漂移持续时间、手工变更次数、回补耗时和被自动回滚的紧急操作。漂移长期存在,通常说明 Git 流程太慢或所有权不清晰。