11.3. 使用自定义资源安装 Red Hat Single Sign-On
您可以通过创建 Keycloak 自定义资源,使用 Operator 自动安装 Red Hat Single Sign-On。当您使用自定义资源安装 Red Hat Single Sign-On 时,您可以创建此处描述的组件和服务,并在下图所示显示。
-
Keycloak-db-secret
- 存储属性,如数据库用户名、密码和外部地址(如果您连接到外部数据库) -
credentials-<CR-Name
> - 用户名和密码登录到 Red Hat Single Sign-On admin 控制台(<CR-Name
> 基于Keycloak
自定义资源名称) -
Keycloak
- Keycloak 部署规格,作为具有高可用性支持的 StatefulSet 实现 -
Keycloak-postgresql
- 启动 PostgreSQL 数据库安装 -
Keycloak-discovery
Service - 执行JDBC_PING
发现 -
Keycloak
Service - 通过 HTTPS 连接到 Red Hat Single Sign-On(不支持 HTTP) -
Keycloak-postgresql
Service - 连接到内部和外部数据库实例 -
Keycloak
Route - 从 OpenShift 访问 Red Hat Single Sign-On 管理控制台的 URL
Operator 组件和服务如何交互
11.3.1. Keycloak 自定义资源
Keycloak 自定义资源是一个 YAML 文件,它定义了用于安装的参数。此文件包含三个属性:
-
实例
- 控制在高可用性模式下运行的实例数量。 -
externalAccess
-如果启用
则为True
,Operator 会为 Red Hat Single Sign-On 集群创建一个路由。您可以将host
设置为覆盖自动选择的 Route 的主机名 -
externalDatabase
- 以连接到外部托管数据库。本指南的 外部数据库 部分将涵盖该主题。将其设置为 false 时应用于测试目的,并将安装嵌入的 PostgreSQL 数据库。请注意,在生产环境中不支持 externalDatabase:false。
Keycloak 自定义资源的 YAML 文件示例
apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: name: example-sso labels: app: sso spec: instances: 1 externalAccess: enabled: True
您可以更新 YAML 文件,且 Red Hat Single Sign-On admin 控制台中出现的更改不会更新自定义资源。
11.3.2. 在 OpenShift 中创建 Keycloak 自定义资源
在 OpenShift 中,您可以使用自定义资源来创建路由,该路由是 admin 控制台的 URL,并找到包含 admin 控制台的用户名和密码。
先决条件
- 对此自定义资源有一个 YAML 文件。
- 您有 cluster-admin 权限或管理员授予了同等权限的权限级别。
流程
使用您的 YAML 文件创建路由:
oc create -f <filename>.yaml -n <namespace>
.例如:$ oc create -f sso.yaml -n sso keycloak.keycloak.org/example-sso created
OpenShift 中创建了一个路由。
- 登录到 OpenShift Web 控制台。
选择
Networking
,Routes
并搜索 Keycloak。OpenShift Web 控制台中的路由屏幕
在带有 Keycloak 路由的屏幕上,点
Location
下的 URL。此时会出现 Red Hat Single Sign-On admin 控制台登录屏幕。
管理控制台登录屏幕
在 OpenShift web 控制台中找到 admin 控制台的用户名和密码;在
Workloads
下,点Secrets
并搜索 Keycloak。OpenShift Web 控制台中的机密页面
在 admin 控制台登录屏幕中输入用户名和密码。
管理控制台登录屏幕
您现在已登录到一个由 Keycloak 自定义资源安装的 Red Hat Single Sign-On 实例。您已准备好为 realm、client 和 users 创建自定义资源。
Red Hat Single Sign-On master realm
检查自定义资源的状态:
$ oc describe keycloak <CR-name>
结果
Operator 处理自定义资源后,使用以下命令查看状态:
$ oc describe keycloak <CR-name>
Keycloak 自定义资源状态
Name: example-keycloak Namespace: keycloak Labels: app=sso Annotations: <none> API Version: keycloak.org/v1alpha1 Kind: Keycloak Spec: External Access: Enabled: true Instances: 1 Status: Credential Secret: credential-example-keycloak Internal URL: https://<External URL to the deployed instance> Message: Phase: reconciling Ready: true Secondary Resources: Deployment: keycloak-postgresql Persistent Volume Claim: keycloak-postgresql-claim Prometheus Rule: keycloak Route: keycloak Secret: credential-example-keycloak keycloak-db-secret Service: keycloak-postgresql keycloak keycloak-discovery Service Monitor: keycloak Stateful Set: keycloak Version: Events:
其他资源
- 安装 Red Hat Single Sign-On 后,就可以 创建一个域自定义资源。
- 外部数据库是受支持的选项,需要在 Keycloak 自定义资源中启用。您只能只在测试时禁用这个选项,并在切换到生产环境时启用它。请参阅连接到外部数据库。