Stabile öffentliche IP oder IP-Bereich für ausgehende Verbindungen in GKE

19

Ich verwende Google Kubernetes Engine, um On-Demand-Pods auszuführen. Jeder Pod ist über einen Nodeport-Dienst öffentlich dem Internet ausgesetzt.

Ich suche nach einer Möglichkeit in GKE, eine einzelne IP oder einen IP-Bereich für ausgehende Verbindungen abzurufen und sie an APIs von Drittanbietern weiterzuleiten, um sie auf die Whitelist zu setzen.

Die GKE-Knoten-IPs können nicht verwaltet werden, wenn Knoten automatisch skaliert werden oder wenn ich sie aktualisiere. Ich brauche einen Weg, um eine konsistente ausgehende IP aufrechtzuerhalten.

Ich habe versucht, ein einfaches NAT-Gateway zu den Kubernetes-Knoten zu verwenden (anhand des Beispiels von hier ), und während dies die ausgehenden Verbindungen zum NAT-Gateway weiterleitet, wird der eingehende Datenverkehr zu den Pods (Nodeport-Dienst) unterbrochen, da sie am NAT-Gateway.

  • Gibt es einen Standard-IP-Bereich für eine Google Cloud-Region, den ich dem Dritten zur Whitelist (oder) zur Verfügung stellen kann?

  • Wenn GKE eine Möglichkeit bietet, externe IP-Knoten aus einer vorreservierten Liste statischer IPs (oder) auszuwählen.

  • Gibt es eine andere Möglichkeit, eine einzelne statische IP oder einen IP-Bereich zu erreichen, der den ausgehenden Datenverkehr von den Pods darstellt?

Ich habe ähnliche Fragen wie diese gefunden , aber sie lösen mein Problem nicht, da die Pods extern verbindbar sein sollten, was bei Verwendung eines NAT nicht funktioniert.

Parag
quelle

Antworten:

6

Google Cloud bietet jetzt einen verwalteten NAT-Gateway-Dienst - Cloud NAT .

Dieses Gateway kann mit einem GKE-Cluster verwendet werden, der allen darin enthaltenen Pods eine stabile öffentliche Ausgangs-IP bereitstellt, sodass sie von Drittanbietern auf die Whitelist gesetzt werden können.

Die Beispielimplementierung für die Verwendung von Cloud NAT mit GKE finden Sie hier - https://cloud.google.com/nat/docs/gke-example

Parag
quelle
Muss der Cluster privat sein?
Gajus
3
Ja, der Cluster muss privat sein, aber der Master kann öffentlich sein. Wenn einer Ihrer Dienste auch öffentlich sein muss, kann er von einem Loadbalancer verfügbar gemacht werden.
Parag
@Parag Muss der Cluster privat sein? Gibt es eine Möglichkeit, die ich verwenden kann, wenn die Node-IPs öffentlich sind?
Suhas Chikkanna
1
@SuhasChikkanna Mit CloudNAT Nr. Wenn Sie möchten, dass die Knoten externe IP-Adressen haben, aber auch eine einzige ausgehende IP-Adresse, können Sie mit Squid eine eigene NAT-Gateway-Instanz erstellen und über ein bedingtes Routing verfügen, das Ihre internen Server direkt an die Instanzen weiterleitet, aber jeglicher Datenverkehr von außen kommt in durch die NAT. Dadurch erhalten Ihre Benutzer eine einzige ausgehende IP-Adresse, während Ihre Knoten für ausgewählte IP-Quellen zugänglich sind.
Parag
@Parag Hört sich gut an! Würde das auf jeden Fall versuchen. Vielen Dank :)
Suhas Chikkanna
1

Sie können diese Lösung ausprobieren:

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

Unter normalen Umständen leiten Google Kubernetes Engine-Knoten den gesamten ausgehenden Datenverkehr über das Internet-Gateway weiter, das ihrem Knotencluster zugeordnet ist. Die Internet-Gateway-Verbindung wird wiederum durch das dem Knotencluster zugeordnete Compute Engine-Netzwerk definiert. Jeder Knoten im Cluster verfügt über eine kurzlebige externe IP-Adresse. Wenn Knoten während der automatischen Skalierung erstellt und zerstört werden, werden automatisch neue Knoten-IP-Adressen zugewiesen.

Das Standard-Gateway-Verhalten funktioniert unter normalen Umständen gut. Möglicherweise möchten Sie jedoch ändern, wie kurzlebige externe IP-Adressen zugewiesen werden, um:

  • Stellen Sie einen Drittanbieter-Service mit einer konsistenten externen IP-Adresse bereit.
  • Überwachen und filtern Sie den Datenverkehr aus dem Google Kubernetes Engine-Cluster.
Alphayax
quelle