粘性会话无法在 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.
我有一个部署,其中包含 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.