GitOps实践指南

GitOps 原则

原则描述
声明式系统状态在 Git 中声明式定义
版本化Git 是唯一事实来源,保留完整历史
自动化变更由 Agent 自动应用
持续协调Agent 持续确保实际状态与期望状态一致

ArgoCD Application

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/myorg/my-app-config targetRevision: HEAD path: k8s/overlays/production destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true # 删除已移除的资源 selfHeal: true # 撤回手动变更 syncOptions: - CreateNamespace=true retry: limit: 5 backoff: duration: 5s factor: 2

Flux CD Kustomization

apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: my-app namespace: flux-system spec: interval: 1m url: https://github.com/myorg/my-app-config ref: branch: main --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: my-app namespace: flux-system spec: interval: 10m sourceRef: kind: GitRepository name: my-app path: ./k8s/production prune: true