自定义部署

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

默认部署

在 minikube 设置上运行 Keycloak 时,默认情况下它将使用 Keycloak Operator 和 Keycloak 的最新 nightly 镜像以及 PostgreSQL 数据库运行。

请参阅 存储配置 以查看可用的存储选项。

更改默认部署

要更改默认设置,请在 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 存储

mysql

部署单节点 MySQL 实例。

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 Operator 的版本。

默认值:nightly

KC_CONTAINER_IMAGE

设置用于 Keycloak 的镜像。当使用 Keycloak operator 的 nightly 镜像时,此值默认为 quay.io/keycloak/keycloak:nightly

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

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

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

是否应为 Keycloak 启用 OpenTelemetry 以收集追踪。

默认值:true

可用选项

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

  • false — 禁用 OpenTelemetry 追踪。

KC_OTEL_SAMPLING_PERCENTAGE

应将多少追踪发送到 Jaeger 进行报告。仅当 KC_OTEL 设置为 true 时才生效。

默认值:0.01 (所有追踪的 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.<域名> 一起使用,如打开 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 Route 将流量重定向到同一个 Keycloak Pod。第一个连接到达一个随机的 Keycloak Pod,但来自同一源 IP 的未来连接将被重定向到该 Pod(粘性会话)。此选项禁用此行为,并将 OpenShift Route 配置为在所有可用的 Keycloak Pod 之间使用轮询。

默认值:false

可用选项

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

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

此选项仅为 OpenShift 部署实现。
KC_IS_ACTIVE_PASSIVE

以 active/passive 设置部署 Keycloak。当使用 active/passive 负载均衡器时,应将其设置为 true。

可用的基准测试选项

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

KB_RETENTION

保留日志、指标和追踪的保留期,以小时为单位。

默认值:168h

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

使用旧版存储连接到外部 Infinispan 集群

仅适用于 Openshift 部署。

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

KC_ISPN_NAMESPACE

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

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