dex:
openShiftOAuth: true
resources:
limits:
cpu:
memory:
requests:
cpu:
memory:
安装 Red Hat OpenShift GitOps Operator 后,Argo CD 会自动创建一个具有admin
权限的用户。为了管理多个用户,集群管理员可以使用 Argo CD 配置单点登录 (SSO)。
Red Hat SSO 已安装在集群上。
Red Hat OpenShift GitOps Operator 已安装在您的 OpenShift Container Platform 集群上。
Argo CD 已安装在集群上。
集群中提供DeploymentConfig
API。更多信息,请参见“DeploymentConfig [apps.openshift.io/v1]”。
默认情况下,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 编码的根证书更新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
CRapiVersion: 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 分钟才能安装并运行。 |
登录 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=Cqid54Ih
获取 Keycloak 密码
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD
SSO_ADMIN_PASSWORD=GVXxHifH
在登录页面上,单击通过 Keycloak 登录。
只有在 Keycloak 实例准备就绪后,您才能看到通过 Keycloak 登录选项。 |
单击使用 OpenShift 登录。
不支持使用 |
输入 OpenShift 凭据以登录。
可选:默认情况下,任何登录到 Argo CD 的用户都只有只读访问权限。您可以通过更新argocd-rbac-cm
配置映射来管理用户级别访问权限
policy.csv:
<name>, <email>, role:admin
您可以通过从 Argo CD 自定义资源 (CR) 文件中删除SSO
字段来删除 Keycloak 资源及其相关配置。删除SSO
字段后,文件中的值将类似于以下内容
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example-argocd
labels:
example: basic
spec:
server:
route:
enabled: true
使用此方法创建的 Keycloak 应用程序当前不持久。当服务器重启时,在 Argo CD Keycloak 领域中创建的附加配置将被删除。 |
默认情况下,Keycloak 容器使用资源请求和限制创建。您可以更改和管理资源请求。
资源 | 请求 | 限制 |
---|---|---|
CPU |
500 |
1000m |
内存 |
512 Mi |
1024 Mi |
修改默认资源需求,修补 Argo CD 自定义资源 (CR)
$ oc -n openshift-gitops patch argocd openshift-gitops --type='json' -p='[{"op": "add", "path": "/spec/sso", "value": {"provider": "keycloak", "resources": {"requests": {"cpu": "512m", "memory": "512Mi"}, "limits": {"cpu": "1024m", "memory": "1024Mi"}} }}]'
由 Red Hat OpenShift GitOps 创建的 Keycloak 仅保留由操作员进行的更改。如果 Keycloak 重启,则管理员在 Keycloak 中创建的任何其他配置都将被删除。 |