4. Argo CD 安装与配置:Helm安装、CLI配置、Web UI登录、初始Project与Application创建
本章是实战课程的基石。我们将使用 Helm 在 Kubernetes 集群中安装 Argo CD,配置 CLI 工具,首次登录 Web UI,并创建第一个 Project 与 Application。完成本章后,你将拥有一个可操作的 Argo CD 环境,为后续的监控与故障排查做好准备。
4.1 架构概览:Argo CD 组件与交互流程
在动手安装前,先理解 Argo CD 的核心组件及其关系。下图展示了安装完成后各组件间的通信与数据流向。
4.2 使用 Helm 安装 Argo CD
Helm 是安装 Argo CD 最推荐的方式,便于版本管理和配置自定义。以下步骤在已配置好 kubectl 和 helm 的环境中执行。
4.2.1 添加 Helm 仓库并安装
# 1. 添加 Argo CD 官方 Helm 仓库
helm repo add argo https://argoproj.github.io/argo-helm
# 2. 更新仓库索引
helm repo update
# 3. 创建命名空间
kubectl create namespace argocd
# 4. 使用 Helm 安装 Argo CD(基础配置)
helm install argocd argo/argo-cd \
--namespace argocd \
--create-namespace \
--set server.service.type=LoadBalancer \
--set configs.params."server\.insecure"=true
server.insecure=true 仅用于测试环境快速验证。生产环境应配置 TLS 证书,并设置 server.service.type=ClusterIP 配合 Ingress 暴露服务。
4.2.2 验证安装状态
安装后,等待所有 Pod 进入 Running 状态:
kubectl get pods -n argocd -w
预期输出应包含以下核心 Pod:
| Pod 名称 | 所属组件 | 副本数 | 说明 |
|---|---|---|---|
| argocd-server-xxx | API Server | 1 | 提供 Web UI 与 API |
| argocd-repo-server-xxx | Repository Server | 1 | 连接 Git 仓库 |
| argocd-application-controller-xxx | Application Controller | 1 | 执行同步操作 |
| argocd-redis-xxx | Redis | 1 | 缓存与锁 |
4.3 配置 Argo CD CLI
CLI 是日常操作和故障排查的利器。安装并配置 CLI 连接到已部署的 API Server。
4.3.1 安装 CLI
# Linux / macOS (使用 curl 下载最新版)
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
# macOS 也可使用 Homebrew
brew install argocd
4.3.2 登录 CLI
首先获取初始管理员密码:
# 获取初始密码(自动生成)
kubectl get secret argocd-initial-admin-secret \
-n argocd \
-o jsonpath="{.data.password}" | base64 -d
然后使用 CLI 登录:
# 获取 Server 地址(LoadBalancer 类型)
export ARGOCD_SERVER=$(kubectl get svc argocd-server -n argocd -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
# 登录
argocd login $ARGOCD_SERVER --username admin --password <获取的密码> --insecure
~/.argocd/config 文件中,后续操作无需重复登录。
4.4 登录 Web UI
Web UI 提供可视化操作界面,适合查看应用状态和手动触发同步。
- 获取访问地址:如果使用 LoadBalancer,执行
kubectl get svc argocd-server -n argocd获取 EXTERNAL-IP。 - 浏览器访问:打开
https://<EXTERNAL-IP>,由于使用自签名证书,浏览器会提示安全风险,点击“高级”并继续访问。 - 登录:用户名
admin,密码为上一节获取的初始密码。
4.5 创建初始 Project 与 Application
Argo CD 使用 Project 作为逻辑隔离单元,Application 代表一个具体的部署单元。我们将创建一个示例 Project 和 Application 来验证安装。
4.5.1 创建 Project
Project 用于限制 Application 可以部署到的目标集群和命名空间。以下示例创建一个名为 production 的 Project:
# 使用 CLI 创建 Project
argocd proj create production \
--dest https://kubernetes.default.svc,default \
--dest https://kubernetes.default.svc,production \
--src 'https://github.com/argoproj/argocd-example-apps.git' \
--description "Production Project for critical apps"
参数说明:
--dest:允许的目标集群和命名空间(格式:集群URL,命名空间)。--src:允许的 Git 仓库来源。--description:项目描述。
4.5.2 创建 Application
Application 定义了从哪个 Git 仓库、哪个路径、同步到哪个目标集群和命名空间。以下示例部署 Argo CD 官方示例应用:
# 使用 CLI 创建 Application
argocd app create guestbook \
--project production \
--repo https://github.com/argoproj/argocd-example-apps.git \
--path guestbook \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--sync-policy automated
关键参数解析:
| 参数 | 值示例 | 说明 |
|---|---|---|
--project |
production | 所属 Project |
--repo |
Git 仓库 URL | 存放 Kubernetes 清单的仓库 |
--path |
guestbook | 仓库内的清单目录路径 |
--dest-server |
https://kubernetes.default.svc | 目标集群 API Server 地址 |
--dest-namespace |
default | 目标命名空间 |
--sync-policy |
automated | 自动同步策略(可选:manual) |
4.5.3 验证 Application 状态
创建后,Argo CD 会自动开始同步(如果设置了 automated 策略)。使用以下命令查看状态:
# 查看 Application 列表
argocd app list
# 查看特定 Application 的详细信息
argocd app get guestbook
# 查看同步状态和资源树
argocd app sync guestbook
在 Web UI 中,你可以在 Applications 页面看到 guestbook 应用,其状态应为 Synced 和 Healthy。
kubectl get pods -n default | grep guestbook。如果状态异常,检查 Application 的 Events 和 Logs 选项卡。
4.6 安装后快速检查清单
完成安装与配置后,建议执行以下检查项,确保环境就绪:
- Pod 状态:所有 argocd 命名空间下的 Pod 均为 Running。
- CLI 连通性:
argocd version能正确返回客户端和服务端版本。 - Web UI 可访问:能够正常登录并看到 Applications 页面。
- Project 存在:
argocd proj list显示已创建的 Project。 - Application 同步:示例应用状态为 Synced 且 Healthy。