1. GitOps 核心概念:声明式配置、状态同步、不可变基础设施、Git 作为单一事实来源

GitOps 是一种以 Git 仓库为单一事实来源(Single Source of Truth)的运维模式,它将声明式配置与自动化状态同步相结合,实现基础设施与应用的持续交付。理解以下四个核心概念,是掌握 Flux 与 Argo CD 选型对比的基础。

1.1 声明式配置(Declarative Configuration)

声明式配置描述系统“应该是什么状态”,而非“如何达到该状态”。运维人员只需在 Git 仓库中定义期望的最终状态(如 Deployment 副本数、Service 端口、ConfigMap 内容),GitOps 工具会自动将实际集群状态收敛至该期望状态。

对比维度 声明式配置 命令式配置
定义方式 YAML/JSON 描述期望状态 CLI 命令逐步操作
可审计性 Git 历史完整记录变更 依赖操作日志,易丢失
回滚方式 Git revert 即可恢复 需手动逆向操作
典型工具 Flux、Argo CD、Kustomize kubectl run、helm install --set
实践要点:声明式配置要求所有资源清单(Deployment、Service、Ingress 等)都存储在 Git 仓库中,避免使用 kubectl run 或 helm install --set 等命令式操作破坏单一事实来源。

1.2 状态同步(State Synchronization)

状态同步是 GitOps 的核心循环机制:GitOps Operator 持续比较 Git 仓库中的期望状态与 Kubernetes 集群的实际状态,当两者不一致时自动执行协调(Reconciliation)操作,将集群状态拉回期望状态。

GitOps 状态同步循环 Git 仓库 期望状态(YAML) GitOps Operator 差异检测 + 协调 Kubernetes 集群 实际状态 拉取期望状态 应用协调 反馈实际状态 状态回写(可选) 同步循环说明 1. Operator 定期拉取 Git 仓库中的期望状态 2. 对比集群实际状态,计算差异(Diff) 3. 执行协调操作(Apply/Delete),使集群收敛至期望状态
关键指标:Flux 默认同步间隔为 1 分钟(可配置),Argo CD 默认同步间隔为 3 分钟。在资源配额校准场景中,较短的同步间隔能更快发现配额超限并触发告警。

1.3 不可变基础设施(Immutable Infrastructure)

不可变基础设施强调:一旦部署,运行中的组件不应被修改。任何变更都应通过替换整个组件(如重建 Pod、升级镜像版本)来实现,而非对运行中的容器执行 exec 或 patch 操作。

  • 优势:消除配置漂移(Configuration Drift),环境一致性高,回滚简单(直接切换至旧版本镜像)。
  • 与 GitOps 的关系:Git 仓库中的每次提交都对应一个不可变的基础设施版本,Operator 通过更新镜像 Tag 或 Helm Chart 版本来触发滚动更新。
  • 资源配额校准场景:当 Namespace 资源配额(ResourceQuota)需要调整时,应修改 Git 仓库中的配额 YAML 文件,而非直接 kubectl edit resourcequota。

1.4 Git 作为单一事实来源(Single Source of Truth)

在 GitOps 模型中,Git 仓库是唯一被信任的权威数据源。所有环境(开发、预发、生产)的期望状态都必须在 Git 仓库中定义,任何手动修改集群的行为都会在下一次同步时被覆盖。

原则 说明 违规后果
唯一性 所有资源定义只存在于 Git 仓库 集群状态与 Git 不一致,同步失败
可追溯 每次变更都有 Git Commit 记录 无法定位谁在何时修改了配额
自动化 Operator 自动将集群同步至 Git 状态 手动修改被覆盖,运维混乱
权限控制 通过 Git 仓库的 PR/Merge 流程管控变更 未经审核的变更直接生效
Git 作为单一事实来源架构 Git 仓库 单一事实来源 开发 / 运维人员 提交 PR → Merge 生产集群 同步期望状态 预发集群 同步期望状态 开发集群 同步期望状态 所有集群的期望状态均来自同一个 Git 仓库,确保环境一致性
常见误区:部分团队将 Git 仓库仅作为“备份”使用,仍通过 kubectl 直接修改集群。这破坏了单一事实来源原则,导致 Git 状态与集群状态永久偏离,GitOps 工具将无法正常工作。在资源配额校准场景中,务必坚持“先改 Git,再同步集群”的工作流。

1.5 四个核心概念的关系总结

声明式配置是 GitOps 的“语言”,Git 仓库是“存储介质”,状态同步是“执行引擎”,不可变基础设施是“安全约束”。四者共同构成 GitOps 的闭环体系,为 Flux 与 Argo CD 的资源配额校准能力提供了理论基础。

  • 声明式配置 → Git 仓库:将期望状态以 YAML 形式提交至 Git。
  • Git 仓库 → 状态同步:Operator 从 Git 拉取配置并对比集群状态。
  • 状态同步 → 不可变基础设施:通过替换而非修改的方式实现变更。
  • 不可变基础设施 → 声明式配置:每次变更都生成新的不可变版本,更新 Git 仓库中的声明式配置。