Стабільний загальнодоступний IP або IP діапазон для вихідних з'єднань у GKE


21

Я використовую Google Kubernetes Engine для роботи з попитом на вимогу. Кожен стручок публічно відкривається в Інтернеті за допомогою сервісу nodeport.

Я шукаю спосіб у GKE отримати єдиний IP або IP-діапазон для вихідних з'єднань, щоб надати їх стороннім API, щоб дозволити їх.

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

Я спробував використовувати простий NAT шлюз до вузлів Kubernetes (використовуючи приклад звідси ), і хоча це маршрутизує вихідні з'єднання до шлюзу NAT, він порушує вхідний трафік до стручків (сервіс Nodeport), оскільки вони випадають на NAT шлюз.

  • Чи існує діапазон IP за замовчуванням для хмарної області google, який я можу надати третій стороні у білий список (або)

  • Якщо GKE надає спосіб вибору вузла зовнішніх IP-адрес із попередньо зарезервованого списку статичних IP-адрес (або)

  • Чи є інший спосіб досягти наявності єдиного статичного IP або IP-діапазону, який представляє вихідний трафік від стручків

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

Відповіді:


6

Тепер Google Cloud надає керовану послугу шлюзу NAT - Cloud NAT .

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

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


Чи повинен кластер бути приватним?
Гаджус

3
Так, кластер повинен бути приватним, але майстер може бути публічним. Якщо будь-який із ваших послуг також повинен бути загальнодоступним, їх можна виставити на балансі вантажу.
Параг

@Parag Чи обов'язково кластер повинен бути приватним? Чи є спосіб, яким я можу скористатися, якщо IP-адреси Вузла є загальнодоступними.
Suhas Chikkanna

1
@SuhasChikkanna З CloudNAT немає. Якщо ви хочете, щоб у вузлів були зовнішні IP-адреси, але ви хочете отримати єдиний вихідний IP-код, ви можете створити власний екземпляр NAT-шлюзу за допомогою Squid та мати умовну маршрутизацію, яка спрямовуватиме ваші внутрішні сервери до інстанцій безпосередньо, але будь-який трафік ззовні надходить через NAT. Це дасть вашим користувачам єдину вихідну IP-адресу, зробивши ваші вузли доступними для вибраних джерел IP-адреси.
Параг

@Parag Звучить добре! Однозначно спробую це. Велике спасибі :)
Suhas Chikkanna

1

Ви можете спробувати це рішення:

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

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

Поведінка шлюзу за замовчуванням добре працює в звичайних обставинах. Однак ви можете змінити спосіб розподілу ефемерних зовнішніх IP-адрес, щоб:

  • Надайте сторонній службі послідовну зовнішню IP-адресу.
  • Відстежуйте та фільтруйте вихідний трафік із кластеру Google Kubernetes Engine.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.