GitOps 常被说成「把 Git 当数据库」,更贴近工程的说法是:Git 仓库里的声明式描述是期望状态,集群里的控制器不断对齐当前状态与期望状态。
和「脚本 SSH 部署」的差别
- 传统脚本:每次执行是一次命令式动作,容易漂移、难审计。
- GitOps:变更先合并进仓库,再自动或半自动应用到集群,历史可追溯、可回滚。
谁在「对齐」
- 集群内(或侧车)的 Operator / Agent 周期性拉取或订阅仓库变更。
- 发现差异时执行 apply 或 sync,并报告状态(成功、冲突、需人工)。
和 CI/CD 的关系
- CI 管构建与制品:镜像、Helm chart、Kustomize 覆盖层。
- CD / GitOps 管发布:把「已审核的清单」推到目标环境,权限与审批可放在仓库流程里(PR、CODEOWNERS)。
实践建议
- 单仓库 vs 多仓库按团队规模选,关键是边界清晰与权限最小化。
- 机密不要明文进 Git,用 sealed-secrets、外部密钥管理等与 GitOps 配合。
一句话
GitOps 的价值在于:把发布变成可审计、可回滚的变更流,而不是多一个炫酷工具。