Создать один исходящий IP для данной сети

12

Я пытаюсь определить лучший способ в GCP назначить один внешний IP-адрес для внешнего трафика. Мой пример использования: мне нужно предоставить статический IP-адрес третьей стороне, чтобы они могли внести его в белый список, чтобы мои экземпляры могли получить доступ к их API. Поскольку в будущем я могу добавлять или вычитать экземпляры GCE, я не хочу давать им несколько статических IP-адресов, которые могут измениться.

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

У меня настроена стандартная сеть GCP; нет никаких VPN, и все виртуальные машины имеют уникальные внешние IP-адреса. Мне это действительно нравится, потому что мне нужно иметь возможность подключаться к виртуальным машинам по SSH. Но от моих виртуальных машин до Интернета я хотел бы, чтобы трафик показывался, что все идет с одного IP. Мне сразу же пришла в голову мысль, на которую намекают документы: создать экземпляр NAT, а затем направить исходящий трафик через него. Несколько проблем с этим подходом:

  1. Я должен установить и поддерживать коробку исключительно для целей NAT
  2. Это не ГА; если этот экземпляр или зона доступности умрет, другие мои экземпляры не смогут направлять трафик извне
  3. Это не кажется очень повторяемым, если мне придется воссоздать конфигурацию в будущем

В частности, я использую GKE / Kubernetes для этого проекта. Есть ли лучшая практика для выполнения этого варианта использования, которая является HA, низкие эксплуатационные расходы и повторяемость?

грабят-CNG
источник
Я считаю, что лучшим вариантом для вас является настройка VPN, которая также поможет при использовании GKE. Например: serverfault.com/questions/750389/gke-pod-connecting-via-vpn , и это экономически эффективно.
Джордж
@ Джордж Я не думаю, что VPN будет работать для этого, потому что я не контролирую другую сторону. Например, я бы не стал устанавливать VPN с третьей стороной; Мне нужно направить трафик через Интернет.
rob-cng
1
Таким образом, наличие NAT Gateway должно сделать это, но это приведет к одной точке отказа. Одна вещь, которая пришла в голову, - это иметь статические IP-адреса для ваших экземпляров и сделать так, чтобы другая сторона внесла их в белый список. Если вы хотите удалить какой-либо из экземпляров, IP-адрес все равно будет зарезервирован, который вы можете прикрепить к вновь созданным экземплярам. И пока используется IP (привязанный к экземпляру), это бесплатно.
Джордж
Да, я думаю, что нам придется идти с этим обходным путем, пока GCP не выйдет с NAT в качестве сервиса, аналогичного AWS. Спасибо
rob-cng 22.09.16
1
Удалось ли вам решить эту проблему? Если это так, рассмотрите возможность публикации ответов на свои вопросы, чтобы сообщество могло извлечь из этого пользу
Faizan

Ответы:

4

Вы можете сделать это путем маршрутизации всего вашего трафика через один экземпляр, который выполняет NAT для других экземпляров. Для этого есть руководство Google по адресу https://cloud.google.com/compute/docs/networking#natgateway.

Дэвид
источник
3

Google Cloud теперь предоставляет управляемый сервис NAT Gateway - Cloud NAT .

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

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

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

Для этого все еще нужен хост-бастион, чтобы иметь возможность подключиться к ssh.

Параг
источник