Я пытаюсь определить лучший способ в GCP назначить один внешний IP-адрес для OUTBOUND трафика. Мой вариант использования: мне нужно предоставить статический IP-адрес третьей стороне, чтобы они могли внести его в белый список, чтобы мои экземпляры могли получить доступ к их API. Поскольку в будущем я могу добавлять или удалять экземпляры GCE, я не хочу давать им несколько статических IP-адресов, которые могут измениться.
Я нашел похожий вопрос Вот но не был уверен, что это относится к моему варианту использования.
У меня настроена стандартная сеть GCP; нет VPN, и все виртуальные машины имеют уникальные внешние IP-адреса. Мне действительно нравится этот способ, потому что мне нужно иметь возможность подключаться к виртуальным машинам по SSH. Но от моих виртуальных машин к Интернету я бы хотел, чтобы трафик выглядел так, будто все идет с одного IP. Сразу приходит в голову мысль, на которую намекают документы, - это создать экземпляр NAT, а затем направить через него исходящий трафик. Несколько проблем с этим подходом:
В частности, в этом проекте я использую GKE / Kubernetes. Есть ли лучшая практика для реализации этого варианта использования: высокая доступность, низкие затраты на обслуживание и повторяемость?
Вы можете сделать это, направив весь свой трафик через один экземпляр, который выполняет NAT для других экземпляров. У Google есть руководство для этого на https://cloud.google.com/compute/docs/networking#natgateway
Google Cloud теперь предоставляет управляемую службу шлюза NAT - Облачный NAT.
Этот шлюз можно использовать с кластером GKE, который предоставляет стабильный общедоступный исходящий IP-адрес всем модулям внутри него, что позволяет им быть внесенными в белый список сторонними поставщиками услуг.
Пример реализации использования Cloud NAT с GKE представлен здесь - https://cloud.google.com/nat/docs/gke-example
Кроме того, поскольку это управляемый программный NAT, пропускная способность и доступность не пострадают.
Однако для этого по-прежнему нужен хост-бастион, чтобы иметь возможность подключаться к вашим экземплярам по ssh.