4.2. 在环境间迁移 Red Hat Single Sign-On 服务器的数据库
本教程着重介绍将 Red Hat Single Sign-On 服务器数据库从一个环境迁移到另一个环境或迁移到不同的数据库。
Red Hat Single Sign-On 7.6.11 数据库的导出和导入是在引导时触发的,其参数通过 Java 系统属性传递。这意味着在一个红帽单点登录服务器引导期间,仅执行其中一个可能的迁移操作、导出 或 导入。
4.2.1. 部署 Red Hat Single Sign-On PostgreSQL 应用程序模板 复制链接链接已复制到粘贴板!
先决条件
- 已执行 为 OpenShift Deployment 准备红帽单点登录身份验证 部分中描述的步骤。
流程
- 登录 OpenShift Web 控制台,再选择 sso-app-demo 项目空间。
- 单击 Add to project,以列出默认镜像流和模板。
- 使用 Filter by keyword 搜索栏,将列表限制为与 sso 匹配的列表。您可能需要点击 See all 以显示所需的应用程序模板。
选择 sso76-ocp4-postgresql Red Hat Single Sign-On 应用程序模板。在部署模板时,请确保 保留 SSO_REALM 变量未设置 (默认值)。
警告当在 Red Hat Single Sign-On 上为 OpenShift 镜像设置了 SSO_REALM 配置变量时,将执行数据库导入,以创建 变量所请求的红帽单点登录服务器域。要使数据库导出正确执行,无法在此类镜像上同时定义 SSO_REALM 配置变量。
点击 Create 来部署应用程序模板并启动 Pod 部署。这可能需要几分钟时间。
然后,使用 管理员帐户 访问位于 https://secure-sso- <sso-app-demo> . <openshift32.example.com> /auth/admin 的 Red Hat Single Sign-On Web 控制台。
注意这个示例工作流使用自生成的 CA 为演示提供一个端到端工作流。访问 Red Hat Single Sign-On Web 控制台将出现不安全的连接警告。
对于生产环境,红帽建议您使用从验证的证书颁发机构购买的 SSL 证书。
4.2.2. (可选)创建要导出的额外域和用户 复制链接链接已复制到粘贴板!
当执行 Red Hat Single Sign-On 7.6.11 服务器数据库导出时,只会导出当前数据库中的域和用户。如果导出的 JSON 文件还应包含其他红帽单点登录域和用户,则需要创建它们。使用这些程序。
在创建之后,可以导出数据库。
先决条件
- 创建新的域和用户。
流程
获取红帽单点登录部署配置并将其缩减为零。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指示在 Red Hat Single Sign-On 7.6.11 服务器上部署的 Red Hat Single Sign-On 7.6.11 服务器,以便在 Red Hat Single Sign-On 服务器引导时执行数据库导出。
oc set env dc/sso \ -e "JAVA_OPTS_APPEND= \ -Dkeycloak.migration.action=export \ -Dkeycloak.migration.provider=singleFile \ -Dkeycloak.migration.file=/tmp/demorealm-export.json"
$ oc set env dc/sso \ -e "JAVA_OPTS_APPEND= \ -Dkeycloak.migration.action=export \ -Dkeycloak.migration.provider=singleFile \ -Dkeycloak.migration.file=/tmp/demorealm-export.json"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备份红帽单点登录部署配置。这将启动 Red Hat Single Sign-On 服务器并导出其数据库。
oc scale --replicas=1 dc sso
$ oc scale --replicas=1 dc sso deploymentconfig "sso" scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)验证导出是否成功。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. 检索并导入导出的 JSON 文件 复制链接链接已复制到粘贴板!
流程
从 pod 检索 Red Hat Single Sign-On 数据库的 JSON 文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)将 Red Hat Single Sign-On 数据库的 JSON 文件导入到另一个环境中运行的红帽单点登录服务器。
注意有关导入到 OpenShift 上未运行的 Red Hat Single Sign-On 服务器,请参阅 导入和导出数据库。
当 Red Hat Single Sign-On 服务器作为 OpenShift 上的 Red Hat Single Sign-On 7.6.11 容器运行时,使用 Admin Console Export/Import 功能将之前导出的 JSON 文件中的资源导入到 Red Hat Single Sign-On 服务器数据库中。
-
使用用于创建管理员用户的凭据,登录红帽单点登录服务器的
主域
管理控制台。在浏览器中,导航到 Red Hat Single Sign -On web 服务器的 http://sso-<project-name>.<hostname>/auth/admin,或指向加密的红帽 Single Sign -On web 服务器的 https://secure-sso-<project-name>.<hostname>/auth/admin。 -
在侧边栏的顶部,选择 Red Hat Single Sign-On 域的名称、用户、客户端、域角色和客户端角色。本例使用
master
realm。 - 单击侧栏底部的 Manage 部分下的 Import 链接。
-
在打开的页面中,单击 Select file,然后指定本地文件系统中导出的
demorealm-export.json
JSON 文件的位置。 -
在 Import from realm 下拉菜单中选择应从其中导入数据的 Red Hat Single Sign-On 域的名称。本例使用
master
realm。 - 选择应导入哪些用户、客户端、域角色和客户端角色(所有这些角色都默认导入)。
选择要执行的策略,即资源已存在( Fail、Skip 或 Overwrite之一)。
注意如果当前数据库中已存在具有相同标识符的对象,尝试导入对象(用户、客户端、域角色或客户端角色)。使用 Skip 策略导入
demorealm-export.json
文件中存在的对象,但不存在于当前数据库中。单击 Import 以执行导入。
当将对象从非 master 域导入到
master
域时,点 Import 按钮后,有时可能会出现类似以下的错误:在这种情况下,首先需要创建缺少的客户端,将 Access Type 设为 bearer-only。这些客户端可通过从源红帽单点登录服务器(创建导出 JSON 文件)到目标红帽单点登录服务器(其中导入 JSON 文件)的特征来创建。创建必要的客户端后,再次单击 导入 按钮。
要绕过 上述 错误消息,需要创建缺少的
realm-management
客户端(使用 bearer-only Access Type ),然后再次单击 Import 按钮。对于 Skip import 策略,新添加的对象被标记为 ADDED 和跳过的对象,在导入结果页面的 Action 列中被标记为 SKIPPED。
如果选择( 覆盖 策略), Admin Console 导入允许您覆盖 资源。在生产环境中,请谨慎使用此功能。
-
使用用于创建管理员用户的凭据,登录红帽单点登录服务器的