ArgoCD GitOps
K8s GitOps 持续交付 — 同步 git 仓库到集群状态。
CI/CD高级
为什么
ArgoCD 监视 git 仓库并同步到 K8s 集群。Git 是真相源 — 每变更可审计,回滚是 git revert。
DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。
何时使用
K8s GitOps 用 ArgoCD。非 K8s 避免(多集群用 Flux)。
如何做
1. 安装 — 集群中 argocd install
2. 应用 — 从 git 仓库 argocd app create
3. 同步 — 自动或手动同步
4. 健康 — ArgoCD 检查应用健康
5. 回滚 — git revert,ArgoCD 同步
6. 多集群 — 注册外部集群
7. App-of-apps — 管理多应用
示例
# 安装 ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 从 git 创建应用
argocd app create myapp --repo https://github.com/user/k8s-manifests --path apps/myapp --dest-server https://kubernetes.default.svc --dest-namespace default --sync-policy auto
# Application CRD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: { name: myapp, namespace: argocd }
spec:
source: { repoURL: https://github.com/user/k8s-manifests, path: apps/myapp }
destination: { server: https://kubernetes.default.svc, namespace: default }
syncPolicy: { automated: { prune: true, selfHeal: true } }
常见问题
- ⚠应用不同步 — 集群手动变更,ArgoCD 检测漂移
- ⚠同步失败 — 清单错误,ArgoCD UI 查同步状态
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓自动同步配 selfHeal — ArgoCD 回滚手动变更,git 是真相
- ✓用 app-of-apps 模式 — 一应用管多应用,层次 GitOps
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求