TL;DR:我想在 K8s 中通过带有 SSL 直通的 nginx-ingress 控制器设置基于 cookie 的会话亲和性 - 可以这样做吗?
大家好,
我有一个正在运行的 Azure Kubernetes 服务 (AKS) (1.11.3),并已将NGINX-Ingress控制器配置为将请求路由到我的应用程序的 ClusterIP 服务(至少运行 2 个 Pod)。
我已经在入口控制器上成功配置了 SSL 直通,以便 TLS 在 Pod 处终止,因此我可以使用 HTTP2(根据本文)。现在我想设置会话关联(使用 Cookie),以便将连接路由到同一个 pod 以实现有状态的行为(登录到应用程序)。
为此,我尝试在入口对象上使用以下注释:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
但是,我没有看到第一个请求返回的“路由”cookie。我已经解决了这里描述的问题,并确保入口设置正确。然后我在文档中发现了这条消息中发现了这条消息:
因为 SSL Passthrough 在 OSI 模型 (TCP) 的第 4 层而不是第 7 层 (HTTP) 上工作,所以使用 SSL Passthrough 会使 Ingress 对象上设置的所有其他注释无效。
问:这是否意味着使用带有 SSL 直通的会话亲和性是不可能的?因为 Ingress 无法识别连接/cookie(因为它是 SSL 加密的)并将其定向到先前关联的 pod?