会话关联cookie不再工作(使用Nginx入口的Kubernetes)
将Azure AKS-Kubernetes环境升级到Kubernetes版本1.19.3迫使我也将我的Nginx helm.sh/chart升级到Nginx-ingres-0.7.1。因此,我被迫将API版本定义更改为networking.k8s.io/v1,因为我的DevOps管道相应地失败(旧API的警告导致错误)。但是,现在我有一个问题,我的会话关联注释被忽略,响应中没有设置会话cookie 我拼命地改名,试着用不同的不相关的博客帖子来解决这个问题 任何帮助都将不胜感激 我当前的nginx yaml(我已删除状态/托管字段标记以增强可读性): 我的服务名称“帐户”的入口配置: 我的帐户服务会话关联cookie不再工作(使用Nginx入口的Kubernetes),nginx,kubernetes,cookies,session-affinity,Nginx,Kubernetes,Cookies,Session Affinity,将Azure AKS-Kubernetes环境升级到Kubernetes版本1.19.3迫使我也将我的Nginx helm.sh/chart升级到Nginx-ingres-0.7.1。因此,我被迫将API版本定义更改为networking.k8s.io/v1,因为我的DevOps管道相应地失败(旧API的警告导致错误)。但是,现在我有一个问题,我的会话关联注释被忽略,响应中没有设置会话cookie 我拼命地改名,试着用不同的不相关的博客帖子来解决这个问题 任何帮助都将不胜感激 我当前的nginx
kind: Service
apiVersion: v1
metadata:
name: account
namespace: infra
labels:
app.kubernetes.io/instance: infra
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: account
app.kubernetes.io/version: latest
helm.sh/chart: account-0.1.0
annotations:
meta.helm.sh/release-name: infra
meta.helm.sh/release-namespace: infra
spec:
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
selector:
app.kubernetes.io/instance: infra
app.kubernetes.io/name: account
clusterIP: 10.0.242.212
type: ClusterIP
sessionAffinity: ClientIP **just tried to add this setting to the service, but does not work either**
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
status:
loadBalancer: {}
好的,问题与上面显示的任何配置无关。nginx pod的调试日志中充满了与kube控件名称空间有关的错误消息。我完全删除了Nginx helm图表,并使用了Microsoft建议的存储库:
请将您的答案标记为已接受的解决方案,以提高社区的可视性。
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
name: account
namespace: infra
resourceVersion: '194790'
labels:
app.kubernetes.io/managed-by: Helm
annotations:
kubernetes.io/ingress.class: infra
meta.helm.sh/release-name: infra
meta.helm.sh/release-namespace: infra
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/proxy-buffering: 'on'
nginx.ingress.kubernetes.io/proxy-buffers-number: '4'
spec:
tls:
- hosts:
- account.infra.mydomain.com
secretName: my-default-cert **this is a self-signed certificate with cn=account.infra.mydomain.com
rules:
- host: account.infra.mydomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: account
servicePort: 80
status:
loadBalancer:
ingress:
- ip: 123.123.123.123 **redacted**
kind: Service
apiVersion: v1
metadata:
name: account
namespace: infra
labels:
app.kubernetes.io/instance: infra
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: account
app.kubernetes.io/version: latest
helm.sh/chart: account-0.1.0
annotations:
meta.helm.sh/release-name: infra
meta.helm.sh/release-namespace: infra
spec:
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
selector:
app.kubernetes.io/instance: infra
app.kubernetes.io/name: account
clusterIP: 10.0.242.212
type: ClusterIP
sessionAffinity: ClientIP **just tried to add this setting to the service, but does not work either**
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
status:
loadBalancer: {}
# Create a namespace for your ingress resources
kubectl create namespace ingress-basic
# Add the ingress-nginx repository
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# Use Helm to deploy an NGINX ingress controller
helm install nginx-ingress ingress-nginx/ingress-nginx \
--namespace ingress-basic \
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux