Наличие 1 исходящего IP-адреса для исходящего трафика Kubernetes - PullRequest
0 голосов
/ 03 августа 2020

Текущая настройка

Технические характеристики кластера: Управляемый Kubernetes в Digital Ocean

Цель

Мои модули получают доступ к некоторым веб-сайтам, но я хочу сначала использовать прокси.

Проблема

Прокси-сервер, который мне нужно использовать, принимает только 1 IP-адрес в «разрешенном списке».

Мой кластер использует разные узлы, с автоматическим масштабированием узлов, поэтому У меня несколько и меняющихся IP-адресов.

Решения, о которых я думаю

  • Настройка прокси (squid? nginx?) Вне кластера (в настоящее время не работает, когда Я захожу на веб-сайт HTTPS)
  • Istio может разрешить мне настроить шлюз? (Нет знаний об Istio)
  • Используйте K8, управляемые GCP, и следуйте ответам на исходящий трафик кластера Kubernetes c IP . Но весь наш стек находится в Digital Ocean и цены там лучше.

Мне любопытно узнать, что является лучшей практикой, самым простым решением или сталкивался ли кто-нибудь раньше с подобным вариантом использования:)

Best

1 Ответ

1 голос
/ 03 августа 2020

Вы можете настроить весь свой трафик c на go через istio-egressgateway.

Затем вы можете манипулировать istio-egressgateway, чтобы он всегда был развернут на одном узле кластера и занесите этот IP-адрес в белый список.

Плюсы: супер просто. НО. Если вы еще не используете Istio, настройка Istio только для этого может убить москита базукой.

Минусы: Необходимо убедиться, что узел не меняет Айпи адрес. В противном случае сам istio-egressgateway может не быть развернут (если вы не добавили метки к новому узлу), и вам нужно будет перенастроить все для нового узла (новый IP-адрес). Еще один недостаток может заключаться в том, что если трафик c возрастет, появится HPA, который развернет больше реплик шлюза, и все они будут развернуты на одном узле. Итак, если у вас будет много трафика c, возможно, было бы неплохо изолировать один узел только для этой цели.

Другой вариант будет таким, как вы предлагаете; прокси. Я бы порекомендовал напрямую прокси Envoy. Я имею в виду, что Istio все равно будет использовать Envoy, верно? Итак, просто получите прокси напрямую, поместите его в модуль и сделайте то же самое, что я упоминал ранее; привязка узла, поэтому он всегда будет работать на одном и том же узле, поэтому он будет go с одним и тем же IP.

Плюсы: Вы не устанавливаете весь сервис me sh control самолет для одной крошечной вещи.

Минусы: То же, что и раньше, поскольку у вас все еще есть проблема со сменой IP-адреса узла, если что-то пойдет не так, плюс вам нужно будет управлять своим Deployment объект, HPA, настройте прокси Envoy и т.д. c. вместо использования объектов Istio (например, Gateway и VirtualService).

Наконец, я вижу третий вариант; для настройки шлюза NAT за пределами кластера и настройки вашего трафика c на go через него.

Плюсы: Вам не нужно настраивать какой-либо объект kubernetes, поэтому нет необходимости устанавливать какое-либо сходство узлов, поэтому не будет переполнения узлов или изменения IP. Кроме того, вы можете удалить внешние IP-адреса из своего кластера, чтобы он был более безопасным (если у вас нет других рабочих нагрузок, которым необходимо напрямую обращаться к inte rnet). Кроме того, вероятно, наличие одного узла, настроенного как NAT, будет более устойчивым, чем модуль kubernetes, работающий на узле.

Минусы: Может быть немного сложнее настроить?

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

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

Теперь GCP действительно предлагает очень устойчивый шлюз NAT. Он управляется Google, поэтому не должен потерпеть неудачу. Но не дешево.

...