3.3. 迁移 Keycloak CR
Keycloak CR 现在支持所有服务器配置选项。在 CR 的 spec 下,所有相关选项都作为第一类的会面字段提供。CR 中的所有选项遵循相同的命名约定,这与在裸机和 Operator 部署间体验的服务器选项相同。
另外,您可以在 additionalOptions
字段中定义 CR 缺少的任何选项,如 SPI 供应商配置。另一个选择是使用 podTemplate
(一个技术预览字段)来修改原始 Kubernetes 部署 pod 模板,如果支持的替代方案并不存在作为 CR 中的第一个类 该文件字段。
下面显示了一个通过 Operator 部署红帽构建的 Keycloak CR 示例:
请注意 CLI 配置的位置:
./kc.sh start --db=postgres --db-url-host=postgres-db --db-username=user --db-password=pass --https-certificate-file=mycertfile --https-certificate-key-file=myprivatekey --hostname=test.keycloak.org --spi-connections-http-client-default-connection-pool-size=20
./kc.sh start --db=postgres --db-url-host=postgres-db --db-username=user --db-password=pass --https-certificate-file=mycertfile --https-certificate-key-file=myprivatekey --hostname=test.keycloak.org --spi-connections-http-client-default-connection-pool-size=20
3.3.1. 迁移数据库配置 复制链接链接已复制到粘贴板!
Red Hat build of Keycloak 可以使用与之前 Red Hat Single Sign-On 7.6 使用相同的数据库实例。当红帽首次构建 Keycloak 时,数据库架构将自动迁移。
不支持迁移由 Red Hat Single Sign-On 7.6 Operator 管理的嵌入式数据库。
在 Red Hat Single Sign-On 7.6 Operator 中,外部数据库连接使用 Secret 配置,例如:
在 Red Hat build of Keycloak 中,数据库直接在 Keycloak CR 中配置,其凭证被引用为 Secret,例如:
3.3.1.1. 支持的数据库供应商 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.6 Operator 仅支持 PostgreSQL 数据库,但红帽构建的 Keycloak Operator 支持服务器支持的所有数据库供应商。
3.3.2. 迁移 TLS 配置 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.6 Operator 默认将服务器配置为使用 OpenShift CA 生成的 TLS Secret。Red Hat build of Keycloak Operator 不对 TLS 进行任何假设来满足生产环境的最佳实践,并要求用户提供自己的 TLS 证书和密钥对,例如:
tlsSecret 中引用的 secret 的预期格式应使用标准的 Kubernetes TLS Secret (kubernetes.io/tls
)类型。
默认情况下,Red Hat Single Sign-On 7.6 Operator 在 Route 上默认使用重新加密 TLS 终止策略。默认情况下,Red Hat build of Keycloak Operator 使用 passthrough 策略。另外,Red Hat Single Sign-On 7.6 Operator 支持配置 TLS 终止。红帽构建的 Keycloak Operator 不支持当前版本中的 TLS 终止。
如果默认 Operator 管理的 Route 不满足所需的 TLS 配置,则需要用户创建自定义 Route,并禁用它:
3.3.3. 使用自定义镜像进行扩展 复制链接链接已复制到粘贴板!
为了反映最佳实践并支持不可变容器,红帽构建的 Keycloak Operator 不再支持在 Keycloak CR 中指定扩展。要部署扩展,必须构建优化的自定义镜像。Keycloak CR 现在包含专用字段 镜像
,用于指定红帽构建的 Keycloak 镜像,例如:
在指定自定义镜像时,Operator 会假定它已被优化,且不会在每个服务器启动时执行昂贵的优化。
3.3.4. 升级策略已更改 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.6 Operator 支持在执行服务器升级时重新创建和滚动策略。这种方法并不实际。只有 Red Hat Single Sign-On 7.6 Operator 应该在执行升级和数据库迁移前缩减部署,则最多可选择用户。在安全使用滚动策略时,用户不知道用户。
因此,红帽构建的 Keycloak Operator 将默认执行 recreate 策略,这会在创建带有新服务器容器镜像的 Pod 前缩减整个部署,以确保只有一个服务器版本访问数据库。
用户可以配置两种替代更新策略 Auto 和 Explicit,它们在某些情况下允许滚动更新。请注意,在这些更新策略中,任何时候只能访问数据库。
其他资源
3.3.5. 默认启用的健康状况端点 复制链接链接已复制到粘贴板!
Red Hat build of Keycloak 配置服务器,以默认公开 OpenShift 探测使用的健康端点。端点在管理界面上公开,它使用专用端口(默认为9000),可以从 OpenShift 中访问,但不能由 Operator 作为路由公开。
3.3.6. 使用 Pod 模板迁移高级部署选项 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.6 Operator 为部署配置公开多个低级别字段,如卷。Red Hat build of Keycloak Operator 更加建议,不会公开其中大多数字段。但是,仍然可以配置指定为 podTemplate
的任何所需的部署字段,例如:
spec.unsupported.podTemplate
字段 是一个技术预览功能。它仅提供有限的支持,因为它会公开低级别配置,而所有情况下尚未测试完整的功能。在可能的情况下,在 CR spec 的顶级使用完全支持的第一类保证字段。
例如,不使用 spec.unsupported.podTemplate.spec.imagePullSecrets
,而是使用 spec.imagePullSecrets
。
3.3.7. 不再支持连接到外部实例 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.6 Operator 支持连接到 Red Hat Single Sign-On 7.6 的外部实例。例如,红帽构建的 Keycloak Operator 不再支持通过 Client CR 在现有域中创建客户端。
3.3.8. 迁移 Horizontal Pod Autoscaler 启用部署 复制链接链接已复制到粘贴板!
要将 Horizontal Pod Autoscaler (HPA)与 Red Hat Single Sign-On 7.6 搭配使用,需要在 Keycloak CR 中设置 disableReplicasSyncing: true
字段并扩展 server StatefulSet。这不再需要,因为红帽构建的 Keycloak Operator 中的 Keycloak CR 可以直接由 HPA 扩展。