当前位置: 首页 > news >正文

开源身份和访问管理方案之keycloak(三)keycloak健康检查(k8s)

文章目录

  • 开源身份和访问管理方案之keycloak(三)
    • keycloak健康检查
      • 启用运行状况检查
    • 健康检查使用
      • Kubernetes下健康检查
      • Dockerfile 中 HEALTHCHECK 指令 健康检查
      • Docker HEALTHCHECK 和 Kubernetes 探针

开源身份和访问管理方案之keycloak(三)

keycloak健康检查

官方文档:https://www.keycloak.org/observability/health

Keycloak 内置了对健康检查的支持。本指南介绍如何启用和使用 Keycloak 运行状况检查。 默认情况下,Keycloak 运行状况检查在管理端口 9000 上公开。

启用运行状况检查

以使用构建时选项 health-enabled 启用运行状况检查:

默认情况下,运行状况终端节点不会返回任何检查。

bin/kc.[sh|bat] build --health-enabled=true

在这里插入图片描述

bin/kc.sh start-dev --health-enabled=true

配置完成后,

# curl -fsS http://localhost:9000/health
{
    "status": "UP",
    "checks": [
    ]
}

Keycloak 公开了 4 个运行状况端点:

  • /health/live
  • /health/ready
  • /health/started
  • /health

请参阅 Quarkus SmallRye Health 文档,了解有关每个端点含义的信息。

Keycloak 使用 Quarkus 构建,而健康检查功能由 Quarkus SmallRye Health 提供。

这意味着 Keycloak 并没有自己从头开始实现健康检查功能,而是使用了 Quarkus 提供的 SmallRye Health 组件。

健康检查使用

建议通过外部 HTTP 请求来监控健康端点。由于安全措施,Keycloak 容器镜像中移除了 curl 等软件包,因此基于本地命令的监控将无法轻松实现。

如果将KeyCloak部署在容器中,则由于前面提到的安全措施,必须从外部运行此命令。例如:

curl --head -fsS http://localhost:9000/health/ready

Kubernetes下健康检查

定义一个 HTTP 探针,以便 Kubernetes 可以从外部监控健康端点。不要使用存活命令。

Dockerfile 中 HEALTHCHECK 指令 健康检查

Kubernetes 探针是 Kubernetes 层面的健康检查机制。HEALTHCHECK 是 Docker 层面的健康检查机制。

HEALTHCHECK 指令定义了一个命令,这个命令会在容器运行时定期执行。目的是检查容器内部的应用程序是否健康运行。

keycloak 容器默认情况下没有安装任何命令行 HTTP 客户端工具(比如 curl)。这意味着你无法直接使用 HEALTHCHECK 指令来发送 HTTP 请求,从而检查 Keycloak 服务是否正常响应。

建议你安装 curl 这个工具。安装方法可以参考 Keycloak 官方提供的容器运行指南。

注意: 安装额外的工具(比如 curl)可能会降低容器的安全性。你需要权衡一下便利性和安全性。

以下是一个简单的 HEALTHCHECK 示例,它使用 curl 命令检查容器内的 Web 服务是否正常运行:

HEALTHCHECK --interval=5s --timeout=3s --retries=3 \
  CMD curl -f http://localhost/ || exit 1  

在这个例子中:
每 5 秒执行一次健康检查。
如果 curl 命令在 3 秒内未完成,则视为超时。
如果连续 3 次检查失败,容器会被标记为不健康。
注意事项
命令返回值:健康检查命令必须返回 0(成功)或 1(失败),其他返回值会被视为失败。

指令解析

  • HEALTHCHECK:Dockerfile 中的指令,用于定义容器的健康检查机制。
  • –interval=5s:设置健康检查的时间间隔为 5 秒。Docker 会每 5 秒执行一次健康检查命令。
  • –timeout=3s:设置健康检查命令的超时时间为 3 秒。如果命令在 3 秒内未完成,则视为超时。
  • –retries=3:设置健康检查失败的重试次数为 3 次。如果连续 3 次检查失败,容器会被标记为不健康。
  • CMD curl -f http://localhost/ || exit 1:定义健康检查的命令。curl -f 会尝试访问 http://localhost/,如果请求失败(返回非 2xx 状态码),curl 会返回非零值,触发 exit 1,表示健康检查失败。
    -f 是一个常用的选项,全称为 --fail。它的作用是让 curl 在 HTTP 请求失败时(即服务器返回的状态码为 400 或更高)返回一个非零的退出码,而不是正常返回。

Docker HEALTHCHECK 和 Kubernetes 探针

在这里插入图片描述

HEALTHCHECK 可以用于容器内部的简单检查,而 Kubernetes 探针用于集群层面的健康管理。

在 Kubernetes 中,通常建议优先使用 Kubernetes 探针,因为它更灵活且与 Kubernetes 功能深度集成。

相关文章:

  • ollama更新升级及警告解决
  • 过孔的载流能力
  • 深度解析需求分析:理论、流程与实践
  • 2011-2019年各省地方财政金融监管支出数据
  • 个人博客系统——测试报告
  • Spring 中的 BeanFactory 和 ApplicationContext
  • V-SHOW和箭头函数在VUE项目的踩坑点
  • Excel + VBA 实现“准实时“数据的方法
  • 类与对象(上)
  • 每日一题(小白)字符串娱乐篇16
  • Python星球日记 - 第5天:循环结构
  • 代码随想录算法训练营Day20
  • 【USTC 计算机网络】第三章:传输层 - 面向连接的传输:TCP
  • 【堆排序】 及 【Top-K问题】
  • mysql和sqlite关于data数据的识别问题
  • 关于Ubuntu系统的远程控制及文件传输
  • C++中的匿名函数
  • 毕设论文的分类号与UDC查询的网站
  • 类似于langchain的开发框架有哪些?
  • Java内存模型详解:堆、栈、方法区
  • 搜索引擎网站怎么做/微商引流推广
  • 固原市建设局网站/免费的推广引流软件下载
  • 做网站建设跑业务/个人网站免费域名注册
  • 盗号和做钓鱼网站那个罪严重/百度网址大全 旧版本
  • 中国建设银行网站-个人客/山东关键词网络推广
  • Wordpress图墙主题/湖南专业seo优化