声明式 GitOps 应用管理
Argo CD 是一款专为 Kubernetes 设计的、声明式的、遵循 GitOps 持续交付范式的工具。它以 Git 仓库作为“单一可信源”,自动监控 Git 中的 YAML 变化并同步部署到 Kubernetes 集群中。
1. 核心应用模型(Application CRD)
在 GitOps 工作流中,Argo CD 的“应用”本身也是通过 Kubernetes 资源进行声明式管理的。
以下是一个标准的 application.yaml 配置,声明了从特定 GitHub 仓库拉取 YAML 并自动部署到生产集群的流程:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: prod-user-center
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io # 删除 Application 时自动删除 K8s 集群中部署的关联资源
spec:
project: default
# 数据源:包含应用部署清单的 Git 仓库
source:
repoURL: 'https://github.com/company-ops/k8s-manifests.git'
targetRevision: HEAD # 跟踪的主分支
path: apps/user-center # YAML 文件所在的子文件夹路径
# 部署目的地
destination:
server: 'https://kubernetes.default.svc' # 默认本地 K8s 集群
namespace: default
# 同步策略
syncPolicy:
automated:
prune: true # 如果 Git 中删除了某个 YAML,集群中对应的资源也会被自动清理(保持物理一致)
selfHeal: true # 开启自愈。如果有人在 K8s 中手动修改了资源,Argo CD 会自动将其重置,防篡改
syncOptions:
- CreateNamespace=true # 目标 Namespace 不存在时自动创建
2. 常用命令行运维(Argo CD CLI)
虽然 Argo CD 提供了精美的 Web 控制台,但运维工程师在高并发发布和排错时,命令行工具更为高效:
# 1. 登录 Argo CD 服务
argocd login argocd-server.monitoring.svc --username admin --password MyPassword123
# 2. 列出当前托管的所有应用及其同步状态
argocd app list
# 3. 手动强制触发一次 Git 到 K8s 的双向同步
argocd app sync prod-user-center
# 4. 回滚应用到上一个正常的 Git 提交版本
argocd app rollback prod-user-center