使用 PostgreSQL 存储

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

启用 PostgreSQL 存储

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

使用以下设置激活 PostgreSQL

KC_DATABASE=postgres

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

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

部署会将一个新的 PostgreSQL pod 添加到 Minikube 设置中,并删除所有不再需要的其他存储 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”中。