Идентификация IP‑адреса клиента при перенаправлении трафика на Ingress-контроллер через балансировщик¶
В данной инструкции описаны настройки Ingress‑контроллера Вебмониторэкс для корректного определения IP‑адреса источника запроса (IP‑адреса клиента), если для направления трафика на Ingress‑контроллер используется балансировщик нагрузки.
По умолчанию Ingress‑контроллер Вебмониторэкс ожидает, что трафик поступает напрямую от реальных клиентов. Однако в инфраструктуре может использоваться балансировщик нагрузки (например, Google Network Load Balancer). Тогда трафик поступает сначала на балансировщик нагрузки, а затем на Ingress‑контроллер.
В этом случае Ingress‑контроллер считает балансировщик нагрузки источником запросов, что может привести к некорректной работе некоторых компонентов Вебмониторэкс. Для идентификации реальных источников запросов, необходимо выполнить дополнительную настройку Ingress‑контроллера Вебмониторэкс.
Шаг 1: Конфигурация на сетевом уровне¶
Необходимо настроить Ingress‑контроллер на сетевом уровне таким образом, чтобы он корректно определял публичные IP‑адреса.
Способ настройки зависит от подключенного балансировщика, но в большинстве случаев достаточно передать значение Local
в параметре controller.service.externalTrafficPolicy
в файле values.yaml
:
controller:
service:
externalTrafficPolicy: "Local"
Шаг 2: Чтение заголовка X-Forwarded-For
¶
Обычно балансировщик нагрузки добавляет в запросы HTTP‑заголовок с реальным IP‑адресом клиента. Чаще всего заголовок называется X-Forwarded-For
. Для получения более точной информации изучите документацию на ваш балансировщик нагрузки.
Ingress‑контроллер может получать реальный IP‑адрес клиента из заголовка запроса. Для этого необходимо задать следующие настройки в файле values.yaml
:
controller:
config:
enable-real-ip: "true"
forwarded-for-header: "X-Forwarded-For"
-
В параметре
forwarded-for-header
укажите название заголовка с IP‑адресом клиента
Другие рекомендации
Ingress‑контроллер Вебмониторэкс разработан на базе официального Ingress‑контроллера NGINX для Kubernetes. Поэтому большинство рекомендаций для Ingress‑контроллера NGINX применяются и для Ingress‑контроллера Вебмониторэкс.
Рекомендуем для чтения по данной теме: