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 的核心组件及其关系。下图展示了安装完成后各组件间的通信与数据流向。

Argo CD 组件架构与交互流程 用户 / CI 系统 API Server (Web UI / CLI / API) Repo Server (Git 仓库连接) Application Controller Redis (缓存) Git 仓库 K8s 集群 CLI / HTTP 同步请求 拉取清单 传递清单 应用/同步 状态缓存 核心:声明式 GitOps 引擎 持续对比 Git 与集群状态
组件说明:API Server 是入口,Repo Server 负责与 Git 交互,Application Controller 负责将清单应用到集群,Redis 用于缓存状态以提升性能。

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
CLI 配置持久化:登录成功后,凭证会保存在 ~/.argocd/config 文件中,后续操作无需重复登录。

4.4 登录 Web UI

Web UI 提供可视化操作界面,适合查看应用状态和手动触发同步。

  1. 获取访问地址:如果使用 LoadBalancer,执行 kubectl get svc argocd-server -n argocd 获取 EXTERNAL-IP。
  2. 浏览器访问:打开 https://<EXTERNAL-IP>,由于使用自签名证书,浏览器会提示安全风险,点击“高级”并继续访问。
  3. 登录:用户名 admin,密码为上一节获取的初始密码。
首次登录建议:登录后立即在 User Info 中修改密码,并创建专用用户或集成 SSO。

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。

验证要点:确认 Pod 已成功部署到目标命名空间: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。
常见问题:如果 Application 状态为 OutOfSync,通常是因为 Git 仓库中的清单与集群实际状态不一致。检查 Git 仓库路径是否正确,以及目标命名空间是否存在。