Перейти к содержанию

Сохранение IP‑адреса клиента при использовании балансировщика нагрузки

Info

Ingress‑контроллер Валарм разработан на базе официального Ingress‑контроллера NGINX для Kubernetes. Поэтому большинство рекомендаций для Ingress‑контроллера NGINX применяются и для Ingress‑контроллера Валарм.

Рекомендуем для чтения по данной теме:

По умолчанию Ingress‑контроллер Валарм предполагает, что pod'ы доступны из сети Интернет или других потенциально опасных ресурсов напрямую. При передаче запросов сервисам, Ingress‑контроллер автоматически добавляет HTTP‑заголовок X-Forwarded-For с IP‑адресом клиента.

Если для направления внешнего трафика на Ingress‑контроллер используется балансировщик нагрузки (AWS ELB, Google Network Load Balancer и т.д.), возможны способы корректной передачи IP‑адреса клиента ниже.

Настроить передачу реального IP‑адреса клиента на сетевом уровне

Способ настройки зависит от подключенного балансировщика, но в большинстве случаев необходимо передать значение Local в параметре controller.service.externalTrafficPolicy Helm‑чарта.

Параметр передается с помощью опции --set команды helm install (при установке Ingress‑контроллера) или helm upgrade (при изменении параметров установленного Ingress‑контроллера). Например:

helm install --set controller.service.externalTrafficPolicy=Local <INGRESS_CONTROLLER_NAME> ingress-chart/wallarm-ingress -n <KUBERNETES_NAMESPACE>

Для корректной установки Ingress‑контроллера, в опции --set также необходимо передать другие параметры Helm‑чарта

helm upgrade --reuse-values --set controller.service.externalTrafficPolicy=Local <INGRESS_CONTROLLER_NAME> ingress-chart/wallarm-ingress -n <KUBERNETES_NAMESPACE>

Настроить для Ingress‑контроллера получение значения из HTTP‑заголовка X-Forwarded-For

Данный вариант применяется при использовании внешних CDN-сервисов, например Cloudflare или Fastly. Для настройки:

  1. Убедитесь, что балансировщик нагрузки передает IP‑адрес в заголовке X-Forwarded-For.

  2. Передайте значение true в параметре controller.config.use-forwarded-headers Helm‑чарта.

    Параметр передается с помощью опции --set команды helm install (при установке Ingress‑контроллера) или helm upgrade (при изменении параметров установленного Ingress‑контроллера):

    helm install --set controller.config.use-forwarded-headers=true <INGRESS_CONTROLLER_NAME> ingress-chart/wallarm-ingress -n <KUBERNETES_NAMESPACE>
    

    Для корректной установки Ingress‑контроллера, в опции --set также необходимо передать другие параметры Helm‑чарта

    helm upgrade --reuse-values --set controller.config.use-forwarded-headers=true <INGRESS_CONTROLLER_NAME> ingress-chart/wallarm-ingress -n <KUBERNETES_NAMESPACE>