使用自定义 Keycloak 镜像

如何自定义和优化 Keycloak 容器

使用 Operator 的 Keycloak 自定义镜像

通过 Keycloak 自定义资源 (CR),您可以为 Keycloak 服务器指定自定义容器镜像。

为确保 Operator 和 Operand 的完全兼容性,请确保自定义镜像中使用的 Keycloak 版本与 Operator 的版本一致。

最佳实践

当使用默认 Keycloak 镜像时,服务器每次 Pod 启动时都会执行代价高昂的重新增强 (re-augmentation) 操作。为了避免这种延迟,您可以提供一个自定义镜像,其中在镜像构建时已内置了增强功能。

使用自定义镜像,您还可以在容器构建期间指定 Keycloak 的构建时配置和扩展。

当使用优化的自定义镜像时,health-enabledmetrics-enabled 选项需要在 Containerfile 中显式设置。

有关如何构建此类镜像的说明,请参阅 在容器中运行 Keycloak

提供自定义 Keycloak 镜像

要提供自定义镜像,您需要在 Keycloak CR 中定义 image 字段,如本示例所示

apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
  name: example-kc
spec:
  instances: 1
  image: quay.io/my-company/my-keycloak:latest
  http:
    tlsSecret: example-tls-secret
  hostname:
    hostname: test.keycloak.org
对于自定义镜像,通过专用字段或 additionalOptions 传递的每个构建时选项都将被忽略。
Operator 不感知 自定义镜像中指定的任何配置选项。对于任何需要 Operator 感知的配置,请使用 Keycloak CR,特别是配置服务和探测时反映的 TLS 和 HTTP(S) 设置。

非优化的自定义镜像

虽然使用预增强 (pre-augmented) 镜像被认为是最佳实践,但如果您想使用非优化的自定义镜像或将构建时属性与增强镜像一起使用,这仍然是可能的。您只需将 startOptimized 字段设置为 false,如本示例所示

apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
  name: example-kc
spec:
  instances: 1
  image: quay.io/my-company/my-keycloak:latest
  startOptimized: false
  http:
    tlsSecret: example-tls-secret
  hostname:
    hostname: test.keycloak.org

请记住,这将导致每次启动都产生重新增强 (re-augmentation) 的成本。