第 4 章 高级配置
4.1. 高级配置
本章论述了如何使用自定义资源(CR)进行红帽构建的 Keycloak 部署高级配置。
4.1.1. 服务器配置详情
许多服务器选项都作为 Keycloak CR 中的第一类统计字段公开。CR 的结构基于红帽构建的 Keycloak 的配置结构。例如,若要配置服务器的 https-port
,请按照 CR 中的类似模式并使用 httpsPort
字段。以下示例是复杂的服务器配置,但演示了服务器选项和 Keycloak CR 之间的关系:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: name: example-kc spec: db: vendor: postgres usernameSecret: name: usernameSecret key: usernameSecretKey passwordSecret: name: passwordSecret key: passwordSecretKey host: host database: database port: 123 schema: schema poolInitialSize: 1 poolMinSize: 2 poolMaxSize: 3 http: httpEnabled: true httpPort: 8180 httpsPort: 8543 tlsSecret: my-tls-secret hostname: hostname: my-hostname admin: my-admin-hostname strict: false strictBackchannel: false features: enabled: - docker - authorization disabled: - admin - step-up-authentication transaction: xaEnabled: false
有关选项列表,请参阅 Keycloak CRD。有关配置选项的详情,请查看 所有配置。
4.1.1.1. 其他选项
有些专家服务器选项作为 Keycloak CR 中的专用字段不可用。以下是省略的字段示例:
- 需要深入了解底层红帽构建的 Keycloak 实现的字段
- 与 OpenShift 环境无关的字段
- 供应商配置的字段,因为它们是根据使用的供应商实施动态的
Keycloak CR 的 additionalOptions
字段可让红帽构建 Keycloak 以键值对的形式接受任何可用的配置。您可以使用此字段包含 Keycloak CR 中省略的任何选项。有关配置选项的详情,请查看 所有配置。
这些值可以用纯文本字符串或 Secret 对象引用表示,如下例所示:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: name: example-kc spec: ... additionalOptions: - name: spi-connections-http-client-default-connection-pool-size secret: # Secret reference name: http-client-secret # name of the Secret key: poolSize # name of the Key in the Secret - name: spi-email-template-mycustomprovider-enabled value: true # plain text value
以这种方式定义的选项名称格式与配置文件中指定的选项的密钥格式相同。有关各种配置格式的详情,请参阅配置红帽构建的 Keycloak。
4.1.2. Secret References
secret References 由 Keycloak CR 中的一些专用选项使用,如 tlsSecret
,或作为 additionalOptions
中的值。
在指定 Secret Reference 时,请确保包含与引用它的 CR 相同的命名空间中有一个包含引用密钥的 Secret。除了红帽构建的 Keycloak Server Deployment 外,Operator 还为引用的 Secret 添加特殊标签以监视是否有变化。
修改引用的 Secret 时,Operator 会执行红帽构建的 Keycloak Deployment 的滚动重启,以获取更改。
4.1.3. 不支持的功能
CR 的 unsupported
字段包含没有完全测试且技术预览的高实验性配置选项。
4.1.3.1. Pod 模板
Pod 模板是用于 Deployment 模板的原始 API 表示。当您的用例的 CR 顶级不存在支持字段时,此字段是一个临时临时解决方案。
Operator 将提供的模板字段与 Operator 为特定 Deployment 生成的值合并。使用此功能,您可以访问高级别的自定义。但是,不能保证部署可以按预期工作。
以下示例演示了注入标签、注解、卷和卷挂载:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: name: example-kc spec: ... unsupported: podTemplate: metadata: labels: my-label: "keycloak" spec: containers: - volumeMounts: - name: test-volume mountPath: /mnt/test volumes: - name: test-volume secret: secretName: keycloak-additional-secret
4.1.4. 禁用所需选项
红帽构建的 Keycloak 和红帽构建的 Keycloak Operator 提供了最佳生产就绪体验。但是,在开发阶段,您可以禁用关键安全功能。
具体来说,您可以禁用主机名和 TLS,如下例所示:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: name: example-kc spec: ... http: httpEnabled: true hostname: strict: false strictBackchannel: false