会话关联cookie不再工作(使用Nginx入口的Kubernetes)

会话关联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

将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(我已删除状态/托管字段标记以增强可读性):

我的服务名称“帐户”的入口配置:

我的帐户服务

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