在 OpenShift 上安装 Keycloak

在 OpenShift 上部署 Keycloak,使用类似于 minikube 环境的设置。

虽然 minikube 是此设置的主要目标,但这会跟踪如何在 OpenShift 环境中使用它的进度,请参阅支持的功能

需要具有 cluster-admin 角色的 OpenShift 访问权限才能安装自定义资源定义。

OpenShift 必须无法从 Internet 访问,因为此设置会打开节点端口和 URL,这些端口和 URL 没有通过良好的密码和传输加密进行适当的安全保护。

先决条件

验证设置是否使用 oc cluster-info 工作。

支持的功能

目前,以下内容已知在 OpenShift 上无法工作

sqlpad

容器需要 root 用户。

监控

OpenShift 仅提供 Grafana、OpenTelemetry 和 Jaeger 进行监控。 Graphite 尚未实现。

Cryostat 依赖于 Cryostat Operator 的安装,这是 在 AWS 上安装 OpenShift 提供的安装脚本的默认设置。

在 OpenShift 上安装 Keycloak

  1. https://github.com/keycloak/keycloak-benchmark/ 检出 Git 仓库。

  2. 切换到文件夹 provision/openshift

  3. 运行 task 命令以在 OpenShift 上配置所有容器。

要配置部署,请参阅 自定义部署 以了解详细信息。

从 Operator Hub 安装 Keycloak

默认情况下,operator 直接通过 keycloak-k8s-resources 安装。

要使用 Operator Lifecycle ManagerOperator Hub 安装 operator,请设置

KC_OPERATOR_OLM=true

此外,还可以自定义以下参数

KC_OPERATOR_CATALOG_SOURCE_NS

OLM catalog source 的命名空间。默认为 openshift-marketplace

KC_OPERATOR_CATALOG_SOURCE

OLM catalog source。默认为 community-operators

KC_OPERATOR_NAME

catalog source 中 Keycloak Operator 的名称。默认为 keycloak-operator

KC_OPERATOR_CHANNEL

OLM 订阅通道。如果未设置,将使用所选 operator 的默认通道。

KC_OPERATOR_VERSION

Keycloak Operator 版本。如果未设置,将使用所选通道的当前版本。

请注意,用于 OLM 订阅的实际 Cluster Service Version 按约定设置为

${KC_OPERATOR_NAME}.v${KC_OPERATOR_VERSION}

验证安装

运行以下脚本以检查所有服务是否正在运行并接收可用 URL 列表

./isup.sh

安装 Grafana 监控

要安装带有预配置仪表板的 Grafana,请执行以下步骤

  1. 运行 task monitoring 命令

验证安装

然后可以在以下位置访问 Grafana 仪表板

https://grafana.apps.<domain name>
这是使用 OpenShift 集群的所有用户的共享资源。虽然下一节描述了如何在不同的命名空间中安装多个 Keycloak,但这不适用于 Grafana 实例。

OpenShift 日志记录

默认情况下启用 OpenShift 日志记录。所有应用程序和基础设施 pod 日志都存储在 openshift-logging 命名空间中未复制的 ElasticSearch 实例中。

可以在 Kibana UI 中查询日志,可以通过 应用程序启动器 应用程序启动器 → Openshift UI 中的 日志记录 访问 Kibana UI

application launcher logs

此外,在查看 pod 的日志时,使用 在 Kibana 中显示 链接来搜索此特定 pod 的日志

show in kibana

首次登录 Kibana 时,创建一个索引模式 *,并将时间戳字段 @timestamp 设置为能够查询日志。 有关更多详细信息,请参阅 OpenShift 文档

与其他用户共享一个 OpenShift 集群

以下选项对于自定义 Keycloak 部署是必要的,以便多个用户可以在一个 OpenShift 集群中同时使用它。

KC_NAMESPACE_PREFIX

允许自定义命名空间名称。结果命名空间将为 ${KC_NAMESPACE_PREFIX}keycloak。默认情况下,命名空间前缀设置为 $(whoami)-,但可以在 .env 文件中自定义。