Kubernetes 入口和SSL传递

Kubernetes 入口和SSL传递,kubernetes,Kubernetes,我最近一直在使用nginxdemo/nginx入口控制器 据我所知,该控制器无法进行SSL传递(我的意思是将客户端证书一直传递到后端服务进行身份验证),因此我一直在通过头传递客户端主题DN 最终,我更喜欢SSL直通,并一直在研究kubernetes/ingress nginx项目,该项目显然支持SSL直通 是否有人有使用此控制器和SSL直通的经验 我发现的几个显示passthrough的入口示例将路径设置留空 这是因为传递必须在TCP级别(4)而不是HTTP(7)上进行吗 现在,我有一个为多个路

我最近一直在使用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的会话关联(尽管我不确定如何配置),这很有意义:)