由于 LB 健康检查,vault 节点中的连续 TLS 握手错误日志
Continuous TLS handshake error logs in vault nodes due to LB health check
由于我的负载均衡器每 5 秒 ping 保管库节点一次,我每 5 秒就会收到连续的 TLS 握手错误。 Kube 负载均衡器正在使用
ping 我的保管库节点
nc -vz podip podPort
每 5 秒
我已经在我的 config.hcl 中禁用了客户端证书验证,但在我的 kubectl 日志中仍然可以看到下面的 vault
日志
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 证书)。我怀疑我的 vault pod 在尝试 ping 端口 8200 时无法识别我的负载均衡器提供的 CA 证书(TCP 侦听器由该端口上的 vault 启动)
这些日志是无害的,不会造成任何问题,但它们是我想避免的不必要的噪音。我的保险库节点正在 https 上工作,它们的功能似乎没有问题。
有人可以帮助理解为什么即使我已经明确指定 tls_disable_client_certs = "true"
vault TCP 侦听器仍在尝试进行 TLS 握手
当我的 LB 尝试使用 nc -vz podip podPort
对我的 pods 进行健康检查时,这些日志每 5 秒就会淹没我的 pods
我的库版本是 1.5.3
消息与客户端证书或 CA 证书无关,无论客户端是否提供证书,都会发生 TLS 握手。
相反,这是因为创建并建立了 TCP 连接并且 Go 库现在要开始 TLS 握手。相反,另一方(健康检查器)只是挂断,TLS 握手永远不会发生。 Go 然后记录此消息。
你说它无害是正确的,这纯粹是 port-liveness 健康检查的副作用。然而,它是垃圾邮件和烦人的。
你有两个基本的选择来解决这个问题:
- 在持久化时从日志中过滤掉消息
- 更改为不同类型的健康检查
我会推荐第二个选项:切换到不同的健康检查。 Vault 有一个 /sys/health 端点,可用于 HTTPS 健康检查。
除了消除 TLS 警告消息外,运行状况端点还允许您检查活动节点和未密封节点。
由于我的负载均衡器每 5 秒 ping 保管库节点一次,我每 5 秒就会收到连续的 TLS 握手错误。 Kube 负载均衡器正在使用
ping 我的保管库节点nc -vz podip podPort
每 5 秒
我已经在我的 config.hcl 中禁用了客户端证书验证,但在我的 kubectl 日志中仍然可以看到下面的 vault
日志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 证书)。我怀疑我的 vault pod 在尝试 ping 端口 8200 时无法识别我的负载均衡器提供的 CA 证书(TCP 侦听器由该端口上的 vault 启动)
这些日志是无害的,不会造成任何问题,但它们是我想避免的不必要的噪音。我的保险库节点正在 https 上工作,它们的功能似乎没有问题。
有人可以帮助理解为什么即使我已经明确指定 tls_disable_client_certs = "true"
当我的 LB 尝试使用 nc -vz podip podPort
我的库版本是 1.5.3
消息与客户端证书或 CA 证书无关,无论客户端是否提供证书,都会发生 TLS 握手。
相反,这是因为创建并建立了 TCP 连接并且 Go 库现在要开始 TLS 握手。相反,另一方(健康检查器)只是挂断,TLS 握手永远不会发生。 Go 然后记录此消息。
你说它无害是正确的,这纯粹是 port-liveness 健康检查的副作用。然而,它是垃圾邮件和烦人的。
你有两个基本的选择来解决这个问题:
- 在持久化时从日志中过滤掉消息
- 更改为不同类型的健康检查
我会推荐第二个选项:切换到不同的健康检查。 Vault 有一个 /sys/health 端点,可用于 HTTPS 健康检查。
除了消除 TLS 警告消息外,运行状况端点还允许您检查活动节点和未密封节点。