3.2. 在 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/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
要创建
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
注意Keycloak 实例需要 2-3 分钟来安装和运行。