Argo CD 核心概念:Application、Project、Repository
Argo CD 是 Kubernetes 生态中最主流的声明式 GitOps 持续交付工具。理解其三大核心概念——Application(应用)、Project(项目)和 Repository(仓库)——是掌握 Argo CD 的基础。这三者构成了从代码仓库到集群资源映射的完整链路。
1. 核心概念关系总览
下图展示了 Repository、Project 与 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 的三大核心概念(Repository、Project、Application)及其关系,并完成了从安装到基础配置的完整流程。这是后续实现多租户网络拓扑部署的基石。下一章将深入 Application 的详细配置与同步策略。