5.13. 使用 Keycloak 为 Argo CD 配置 SSO
安装 Red Hat OpenShift GitOps Operator 后,Argo CD 会自动创建一个具有 admin
权限的用户。要管理多个用户,集群管理员可以使用 Argo CD 来配置 Single Sign-On(SSO)。
先决条件
- 在集群中安装了 Red Hat SSO。
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
- 在集群中安装了 Argo CD。
5.13.1. 在 Keycloak 中配置新客户端
对于 Operator 创建的所有 Argo CD 实例,默认安装 Dex。但是,您可以删除 Dex 配置并添加 Keycloak,以使用 OpenShift 凭证登录到 Argo CD。Keycloak 作为 Argo CD 和 OpenShift 之间的身份代理。
流程
要配置 Keycloak,请按照以下步骤执行:
通过从 Argo CD 自定义资源 (CR) 中删除
.spec.sso.dex
参数来删除 Dex 配置,并保存 CR:dex: openShiftOAuth: true resources: limits: cpu: memory: requests: cpu: memory:
-
在 Argo CD CR 中将
provider
参数的值设置为keycloak
。 通过执行以下步骤配置 Keycloak:
对于安全连接,设置
rootCA
参数的值,如下例所示:apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: sso: provider: keycloak keycloak: rootCA: "<PEM-encoded-root-certificate>" 1 server: route: enabled: true
- 1
- 用于验证 Keycloak 的 TLS 证书的自定义证书。
Operator 会协调
.spec.keycloak.rootCA
参数中的更改,并使用argocd-cm
配置映射中的 PEM 编码 root 证书更新oidc.config
参数。对于不安全连接,将
rootCA
参数的值留空,并使用oidc.tls.insecure.skip.verify
参数,如下所示:apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: extraConfig: oidc.tls.insecure.skip.verify: "true" sso: provider: keycloak keycloak: rootCA: ""
Keycloak 实例需要 2-3 分钟来安装和运行。
5.13.2. 登录到 Keycloak
登录到 Keycloak 控制台以管理身份或角色,并定义分配给不同角色的权限。
先决条件
- 删除 Dex 的默认配置。
- Argo CD CR 必须配置为使用 Keycloak SSO 供应商。
流程
获取用于登录的 Keycloak 路由 URL:
$ oc -n argocd get route keycloak NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD keycloak keycloak-default.apps.ci-ln-******.origin-ci-int-aws.dev.**.com keycloak <all> reencrypt None
获取将用户名和密码存储为环境变量的 Keycloak pod 名称:
$ oc -n argocd get pods NAME READY STATUS RESTARTS AGE keycloak-1-2sjcl 1/1 Running 0 45m
获取 Keycloak 用户名:
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME SSO_ADMIN_USERNAME=<username>
获取 Keycloak 密码:
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD SSO_ADMIN_PASSWORD=<password>
在登录页面上,点 LOG IN VIA KEYCLOAK。
注意您只能在 Keycloak 实例就绪后看到 LOGIN VIA KEYCLOAK 选项。
点 Login with OpenShift。
注意不支持使用
kubeadmin
登录。- 输入要登录的 OpenShift 凭据。
可选: 默认情况下,登录到 Argo CD 的任何用户都具有只读访问权限。您可以通过更新
argocd-rbac-cm
配置映射来管理用户级别访问权限:policy.csv: <name>, <email>, role:admin
5.13.3. 卸载 Keycloak
您可以通过从 Argo CD 自定义资源(CR)文件中删除 SSO
字段来删除 Keycloak 资源及其相关配置。删除 SSO
字段后,文件中的值类似如下:
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: server: route: enabled: true
使用此方法创建的 Keycloak 应用程序当前不是持久性。在服务器重启时,在 Argo CD Keycloak 域中创建的其他配置会被删除。