4. Argo CD 安装与配置:在 Kubernetes 集群中安装 Argo CD、CLI 配置、Web UI 初探、RBAC 设置

本章是课程实战的起点。我们将在一套标准的 Kubernetes 集群上完成 Argo CD 的完整部署,并配置 CLI 工具、首次登录 Web UI,以及建立基于角色的访问控制(RBAC)体系。这些步骤是后续所有 Helm 应用交付与压测沙盘的基础设施。

4.1 环境准备与前提条件

在安装 Argo CD 之前,请确认集群满足以下最低要求。建议使用 Kubernetes 1.22+ 版本,并确保集群有足够的资源承载 Argo CD 控制平面组件。

组件 最低要求 推荐配置
Kubernetes 版本 1.22 1.26+
控制节点 CPU 1 核 2 核
控制节点内存 2 GB 4 GB
存储(etcd + 配置) 10 GB 20 GB
kubectl 权限 cluster-admin cluster-admin
提示: 如果使用 Minikube 或 Kind 进行本地测试,请确保分配足够的内存(建议 4 GB 以上),避免 Argo CD 组件因 OOM 被驱逐。

4.2 在 Kubernetes 集群中安装 Argo CD

Argo CD 官方提供了一套标准的安装清单,包含所有必要的 CRD、ServiceAccount、RBAC 规则以及 Deployment。我们使用 kubectl apply 命令直接部署到 argocd 命名空间。

# 创建命名空间
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-6b7b6b8f4f-abc12  1/1     Running   0          2m
# argocd-dex-server-7f8d9c8b9c-def34                 1/1     Running   0          2m
# argocd-notifications-controller-5d6c7d8f9e-ghi56   1/1     Running   0          2m
# argocd-redis-7c8d9e0f1a-jkl78                      1/1     Running   0          2m
# argocd-repo-server-9a8b7c6d5e-mno90                1/1     Running   0          2m
# argocd-server-8b7c6d5e4f-pqr12                     1/1     Running   0          2m
关键组件说明:
  • argocd-server:API 服务与 Web UI 入口,负责认证、授权与应用同步。
  • argocd-repo-server:仓库服务,负责拉取 Git 仓库并生成 Kubernetes 清单。
  • argocd-application-controller:核心控制器,持续对比 Git 中的期望状态与集群实际状态。
  • argocd-redis:缓存层,存储应用状态与配置信息。

4.3 CLI 配置与初始登录

Argo CD 提供强大的命令行工具 argocd,用于管理应用、仓库、项目和用户。首先安装 CLI 并配置与集群的连接。

4.3.1 安装 argocd CLI

# Linux / macOS (使用 Homebrew)
brew install argocd

# 或直接下载二进制
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

4.3.2 获取初始密码并登录

Argo CD 默认使用 admin 用户,初始密码存储在名为 argocd-initial-admin-secret 的 Secret 中。

# 获取初始密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# 端口转发(本地访问 API 与 UI)
kubectl port-forward svc/argocd-server -n argocd 8080:443

# 使用 CLI 登录
argocd login localhost:8080 --username admin --password <获取到的密码> --insecure
安全警告: 生产环境中请勿使用 --insecure 参数。应配置有效的 TLS 证书(如 cert-manager 或 Let's Encrypt),并通过 Ingress 暴露服务。

4.4 Web UI 初探

登录成功后,通过浏览器访问 https://localhost:8080 进入 Argo CD Web UI。界面主要分为以下几个功能区:

  • Applications 面板:展示所有已管理的应用,支持按项目、状态、健康度筛选。
  • Settings 菜单:管理仓库连接、项目配置、集群注册与 SSO 集成。
  • User Info:查看当前用户权限、API 生成与密码修改。
  • 应用详情视图:以拓扑图形式展示资源关系,支持实时同步与回滚操作。
Argo CD Web UI 功能布局示意图 Argo CD Web UI 功能布局 Argo CD Applications Settings User Info Docs 应用列表 helm-guestbook Synced nginx-ingress OutOfSync prometheus-stack Progressing 应用详情:helm-guestbook Deployment Service Ingress 同步状态: Synced to main@abc1234 健康度:Healthy | 上次同步:2 分钟前 Sync Rollback Refresh

4.5 RBAC 设置

Argo CD 的 RBAC 基于 argocd-rbac-cm ConfigMap 进行配置。默认情况下,只有 admin 用户拥有完全权限。我们需要为团队中的不同角色(如开发者、运维人员、只读审计)定义细粒度的权限。

4.5.1 RBAC 策略模型

Argo CD RBAC 使用 role, resource, action, scope 四元组进行权限控制。核心概念如下:

元素 说明 示例值
role 用户或组所绑定的角色名称 role:admin, role:developer
resource 被管理的对象类型 applications, clusters, projects
action 允许的操作 get, sync, create, delete
scope 资源的作用域(通常是项目名称) my-project, *(所有项目)

4.5.2 配置 RBAC ConfigMap

编辑 argocd-rbac-cm ConfigMap,添加自定义角色与绑定关系。以下示例为开发者角色赋予对 dev-team 项目的同步与查看权限:

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-rbac-cm
  namespace: argocd
data:
  policy.default: role:readonly
  policy.csv: |
    p, role:developer, applications, get, dev-team/*, allow
    p, role:developer, applications, sync, dev-team/*, allow
    p, role:developer, applications, override, dev-team/*, allow
    p, role:developer, logs, get, dev-team/*, allow
    p, role:developer, exec, create, dev-team/*, allow

    g, alice, role:developer
    g, bob, role:developer
    g, devops-team, role:admin
策略解析:
  • policy.default: role:readonly:未匹配到任何策略的用户默认只有只读权限。
  • p, role:developer, applications, sync, dev-team/*, allow:允许 developer 角色对 dev-team 项目下的所有应用执行同步操作。
  • g, alice, role:developer:将用户 alice 绑定到 developer 角色。

4.5.3 通过 Web UI 验证 RBAC

配置生效后,使用不同用户登录 Web UI 或 CLI 验证权限隔离效果:

  • admin 用户:可以看到所有项目与应用,具备完全控制权。
  • alice 用户:只能看到 dev-team 项目下的应用,可以执行同步与查看日志,但无法删除应用或管理集群。
  • 只读用户:只能查看应用状态,无法触发任何变更操作。
Argo CD RBAC 权限模型与用户映射 Argo CD RBAC 权限模型与用户映射 admin 超级管理员 alice / bob 开发者 charlie 只读审计 role:admin 完全控制 role:developer 同步 + 查看 + 日志 role:readonly 仅查看 applications, *, * 所有资源完全控制 applications, sync, dev-team/* 仅 dev-team 项目同步 applications, get, * 全局只读查看 映射关系: admin → role:admin → 完全控制所有资源 alice/bob → role:developer → 仅 dev-team 项目同步与查看 charlie → role:readonly → 全局只读

4.6 验证安装与配置

完成上述步骤后,执行以下命令验证 Argo CD 是否正常工作:

# 检查 API 版本与服务器状态
argocd version

# 列出当前集群中已注册的集群
argocd cluster list

# 检查当前用户权限
argocd account get-user-info
最佳实践: 建议在安装完成后立即修改 admin 默认密码,并为每个团队成员创建独立的本地用户或集成 SSO(如 Dex、Keycloak)。RBAC 策略应遵循最小权限原则,避免过度授权。

至此,Argo CD 的安装与基础配置已全部完成。下一阶段我们将深入仓库连接与项目配置,为 Helm 应用的持续交付铺平道路。