ArgoCD GitOps 工作流从零搭建
Raj Kumar | 2026-09-01T08:57:20 | DevOps, Cloud
讲解 ArgoCD 的 Application CRD、同步策略、多集群管理、ApplicationSet 批量部署以及 GitOps 工作流设计。
# ArgoCD GitOps 工作流从零搭建 ## GitOps 核心原则 - Git 仓库是唯一的事实来源 - 所有变更通过 Git 提交驱动 - 自动检测漂移并修复 - 声明式定义期望状态 ## 安装 ArgoCD ```bash kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml # 获取初始密码 argocd admin initial-password -n argocd # 登录 argocd login localhost:8080 --username admin --password ``` ## Application 定义 ```yaml # argocd/applications/my-app.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-production namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: https://github.com/org/k8s-manifests.git targetRevision: main path: apps/my-app/overlays/production destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true selfHeal: true allowEmpty: false syncOptions: - CreateNamespace=true - PrunePropagationPolicy=foreground retry: limit: 3 backoff: duration: 5s factor: 2 maxDuration: 3m ``` ## ApplicationSet 批量部署 ```yaml apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: cluster-apps namespace: argocd spec: generators: - list: elements: - cluster: staging url: https://staging-k8s.example.com - cluster: production url: https://prod-k8s.example.com template: metadata: name: 'my-app-{{cluster}}' spec: source: repoURL: https://github.com/org/k8s-manifests.git path: 'apps/my-app/overlays/{{cluster}}' destination: server: '{{url}}' namespace: my-app ``` ## 回滚操作 ```bash # 查看历史 argocd app history my-app-production # 回滚到指定版本 argocd app rollback my-app-production 3 # 手动同步 argocd app sync my-app-production --revision HEAD~1 ``` ArgoCD 的 Web UI 提供了直观的应用拓扑图和同步状态视图,配合 Notification Controller 可以将部署事件推送到 Slack 或企业微信。