1.3. 使用健康检查


由于安全措施,从红帽构建的 Keycloak 容器镜像中删除 curl 和其他软件包,您将无法从容器中对 HTTPS 端点运行检查。

如果您没有在容器中使用红帽构建的 Keycloak,或者运行容器外的健康检查,请使用任何工具来访问健康检查端点。

1.3.1. curl

您可以使用简单的 HTTP HEAD 请求来确定红帽构建的 Keycloak 的实时或 就绪状态curl 是适合此目的的 HTTP 客户端。

如果红帽构建的 Keycloak 部署在容器中,则必须使用自定义镜像或从它外部运行此命令,因为前面提到的安全措施。例如:

curl --head -fsS http://localhost:9000/health/ready
Copy to Clipboard Toggle word wrap

如果命令返回状态为 0,则红帽构建的 Keycloak 为 liveready,具体取决于您调用的端点。否则,会出现问题。

1.3.2. Kubernetes

定义一个 HTTP 探测,以便 Kubernetes 可以在外部监控健康端点。不要使用 liveness 命令。

注意

如果您将 mTLS 配置为 所需的 https-client-auth,则管理界面会继承此配置。如果您没有为健康端点配置 HTTP 使用 HTTP,您可能需要将 https-management-client-auth 设置为 requestnone,以便探测请求不需要有效的客户端证书。

1.3.3. HEALTHCHECK

Containerfile HEALTHCHECK 指令定义了一个命令,它将在运行时定期在容器内执行。虽然红帽构建的 Keycloak 容器没有安装任何 CLI HTTP 客户端,但可以利用 BASH 支持重定向到 TCP 套接字,并将简单的 HTTP 请求设置为 healthcheck 端点:

{ printf 'HEAD /health/ready HTTP/1.0\r\n\r\n' >&0; grep 'HTTP/1.0 200'; } 0<>/dev/tcp/localhost/9000
Copy to Clipboard Toggle word wrap

以上代码取决于红帽构建的 Keycloak 选项的值,如 http-relative-path (http-management-relative-path)和 http-management-port。如果更改这些代码,则需要相应地修改代码。

如果您启用 TLS,如 配置 TLS 所示,管理界面也会使用 TLS。根据您要使用管理界面端点的方式,您仍然可以具有普通 HTTP 健康检查:

  • 管理接口使用 HTTP,而不是 HTTPS,将 http-management-scheme 设置为 http
  • 或者,通过将 http-management-health-enabled 设置为 false 并通过 HTTP 访问(将 http-enabled 设为 true ),为主接口启用健康检查。在这种情况下,您的代理不允许到 HTTP 端口的外部流量(默认为 8080)或健康端点(默认为 /health)。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat