5.8. 使用 Keycloak 为 Argo CD 配置 SSO


安装 Red Hat OpenShift GitOps Operator 后,Argo CD 会自动创建一个具有 admin 权限的用户。要管理多个用户,集群管理员可以使用 Argo CD 来配置 Single Sign-On(SSO)。

先决条件

  • 在集群中安装了 Red Hat SSO。
  • 在集群中安装了 Argo CD。

5.8.1. 在 Keycloak 中配置新客户端

对于 Operator 创建的所有 Argo CD 实例,默认安装 Dex。但是,您可以删除 Dex 配置并添加 Keycloak,以使用 OpenShift 凭证登录到 Argo CD。Keycloak 作为 Argo CD 和 OpenShift 之间的身份代理。

流程

要配置 Keycloak,请按照以下步骤执行:

  1. 通过从 Argo CD 自定义资源(CR)中删除以下部分来删除 Dex 配置,并保存 CR:

    dex:
        openShiftOAuth: true
        resources:
          limits:
            cpu:
            memory:
          requests:
            cpu:
            memory:
  2. 通过编辑 Argo CD CR 配置 Keycloak,并将 provider 参数的值更新为 keycloak。例如:

    apiVersion: argoproj.io/v1alpha1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: basic
    spec:
      sso:
        provider: keycloak
      server:
        route:
         enabled: true
注意

Keycloak 实例需要 2-3 分钟来安装和运行。

5.8.2. 登录到 Keycloak

登录到 Keycloak 控制台以管理身份或角色,并定义分配给不同角色的权限。

先决条件

  • 删除 Dex 的默认配置。
  • Argo CD CR 必须配置为使用 Keycloak SSO 供应商。

流程

  1. 获取用于登录的 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
  2. 获取将用户名和密码存储为环境变量的 Keycloak pod 名称:

    $ oc -n argocd get pods
    
    NAME                      READY   STATUS           RESTARTS   AGE
    keycloak-1-2sjcl           1/1    Running            0        45m
    1. 获取 Keycloak 用户名:

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME
      
      SSO_ADMIN_USERNAME=Cqid54Ih
    2. 获取 Keycloak 密码:

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD
      
      SSO_ADMIN_PASSWORD=GVXxHifH
  3. 在登录页面上,点 LOG IN VIA KEYCLOAK

    注意

    您只能在 Keycloak 实例就绪后看到 LOGIN VIA KEYCLOAK 选项。

  4. Login with OpenShift

    注意

    不支持使用 kubeadmin 登录。

  5. 输入要登录的 OpenShift 凭据。
  6. 可选: 默认情况下,登录到 Argo CD 的任何用户都具有只读访问权限。您可以通过更新 argocd-rbac-cm 配置映射来管理用户级别访问权限:

    policy.csv:
    <name>, <email>, role:admin

5.8.3. 在断开连接的集群中将 Keycloak 与 OpenShift OAuth 服务器集成

在断开连接的集群中,Keycloak 通过代理与 OpenShift OAuth 服务器通信。

流程

按照以下步骤将 Keycloak 与 OpenShift OAuth 服务器集成:

  1. 登录到 Keycloak pod:

    $ oc exec -it dc/keycloak -n argocd -- /bin/bash
  2. 启动 JBoss CLI 工具来设置代理映射:

    /opt/eap/bin/jboss-cli.sh
  3. 在 JBoss CLI 工具中,运行以下命令来启动嵌入的单机服务器:

    embed-server --server-config=standalone-openshift.xml
  4. 为 OpenShift OAuth 服务器主机设置代理映射:

    /subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:write-attribute(name=properties.proxy-mappings,value=["<oauth-server-hostname>;http://<proxy-server-host>:<proxy-server-port>"])
  5. 停止嵌入的服务器:

    quit
  6. 重新载入 JBoss CLI 工具以应用代理映射:

    /opt/eap/bin/jboss-cli.sh --connect --command=:reload

5.8.4. 卸载 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 域中创建的其他配置会被删除。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.