Скрыть IP-адрес модулей кластера GKE за одним IP-адресом в случае использования VPN между сайтами с использованием GCP Cloud VPN

#google-cloud-platform #vpn #nat #google-cloud-vpn

#google-облачная платформа #vpn #nat #google-cloud-vpn

Вопрос:

В настоящее время я разрабатываю приложение nodejs, развернутое в кластере GKE в облачной платформе Google. Этому приложению потребуется вызвать сторонний API, который доступен только через VPN, поэтому мне нужно установить VPN-соединение между сайтами в сети стороннего поставщика API.

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

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

Я подумываю об использовании одной виртуальной машины Linux в качестве маршрутизатора nat, чтобы вызов API для стороннего API сначала проходил через этот маршрутизатор nat, а затем с маршрутизатора nat на шлюз Cloud VPN. Но когда я смотрю на таблицу маршрутов VPC, я просто не вижу, как можно реализовать этот метод, поскольку в таблице маршрутов VPC я не могу указать конкретный сегмент сети в качестве источника. Я могу только установить пункт назначения и следующий переход, который повлияет на все экземпляры в VPC.

Это текущая топология моего VPC для справки :

Текущая топология

Это то, что можно сделать в GCP, или, может быть, я неправильно смотрю на проблему?

Спасибо

Ответ №1:

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

Похоже, облачный NAT может решить вашу проблему здесь.

Если у вас есть частный кластер GKE и облачный NAT в одном регионе, при создании / настройке облачного NAT вы можете разрешить трафик из этого региона проходить только через облачный NAT.

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

сторонний API разрешит использовать только один IP-адрес с моего VPC

Для этого вы можете зарезервировать внешний IP-адрес и назначить его своему экземпляру Cloud NAT. Фактически, это можно сделать «на лету» при создании экземпляра Cloud NAT.

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

Ниже приведены некоторые ссылки:

  1. Использование Cloud NAT
  2. Пример настройки GKE