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