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。不要带着不明差异继续发布。

相关推荐
潘正翔43 分钟前
k8s进阶_Harbor镜像仓库
git·云原生·容器·kubernetes·gitee·github
江湖有缘1 小时前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器
VortMall2 小时前
出海引流运维双升级|VortMall微服务商城系统v1.3.12 升级更新
运维·微服务·facebook
zzzll11112 小时前
Spring Cloud 微服务:从入门到实践
spring·spring cloud·微服务
雨辰AI3 小时前
K8s 达梦数据守护集群部署|容器化高可用生产落地指南
云原生·容器·kubernetes
张忠琳3 小时前
【NPU】Ascend Docker Runtime v26.0.1 之一 runtime/main.go — 超深度分析
云原生·容器·架构·kubernetes·npu·docker-runtime
刹那芳华19924 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
docker·容器·llama
Freed&4 小时前
K8s 1.29 集群部署文档
云原生·容器·kubernetes
扶疏52519 小时前
Prometheus+Prometheus Adapter+metrics-server+Ingress实现k8s水平自动扩缩容(HPA)
容器·kubernetes·prometheus
张忠琳20 小时前
【NPU】Ascend Docker Runtime v26.0.1 系统级架构分析
云原生·容器·kubernetes·npu·docker-runtime