3.2. 在 Keycloak 中配置新客户端


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

流程

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

  1. 通过从 Argo CD 自定义资源 (CR) 中删除 .spec.sso.dex 参数来删除 Dex 配置,并保存 CR:

    dex:
        openShiftOAuth: true
        resources:
          limits:
            cpu:
            memory:
          requests:
            cpu:
            memory:
  2. 在 Argo CD CR 中将 provider 参数的值设置为 keycloak
  3. 通过执行以下步骤配置 Keycloak:

    • 对于安全连接,设置 rootCA 参数的值,如下例所示:

      apiVersion: argoproj.io/v1beta1
      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.sso.keycloak.rootCA 参数中的更改,并使用 argocd-cm 配置映射中 PEM 编码的 root 证书更新 oidc.config 参数。

    • 对于不安全连接,将 rootCA 参数的值留空,并使用 oidc.tls.insecure.skip.verify 参数,如下所示:

      apiVersion: argoproj.io/v1beta1
      kind: ArgoCD
      metadata:
        name: example-argocd
        labels:
          example: basic
      spec:
        extraConfig:
          oidc.tls.insecure.skip.verify: "true"
        sso:
          provider: keycloak
          keycloak:
            rootCA: ""
    • 可选:自定义 spec.sso.keycloak 字段,在 ArgoCD CR 中为 keycloak 供应商添加路由名称。使用此功能支持高级路由用例,如在多个 Ingress Controller 分片 之间平衡传入的流量负载。

      • 使用以下示例 YAML 在 ArgoCD CR 中添加 host 参数:

        ArgoCD CR 示例

        apiVersion: argoproj.io/v1alpha1
        kind: ArgoCD
        metadata:
          name: <resource_name> 1
          labels:
            example: route
        spec:
          sso:
            provider: keycloak
            keycloak:
             host: <hostname> 2
          server:
            ingress:
              enabled: true
            insecure: true

        1
        <resource_name > 替换为 ArgoCD CR 的名称。
        2
        <hostname > 替换为主机密钥的名称,如 sso.test.example.com
      • 要创建 ArgoCD CR,请运行以下命令:

        $ oc create -f <argocd_filename>.yaml -n <your-namespace>
      • 要编辑 ArgoCD CR,请运行以下命令:

        $ oc edit -f <argocd_filename>.yaml -n <your_namespace>
      • 保存文件以使改变生效。
      • 要应用 ArgoCD CR,请运行以下命令:

        $ oc apply -f <argocd_filename>.yaml -n <your_namespace>
      • 运行以下命令验证 host 属性是否已添加:

        $ oc get route keycloak -n <your_namespace> -o yaml

        输出示例

        kind: Route
        metadata:
          name: keycloak 1
          labels:
            application: keycloak
        spec:
          host: sso.test.example.com
        status:
          ingress:
            - host: sso.test.example.com 2

        1
        指定路由的名称。
        2
        指定主机密钥的名称。
        注意

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.