入口亲和会话最大年龄



我使用ingress亲和会话来保持客户端和pod之间的通信。因为粘性会话可能会导致pod过载(客户端保持相同的pod(。

我正在寻找有关参数nginx.ingress.kubernetes.io/session-cookie-max-age的最佳实践。

示例值为172 800(秒(,这意味着48小时。为什么?这是一个巨大的持续时间,有可能设置为30分钟吗?顺便问一下,当应用程序会话过期时会发生什么?入口是重新平衡客户端还是保持相同的pod?

这是一个示例文档,您不需要使用其中提供的确切值。

您可以将其设置为所需的任何值,但是将max-ageexpires设置为时间太短,后端将经常重新平衡。这是另一个问题的答案——是的,ingress将重新平衡客户端。

有两个与年龄相关的可选属性可以使用:

  • Expires=<date>
    

将cookie的最长生存期表示为HTTP日期时间戳。在发生入侵的情况下,它被设置为一个数字。

  • Max-Age=<number>
    

指示cookie过期前的秒数。零或负数将使cookie立即过期。

重要!如果同时设置了ExpiresMax-Age,则Max-Age具有优先级。


以下是cookiemax-ageexpires设置为30分钟的工作示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-cookie-test
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "test-cookie"
nginx.ingress.kubernetes.io/session-cookie-expires: "1800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "1800"
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-name
port:
number: 80

检查它是否能执行curl请求(删除了不必要的细节(:

$ curl -I example.com
HTTP/1.1 200 OK
Date: Mon, 14 Mar 2022 13:14:42 GMT
Set-Cookie: test-cookie=1647263683.046.104.525797|ad50b946deebe30052b8573dcb9a2339; Expires=Mon, 14-Mar-22 13:44:42 GMT; Max-Age=1800; Path=/; HttpOnly

相关内容

  • 没有找到相关文章

最新更新