#grpc #kubernetes #grpc-server #tls-server #container-image #grpc-health

app grpc_health_probe

用于运行gRPC服务健康检查的工具

2个稳定版本

1.0.1 2022年5月21日
1.0.0 2022年5月20日

#15 in #tls-server

MIT 许可证

14KB
106

grpc-health-probe-rs

grpc-health-probe的Rust实现。它允许您查询通过gRPC健康检查协议公开其状态的gRPC服务的健康状态。

build

此命令行工具会对/grpc.health.v1.Health/Check执行RPC调用。如果它返回SERVING状态,则grpc_health_probe将成功退出,否则它将以非零退出代码退出(下面有文档说明)。

此端口不提供跳过TLS验证的方法,并且配置TLS的选项有限。

安装

从二进制文件安装

您可以直接下载grpc_health_probe可执行文件

从crates.io安装

cargo install grpc_health_probe

手动构建

克隆仓库并运行

cargo install --path .

或者,运行

cargo build --release

然后将生成的target/release/grpc_health_probe可执行文件添加到您的PATH中。

示例

$ grpc_health_probe --addr=https://127.0.0.1:5000
status: Serving
$ grpc_health_probe --addr=https://127.0.0.1:9999 --connect-timeout=250 --rpc-timeout=100
error: health rpc failed: Timeout expired

示例:Kubernetes上的gRPC健康检查

您可以将grpc_health_probe二进制文件打包到您的容器镜像中,并使用exec探针定义您的gRPC服务器Pod的生命周期和/或就绪性检查。

spec:
  containers:
  - name: server
    image: "[YOUR-DOCKER-IMAGE]"
    ports:
    - containerPort: 5000
    readinessProbe:
      exec:
        command: [
          "/bin/grpc_health_probe",
          "--addr=https://0.0.0.0:5000",
          "--service=queries.v1.QueriesAPI",
          "--tls",
          "--tls-server-name=deployment.namespace.svc.cluster.local"
        ]
      initialDelaySeconds: 5
    livenessProbe:
      exec:
        command: [
          "/bin/grpc_health_probe",
          "--addr=https://0.0.0.0:5000",
          "--service=queries.v1.QueriesAPI",
          "--tls",
          "--tls-server-name=deployment.namespace.svc.cluster.local"
        ]
      initialDelaySeconds: 10

健康检查TLS服务器

选项 描述
--tls 使用TLS(默认:false)
--tls-ca-cert 包含CA证书的文件路径(以覆盖系统根CA)
--tls-server-name 覆盖用于验证服务器证书的主机名

其他可用标志

选项 描述
--connect-超时 建立连接的超时时间(毫秒)
--rpc-超时 健康检查RPC的超时时间(毫秒)
--user-agent 健康检查请求的用户代理头部值(默认:grpc_health_probe_rs)
--service 要检查的服务名称(默认:"") - 空字符串是服务器健康的约定

退出代码

不建议依赖于特定的退出状态。任何失败都将是一个非零退出代码。

退出代码 描述
0 成功:rpc响应是SERVING
1 失败:无效的命令行参数
2 失败:连接失败或超时
3 失败:rpc失败或超时
4 失败:rpc成功,但响应不是SERVING

依赖项

~14-25MB
~447K SLoC