自定义部署
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 集群。 |