Использование Session Affinity (Cookies) с SSL Passthrough на NGINX-Ingress - PullRequest
1 голос
/ 08 марта 2019

TL; DR : я хочу настроить привязку сеанса на основе файлов cookie в K8s через контроллер nginx-ingress с передачей SSL - это можно сделать?


Привет всем,

У меня работает работающая служба Azure Kubernetes (AKS) (1.11.3), и я настроил контроллер NGINX-Ingress для маршрутизации запросов к службе ClusterIP для моего приложения (которое имеетминимум 2 работающих модуля).

Я успешно настроил передачу SSL на входном контроллере, чтобы TLS завершался на модулях, и поэтому я могу использовать HTTP2 (согласно этой статье 1013 *).Теперь я бы хотел настроить Session Affinity (используя Cookies), чтобы соединения направлялись в один и тот же модуль для отслеживания состояния (вход в приложение).

Я попытался использовать следующие аннотации для входного объекта для этого:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"

Однако я не вижу cookie "маршрута", возвращенный при первом запросе.Я работал над проблемой, описанной здесь , и убедился, что вход настроен правильно.Затем я заметил это сообщение в документах :

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

Q : будет ли это означать, что использование соответствия сеансов с использованием SSL Passthrough вне таблицы?В этом случае Ingress не сможет идентифицировать соединение / cookie (так как он зашифрован SSL) и направить его на ранее связанный модуль?

1 Ответ

2 голосов
/ 08 марта 2019

Краткий ответ: нет, это невозможно.Слой 4 не имеет никакого представления о том, что такое http, он просто видит, как байты текут взад и вперед.Вместо этого у вас может быть сходство, основанное на ip-адресе, но не на cookie-файлах, так как для этого потребуется прокси-решение уровня 7.В зависимости от вашей ситуации, вы можете запустить прокси на уровне 7, который сможет расшифровать трафик, а затем зашифровать его другим сертификатом для внутреннего использования.Вся полезная нагрузка (за исключением SNI, например) не зашифрована в соответствии с SSL, что означает, что для того, чтобы сделать какую-то привязку к файлам cookie, прокси-сервер должен будет расшифровать данные перед их проверкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...