отправить запрос от стручков kubernetes через ip балансировщика нагрузки - PullRequest
3 голосов
/ 08 января 2020

У меня есть кластер k8s на DigitalOcean, использующий traefik 1.7 в качестве Ingress Controller. наш домен указывает на ip балансировщика нагрузки, созданный trafik.

Все поступающие запросы go через ip балансировщика нагрузки и направляются trafik на надлежащее обслуживание.

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

Могу ли я предоставить им IP-адрес балансировщика нагрузки и сделать все исходящие запросы go через IP-адрес балансировщика нагрузки? или мне нужно предоставить им публичные c IP-адреса всех узлов?

спасибо

Ответы [ 4 ]

2 голосов
/ 08 января 2020

Вы можете сделать любой из них.

Но лучшим решением для этого будет сделать весь трафик c go через балансировщик нагрузки, предполагая, что это какой-то прокси-сервер с возможностями туннелирования и открытыми соединениями. через IP балансировщика нагрузки на вашей внешней системе. Потому что, представьте себе, прямо сейчас у вас может быть дюжина узлов, на которых работает 100 микросервисов, и теперь вы открыли свою группу безопасности внешней системы, чтобы разрешить трафик c из дюжины.

Но в следующие несколько месяцев вы могли бы go от 12 до 100 узлов и накладные расходы на обновление группы безопасности вашей внешней системы при каждом добавлении узла в DigitalOcean.

Но вы также можете попробовать другой подход, добавив автономный прокси-сервер и маршрутизируя трафик c через него из ваших модулей. Нечто подобное [this] ( Исходящие вызовы Kubernetes на внешнюю конечную точку с белым списком IP ).

Просто примечание, это не просто эти опции, есть несколько способов, которыми можно добиться этого, один другой подход будет связывать NAT IP со всеми вашими узлами, и сохранение каждого узла в частной сети также будет работать. Все зависит от того, как вы хотите его настроить, и от цели системы, которую вы планируете достичь.

Надеюсь, это поможет.

0 голосов
/ 08 января 2020

kube-stati c -egress-ip предоставляет решение, с помощью которого оператор кластера может определить выходное правило, в котором набор модулей, исходящий трафик которых c к указанному пункту назначения, всегда равен SNAT 'с настроенным исходящим IP-адресом c. kube-stati c -egress-ip предоставляет эту функциональность нативным способом в Kubernetes с использованием пользовательских маршрутов.

0 голосов
/ 08 января 2020

Исходящие пакеты от кластера k8s до внешнего кластера имеют IP-адрес узла в качестве исходного IP-адреса. Таким образом, вы можете зарегистрировать IP-адреса узлов k8s во внешней системе, чтобы разрешить исходящие пакеты из кластера k8s.

https://kubernetes.io/docs/tutorials/services/source-ip/ говорит, что исходящие пакеты из k8s получают исходные NAT-адреса с IP-адресом узла :

NAT источника : замена IP-адреса источника в пакете, обычно на IP-адрес узла

Для отправки исходящих пакетов можно использовать следующее. кластер k8s:

0 голосов
/ 08 января 2020

К сожалению, ресурсы Ingress не могут использовать исходящие запросы. Поэтому вам необходимо предоставить все узлы для публикации c IP-адресов.

Другая идея: если вы используете прямой прокси-сервер (например, nginx, haproxy), вы можете ограничить узлы, для которых запланированы прямые прокси-модули, путем установки nodeSelector. Делая так, я думаю, что вы можете ограничить узлы, которые предоставляют публичные c IP-адреса.

...