【问题标题】:Ingress and SSL Passthrough入口和 SSL 直通
【发布时间】:2017-12-29 17:01:44
【问题描述】:

我最近一直在使用 nginxdemo/nginx-ingress 控制器。

据我了解,此控制器无法执行 SSL 直通(我的意思是,将客户端证书一直传递到后端服务以进行身份​​验证),因此我一直通过标头传递客户端主题 DN。

最终我更喜欢 SSL-Passthrough,并且一直在研究显然支持 SSL 直通的 kubernetes/ingress-nginx 项目。

有没有人使用过这个控制器和 SSL Passthrough。

我发现的几个显示直通的 Ingress 示例将路径设置留空。

这是因为直通必须发生在 TCP 级别 (4) 而不是 HTTP (7)?

现在,我有一个服务于多条路径的主机规则。

【问题讨论】:

  • 你是对的,你不能用 SSL 直通设置路径。
  • 你需要一个 TCP 代理,而 nginx 入口控制器是一个 http 代理

标签: kubernetes


【解决方案1】:

完成 lch 回答我想补充一下,我最近遇到了同样的问题,我通过修改 ingress-service 部署对其进行了整理(我知道,它应该是一个 DaemonSet,但那是另一回事)

更改是将参数添加到 spec.containers.args:

  --enable-ssl-passthrough                                        

然后我在 ingress 中添加了以下注释:

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 流量

【讨论】:

    【解决方案2】:

    SSH-Passthrough 对我来说工作正常。这是Official Documentation

    这是一个示例用法:

    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
    
    

    【讨论】:

    • 您有没有在 SSL 直通中使用会话亲和性和 cookie 的运气?
    • 不可能基于 cookie 的会话亲和性,因为 nginx 无法查看加密的 SSL 流量。您只能拥有基于 IP 的会话亲和性(尽管我不确定如何配置)
    • 谢谢 Ich,这是有道理的 :)
    猜你喜欢
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2021-05-30
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多