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 名称通信
推荐环境: 本课程所有实验均在 K3s v1.28 单节点集群上验证通过。如果你使用 Minikube 或 Kind,请确保有足够的资源分配。

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
Windows 用户: 请从 GitHub Releases 下载 argocd-windows-amd64.exe,重命名为 argocd.exe 并加入 PATH。

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。

生产环境建议: 使用 Ingress Controller + TLS 证书暴露 Argo CD,避免直接暴露 NodePort。本课程后续章节会演示 Ingress 配置。

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 安装完成后的核心组件及其交互关系,帮助你理解各模块的职责。

Argo CD 安装架构图 Argo CD 安装架构总览 用户 / CLI argocd-server Application Controller Repo Server Redis (Cache) Git 仓库 (配置源) 目标 Kubernetes 集群 Secrets 组件职责说明 • argocd-server:提供 REST API 和 Web UI,处理用户请求 • Application Controller:持续监控应用状态,确保集群状态与 Git 一致 • Repo Server:连接 Git 仓库,拉取并渲染 Kubernetes 清单 • Redis:缓存仓库元数据和应用状态,提升性能

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 可正常访问
  • ✅ 理解各核心组件的职责与交互关系