Kubernetes API服务器和客户端之间的数据加密和解密

问题描述 投票:0回答:1

我有两个使用kubeadm的kubernetes集群设置,我使用haproxy将流量重定向并负载均衡到不同的集群。现在,我想将请求重定向到每个群集的相应api服务器。因此,我需要解密ssl请求,读取“主机” HTTP标头,然后再次加密流量。我的示例haproxy配置文件如下所示:

frontend k8s-api-server
        bind *:6443 ssl crt /root/k8s/ssl/apiserver.pem
        mode http
        default_backend k8s-prod-master-api-server

backend k8s-prod-master-api-server
        mode http
        option forwardfor
        server master 10.0.0.2:6443 ssl ca-file /root/k8s/ssl/ca.crt

如果现在通过kubectl访问api服务器,则会出现以下错误:

kubectl get pods
error: the server doesn't have a resource type "pods"
kubectl get nodes
error: the server doesn't have a resource type "nodes"

我认为即时通讯使用错误的证书进行解密和加密。我是否需要使用目录[[/ etc / kubernetes / pki中的apiserver.crtapiserver.keyca.crt文件?

kubernetes ssl-certificate haproxy kubeadm kube-apiserver
1个回答
0
投票
您的设置可能需要通过客户端证书与Kubernetes API服务器进行身份验证;当HAProxy重新启动连接时,它没有使用本地计算机上的客户端密钥和证书进行连接,因此很可能发出未经身份验证的请求。因此,它可能无权了解podnode资源。

一种替代方法是通过读取SNI标头并以这种方式转发流量,从而在L4处进行代理。这样,您无需读取任何HTTP标头,因此无需解密和重新加密流量。这可能与HAProxy有关。

© www.soinside.com 2019 - 2024. All rights reserved.