3. Argo CD 安装与配置:在 Kubernetes 集群中安装 Argo CD、CLI 工具安装、初始密码获取、Web UI 登录
本章是动手实践的第一站。你将在一个标准的 Kubernetes 集群中完成 Argo CD 的完整部署,包括服务端安装、CLI 工具配置、初始密码获取以及 Web UI 的首次登录。这是后续所有 GitOps 策略与回滚护栏实验的基础环境。
3.1 环境准备与前提条件
在开始安装之前,请确保你的环境满足以下最低要求。任何一项不满足都可能导致安装失败或运行异常。
| 组件 | 最低版本 | 说明 |
|---|---|---|
| Kubernetes 集群 | v1.23+ | 支持稳定版 Argo CD,建议使用 v1.25+ |
| kubectl | v1.23+ | 与集群版本偏差不超过 ±1 个次要版本 |
| 集群资源 | 2 CPU / 4 GB 内存 | Argo CD 控制面最低开销,生产环境建议翻倍 |
| 网络 | 集群内 DNS 正常 | Argo CD 组件间通过 Service 名称通信 |
3.2 安装 Argo CD 服务端
Argo CD 官方提供了标准的安装清单,部署在 argocd 命名空间中。我们使用最新的稳定版本(v2.12.x 系列)。
# 创建命名空间
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
# 预期输出示例
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 2m
argocd-applicationset-controller-6b9b8f8f6d-abc12 1/1 Running 0 2m
argocd-dex-server-7f9c7b9c8d-xyz34 1/1 Running 0 2m
argocd-notifications-controller-5d6c7d8f9e-def56 1/1 Running 0 2m
argocd-redis-7c8d9e0f1a-ghi78 1/1 Running 0 2m
argocd-repo-server-6d7e8f9a0b-jkl90 1/1 Running 0 2m
argocd-server-5e6f7a8b9c-mno12 1/1 Running 0 2m
- argocd-server — API 服务与 Web UI 入口
- argocd-repo-server — 仓库连接与清单渲染
- argocd-application-controller — 应用状态巡检与同步
- argocd-redis — 缓存与临时状态存储
3.3 安装 Argo CD CLI 工具
CLI 是日常操作 Argo CD 最常用的工具。以下是在 Linux/macOS 环境下的安装方式。
# Linux (amd64)
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 (Intel)
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-darwin-amd64
chmod +x /usr/local/bin/argocd
# macOS (Apple Silicon)
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-darwin-arm64
chmod +x /usr/local/bin/argocd
验证安装:
argocd version --client
# 预期输出
argocd: v2.12.3+xxx
BuildDate: 2024-xx-xxTxx:xx:xxZ
GitCommit: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GitTreeState: clean
GoVersion: go1.21.x
3.4 获取初始管理员密码
Argo CD 安装后会自动生成一个随机密码,存储在名为 argocd-initial-admin-secret 的 Secret 中。获取方式如下:
# 方法一:直接解码 Secret
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
# 方法二:使用 CLI 自动提取(需要安装 argocd CLI)
argocd admin initial-password -n argocd
默认用户名为 admin。请立即登录并修改密码。
argocd account update-password 修改,或集成外部 OIDC / LDAP 认证。
3.5 暴露 Argo CD API Server
默认情况下,argocd-server 的 Service 类型为 ClusterIP,只能在集群内部访问。我们需要将其暴露到外部。本课程使用 NodePort 方式,适合本地实验环境。
# 将 argocd-server Service 改为 NodePort
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
# 查看分配的端口
kubectl get svc argocd-server -n argocd
# 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server NodePort 10.43.xxx.xxx <none> 80:30080/TCP,443:30443/TCP 5m
现在可以通过 https://<节点IP>:30443 访问 Web UI。
3.6 登录 Web UI
打开浏览器,访问 https://<节点IP>:30443。由于使用自签名证书,浏览器会提示安全风险,请选择“高级” → “继续前往”。
登录界面如下:
- Username:
admin - Password: 上一步获取的初始密码
登录成功后,你将看到 Argo CD 的主控制台。此时没有任何 Application,后续章节将逐步创建。
3.7 使用 CLI 登录并修改密码
CLI 登录是后续自动化操作的前提。首先需要配置 API Server 地址:
# 设置 API Server 地址(替换为你的节点 IP)
argocd login <节点IP>:30443 --insecure
# 输入用户名和密码
Username: admin
Password: <初始密码>
'admin:login' logged in successfully
# 修改密码
argocd account update-password
# 输入当前密码 → 输入新密码 → 确认新密码
Password updated
Context '<节点IP>:30443' updated
验证登录状态:
argocd account get-user-info
# 预期输出
Logged In: true
Username: admin
Issuer: https://<节点IP>:30443/api/dex
...
3.8 安装架构总览
下图展示了 Argo CD 安装完成后的核心组件及其交互关系,帮助你理解各模块的职责。
3.9 验证清单与常见问题
安装完成后,建议执行以下验证步骤,确保所有组件正常工作。
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| Pod 状态 | kubectl get pods -n argocd |
所有 Pod 均为 Running 状态 |
| Service 暴露 | kubectl get svc -n argocd |
argocd-server 类型为 NodePort 或 LoadBalancer |
| CLI 连接 | argocd login <IP>:<Port> --insecure |
登录成功,无报错 |
| Web UI 访问 | 浏览器打开 https://<IP>:<Port> |
显示登录页面,可正常登录 |
- Pod 一直 Pending: 检查集群资源是否充足,特别是
argocd-application-controller需要 StatefulSet 的 PVC。 - Web UI 证书警告: 自签名证书属于正常现象,生产环境请配置受信任的 TLS 证书。
- CLI 登录超时: 确认防火墙规则允许访问 NodePort,或使用
kubectl port-forward临时转发。
3.10 下一步准备
至此,Argo CD 的安装与配置全部完成。你已经拥有了一个可用的 GitOps 控制面。在下一章中,我们将创建第一个 Application,体验从 Git 仓库到集群的自动化部署流程。
- ✅ Argo CD 服务端在 Kubernetes 集群中正常运行
- ✅ CLI 工具安装并成功登录
- ✅ 初始密码已修改,Web UI 可正常访问
- ✅ 理解各核心组件的职责与交互关系