ingress-nginx How to property configure session-affinity on a multiple backends setup

3/19/2020

I have a large application that uses ingress-nginx with a configuration similar to:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/affinity-mode: "persistent"
    nginx.ingress.kubernetes.io/ssl-redirect: SSL_REDIRECT
  name: MY_INGRESS
spec:
  tls:
  - secretName: SSL_CERTIFICATE_NAME
  rules:
  - host: EXTERNAL_HOST
    http:
      paths:
      - backend:
          serviceName: service2
        path: /service2
      - backend:
          serviceName: service3
        path: /service3
      - backend:
          serviceName: service4
        path: /service4
      - backend:
          serviceName: service5
        path: /service5
      - backend:
          serviceName: service6
        path: /service6
      - backend:
          serviceName: service7
        path: /service7
      - backend:
          serviceName: service1
        path: /

With the current configuration my cookie value is updated frequently and I am routed to different servers.

My issue is that each service is unique, each is linked to a different set of PODs and I need session affinity.

What would be the best way to accomplish this? An ingress for each backend with a different cookie name?

-- snagy
cookies
kubernetes-ingress
session-affinity

0 Answers