Мне нужно найти способ иметь 1 IP-адрес, который будет использоваться всеми модулями каждый раз, когда им необходимо подключиться к «внешнему миру».
ПОЛНАЯ ВЕРСИЯ:
Я пытаюсь интегрировать свое приложение со службой Payments Gateway. Однако эта служба должна занести в белый список IP-адреса моих серверов, отказавшись от всех других подключений в целях безопасности.
Теперь я запускаю кластер GKE (фактически 3) с Kubernetes 1.5.2. В этом кластере у меня около 30 модулей, и мне нужен только один, чтобы направлять его интернет-трафик через статический, предсказуемый IP-адрес.
Прямо сейчас я должен предоставить список внешних IP-адресов моих экземпляров кластера, которые нужно добавить в белый список, но это проблема.
Кластер настроен на автоматическое масштабирование до 5 экземпляров, а также у всех этих экземпляров есть эфемерный IP-адрес и 1 - I НЕ хотите, чтобы вас заставили превратить все это в статические IP-адреса. 2 - Я тоже НЕ хотите, чтобы его заставляли открывать этот конкретный модуль через внешнюю конечную точку, делая его доступным для управляемых подключений из Интернета в кластер.
Есть ли способ сказать / настроить:
- This pod forwards all it's Internet directed connections through X endpoint?
Obviously, this should be something easy to configure to work with 1 pod
or with all of them I so desired.
Какой здесь правильный курс действий? Как я могу этого добиться?
Я сослался этот ТАК вопрос и Исходные IP-документы на Kubernetes, а также эта инструкция о том, как настроить NAT-шлюз (который, учитывая гибкую конфигурацию кластера, я не думаю, что сработает)
В GCP это пока невозможно. Хотя это немного взломано, я рекомендую настроить http-прокси на экземпляре, отличном от GKE, со статическим IP-адресом. Затем, когда вы используете платежный шлюз, используйте http-прокси, чтобы вы попадали на него с правильного IP-адреса.
Убедитесь, что IP-адрес НЕ эфемерный.
Сделайте образ своей прокси-виртуальной машины. Если он выйдет из строя, вы можете активировать узел в любой зоне того же региона, чтобы он действовал как прокси. Вы также можете перемещать IP-адрес между экземплярами, хотя это приведет к уничтожению текущих соединений, поэтому вы должны убедиться, что ваш код повторит попытку при ошибке. Конечно, вы всегда должны быть уверены, что ваш код повторит попытку в случае ошибки.
Единственный способ сделать это - использовать шлюз NAT.
Я предполагаю, что вы используете своего рода HTTP API (REST API) и для этого нужен TCP. TCP должен завершить рукопожатие, поэтому вам нужно знать, какой узел отправил пакеты, чтобы найти обратный путь. Поэтому нужен NAT.
Найденные вами инструкции по настройке NAT Gatway должны работать. Вам просто нужно указать вашим контейнерам использовать экземпляр NAT в качестве шлюза.