繁体   English   中英

NGINX Ingress 控制器后端协议注释如何在基于路径的路由中工作?

[英]How NGINX Ingress controller back-end protocol annotation works in path based routing?

我目前正在 k8s 集群中使用 NGINX 入口控制器。 我试图使端到端加密工作,并且我能够使连接一直安全到 pod。

为了实现 HTTPS 一直到 pod,不得不使用注解

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

样本入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: foo-api-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  tls:
  - hosts:
    - foo.example.com
    secretName: foo-cert
  rules:
  - host: foo.example.com
    http:
      paths:
      - path: /path1
        backend:
          serviceName: foo-api-path1-service
          servicePort: 443
      - path: /path2
        backend:
          serviceName: foo-api-path2-service
          servicePort: 443

我很困惑这到底是怎么发生的,因为当我们加密连接路径时也会被加密,那么 NGINX 如何进行基于路径的路由? 它是否在入口解密连接并重新加密它? 另外,使用这种方法会影响性能吗?

TL; 博士

它是否在入口解密连接并重新加密它?

简而言之,是的。 请看下面的解释。


解释

请求到达Pod的路径可以看作:

请求路径

假设我们有一个Ingress controllernginx-ingress )代替Ingress您可以通过多种方式将您的客户端与Pod连接(简化):

  • 未加密:
    • client -- (HTTP) --> Ingress controller -- (HTTP) --> Service ----> Pod

  • Ingress controller加密(使用nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    • client -- (HTTP) --> Ingress controller -- (HTTP S ) --> Service ----> Pod

  • 在发生TLS 终止Ingress controller上加密和解密:
    • client -- (HTTP S ) --> Ingress controller (TLS Termination) -- (HTTP) --> Service ----> Pod

您的设置:

  • 在发生TLS 终止Ingress控制器上加密和解密,并在通过nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"与 HTTPS 后端连接时再次加密
    • client -- (HTTP S ) --> Ingress controller (TLS Termination) -- (HTTP S ) --> Service ----> Pod

  • 在配置了SSL Passthrough 的Ingress controllerPod上加密和解密:
    • client -- (HTTP S ) --> Ingress controller -- (HTTP S ) --> Service ----> Pod

免责声明!

这只是一个简化的解释。 有关更多参考,您可以查看此评论:

这里缺少一个细节,SSL Passthrough 流量永远不会到达入口控制器中的 NGINX。 TLS 连接有一个 go 侦听器,它只是将流量通过管道传输到入口中定义的服务。



如需更多参考,您可以查看类似问题(附有答案):

您还可以使用与您类似的示例设置查看本文:


其他资源:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM