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

GitOps 是一套以 Git 仓库为运维中心的云原生交付模式。其核心思想可归纳为三个相互支撑的支柱:声明式配置、不可变基础设施、Git 作为单一事实来源。理解这三者之间的逻辑链条,是后续调度优化与同步窗口准入配置的基础。

1.1 声明式配置(Declarative Configuration)

声明式配置要求运维人员描述系统的期望状态,而非编写达到该状态的操作步骤。GitOps 控制器持续对比集群当前状态与 Git 仓库中的期望状态,并自动执行调和(Reconciliation)操作。

对比维度 声明式(Declarative) 命令式(Imperative)
关注点 系统应该是什么样子 如何一步步操作
幂等性 天然幂等,重复应用结果一致 需手动保证幂等,易产生漂移
版本管理 YAML/JSON 文件可直接纳入 Git CLI 命令难以追溯和回滚
典型工具 Kubernetes YAML、Terraform、Crossplane kubectl run、helm install 命令
适用场景 生产环境、合规审计、多集群 调试、临时测试、快速验证
实践要点:所有 Kubernetes 资源(Deployment、Service、ConfigMap 等)必须写成完整的 YAML 清单,存放在 Git 仓库中。禁止通过 kubectl edit 或 kubectl scale 直接修改集群状态。

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

不可变基础设施强调:一旦部署,运行中的组件不应被原地修改。任何变更都应通过替换整个组件(如重建 Pod、替换镜像版本)来实现。这一原则与 GitOps 的声明式调和机制天然契合——控制器检测到期望状态变化后,直接替换而非修补。

  • 优势一:消除配置漂移 —— 服务器不会因为“临时修复”而偏离基线。
  • 优势二:可预测回滚 —— 回滚只需将 Git 仓库中的配置恢复到旧版本,控制器自动重建。
  • 优势三:一致性保障 —— 开发、测试、生产环境使用相同的镜像和配置清单。
  • 优势四:安全合规 —— 所有变更都有 Git 记录,不存在“幽灵修改”。
常见误区:不可变不等于“不更新”。更新时通过修改 Git 仓库中的镜像标签或资源配置,触发控制器执行滚动替换。原地 exec 进入容器修改配置文件会破坏不可变原则,应通过 ConfigMap 版本更新来实现。

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

在 GitOps 体系中,Git 仓库不仅是代码存储库,更是整个集群的权威状态数据库。所有对集群的变更必须通过 Pull Request 提交到 Git,经审核后合并,再由 GitOps 控制器自动同步到目标环境。

# 典型的 GitOps 工作流示例
# 1. 开发者修改 deployment.yaml 中的镜像版本
# 2. 提交 PR 到 Git 仓库
# 3. 代码审查通过后合并到 main 分支
# 4. GitOps 控制器(如 Argo CD)检测到 main 分支变更
# 5. 控制器对比 Git 中的期望状态与集群当前状态
# 6. 控制器执行调和,将集群更新到期望状态
关键指标:Git 仓库应包含集群的完整配置——命名空间、RBAC、网络策略、存储类、监控告警规则等。任何无法从 Git 仓库重建的集群状态,都属于“不可审计的漂移”。
GitOps 三大核心概念关系图 Git 单一事实来源 (权威状态数据库) 声明式配置 描述期望状态 不可变基础设施 替换而非修补 自动调和循环 持续对比 → 自动同步 写入 驱动 控制器读取 状态反馈 三者形成闭环:声明式配置定义期望 → Git 存储权威状态 → 不可变基础设施保证替换一致性 → 自动调和循环驱动

1.4 三者协同:GitOps 工作流全景

将上述三个概念串联起来,形成完整的 GitOps 工作流。下图展示了从代码提交到集群同步的端到端路径,以及调度优化与同步窗口准入配置在其中的位置。

GitOps 端到端工作流(含调度与同步窗口) 开发者 修改 YAML / 镜像 Tag Git 仓库 PR 审查 + 合并 GitOps 控制器 检测变更 + 对比状态 同步窗口 准入判断 目标 Kubernetes 集群 调度优化策略 → 资源分配 → 应用运行 准入通过后同步 状态反馈(Drift 检测) 本课程聚焦区域: ① 同步窗口准入配置(阶段 4)—— 控制变更何时生效,避免高峰期调度抖动 ② 调度优化策略(阶段 5)—— 在集群内部实现资源合理分配与负载均衡

1.5 核心概念总结

概念 一句话定义 对 GitOps 的价值
声明式配置 描述期望状态,而非操作步骤 使配置可版本化、可审计、可自动化调和
不可变基础设施 替换组件而非原地修改 消除配置漂移,保证环境一致性
Git 单一事实来源 Git 仓库是集群状态的权威记录 提供变更历史、回滚能力、协作基础