Назад | Перейти на главную страницу

Стабильный общедоступный IP-адрес или диапазон IP-адресов для исходящих подключений в GKE

Я использую Google Kubernetes Engine для запуска модулей по запросу. Каждый модуль публично доступен в Интернете с помощью службы nodeport.

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

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

Я пробовал использовать простой шлюз NAT для узлов Kubernetes (используя пример из Вот), и пока это направляет исходящие соединения на шлюз NAT, он прерывает входящий трафик к модулям (служба Nodeport), поскольку они сбрасываются на шлюзе NAT.

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

Google Cloud теперь предоставляет управляемую службу шлюза NAT - Облачный NAT.

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

Пример реализации использования Cloud NAT с GKE представлен здесь - https://cloud.google.com/nat/docs/gke-example

Вы можете попробовать это решение:

https://cloud.google.com/solutions/using-a-nat-gateway-with-kubernetes-engine

В обычных условиях узлы Google Kubernetes Engine направляют весь исходящий трафик через интернет-шлюз, связанный с их кластером узлов. Подключение к интернет-шлюзу, в свою очередь, определяется сетью Compute Engine, связанной с кластером узлов. Каждый узел в кластере имеет временный внешний IP-адрес. Когда узлы создаются и уничтожаются во время автомасштабирования, IP-адреса новых узлов назначаются автоматически.

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

  • Предоставьте стороннюю услугу с постоянным внешним IP-адресом.
  • Отслеживайте и фильтруйте исходящий трафик из кластера Google Kubernetes Engine.