我最近一直在使用nginxdemo/nginx-ingress控制器。
据我了解,该控制器无法执行 SSL 直通(我的意思是将客户端证书一直传递到后端服务进行身份验证(,因此我一直在通过标头传递客户端主题 DN。
最终,我更喜欢SSL-Passthrough,并且一直在研究显然支持SSL直通的kubernetes/ingress-nginx项目。
是否有人对此控制器和SSL直通有经验。
我发现的几个显示直通的入口示例将路径设置留空。
这是因为直通必须在TCP级别(4(而不是HTTP(7(进行吗?
现在,我有一个为多个路径提供服务的主机规则。
在 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直通,但我认为其余的是一个好主意,前提是你不希望那里有http流量
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
尝试添加以下注释(可能在此处建议的其他注释之上(
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"