自定义部署

Keycloak 的部署可以使用环境设置进行自定义,以支持不同的存储和其他功能。更改此设置的中心位置是 provision/minikube 文件夹中的 .env 文件。

默认部署

在 Minikube 设置上运行 Keycloak 时,它将默认使用 Keycloak 运算符和 Keycloak 的最新夜间镜像以及 PostgreSQL 数据库运行 Keycloak。

请参阅 存储配置,了解可用的存储选项。

更改默认部署

要更改默认设置,请在 provision/minikube 文件夹中创建 .env

以下示例配置启用了 PostgreSQL。

KC_DATABASE=postgres

每次更改后,重新运行 task 命令将更改应用到 Minikube 实例。Task 将触发必要的脚本,并将使用最少的步骤来更新 Minikube。不需要运行 rebuild.sh:它将销毁整个实例,并且完成需要更长时间。

作为另一种方式,参数可以在 task 命令的命令行中传递。

task KC_DATABASE="postgres"

可用的 Keycloak 配置选项

以下配置选项可用于配置 Keycloak 和系统下测试的其他部分。所有默认值都在 Taskfile.yaml 中配置。

KC_DATABASE

设置要作为 Keycloak 数据库部署的存储。

默认值:postgres

可用选项

postgres

部署单个 PostgreSQL 实例。

有关更多信息,请参阅 使用 PostgreSQL 存储

aurora-postgres

连接到 AWS Aurora PostgreSQL 集群。

KC_DATABASE_URL

定义部署在 Kubernetes 集群外部的数据库的外部端点。

默认值:空

KC_DB_POOL_INITIAL_SIZE

设置 DB 连接池的初始数据库大小。

默认值:5

为了获得最佳性能,初始、最小和最大 DB 连接池大小的值应相等。这将避免在新的请求到达时创建新的 DB 连接,这将非常昂贵。

保持 DB 连接尽可能长时间可以实现服务器端语句缓存,该缓存绑定到连接。在 PostgreSQL 的情况下,为了使用服务器端预备语句,查询至少需要执行(默认)五次

有关更多信息,请参阅有关 预备语句的 PostgreSQL 文档

KC_DB_POOL_MAX_SIZE

设置 Keycloak 的存储配置参数。

默认值:10

最大 DB 连接数乘以正在运行的 Keycloak 实例的最大数量不能超过数据库允许的最大数据库连接数。默认 PostgreSQL 实例配置为最多 100 个 DB 连接。

有关更多信息,请参阅 KC_DB_POOL_INITIAL_SIZE

KC_DB_POOL_MIN_SIZE

设置 Keycloak 的存储配置参数。

默认值:5

有关更多信息,请参阅 KC_DB_POOL_INITIAL_SIZE

KC_OPERATOR_TAG

允许自定义 Keycloak 运算符的版本。

默认值:nightly

KC_CONTAINER_IMAGE

设置要用于 Keycloak 的镜像。当使用 Keycloak 运算符的夜间镜像时,此值默认为 quay.io/keycloak/keycloak:nightly

当镜像名称以 localhost/ 开头时,该镜像将被期望在本地构建,并且不会从互联网上拉取。

有关如何构建本地镜像的详细信息,请参阅 在 Kubernetes 中使用自定义 Keycloak 镜像进行部署

KC_INSTANCES

设置 Keycloak 实例的数量。

默认值:1

KC_CPU_LIMITS

设置每个 Keycloak Pod 的 CPU 限制。

默认值:4

该值必须遵循 Kubernetes CPU 单位 格式。

KC_MEMORY_LIMITS_MB

设置每个 Keycloak Pod 的内存限制(以 MB 为单位)。

默认值:1024

KC_METASPACE_INIT_MB

设置每个 Keycloak JVM 的初始元空间大小(以 MB 为单位)。

默认值:96

KC_METASPACE_MAX_MB

设置每个 Keycloak JVM 的最大元空间大小(以 MB 为单位)。

默认值:256

KC_CRYOSTAT

启用 Cryostat 从 Keycloak 捕获 JFR 记录。

默认值:true

KC_OTEL

如果 OpenTelemetry 应该为 Keycloak 启用以收集跟踪。

默认值:false

可用选项

  • true — 启用 Keycloak 的内置 OpenTelemetry 跟踪。

  • false — 禁用 OpenTelemetry 跟踪。

KC_OTEL_SAMPLING_PERCENTAGE

应向 Jaeger 发送多少个跟踪以进行报告。仅当 KC_OTEL 设置为 true 时才有效。

默认值:0.001(0.1% 的跟踪报告到 Jaeger)。

虽然 1.0 的值对于在本地测试期间将所有跟踪报告到 Jaeger 很有用,但它会创建大量数据,这将使 Jaeger 实例的内存过载,最终导致其重启。在性能运行期间,仅收集一小部分跟踪。

KC_CUSTOM_INFINISPAN_CONFIG

如果应该使用自定义 Infinispan 配置。此选项仅适用于传统存储。

默认值:true

可用选项

  • true — Keycloak 配置为使用自定义配置文件,该文件会挂载到每个 Pod。该文件可以在这里找到:kcb-infinispan-cache-config.xml

  • false — 使用 Keycloak 发行版中包含的默认 Infinispan 配置。

KC_HOSTNAME_OVERRIDE

覆盖使用 KC_HOSTNAME_SUFFIX 计算的 Keycloak 主机名。当使用与 OpenShift 集群不同的域名部署 Keycloak 时,这很有用。

默认值:""

KC_HOSTNAME_SUFFIX

在部署到 OpenShift 环境时使用的主机名后缀。将它与 apps.<domain name> 结合使用,如在打开 OpenShift 控制台时 URL 中所示。

默认值是从用户连接到的 OpenShift 上部署的控制台中提取的。

KC_NAMESPACE_PREFIX

默认情况下,Keycloak 实例部署到 keycloak 命名空间。可以通过在命名空间名称前面添加前缀来自定义命名空间名称。生成的命名空间将是 ${KC_NAMESPACE_PREFIX}keycloak

默认值:$(whoami)-

此选项仅适用于 OpenShift 部署。
KC_PORT_OFFSET

此参数允许为创建的每个服务更改端口,增加一定偏移量。当多个 Keycloak 实例部署到同一个集群时,这很有用。有关更多信息,请参阅 与多个用户共享集群 部分。

默认值:0

可用选项:0-26

此选项仅适用于 OpenShift 部署。
KC_ADMIN_PASSWORD

Keycloak 管理员用户和 Grafana 管理员用户的密码。

默认值从 AWS Secret Manager 中名为 keycloak-master-password 的机密中获取,该机密位于 eu-central-1 区域。如果 aws 命令失败或机器上不可用,则使用字符串 admin

此选项仅适用于 OpenShift 部署。
KC_DISABLE_STICKY_SESSION

从单台机器运行 Keycloak 基准测试会导致 OpenShift 路由将流量重定向到同一个 Keycloak Pod。第一个连接将到达随机的 Keycloak Pod,但来自同一源 IP 的后续连接将被重定向到该 Pod(粘性会话)。此选项将禁用此行为,并配置 OpenShift 路由在所有可用的 Keycloak Pod 之间使用轮询。

默认值:false

可用选项

  • true — 强制 OpenShift 路由对所有连接使用轮询(无粘性会话)。

  • false — 使用默认的 OpenShift 路由负载均衡器规则。

此选项仅适用于 OpenShift 部署。
KC_IS_ACTIVE_PASSIVE

以主动/被动方式部署 Keycloak。当使用主动/被动负载均衡器时,应将其设置为 true。

可用的基准测试选项

以下配置选项可用于配置辅助应用程序。所有默认值都在 Taskfile.yaml 中配置。

KB_RETENTION

保留日志、指标和跟踪的保留期(以小时为单位)。

默认:168h

可用选项:可以更改为任何以小时为单位的值,该值是 24h 的倍数。

使用传统存储连接到外部 Infinispan 集群

仅适用于 OpenShift 部署。

如果 Infinispan 在 OpenShift 集群中部署,如 在 OpenShift 上安装 Infinispan 中所述,请使用以下变量来指示 Infinispan 集群运行的命名空间。

KC_ISPN_NAMESPACE

本地 OpenShift 集群中部署 Infinispan 集群的命名空间。

此外,缓存需要配置为使用远程存储。使用 Hot Rod 协议,它将会话卸载到 Infinispan 集群。文件kcb-infinispan-cache-remote-store-config.xml包含此配置所需的配置。使用KC_CUSTOM_INFINISPAN_CONFIG_FILE=config/kcb-infinispan-cache-remote-store-config.xml将此文件上传并使用到您的 Keycloak 集群中。

也可以使用跨站点启用的 Infinispan 集群。