第 3 章 红帽构建的 Keycloak Realm Import
3.1. 导入红帽构建的 Keycloak Realm
使用红帽构建的 Keycloak Operator,您可以为 Keycloak Deployment 执行域导入。
注意
- 如果红帽构建的 Keycloak 中已存在具有相同名称的 Realm,则不会覆盖它。
- Realm Import CR 仅支持创建新域,且不更新或删除它们。直接在红帽构建的 Keycloak 上执行的域更改不会在 CR 中同步。
3.1.1. 创建 Realm Import 自定义资源
以下是 Realm Import 自定义资源(CR)的示例:
apiVersion: k8s.keycloak.org/v2alpha1 kind: KeycloakRealmImport metadata: name: my-realm-kc spec: keycloakCRName: <name of the keycloak CR> realm: ...
此 CR 应该与 Keycloak Deployment CR 在同一命名空间中创建,在字段 keycloakCRName
中定义。realm
字段接受完整的 RealmRepresentation。
获取 RealmRepresentation
的建议方法是利用导出功能 导入和导出 Realms。
- 将 Realm 导出至单个文件。
- 将 JSON 文件转换为 YAML。
-
复制并粘贴获取的 YAML 文件,作为
realm
键的正文,确保缩进正确。
3.1.2. 应用 Realm Import CR
使用 oc
在正确的集群命名空间中创建 CR:
创建 YAML 文件 example-realm-import.yaml
:
apiVersion: k8s.keycloak.org/v2alpha1 kind: KeycloakRealmImport metadata: name: my-realm-kc spec: keycloakCRName: <name of the keycloak CR> realm: id: example-realm realm: example-realm displayName: ExampleRealm enabled: true
应用更改:
oc apply -f example-realm-import.yaml
要检查正在运行的导入的状态,请输入以下命令:
oc get keycloakrealmimports/my-realm-kc -o go-template='{{range .status.conditions}}CONDITION: {{.type}}{{"\n"}} STATUS: {{.status}}{{"\n"}} MESSAGE: {{.message}}{{"\n"}}{{end}}'
当导入成功完成时,输出将类似以下示例:
CONDITION: Done STATUS: true MESSAGE: CONDITION: Started STATUS: false MESSAGE: CONDITION: HasErrors STATUS: false MESSAGE: