3. Argo CD 安装与配置:使用 Helm 在 Kubernetes 集群中安装 Argo CD,配置初始管理员密码
本章将指导你使用 Helm 包管理器在 Kubernetes 集群中完成 Argo CD 的安装,并配置初始管理员密码。Argo CD 作为声明式 GitOps 工具,其安装过程涉及多个组件(API Server、Repository Server、Application Controller、Redis),通过 Helm Chart 可以统一管理这些组件的版本与配置。
3.1 安装前提与环境准备
在开始安装前,请确保满足以下条件:
| 前提条件 | 版本/要求 | 说明 |
|---|---|---|
| Kubernetes 集群 | v1.23+ | 建议使用生产级集群(如 K3s、RKE2、EKS、AKS) |
| Helm CLI | v3.8+ | 支持 OCI 仓库和 Chart 依赖管理 |
| kubectl | 与集群版本匹配 | 已配置正确的 kubeconfig 上下文 |
| 集群资源 | 至少 2 核 CPU / 4 GB 内存 | Argo CD 各组件默认资源请求总和约 1.5 核 / 2.5 GB |
| 网络策略 | 允许 Ingress / LoadBalancer | API Server 需要对外暴露(或使用 kubectl port-forward) |
💡 提示: 如果你在本地开发环境(如 minikube、kind)安装,建议分配至少 4 GB 内存给集群,避免因资源不足导致 Pod 启动失败。
3.2 添加 Helm 仓库并安装 Argo CD
Argo CD 官方维护的 Helm Chart 位于 argo-cd 仓库。以下是标准安装步骤:
- 添加 Helm 仓库
helm repo add argo-cd https://argoproj.github.io/argo-helm
helm repo update
- 创建命名空间
kubectl create namespace argocd
- 使用 Helm 安装 Argo CD
helm install argocd argo-cd/argo-cd \
--namespace argocd \
--create-namespace \
--version 7.7.0 \
--set server.service.type=LoadBalancer \
--set configs.params."server\.insecure"=true
📌 关键参数说明:
server.service.type=LoadBalancer:自动创建云厂商负载均衡器暴露 API Server(本地环境可改用ClusterIP+port-forward)。configs.params."server\.insecure"=true:允许 HTTP 访问(生产环境应配置 TLS)。--version 7.7.0:锁定 Chart 版本,避免意外升级导致配置不兼容。
3.3 验证安装状态
安装完成后,检查所有 Pod 是否处于 Running 状态:
kubectl get pods -n argocd
预期输出应包含以下 5 个核心组件:
| Pod 名称前缀 | 组件角色 | 默认副本数 |
|---|---|---|
argocd-server-* |
API Server(Web UI + gRPC) | 1 |
argocd-repo-server-* |
仓库服务器(Git 操作) | 1 |
argocd-application-controller-* |
应用控制器(状态同步) | 1 |
argocd-redis-* |
缓存与会话存储 | 1 |
argocd-dex-server-* |
SSO / OIDC 身份代理(可选) | 1 |
⚠️ 常见问题: 如果
argocd-server 或 argocd-application-controller 反复 CrashLoopBackOff,请检查集群资源是否充足,或使用 kubectl describe pod <pod-name> -n argocd 查看事件日志。
3.4 Argo CD 组件架构与通信关系
下图展示了 Argo CD 各组件之间的核心通信路径,理解此架构有助于后续配置网络策略和故障排查。
3.5 获取并配置初始管理员密码
Argo CD 安装后会自动生成一个初始管理员密码,存储在 Secret 中。以下是获取和配置密码的完整流程:
3.5.1 获取初始密码
kubectl get secret argocd-initial-admin-secret \
-n argocd \
-o jsonpath="{.data.password}" | base64 -d
该命令会输出一个随机生成的字符串,例如 abc123def456。默认用户名为 admin。
3.5.2 登录 Web UI 或 CLI
方式一:通过 CLI 登录
argocd login <ARGOCD_SERVER>:443 \
--username admin \
--password <INITIAL_PASSWORD> \
--insecure
方式二:通过 Web UI 登录
先获取 API Server 的外部地址:
kubectl get svc argocd-server -n argocd -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
然后在浏览器中访问 http://<EXTERNAL-IP>:80,使用 admin 和初始密码登录。
3.5.3 修改管理员密码(推荐)
使用 argocd CLI 修改密码:
argocd account update-password \
--current-password <INITIAL_PASSWORD> \
--new-password <NEW_PASSWORD>
或者直接更新 Secret:
kubectl patch secret argocd-secret \
-n argocd \
-p '{"data":{"admin.password":"'$(echo -n 'NEW_PASSWORD' | base64)'"}}'
⚠️ 安全警告: 初始密码存储在 Secret 中,默认不加密。生产环境务必:
- 安装后立即修改密码。
- 启用 TLS(配置 Ingress 并设置
server.insecure: false)。 - 考虑集成外部 SSO(如 Dex、Keycloak)替代本地密码认证。
3.6 配置持久化与高可用(可选但推荐)
对于生产环境,建议调整以下 Helm 参数以提升稳定性:
| 配置项 | 推荐值 | 作用 |
|---|---|---|
redis.enabled |
true |
启用内置 Redis(默认) |
redis.persistence.enabled |
true |
Redis 数据持久化,避免重启丢失会话 |
server.replicas |
2 |
API Server 多副本,提升可用性 |
applicationController.replicas |
2 |
应用控制器多副本,加速同步 |
configs.params."server\.insecure" |
false |
生产环境必须关闭 insecure 模式 |
使用以下命令升级安装:
helm upgrade argocd argo-cd/argo-cd \
--namespace argocd \
--reuse-values \
--set server.replicas=2 \
--set applicationController.replicas=2 \
--set redis.persistence.enabled=true
3.7 安装后验证清单
完成安装和密码配置后,建议执行以下验证步骤:
- ✅ Pod 状态:所有 Pod 均为
Running,无 CrashLoopBackOff。 - ✅ 服务可达:
curl http://<ARGOCD_SERVER>/api/version返回 JSON 版本信息。 - ✅ CLI 登录:
argocd account get-user-info显示当前用户信息。 - ✅ 密码已修改:初始密码不再有效,新密码可正常登录。
- ✅ 资源配额:集群资源使用率未超过 80%(避免后续应用部署时资源不足)。