GitOps 漂移检测:集群里改了配置,Git 还以为一切正常

GitOps 漂移检测:集群里改了配置,Git 还以为一切正常

GitOps 的理念是 Git 作为事实来源。但生产里总会有人临时改集群配置:手动 scale、临时 patch、紧急改 ConfigMap。如果没有漂移检测,Git 里看起来一切正常,集群里已经变了。

GitOps 不是只会同步,也要能发现现实偏离声明。

一、什么是配置漂移

flowchart TD A[Git Desired State] --> C[Drift Detection] B[Cluster Actual State] --> C C --> D[Diff] D --> E[Sync Or Alert]

漂移就是实际状态和声明状态不一致。它可能来自人工操作,也可能来自控制器动态修改。

二、漂移要分类

yaml 复制代码
drift_types:
  expected:
    - status
    - managed_fields
  suspicious:
    - image_tag_changed
    - replicas_changed
    - env_changed
    - resource_limit_removed

不是所有 diff 都要告警。status 字段变化正常,镜像和环境变量变化就要小心。

三、自动修复要谨慎

有些 GitOps 工具可以自动 sync,把集群拉回 Git 状态。但紧急修复期间,自动覆盖可能制造二次事故。

text 复制代码
auto_sync_policy:
  dev: enabled
  staging: enabled
  prod: manual_approval

生产环境是否自动修复,要结合团队值班和变更流程决定。

四、漂移也要进审计

发现漂移时,要记录资源、字段、发现时间、处理人和处理结果。

json 复制代码
{
  "resource": "deployment/api",
  "field": "spec.replicas",
  "desired": 4,
  "actual": 8
}

这类记录能帮助复盘:为什么有人绕过 Git 改集群?

漂移检测也要和紧急变更流程配合。生产事故中,值班人员可能必须临时 patch 集群。此时应该有 break-glass 流程:记录原因、设置过期时间、事后补 PR。

yaml 复制代码
break_glass:
  reason_required: true
  expires_in: "2h"
  follow_up_pr_required: true

这样既保留紧急处理能力,又不会让临时改动长期漂在集群里。

漂移报告最好按风险排序。镜像、环境变量、资源限制、权限相关字段优先级高;副本数变化次之;status 类字段直接忽略。否则值班人员会被大量无意义 diff 淹没。

五、总结

GitOps 漂移检测要比较 Git 声明状态和集群实际状态,区分正常差异和危险差异,并谨慎处理自动修复。

Git 是事实来源,但集群才是正在运行的现实。两边不一致时,系统必须知道。

GitOps 的成熟度,不在于永远没人手改,而在于手改发生后能被发现、解释、收敛回 Git。

漂移检测还可以作为发布前检查。新版本发布前,先确认目标命名空间没有未解释漂移。否则你以为发布覆盖的是 Git 状态,实际覆盖的是一堆临时改动。

text 复制代码
pre_deploy_check:
  drift_detected: false
  break_glass_expired: false
  pending_manual_patch: false

如果存在漂移,就先决定:把集群状态回写 Git,还是把集群恢复到 Git。不要带着不明差异继续发布。

相关推荐
晚安code1 小时前
RPC 到底是什么:微服务内部调用的首选,以及它藏起来的三个坑
微服务·rpc
晚安code1 小时前
微服务架构和单体架构的区别:拆之前你得先想清楚这件事
微服务·架构
更深兼春远2 小时前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify
小白的码BUG之路6 小时前
Docker -- No space left on device
运维·docker·容器
wzq11_6666 小时前
Kubernetes集群——Service篇(详细讲解!!!)
云原生·容器·kubernetes
程序员老陆7 小时前
Docker 命令全景指南:从镜像构建到生产运维
运维·docker·容器
code_slave(码畜)20 小时前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构
code_slave(码畜)1 天前
微服务架构落地:基础服务 —— 报表服务(AI 集成篇:AI 增强报表能力)
人工智能·spring boot·spring cloud·微服务·架构
code_slave(码畜)1 天前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
江湖有缘1 天前
3款开源绘图工具整理合集,可Docker一键部署!
docker·容器·开源