Как заставить Traefik передать заголовок x-forwarded-proto?

#kubernetes #amazon-eks #traefik #aws-application-load-balancer #traefik-ingress

Вопрос:

Я развертываю Traefik в своем кластере EKS с помощью диаграммы управления Traefik по умолчанию, а также с помощью контроллера AWS Load Balancer.

Traefik отлично развертывает и направляет трафик на мои сервисы. Однако у одной из служб обслуживания клиентов есть требование, чтобы заголовок x-forwarded-proto был передан ей. Это делается для того, чтобы он знал, первоначально ли пользователь вошел через http или https.

AWS ALB отправляет заголовок, но Traefik не пересылает его дальше. Кто-нибудь знает, как заставить Трефика сделать это?

Как я устанавливаю Traefik: helm install traefik traefik/traefik --values=values.yaml

Ответ №1:

С traefik вы должны доверять внешним прокси-адресам, чтобы сохранить их заголовок X-Forwarded-For.

Это можно было бы сделать, добавив такой аргумент, как --entryPoints.websecure.forwardedHeaders.trustedIPs=127.0.0.1/32,W.X.Y.Z/32

Используя шлем, вы должны уметь использовать:

 helm install .... "--set=additionalArguments=['--entryPoints.websecure.forwardedHeaders.trustedIPs=127.0.0.1/32,10.42.0.0/16']"`
 

… или напишите свой собственный файл значений.

ПРЕДУПРЕЖДЕНИЕ: по умолчанию в диаграмме не будет использоваться настройка сети хостов, а вместо этого вы будете раскрывать свой вход с помощью службы балансировки нагрузки (фактически на основе порта узла).

Поведение порта узла заключается в том, чтобы установить соединение, входящее в SDN. Таким образом, Traefik увидит некоторый внутренний адрес SDN-в зависимости от того, какой SDN вы используете, это может быть первый используемый адрес подсети хоста, сетевой адрес этой подсети хоста, IP-адрес вашего узла kubernetes из SDN, … Вам придется выяснить, какому IP-адресу доверять, в зависимости от вашей настройки.