4. Argo CD 核心概念:Application、Project、Repository、Sync Policy、Health Status

Argo CD 作为声明式 GitOps 引擎,其核心模型围绕五个关键概念构建。理解这些概念是掌握发布自助门户集成的基础。本章将逐一拆解每个概念的定义、职责及相互关系。

4.1 核心概念关系总览

下图展示了 Argo CD 中五个核心概念的逻辑关系与数据流向。Application 是中心实体,它从 Repository 读取期望状态,通过 Sync Policy 控制同步行为,由 Health Status 评估运行状态,并归属于特定的 Project 进行权限隔离。

Argo CD 核心概念关系图 Argo CD 核心概念关系图 Application (应用实例) Repository (Git 仓库) Sync Policy (同步策略) Project (项目/租户) Health Status (健康状态) 读取清单 控制同步 评估状态 归属/隔离 Application 是核心实体,串联了代码源、同步行为、运行状态和权限归属。

4.2 Application(应用实例)

Application 是 Argo CD 中最核心的资源对象,代表一个被管理的应用实例。它定义了从哪个仓库、哪个路径、同步到哪个目标集群和命名空间。

关键字段说明:

  • source:指定 Git 仓库 URL、目标分支(targetRevision)和清单文件路径(path)。
  • destination:指定目标 Kubernetes 集群(server URL 或 name)和命名空间(namespace)。
  • syncPolicy:定义自动同步、自动修剪、自愈等行为。

一个典型的 Application YAML 示例如下:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    server: https://kubernetes.default.svc
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

4.3 Project(项目/租户)

Project 是 Argo CD 中的逻辑分组和权限隔离单元。它用于管理多个 Application 的访问控制、资源配额和部署约束。

功能维度 说明 典型配置
权限控制 限制哪些用户/角色可以操作该 Project 下的 Application RBAC 策略绑定
源仓库白名单 只允许从指定的 Git 仓库拉取清单 sourceRepos 列表
目标集群白名单 只允许部署到指定的目标集群 destinations 列表
资源配额 限制该 Project 下所有 Application 可使用的集群资源上限 namespaceResourceQuota

最佳实践:在自助门户中,每个业务线或团队应映射为一个独立的 Project,实现租户级别的隔离。默认的 default Project 通常只用于测试或系统组件。

4.4 Repository(Git 仓库)

Repository 是 Argo CD 连接 Git 仓库的凭证与配置对象。它存储了访问私有仓库所需的 SSH 密钥、HTTPS 用户名密码或 。

Repository 的配置方式有两种:

  • 通过 Argo CD CLI 或 UI 添加:交互式输入仓库 URL 和凭证。
  • 通过 Repository CRD 声明式管理:直接创建 Secret 资源,Argo CD 会自动发现。

Repository 配置示例(Secret 方式):

apiVersion: v1
kind: Secret
metadata:
  name: repo-github
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/myorg/private-repo.git
  username: my-git-user
  password: my-git-

4.5 Sync Policy(同步策略)

Sync Policy 定义了 Argo CD 如何将 Git 仓库中的期望状态同步到目标集群。它决定了同步的自动化程度和行为模式。

同步策略分为两大模式:

策略模式 子选项 行为描述
自动同步 prune: true 自动删除集群中 Git 仓库已移除的资源
selfHeal: true 自动修复集群中与 Git 状态不一致的手动变更
allowEmpty: true 允许同步空的清单目录(用于清理场景)
手动同步 — 需要人工在 UI 或 CLI 触发同步操作

注意:在生产环境中启用 selfHeal 时,务必确保团队已建立严格的 Git 审批流程。否则,自愈机制可能覆盖紧急热修复的手动变更,导致服务中断。

4.6 Health Status(健康状态)

Health Status 是 Argo CD 对已部署应用运行状况的评估结果。它通过内置的 健康检查钩子(Health Checks) 分析 Kubernetes 资源的状态,判断应用是否正常运行。

常见的健康状态枚举值:

  • Healthy:应用运行正常,所有资源均处于预期状态。
  • Progressing:应用正在部署或更新中,等待资源就绪。
  • Degraded:应用部分或全部功能异常,需要人工介入。
  • Suspended:应用被暂停或挂起(如 HPA 缩容至 0)。
  • Missing:目标集群中未找到 Application 定义的资源。
  • Unknown:无法获取健康状态,通常因网络或权限问题。

健康状态与同步状态(Synced/OutOfSync)是独立的两个维度,共同构成 Application 的完整运行视图:

同步状态 健康状态 含义 建议操作
Synced Healthy 集群与 Git 一致,且运行正常 无需操作
Synced Degraded 集群与 Git 一致,但应用异常 检查 Pod 日志、事件
OutOfSync Healthy 集群与 Git 不一致,但当前运行正常 触发同步或排查手动变更
OutOfSync Degraded 集群与 Git 不一致,且应用异常 优先同步,再排查健康问题

4.7 概念总结与自助门户映射

在自助门户的 GitOps 集成中,这五个概念对应着不同的用户操作界面:

  • Repository:用户在门户中绑定 Git 仓库凭证。
  • Project:管理员创建团队租户,配置权限和约束。
  • Application:开发者通过表单或模板创建应用实例,选择仓库、路径和目标集群。
  • Sync Policy:用户选择自动或手动同步模式,配置修剪和自愈开关。
  • Health Status:门户仪表盘实时展示应用的同步状态和健康状态,支持一键回滚。

核心要点:Application 是连接其他四个概念的枢纽。Repository 提供输入,Sync Policy 控制过程,Health Status 反馈结果,Project 提供边界。掌握这五个概念,就掌握了 Argo CD 的完整工作模型。