Прикрепленные сеансы не работают при использовании Nginx в Kubernetes

У меня есть развертывание, состоящее из 2 модулей с веб-приложением в них. Контроллер входящего трафика Nginx установлен для доступа к этим двум модулям с помощью tls-passthrough. Я пытался использовать аннотации для установки липких сессий, но безрезультатно. В заголовках нет файлов cookie, следовательно, нет липкости. Что я мог сделать, чтобы все заработало? Большое спасибо за ваши мудрые ответы.

Созданный мной Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: ingress
 annotations:
 # nginx.ingress.kubernetes.io/secure-backends: "true"
 # nginx.ingress.kubernetes.io/ssl-passthrough: "true"
 # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
 # nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/affinity: "cookie"
   nginx.ingress.kubernetes.io/affinity-mode: "persistent"
   nginx.ingress.kubernetes.io/session-cookie-name: "wabam"
   nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
   nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
namespace: default
spec:
 rules:
  - host: wabam.moulip.lan
     http:
     paths:
      - backend:
          serviceName: wabam-ingress-svc
          servicePort: 443
        path: /

person moulip    schedule 18.07.2020    source источник
comment
Если вы ssl-passthrough, то вы не можете изменить запрос / ответ (по определению).   -  person zerkms    schedule 18.07.2020
comment
поскольку интерфейс Loadbalancer не пересылает заголовок Real-IP   -  person Abdennour TOUMI    schedule 18.07.2020
comment
Привет вам обоим, я подозревал, что виноват ssl-passthrough. И я проверил журналы своего веб-приложения, и пересылается фактический IP-адрес клиента. Поскольку я не могу прослушивать веб-приложение на простом http, примет ли Nginx, чтобы завершить сеанс ssl и по-прежнему перенаправлять трафик с помощью https?   -  person moulip    schedule 18.07.2020
comment
Как уже упоминалось, любые другие аннотации не будут работать при использовании вместе с ssl-passthrough. Поэтому я не думаю, что это будет работать так, как вы описали.   -  person Wytrzymały Wiktor    schedule 20.07.2020


Ответы (1)


Я публикую это как ответ сообщества для большей наглядности.

Как уже упоминалось в комментариях: любая другая аннотация не будет работать при использовании вместе с ssl-passthrough. Это также упоминается в официальных документах:

Поскольку сквозная передача SSL работает на уровне 4 модели OSI (TCP), а не на уровне 7 (HTTP), использование сквозной передачи SSL делает недействительными все другие аннотации, установленные для объекта Ingress.

person Community    schedule 27.07.2020