具有TLS配置的典型入口如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: no-rules-map
spec:
tls:
- secretName: testsecret
backend:
serviceName: s1
servicePort: 80
默认情况下,负载均衡器将与HTTP中的后端服务进行通信。我可以配置Ingress,以便负载均衡器和后端服务之间的通信也是HTTPS吗?
更新
发现GLBC正在讨论为GCE Ingress启用HTTPS后端。摘自文件:
“Backend HTTPS
对于负载均衡器和Kubernetes服务之间的加密通信,您需要按照期望的HTTPS来装饰服务的端口。有一个alpha服务注释,用于指定每个服务端口的预期协议。在将协议视为HTTPS时,入口控制器将使用带有HTTPS运行状况检查的HTTPS后端服务组装GCP L7负载均衡器。“
目前尚不清楚负载均衡器是否接受第三方签名服务器证书,自签名或两者兼而有之。如何在负载均衡器上配置CA证书以执行后端服务器身份验证。或者它将绕过身份验证检查。
答案 0 :(得分:2)
按照GLBC的“后端HTTPS”部分中的说明操作, GCP HTTP(S)负载均衡器将与后端建立HTTPS连接,流量将被加密。没有必要在LB端配置CA证书(实际上你不能)。这意味着负载均衡器将跳过服务器证书身份验证。
答案 1 :(得分:1)
您应该为入口或负载均衡器启用SSL-Passthrough配置。 我建议您使用nginx ingress和kube-lego进行SSL。
使用此组合,您可以使用ssl-passthrough config。
答案 2 :(得分:0)
在ingress-nginx
上,您可以使用nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
批注并将其指向服务上的HTTPS端口。
这是特定于入口控制器的,其他入口控制器可能不提供该选项(或提供工作方式不同的选项)
通过此设置,入口控制器将对流量进行解密。 (这使入口控制器可以控制密码和呈现给用户的证书之类的内容,并执行基于路径的路由,而SSL传递是不允许的)
可以使用其他(ingress-nginx
特定)批注配置证书验证:
Docs