2个稳定版本
1.0.1 | 2022年5月21日 |
---|---|
1.0.0 | 2022年5月20日 |
#15 in #tls-server
14KB
106 行
grpc-health-probe-rs
是grpc-health-probe
的Rust实现。它允许您查询通过gRPC健康检查协议公开其状态的gRPC服务的健康状态。
此命令行工具会对/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