Kubernetes 入口和SSL传递
我最近一直在使用nginxdemo/nginx入口控制器 据我所知,该控制器无法进行SSL传递(我的意思是将客户端证书一直传递到后端服务进行身份验证),因此我一直在通过头传递客户端主题DN 最终,我更喜欢SSL直通,并一直在研究kubernetes/ingress nginx项目,该项目显然支持SSL直通 是否有人有使用此控制器和SSL直通的经验 我发现的几个显示passthrough的入口示例将路径设置留空 这是因为传递必须在TCP级别(4)而不是HTTP(7)上进行吗Kubernetes 入口和SSL传递,kubernetes,Kubernetes,我最近一直在使用nginxdemo/nginx入口控制器 据我所知,该控制器无法进行SSL传递(我的意思是将客户端证书一直传递到后端服务进行身份验证),因此我一直在通过头传递客户端主题DN 最终,我更喜欢SSL直通,并一直在研究kubernetes/ingress nginx项目,该项目显然支持SSL直通 是否有人有使用此控制器和SSL直通的经验 我发现的几个显示passthrough的入口示例将路径设置留空 这是因为传递必须在TCP级别(4)而不是HTTP(7)上进行吗 现在,我有一个为多个路
现在,我有一个为多个路径提供服务的单主机规则。SSH Passthrough对我来说很好。这是你的电话号码 下面是一个示例用法:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-service-ingress
namespace: my-service
annotations:
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
spec:
rules:
- host: my.example.com
http:
paths:
- backend:
serviceName: my-service
在完成lch回答后,我想补充一点,我最近遇到了同样的问题,我通过修改入口服务部署解决了这个问题(我知道,它应该是一个守护程序,但情况不同) 更改是将参数添加到spec.containers.args:
--enable-ssl-passthrough
然后,我在入口中添加了以下注释:
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
重要的是安全后端和ssl passthrough,但我认为其余的都是一个好主意,前提是你不期望那里有http流量你是对的,你不能用ssl passthrough设置路径。你需要一个TCP代理,虽然nginx ingress controller是http代理,但您是否有幸将会话关联与Cookie一起用于SSL传递?由于nginx无法查看加密的SSL流量,因此不可能基于Cookie的会话关联。您只能使用基于IP的会话关联(尽管我不确定如何配置),这很有意义:)