GitOps 上线指南:用 Argo CD 快速落地持续交付(最小可用版)

为什么 GitOps?

  • 声明式:一切配置写在 Git,版本可追溯。
  • 自动化:Git 变更触发集群同步,减少手工 kubectl。
  • 可回滚:任意版本可一键回滚到历史提交。
  • 可见性:Argo CD 提供 UI/CLI 观测应用健康与差异。

前置条件

  • 已有 Kubernetes 集群(k3s/minikube/托管 K8s 均可)。
  • 可访问的 Git 仓库,存放 K8s YAML/Helm/Kustomize。
  • 已安装 kubectl

快速安装 Argo CD(最小化)

1
2
3
4
5
6
7
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# 获取初始密码(admin 账户)
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
# 暴露服务(仅测试,生产建议 Ingress/负载均衡 + TLS)
kubectl port-forward svc/argocd-server -n argocd 8080:443

登录 https://localhost:8080,用 admin + 初始密码。

创建首个应用

1
2
3
4
5
6
7
8
9
10
argocd login localhost:8080 --username admin --password <PWD> --insecure

argocd app create demo \
--repo https://github.com/your-org/your-app-config.git \
--path overlays/prod \
--dest-server https://kubernetes.default.svc \
--dest-namespace default

argocd app sync demo # 同步到集群
argocd app set demo --sync-policy automated --self-heal

说明:

  • --repo 指向存放 K8s 清单的 Git 仓库。
  • --path 可是纯 YAML、Helm chart 或 Kustomize 目录。
  • --sync-policy automated 打开自动同步;--self-heal 遇到漂移自动纠正。

目录结构示例

1
2
3
4
5
6
your-app-config/
├─ base/ # 基础 K8s 资源
├─ overlays/
│ ├─ dev/ # 开发环境差异
│ └─ prod/ # 生产环境差异
└─ charts/ # 如使用 Helm

多环境可用不同 path、不同 App 或 App of Apps 模式。

最小上线守则

  • 分支保护:生产目录对应分支开启保护,代码评审后再合并。
  • 凭证管理:Argo CD Repository/Cluster Secret 最小权限,建议只读 Git token。
  • 健康探针:确保 Deployment/Service/Ingress 等资源有就绪探针,保证健康检查可判定。
  • 漂移检测:开启自愈,防手工改动导致配置漂移。
  • 审计与告警:启用 Webhook/告警(Prometheus + Alertmanager),同步失败及时处理。
  • 回滚:出问题直接回滚 Git 版本,再让 Argo CD 自动同步。

进阶方向

  • App of Apps 管理多服务;多集群/多租户隔离。
  • 与 CI 对接:CI 完成构建与镜像推送,GitOps 只负责部署。
  • 策略与合规:OPA/Gatekeeper/Kyverno 做准入与安全策略。

结论

Argo CD 让“改 Git 即上线”成为可视化、可回滚、可审计的标准流程。按上面的最小实践即可在 15 分钟内完成首个 GitOps 上线,再逐步扩展到多环境、多服务与多集群。***