ssl - 由于 LB 运行状况检查,Vault 节点中的连续 TLS 握手错误日志
问题描述
由于我的负载平衡器每 5 秒 ping 一次保管库节点,我每 5 秒收到一次连续的 TLS 握手错误。Kube 负载均衡器正在使用 ping 我的 vault 节点
nc -vz podip podPort
每 5 秒
我已经在我的 config.hcl 中禁用了客户端证书验证,但仍然在我的 kubectl 日志中看到以下日志以用于保管库
kubectl logs pod-0 -n mynamespace
[INFO] http: TLS handshake error from 10.x.x.x:60056: EOF 2020-09-02T01:13:32.957Z
[INFO] http: TLS handshake error from 10.x.x.x:23995: EOF 2020-09-02T01:13:37.957Z
[INFO] http: TLS handshake error from 10.x.x.x:54165: EOF 2020-09-02T01:13:42.957Z
下面是我通过 kube config map 加载的 config.hcl
apiVersion: v1
kind: ConfigMap
metadata:
name: raft-config
labels:
name: raft-config
data:
config.hcl: |
storage "raft" {
path = "/vault-data"
tls_skip_verify = "true"
retry_join {
leader_api_addr = "https://vault-cluster-0:8200"
leader_ca_cert_file = "/opt/ca/vault.crt"
leader_client_cert_file = "/opt/ca/vault.crt"
leader_client_key_file = "/opt/ca/vault.key"
}
retry_join {
leader_api_addr = "https://vault-cluster-1:8200"
leader_ca_cert_file = "/opt/ca/vault.crt"
leader_client_cert_file = "/opt/ca/vault.crt"
leader_client_key_file = "/opt/ca/vault.key"
}
retry_join {
leader_api_addr = "https://vault-cluster-2:8200"
leader_ca_cert_file = "/opt/ca/vault.crt"
leader_client_cert_file = "/opt/ca/vault.crt"
leader_client_key_file = "/opt/ca/vault.key"
}
}
seal "transit" {
address = "https://vaulttransit:8200"
disable_renewal = "false"
key_name = "autounseal"
mount_path = "transit/"
tls_skip_verify = "true"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/opt/ca/vault.crt"
tls_key_file = "/opt/ca/vault.key"
tls_skip_verify = "true"
tls_disable_client_certs = "true"
}
ui=true
disable_mlock = true
由于我使用的是外部开源库映像并且我的负载均衡器是内部 LB(具有内部 CA 证书)。我怀疑我的保管库 pod 在尝试 ping 端口 8200 时无法识别负载均衡器提供的 CA 证书(TCP 侦听器由保管库在此端口上启动)
这些日志是无害的,不会引起任何问题,但它们是我想避免的不必要的噪音。我的保管库节点正在使用 https,它们的功能似乎没有问题。
有人可以帮助理解为什么 vault TCP 侦听器尝试进行 TLS 握手,即使我已明确指定tls_disable_client_certs = "true"
当我的 LB 尝试使用nc -vz podip podPort
我的保险库版本是 1.5.3
解决方案
这些消息与客户端证书或 CA 证书无关,无论客户端是否提供证书,都会发生 TLS 握手。
相反,这是因为创建并建立了 TCP 连接,而 Go 库现在想要启动 TLS 握手。相反,另一端(健康检查器)只是挂断,TLS 握手从未发生。Go 然后记录此消息。
你说它是无害的是正确的,这纯粹是端口活动健康检查的副作用。然而,它是垃圾邮件和烦人的。
你有两个基本的选择来解决这个问题:
- 在持久化它们时从日志中过滤消息
- 更改为不同类型的健康检查
我会推荐第二种选择:切换到不同的运行状况检查。Vault 有一个/sys/health端点,可用于 HTTPS 运行状况检查。
除了摆脱 TLS 警告消息之外,健康端点还允许您检查活动和未密封的节点。
推荐阅读
- vb.net - VB.net 使用 Between Dates 的 where 条件来打开 Report
- java - 一起移动 2 个滑块
- django - Django 处理来自 `Field` 的 `form`
- javascript - 调用控制器并通过 onlick 监听器传递值
- javascript - 如何访问作为字符串的对象的属性?
- c++ - 在控制台中打印十六进制数组
- c++ - 运行时错误:引用绑定到“198. House Robber”的“value_type”类型的空指针
- netsuite - 使用 SuiteScript 从文件柜中的图像中提取元数据
- linux - 为什么ansible远程副本不能从本地工作
- android-studio - IntelliJ-Idea中如何为不同项目设置不同的字体和大小