ArgoCD GitOps 实战指南

安装与配置 ArgoCD

在 Kubernetes 集群中安装 ArgoCD 可以通过 Helm 或直接使用 YAML 清单文件。以下是通过 Helm 安装的示例命令:

helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd -n argocd --create-namespace

安装完成后,获取初始管理员密码:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
访问 ArgoCD UI

端口转发到本地以访问 UI:

kubectl port-forward svc/argocd-server -n argocd 8080:443

浏览器访问 https://localhost:8080,使用用户名 admin 和刚才获取的密码登录。

创建 GitOps 仓库

准备一个 Git 仓库存放 Kubernetes 清单文件,例如:

# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/your-repo/manifests.git
    path: dev
    targetRevision: HEAD
  project: default
  syncPolicy:
    automated: {}
部署应用

通过 CLI 或 UI 创建 Application 资源:

argocd app create -f application.yaml

ArgoCD 会自动同步仓库中的配置到集群。手动触发同步:

argocd app sync my-app
自动同步策略

syncPolicy 中启用自动同步和修剪(删除集群中多余资源):

syncPolicy:
  automated:
    prune: true
    selfHeal: true
健康检查与钩子

ArgoCD 内置健康检查逻辑。自定义钩子可通过注解实现,例如在 Deployment 中添加 argocd.argoproj.io/hook 注解:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    argocd.argoproj.io/hook: PreSync
多环境管理

使用 ApplicationSet 实现多环境部署:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: my-apps
spec:
  generators:
    - list:
        elements:
          - cluster: dev
            url: https://dev-cluster.example.com
          - cluster: prod
            url: https://prod-cluster.example.com
  template:
    metadata:
      name: '{{cluster}}-my-app'
    spec:
      project: default
      source:
        repoURL: https://github.com/your-repo/manifests.git
        targetRevision: HEAD
        path: '{{cluster}}'
      destination:
        server: '{{url}}'
        namespace: default
回滚机制

查看历史版本并回滚:

argocd app history my-app
argocd app rollback my-app 2
监控与告警

集成 Prometheus 监控 ArgoCD 指标,或通过 ArgoCD Notifications 发送告警:

apiVersion: argoproj.io/v1alpha1
kind: Alert
metadata:
  name: sync-failed
spec:
  triggers:
    - on: SyncFailed
  template:
    email:
      subject: Application {{.app.metadata.name}} sync failed
最佳实践
  • 将 ArgoCD 的 Application 资源也存储在 Git 仓库中,实现自管理。
  • 使用 Kustomize 或 Helm 管理复杂配置,避免直接操作原生 YAML。
  • 为生产环境启用签名验证(如 GPG 或 OCI 签名)确保清单安全性。
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐