粘性会话无法在 Kubernetes 上使用 Nginx

Sticky sessions are not working using Nginx on Kubernetes

我有一个部署,其中包含 2 个 pods,其中有一个 Web 应用程序。安装 Nginx 入口控制器以使用 tls-passthrough 公开那些 2 pods。 我曾尝试使用注释来设置 sticky-sessions 但无济于事。 headers 中没有 cookie,因此没有粘性。 我该怎么做才能让它发挥作用? 非常感谢您明智的回答。

我创建的 Ingress :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: ingress
 annotations:
 # nginx.ingress.kubernetes.io/secure-backends: "true"
 # nginx.ingress.kubernetes.io/ssl-passthrough: "true"
 # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
 # nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/affinity: "cookie"
   nginx.ingress.kubernetes.io/affinity-mode: "persistent"
   nginx.ingress.kubernetes.io/session-cookie-name: "wabam"
   nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
   nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
namespace: default
spec:
 rules:
  - host: wabam.moulip.lan
     http:
     paths:
      - backend:
          serviceName: wabam-ingress-svc
          servicePort: 443
        path: /

我将此作为社区 Wiki 答案发布,以提高知名度。

正如评论中已经提到的:与 ssl-passthrough 一起使用时,任何其他注释都不起作用。 official docs:

也提到了这一点

Because SSL Passthrough works on layer 4 of the OSI model (TCP) and not on the layer 7 (HTTP), using SSL Passthrough invalidates all the other annotations set on an Ingress object.