Argo CD 核心概念:Application、Project、Repository

Argo CD 是 Kubernetes 生态中最主流的声明式 GitOps 持续交付工具。理解其三大核心概念——Application(应用)、Project(项目)和 Repository(仓库)——是掌握 Argo CD 的基础。这三者构成了从代码仓库到集群资源映射的完整链路。

1. 核心概念关系总览

下图展示了 Repository、Project 与 Application 之间的层级与引用关系:

Argo CD 核心概念关系图 Argo CD 核心概念关系图 Repository Git 仓库 / Helm Chart Project 资源配额与 RBAC Application 目标部署单元 说明: 1. Repository 是配置的源头,Application 通过 spec.source 引用 Repository 中的路径。 2. Application 必须属于某个 Project,Project 控制该应用的目标集群与资源范围。 3. 一个 Project 可以包含多个 Application,一个 Repository 可以被多个 Application 引用。

2. 核心概念详解

2.1 Repository(仓库)

Repository 是 Argo CD 连接外部配置源的凭证与配置对象。它定义了 Argo CD 如何访问 Git 仓库、Helm Chart 仓库或 OCI 存储。

  • 类型:支持 Git(公开/私有)、Helm Chart 仓库、OCI 制品仓库。
  • 认证方式:SSH 密钥、HTTPS 用户名密码、GitHub App 、AWS ECR 等。
  • 连接状态:Argo CD 会定期验证仓库连接是否有效,并在 UI 中显示状态。
最佳实践: 为每个团队或项目创建独立的 Repository 凭证,避免使用全局共享的 Git 密钥。在多租户场景下,Repository 的隔离是安全的第一道防线。

2.2 Application(应用)

Application 是 Argo CD 的核心工作负载单元,它定义了“从哪个仓库的哪个路径,部署到哪个集群的哪个命名空间”。

字段 说明 示例值
spec.source.repoURL 引用的仓库地址 https://github.com/example/gitops.git
spec.source.path 仓库内的配置目录 environments/prod
spec.source.targetRevision 分支、标签或 Commit SHA main 或 v1.2.3
spec.destination.server 目标 Kubernetes API Server 地址 https://kubernetes.default.svc
spec.destination.namespace 目标命名空间 team-a-prod
spec.project 所属的 Project 名称 default 或 team-a

2.3 Project(项目)

Project 是 Argo CD 中实现多租户隔离和资源管控的关键抽象。它相当于 Kubernetes 中的 Namespace,但作用于 Argo CD 的应用管理层面。

  • RBAC 权限:限制哪些用户/角色可以操作该 Project 下的 Application。
  • 目标集群限制:指定该 Project 下的应用只能部署到哪些集群。
  • 资源配额:限制 Project 下所有 Application 可使用的集群资源总量(CPU、内存等)。
  • 来源仓库限制:只允许从白名单中的 Repository 拉取配置。
注意: 默认的 default Project 没有限制,生产环境中应避免使用。建议为每个租户或团队创建独立的 Project,并配置严格的来源与目标约束。

3. Argo CD 安装与初始化配置

以下步骤演示如何在 Kubernetes 集群中安装 Argo CD 并完成基础初始化配置。

3.1 安装 Argo CD

使用官方提供的 manifest 文件进行安装,这是最直接的方式:

# 创建 argocd 命名空间
kubectl create namespace argocd

# 安装 Argo CD 核心组件
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# 查看 Pod 状态,等待所有组件 Running
kubectl get pods -n argocd

3.2 获取初始管理员密码

Argo CD 安装后会自动生成一个随机密码:

# 方式一:从 Secret 中获取
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# 方式二:如果 Secret 不存在(某些版本),查看 argocd-server Pod 日志
kubectl -n argocd logs deployment/argocd-server | grep "initial admin password"

3.3 暴露 Argo CD UI 与 API

生产环境推荐使用 Ingress 或 LoadBalancer。开发环境可使用端口转发:

# 端口转发,将本地 8080 映射到 argocd-server 的 443 端口
kubectl port-forward svc/argocd-server -n argocd 8080:443

# 访问 https://localhost:8080,用户名 admin,密码为上一步获取的密码

3.4 使用 CLI 登录并添加集群

# 下载 argocd CLI(以 Linux 为例)
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd

# 登录 Argo CD
argocd login localhost:8080 --username admin --password <初始密码> --insecure

# 修改密码(强烈建议)
argocd account update-password

# 添加当前 Kubernetes 集群到 Argo CD 管理
argocd cluster add $(kubectl config current-context) --name in-cluster

4. 初始化配置清单

安装完成后,建议按以下顺序完成初始化配置:

步骤 操作 说明
1 修改管理员密码 使用 argocd account update-password
2 配置 SSO / OIDC 集成 LDAP、GitHub、GitLab 等身份提供商
3 添加 Git 仓库 使用 argocd repo add 或 UI 添加
4 创建非 default Project 为每个租户/环境创建独立 Project
5 配置通知与 Webhook 实现 Git Push 自动同步
6 设置资源配额 在 Project 中限制 CPU/内存上限

5. 核心概念与安装流程总结

下图将安装流程与核心概念映射到同一张流程图中,帮助理解从安装到使用的完整链路:

Argo CD 安装与概念映射流程 Argo CD 安装与概念映射流程 1. 安装 Argo CD kubectl apply -f install.yaml 2. 初始化配置 密码 / 仓库 / 集群 3. 核心概念 Repo / Project / App 安装组件 • argocd-server • argocd-repo-server • argocd-redis • argocd-dex (可选) 初始化任务 • 修改 admin 密码 • 添加 Git 仓库 • 添加目标集群 • 创建 Project 概念映射 • Repository → 配置源 • Project → 租户隔离 • Application → 部署单元 • Sync Policy → 同步策略 关键提示: 安装完成后,务必先创建非 default 的 Project 并配置来源仓库白名单,再创建第一个 Application。
学习要点: 在本章中,你掌握了 Argo CD 的三大核心概念(Repository、Project、Application)及其关系,并完成了从安装到基础配置的完整流程。这是后续实现多租户网络拓扑部署的基石。下一章将深入 Application 的详细配置与同步策略。