第 3 章 自动导入域


使用操作器自动执行 realm 导入。

3.1. 导入红帽构建的 Keycloak Realm

使用红帽构建的 Keycloak Operator,您可以为 Keycloak Deployment 执行域导入。

注意
  • 如果红帽构建的 Keycloak 中已存在具有相同名称的 Realm,则不会覆盖它。
  • Realm Import CR 只支持创建新域,且不会更新或删除它们。直接在红帽构建的 Keycloak 上执行的域更改不会在 CR 中同步。

3.1.1. 创建 Realm 导入自定义资源

以下是 Realm Import 自定义资源(CR)的示例:

apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
  name: my-realm-kc
spec:
  keycloakCRName: <name of the keycloak CR>
  realm:
    ...
Copy to Clipboard Toggle word wrap

此 CR 应在与 Keycloak Deployment CR 相同的命名空间中创建,在字段 keycloakCRName 中定义。realm 字段接受完整的 RealmRepresentation

获取 RealmRepresentation 的建议方法是利用导出功能 导入和导出域

  1. 将 Realm 导出到单个文件。
  2. 将 JSON 文件转换为 YAML。
  3. 复制并粘贴获取的 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
Copy to Clipboard Toggle word wrap

应用更改:

oc apply -f example-realm-import.yaml
Copy to Clipboard Toggle word wrap

要检查正在运行的导入的状态,请输入以下命令:

oc get keycloakrealmimports/my-realm-kc -o go-template='{{range .status.conditions}}CONDITION: {{.type}}{{"\n"}}  STATUS: {{.status}}{{"\n"}}  MESSAGE: {{.message}}{{"\n"}}{{end}}'
Copy to Clipboard Toggle word wrap

当导入成功完成后,输出将类似以下示例:

CONDITION: Done
  STATUS: true
  MESSAGE:
CONDITION: Started
  STATUS: false
  MESSAGE:
CONDITION: HasErrors
  STATUS: false
  MESSAGE:
Copy to Clipboard Toggle word wrap

3.1.3. 占位符

导入支持引用环境变量的占位符,请参阅 导入和导出域KeycloakRealmImport CR 允许您通过 spec.placeholders 小节利用此功能,例如:

apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
  name: my-realm-kc
spec:
  keycloakCRName: <name of the keycloak CR>
  placeholders:
    ENV_KEY:
      secret:
        name: SECRET_NAME
        key: SECRET_KEY
    ...
Copy to Clipboard Toggle word wrap

在上例中,将启用占位符替换,并且将从键为 'SECRET_KEY 的 Secret SECRET_NAME 的值创建环境变量 ENV_KEY 。目前只支持 Secret,它们必须与 Keycloak CR 位于同一个命名空间中。

3.1.4. 安全注意事项

警告

创建或编辑 KeycloakRealmImport CR 的任何人都应是一个命名空间级别 admin。

占位符替换可让您访问所有环境变量,甚至是敏感的变量。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat