12.7. 启用 Fabric8 Karaf 健康检查

建议将 fabric8-karaf-checks 安装为启动功能。启用后,您的 Karaf 服务器可以公开 http://0.0.0.0:8181/readiness-checkhttp://0.0.0.0:8181/health-check URL,供 Kubernetes 用于就绪度和存活度探测。

注意

这些 URL 只有在满足以下条件时,才会以 HTTP 200 状态代码响应:

  • OSGi 框架已启动。
  • 所有 OSGi 捆绑包都已启动。
  • 所有引导功能都已安装。
  • 所有部署的 BluePrint 捆绑包都处于创建的状态。
  • 所有部署的 SCR 捆绑包都处于 active、registered 或 factory 状态。
  • 所有 Web 捆绑包都部署到 Web 服务器。
  • 所有创建的 Camel 上下文都处于 started 状态。

流程

  1. 打开项目的 pom.xml,并在 startupFeatures 部分中添加 fabric8-karaf-checks 功能。

    pom.xml

    <startupFeatures>
      ...
      <feature>fabric8-karaf-checks</feature>
      ...
    </startupFeatures>

    oc:resources 目标将检测您使用 fabric8-karaf-checks 功能,并将 Kubernetes for readiness 和 liveness 探测自动添加到您的容器的配置中。

12.7.1. 配置健康检查

默认情况下,fabric8-karaf-checks 端点注册到在端口 8181 上运行的内置 HTTP 服务器引擎(Undertow)。为了避免在容器中运行 HTTP 进程的健康和就绪度检查请求被阻止,端点可以注册到单独的 Undertow 容器中。

这些检查可以通过设置以下属性在 etc/io.fabric8.checks.cfg 文件中配置:

  • httpPort: 如果指定了此属性并且是有效的端口号,则 readiness-checkhealth-check 端点将注册到 Undertow 服务器的单独的实例中
  • readinessCheckPathhealthCheckPath 属性允许您配置可用于就绪度和健康检查的实际 URI。默认情况下,这些值与前面的值相同。
注意

这些属性可以在启动 Fuse-Karaf 后更改,但也可在 etc/io.fabric8.checks.cfg 文件中指定,该文件是希望拥有 fabric8-karaf-checks 功能的一部分,供希望使用 fabric8-karaf-checks 功能。

以下示例演示了在 etc/io.fabric8.checks.cfg 文件中配置健康和就绪属性:

示例

httpPort = 8182
readinessCheckPath = /readiness-check
healthCheckPath = /health-check