适用场景
GitOps 的价值是"环境状态可追溯、可回滚":谁在什么时候改了什么,Git 里全有。前提是权限与分支策略管好,否则变成"用 Git 破坏生产"。
配置步骤(仓库结构与同步策略)
# 目录示例
# apps/order/overlays/prod/kustomization.yaml
# clusters/prod/apps.yaml(ArgoCD Application 清单)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: { name: order-prod, namespace: argocd }
spec:
project: default
source: { repoURL: 'https://git.example.com/k8s.git', path: apps/order/overlays/prod, targetRevision: main }
destination: { server: 'https://kubernetes.default.svc', namespace: order }
syncPolicy: { syncOptions: [CreateNamespace=true] }
关键参数与建议
- 仓库结构:应用清单与集群清单分离,按环境分目录
- 同步策略:手动同步(重要环境)或自动同步(开发环境)
- 差异检测:漂移告警,防止有人手工改动集群
- 回滚:Git revert 即回滚,配合镜像版本可追溯
- 权限:生产分支保护 + 代码评审,禁止直推
容易踩的坑
- 所有环境同目录,容易误改生产
- 自动同步 + 直推主线,缺少评审
- 清单与镜像版本不绑定,回滚不知回到哪
验证与巡检
argocd app list
argocd app diff order-prod
- 巡检:无 OutOfSync 漂移、生产分支受保护
小结
GitOps 验收:任何一次生产变更都能在 Git 找到对应提交,并且能通过 revert 回滚。做不到就还是"脚本+手工"。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。