问题描述
由于我的负载均衡器每5秒钟对Vault节点执行一次ping操作,因此每5秒钟会出现连续的TLS握手错误。 Kube负载均衡器正在使用ping我的保管库节点
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
下面是我的config.hcl,我正在通过kube config map加载
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(TCP侦听器由该端口上的保管库启动)时无法识别我的负载均衡器提供的CA证书。
这些日志是无害的,不会引起任何问题,但是它们是我要避免的不必要的噪音。我的保管库节点正在使用https,并且在功能上似乎没有问题。
即使我明确指定了tls_disable_client_certs = "true"
当我的LB尝试使用nc -vz podip podPort
对我的豆荚进行健康检查时,这些日志每隔5秒就会淹没我的豆荚。
我的保管库版本为1.5.3
解决方法
这些消息与客户端证书或CA证书无关,无论客户端是否提供证书,都会进行TLS握手。
相反,这是因为已创建并建立了TCP连接,并且Go库现在要启动TLS握手。相反,另一端(运行状况检查器)只是挂断了,TLS握手从未发生。去,然后记录此消息。
您正确地说这是无害的,这纯粹是端口运行状况健康检查的副作用。但是,它既垃圾又令人讨厌。
您可以通过两种基本方法解决此问题:
- 在保留消息时从日志中过滤掉消息
- 更改为其他类型的健康检查
我建议第二个选项:切换到其他健康检查。保险柜有一个/sys/health端点,可用于HTTPS健康检查。
除了摆脱TLS警告消息之外,运行状况端点还允许您检查活动和未密封的节点。