Stabilny publiczny adres IP lub zakres adresów IP dla połączeń wychodzących w GKE

21

Używam Google Kubernetes Engine do uruchamiania na żądanie. Każda kapsuła jest publicznie dostępna w Internecie za pomocą usługi Nodeport.

Szukam sposobu w GKE, aby uzyskać pojedynczy adres IP lub zakres adresów IP dla połączeń wychodzących, aby przekazać je zewnętrznym interfejsom API w celu dodania ich do białej listy.

Nie można zarządzać adresami IP węzłów GKE, gdy węzły są skalowane automatycznie lub gdy je aktualizuję. Potrzebuję sposobu na utrzymanie spójnego wychodzącego adresu IP.

Próbowałem użyć prostej bramy NAT do węzłów Kubernetes (korzystając z przykładu z tego miejsca ) i chociaż to kieruje połączenia wychodzące do bramy NAT, przerywa ruch przychodzący do strąków (usługa Nodeport), ponieważ są one wysyłane na Brama NAT.

  • Czy istnieje domyślny zakres adresów IP dla regionu chmury Google, który mogę przekazać stronie trzeciej do białej listy (lub)?

  • Jeśli GKE zapewnia sposób wyboru zewnętrznych adresów IP węzłów z wstępnie zarezerwowanej listy statycznych adresów IP (lub)

  • Czy istnieje inny sposób na osiągnięcie pojedynczego statycznego adresu IP lub zakresu adresów IP reprezentującego ruch wychodzący z zasobników

Znalazłem podobne pytania jak to , ale nie uwzględniają mój problem jak strąki powinien być podłączany zewnętrznie, które przerwy podczas korzystania z NAT.

Parag
źródło

Odpowiedzi:

6

Google Cloud zapewnia teraz zarządzaną usługę NAT NAT - Cloud NAT .

Brama ta może być używana z klastrem GKE, który zapewnia stabilny publiczny adres IP wyjścia dla wszystkich znajdujących się w nim kapsuł, co pozwala na umieszczenie ich na białej liście przez zewnętrznych dostawców usług.

Przykładowa implementacja korzystania z Cloud NAT z GKE znajduje się tutaj - https://cloud.google.com/nat/docs/gke-example

Parag
źródło
Czy klaster musi być prywatny?
Gajus
3
Tak, klaster musi być prywatny, ale master może być publiczny. Jeśli którakolwiek z Twoich usług również musi być publiczna, może zostać ujawniona przez moduł równoważenia obciążenia.
Parag
@Parag Czy klaster musi być prywatny? Czy istnieje sposób, którego mogę użyć, jeśli adresy IP węzłów są publiczne.
Suhas Chikkanna
1
@ SuhasChikkanna With CloudNAT nr. Jeśli chcesz, aby węzły miały zewnętrzne adresy IP, ale chcesz także pojedyncze wychodzące adresy IP, możesz utworzyć własną instancję bramy NAT za pomocą Squid i mieć routing warunkowy, który będzie kierował Twoje wewnętrzne serwery bezpośrednio do instancji, ale wszelki ruch z zewnątrz przychodzi poprzez NAT. Zapewni to użytkownikom pojedynczy wychodzący adres IP, jednocześnie udostępniając węzły wybranym źródłom adresów IP.
Parag
@Parag Brzmi dobrze! Zdecydowanie spróbowałbym tego.
Wielkie
1

Możesz wypróbować to rozwiązanie:

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

W normalnych okolicznościach węzły Google Kubernetes Engine kierują cały ruch wychodzący przez bramę internetową związaną z ich klastrem węzłów. Z kolei połączenie z Internetem jest definiowane przez sieć Compute Engine powiązaną z klastrem węzłów. Każdy węzeł w klastrze ma efemeryczny zewnętrzny adres IP. Kiedy węzły są tworzone i niszczone podczas automatycznego skalowania, nowe adresy IP węzłów są przydzielane automatycznie.

Domyślne zachowanie bramy działa dobrze w normalnych okolicznościach. Możesz jednak zmodyfikować sposób przydzielania efemerycznych zewnętrznych adresów IP, aby:

  • Zapewnij usługom zewnętrznym spójny zewnętrzny adres IP.
  • Monitoruj i filtruj ruch wychodzący z klastra Google Kubernetes Engine.
alphayax
źródło