4.4. 迁移过程


  1. 将红帽构建的 Keycloak Operator 安装到命名空间中。
  2. 创建新的 CR 和相关 Secret。

    手动将基于 Red Hat Single Sign-On 7.6 配置模板迁移到新 Red Hat build of Keycloak CR。有关 Template 参数和 Keycloak CR 字段之间的推荐映射,请参见以下示例。

以下示例将红帽构建的 Keycloak Operator CR 与之前由 Red Hat Single Sign-On 7.6 模板创建的 DeploymentConfig 进行比较。

用于红帽构建的 Keycloak 的 Operator CR

apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
  name: rhbk
spec:
  instances: 1
  db:
    vendor: postgres
    host: postgres-db
    usernameSecret:
      name: keycloak-db-secret
      key: username
    passwordSecret:
      name: keycloak-db-secret
      key: password
  http:
    tlsSecret: sso-x509-https-secret

Red Hat Single Sign-On 7.6 的 DeploymentConfig

apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  name: rhsso
spec:
  replicas: 1
  template:
    spec:
      volumes:
        - name: sso-x509-https-volume
          secret:
            secretName: sso-x509-https-secret
            defaultMode: 420
      containers:
          volumeMounts:
            - name: sso-x509-https-volume
              readOnly: true
          env:
            - name: DB_SERVICE_PREFIX_MAPPING
              value: postgres-db=DB
            - name: DB_USERNAME
              value: username
            - name: DB_PASSWORD
              value: password

下表通过 JSON 路径表示法引用 Keycloak CR 的字段。例如,.spec 指的是 spec 字段。请注意,spec.unsupported 是一个技术预览字段。它更为表明,功能将由其他 CR 字段选择。以粗体 标记的参数受 passthrough 和 reencrypt 模板的支持。

4.4.1. 常规参数迁移

Red Hat Single Sign-On 7.6红帽构建的 Keycloak 22.0

APPLICATION_NAME

.metadata.name

IMAGE_STREAM_NAMESPACE

N/A - 镜像由 Operator 控制,或者您主使用 spec.image 指定自定义镜像

SSO_ADMIN_USERNAME

没有直接设置,默认为 admin

SSO_ADMIN_PASSWORD

N/A - 由 Operator 在初始协调过程中创建

MEMORY_LIMIT

.spec.unsupported.podTemplate.spec.containers[0].resources.limits[‘memory’]

SSO_SERVICE_PASSWORD, SSO_SERVICE_USERNAME

不再使用。

SSO_TRUSTSTORE, SSO_TRUSTSTORE_PASSWORD, SSO_TRUSTSTORE_SECRET

创建一个引用 truststore secret 的卷,并为该卷创建一个卷挂载。这需要在不支持的 spec 下完成: .spec.unsupported.podTemplate.spec.volumes.spec.unsupported.podTemplate.spec.containers[0].volumeMounts

在 . spec.additionalOptions 下将以下内容设置为附加选项:

https-trust-store-type=jks

https-trust-store-filespi-truststore-file-file 作为卷挂载中密钥存储的文件路径。

https-trust-store-passwordspi-truststore-file-password 到 password 值。您还可以考虑使用 secretKeyRef的 Secret

例如:

additionalOptions: name: https-trust-store-type value: jks

SSO_REALM

如果您要重复使用现有数据库,则不需要此项。另一种方法是 RealmImport CR。

4.4.2. 数据库部署参数迁移

POSTGRESQL_IMAGE_STREAM_TAG,POSTGRESQL_MAX_CONNECTIONS,VOLUME_CAPACITYPOSTGRESQL_SHARED_BUFFERS 将需要迁移到您选择的创建数据库部署的任何替换中。

4.4.3. 数据库连接参数迁移

Red Hat Single Sign-On 7.6红帽构建的 Keycloak 22.0

DB_VENDOR

.spec.db.vendor - 如果 PostgreSQL 仍在使用,则需要设置为 PostgreSQL

DB_DATABASE

.spec.db.database

DB_MIN_POOL_SIZE

.spec.db.poolMinSize

DB_MAX_POOL_SIZE

.spec.db.maxPoolSize

DB_TX_ISOLATION

如果驱动程序支持或者目标数据库上的常规设置,则可通过 spec.db.url 设置它

DB_USERNAME

.spec.db.usernameSecret

DB_PASSWORD

.spec.db.passwordSecret

DB_JNDI

不再可用

4.4.4. 网络参数迁移

Red Hat Single Sign-On 7.6红帽构建的 Keycloak 22.0

HOSTNAME_HTTP

.spec.hostname.hostname - with .spec.http.httpEnabled=true.由于红帽构建的 Keycloak operator 只会创建一个 Ingress/Route,因此创建 http 路由 .spec.http.tlsSecret 需要未指定

HOSTNAME_HTTPS

.spec.hostname.hostname - with .spec.http.tlsSecret specified.

SSO_HOSTNAME

.spec.hostname.hostname

HTTPS_SECRET

.spec.http.tlsSecret - 请查看下面的其他 HTTPS 参数

HTTPS_KEYSTORE HTTPS_KEYSTORE_TYPE HTTPS_NAME HTTPS_PASSWORD

不再可用。.spec.http.tlsSecret 引用的 secret 应该是 kubernetes.io/tls 类型,带有 tls.crttls.key 条目

X509_CA_BUNDLE

不再可用。创建一个引用信任存储的卷。

请注意,红帽构建的 Keycloak Operator 目前不支持配置 TLS 终止的方法。默认情况下使用 passthrough 策略。因此,代理选项尚未作为第一类公民选项字段公开,因为是否使用了 passthrough 或 reencrypt 策略。但是,如果需要这个选项,可以替换默认 Ingress Operator 证书并手动配置 Route,以信任 Keycloak 证书的红帽构建。

然后,红帽构建的 Keycloak Operator 的默认行为可以被以下覆盖:

additionalOptions:
   name: proxy
   value: reencrypt

4.4.5. JGroups 参数迁移

JGROUPS_ENCRYPT_SECRET、JGROUPS_ENCRYPT_KEYSTORE、JGROUPS_ENCRYPT_NAME、JGROUPS_ENCRYPT_PASSWORD 和 JGROUPS_CLUSTER_PASSWORD 在 Keycloak CR 中没有第一类表示。仍可使用缓存配置文件保护缓存通信的安全。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.