导入和导出
Keycloak 支持导入和导出 Realm 配置,用于备份、迁移和环境复制。
目录
导出方法通过 Admin Console 导出(部分导出)通过 CLI 导出(完整导出)通过 REST API 导出导入方法通过 KeycloakRealmImport CRD 导入(推荐用于初始设置)通过 CLI 导入(启动时导入)通过 Admin Console 导入环境之间的迁移导出方法
通过 Admin Console 导出(部分导出)
- 在 Admin Console 中选择目标 Realm。
- 转到 Realm Settings > Action 菜单(右上角)> Partial export。
- 选择要包含的内容:
- Groups and related roles
- Clients
- Roles
- 点击 Export。
- 系统将下载一个 JSON 文件,其中包含所选 Realm 的配置。
部分导出不包含用户数据、机密或凭据。它仅导出结构配置(客户端、角色、组、身份验证流等)。
通过 CLI 导出(完整导出)
如需包含用户和凭据的完整导出,请使用 Keycloak CLI 导出命令。在 Kubernetes 环境中,可将其作为 Job 运行,或通过 exec 进入 Pod:
导出选项:
Keycloak CLI 导出命令要求服务器已停止,或在特殊导出模式下运行。在 Kubernetes 中,最佳做法是将其作为一次性 Job 运行,或缩减 deployment,运行导出后再将其扩容回原规模。或者,使用 Admin REST API 进行实时导出。
通过 REST API 导出
使用 Admin REST API 执行实时、无中断的部分导出:
导入方法
通过 KeycloakRealmImport CRD 导入(推荐用于初始设置)
KeycloakRealmImport CRD 是在 Kubernetes 部署中进行初始 Realm 配置的首选方法。有关详细信息,请参阅管理 Realm。
KeycloakRealmImport CRD 会在创建资源时执行一次性导入。它不是持续同步控制器——之后通过 Admin Console 或 REST API 进行的更改不会反映回 CR,更新 CR 也不会自动将更改重新应用到现有 Realm。
具体而言:
- 它会在导入时创建新的 Realm。如果已存在同名 Realm,导入不会覆盖或更新现有 Realm。
- 它不会跟踪或协调持续变化的 Realm 状态。
- 初始导入后修改 CR 不会自动触发重新导入。
- 它不会删除 Realm 或 Realm 对象——这是一种仅用于创建的机制。
- 不应将其作为完整的生命周期管理或 GitOps 同步机制。
如需在初始导入后持续更改 Realm 配置,请使用 Admin Console 或 Admin REST API。
通过 CLI 导入(启动时导入)
将导出文件放置在目录中,并配置 Keycloak 在启动时执行导入:
通过 Admin Console 导入
- 转到创建 Realm(左上角下拉菜单 > 创建 Realm)。
- 单击浏览并选择 Realm 导出 JSON 文件。
- 单击创建。
此方法会根据 JSON 文件创建新的 Realm。它不会合并到现有 Realm 中。
环境之间的迁移
要将一个环境中的 Keycloak 配置复制到另一个环境:
- 从源环境导出 Realm(使用部分导出或 REST API)。
- 检查并清理导出内容:
- 删除特定于环境的 URL 和主机名。
- 删除或替换客户端密钥(对密钥使用
KeycloakRealmImport占位符)。 - 更新重定向 URI,使其与目标环境匹配。
- 使用
KeycloakRealmImportCRD 导入到目标环境。
有关从 Red Hat Single Sign-On 迁移的信息,请参阅从 RH-SSO 迁移。