第 3 章 自动导入域
使用操作器自动执行 realm 导入。
3.1. 导入红帽构建的 Keycloak Realm 复制链接链接已复制到粘贴板!
使用红帽构建的 Keycloak Operator,您可以为 Keycloak Deployment 执行域导入。
- 如果红帽构建的 Keycloak 中已存在具有相同名称的 Realm,则不会覆盖它。
- Realm Import CR 只支持创建新域,且不会更新或删除它们。直接在红帽构建的 Keycloak 上执行的域更改不会在 CR 中同步。
3.1.1. 创建 Realm 导入自定义资源 复制链接链接已复制到粘贴板!
以下是 Realm Import 自定义资源(CR)的示例:
此 CR 应在与 Keycloak Deployment CR 相同的命名空间中创建,在字段 keycloakCRName
中定义。realm
字段接受完整的 RealmRepresentation。
获取 RealmRepresentation
的建议方法是利用导出功能 导入和导出域。
- 将 Realm 导出到单个文件。
- 将 JSON 文件转换为 YAML。
-
复制并粘贴获取的 YAML 文件作为
realm
键的正文,确保缩进正确。
3.1.2. 应用 Realm Import CR 复制链接链接已复制到粘贴板!
使用 oc
在正确的集群命名空间中创建 CR:
创建 YAML 文件 example-realm-import.yaml
:
应用更改:
oc apply -f example-realm-import.yaml
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}}'
oc get keycloakrealmimports/my-realm-kc -o go-template='{{range .status.conditions}}CONDITION: {{.type}}{{"\n"}} STATUS: {{.status}}{{"\n"}} MESSAGE: {{.message}}{{"\n"}}{{end}}'
当导入成功完成后,输出将类似以下示例:
3.1.3. 占位符 复制链接链接已复制到粘贴板!
导入支持引用环境变量的占位符,请参阅 导入和导出域。KeycloakRealmImport
CR 允许您通过 spec.placeholders
小节利用此功能,例如:
在上例中,将启用占位符替换,并且将从键为 'SECRET_KEY 的 Secret SECRET_NAME 的值创建环境变量
。目前只支持 Secret,它们必须与 Keycloak CR 位于同一个命名空间中。
ENV_KEY
3.1.4. 安全注意事项 复制链接链接已复制到粘贴板!
创建或编辑 KeycloakRealmImport CR 的任何人都应是一个命名空间级别 admin。
占位符替换可让您访问所有环境变量,甚至是敏感的变量。