Как мне захватить внешний IP-адрес конечного пользователя в Voyager / HAProxy / Kubernetes? - PullRequest
0 голосов
/ 04 февраля 2020

Я хотел бы захватить внешний IP-адрес клиентов, посещающих мое приложение. Я использую kubernetes на AWS / Kops. Входная настройка настроена Voyager HAProxy. Я использую сервис LoadBalancer.

Я настроил HAProxy через Voyager для добавления заголовка x-forwarded-for с помощью аннотации ingress.appscode.com/default-option: '{"forwardfor": "true"}'.

Проблема заключается в том, что при тестировании заголовок приходит через с внутренним IP-адресом одного из моих узлов kubernetes, а не с моим внешним IP-адресом, как хотелось бы.

Я не уверен, что Voyager LoadBalancer использует под крышками, нет связанных модулей, только один для входа -контроллер.

kubectl describe svc voyager-my-app выходы

Name:                     <name>
Namespace:                <namespace>
Labels:                   origin=voyager
                          origin-api-group=voyager.appscode.com
                          origin-name=<origin-name>
Annotations:              ingress.appscode.com/last-applied-annotation-keys:
                          ingress.appscode.com/origin-api-schema: voyager.appscode.com/v1beta1
                          ingress.appscode.com/origin-name: <origin-name>
Selector:                 origin-api-group=voyager.appscode.com,origin-name=<origin-name>,origin=voyager
Type:                     LoadBalancer
IP:                       100.68.184.233
LoadBalancer Ingress:     <aws_url>
Port:                     tcp-443  443/TCP
TargetPort:               443/TCP
NodePort:                 tcp-443  32639/TCP
Endpoints:                100.96.3.204:443
Port:                     tcp-80  80/TCP
TargetPort:               80/TCP
NodePort:                 tcp-80  30263/TCP
Endpoints:                100.96.3.204:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

1 Ответ

0 голосов
/ 04 февраля 2020

Как правило, для входов Kubernetes существует пара соответствующих настроек:

  • xff_num_trusted_hops, которая указывает количество «прыжков», которые являются «доверенными», т.е. внутренними. Таким образом, вы можете различать guish между внутренними и внешними IP-адресами.
  • Вы хотите убедиться, что вы установили ExternalTrafficPolicy: local в балансировщике нагрузки (вы не указали, какой у вас LB )

Примечание. Я в основном знаком с Ambassador (построен на Envoy Proxy), который делает это по умолчанию.

...