使用 PostgreSQL 存储

Keycloak 的部署可以使用 PostgreSQL 实例。

启用 PostgreSQL 存储

可以使用 PostgreSQL 数据库来存储正在运行的 Keycloak 实例的数据。可以通过 provision/kubernetes 文件夹中 .env 文件中的以下设置启用它。

使用以下设置激活 PostgreSQL

KC_DATABASE=postgres

有关所有配置选项的列表,请参阅 自定义部署

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

此部署向 minikube 设置添加一个新的 PostgreSQL pod,并删除所有不再需要的其他存储 pod。每次 pod 重新启动时,数据库都会被清除。

Keycloak 连接到 minikube 内的 PostgreSQL 数据库 pod 并填充 DB 模式。数据库指标在 Grafana 中可用。SQL Pad 允许通过浏览器访问数据库。

minikube runtime view postgres.dio

验证设置

自动化脚本验证 Keycloak 是否启动,这需要 PostgreSQL 首先启动。

将本地应用程序连接到 PostgreSQL

PostgreSQL 的数据库端口也作为节点端口提供,以便可以从本地应用程序访问它。假设命令 minikube ip 返回 192.168.39.39,则 JDBC URL 为 jdbc:postgresql://192.168.39.39:30009/keycloak

每次重新创建 minikube 实例时,minikube 的 IP 地址都会更改。

例如,它可以用于将开发者的 IDE 连接到数据库。

连接详细信息:端口始终为 30009,用户名是 keycloak,密码是 pass,数据库名称是 keycloak

所有端口均在未指定端口偏移的情况下指定。如果您正在使用配置选项 KC_PORT_OFFSET,则需要将偏移量添加到端口号。对于端口偏移量 XX (00-26) 和端口号 300YY,结果端口将为 3XXYY。

在命令行上连接到数据库

要在 PostgreSQL 容器内启动 SQL shell,请使用以下命令

kubectl exec `kubectl get pods --selector=app=postgres -n keycloak -o name` -n keycloak -it -- psql --user keycloak

来自 PostgresSQL 数据库的指标

在 minikube 中运行着一个 postgres_exporter 实例,其指标在 Prometheus 中收集。

可以在 pgexporter-queries.yaml 中定义用于指标的附加 SQL 查询。

PostgreSQL 的指标和仪表板

PostgreSQL 的指标在 Prometheus 中可用。这些指标显示在标准仪表板 “keycloak-perf-tests” 中