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字段,在ArgoCDCR 中为keycloak供应商添加路由名称。使用此功能支持高级路由用例,如在多个 Ingress Controller 分片 之间平衡传入的流量负载。使用以下示例 YAML 在
ArgoCDCR 中添加host参数:ArgoCDCR 示例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>- 保存文件以使改变生效。
要应用
ArgoCDCR,请运行以下命令:$ oc apply -f <argocd_filename>.yaml -n <your_namespace>运行以下命令验证
host属性是否已添加:$ oc get route keycloak -n <your_namespace> -o yaml输出示例
kind: Route metadata: name: keycloak1 labels: application: keycloak spec: host: sso.test.example.com status: ingress: - host: sso.test.example.com2 注意Keycloak 实例需要 2-3 分钟来安装和运行。