【发布时间】:2019-08-05 15:43:25
【问题描述】:
我尝试将带有 Identity 的 ASP.NET Core 1 应用程序移植到 Kubernetes。登录不起作用,我收到了不同的错误,例如 The anti-forgery token could not be decrypted。问题是我正在使用具有三个副本集的部署,以便进一步的请求由不知道防伪令牌的不同 pod 提供服务。使用replicas: 3 就可以了。
在同一个问题中,我找到了sticky session documentation,这似乎是我的问题的解决方案。 cookie 名称.AspNetCore.Identity.Application 来自我的浏览器工具。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp-k8s-test
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: ".AspNetCore.Identity.Application"
spec:
replicas: 3
template:
metadata:
labels:
app: myapp-k8s
spec:
containers:
- name: myapp-app
image: myreg/myapp:0.1
ports:
- containerPort: 80
env:
- name: "ASPNETCORE_ENVIRONMENT"
value: "Production"
imagePullSecrets:
- name: registrypullsecret
这不起作用,无论是否在 cookie 名称中使用前导点。我还尝试添加以下注释
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
使用 ASP.NET Core 在 Kubernetes 上允许粘性会话需要什么?
【问题讨论】:
标签: nginx asp.net-core kubernetes kubernetes-ingress kubernetes-deployment