自定义部署
可以通过使用环境变量设置自定义 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 集群。 |