IP publique stable ou plage IP pour les connexions sortantes dans GKE

20

J'utilise Google Kubernetes Engine pour exécuter des modules à la demande. Chaque pod est publiquement exposé à Internet à l'aide d'un service nodeport.

Je cherche un moyen dans GKE pour obtenir une seule IP ou une plage IP pour les connexions sortantes, pour les donner à des API tierces pour les mettre sur liste blanche.

Les IP des nœuds GKE ne sont pas gérables lorsque les nœuds sont mis à l'échelle automatiquement ou lorsque je les mets à niveau. J'ai besoin d'un moyen de maintenir une adresse IP sortante cohérente.

J'ai essayé d'utiliser une simple passerelle NAT vers les nœuds Kubernetes (en utilisant l'exemple d' ici ), et bien que cela achemine les connexions sortantes vers la passerelle NAT, il rompt le trafic entrant vers les pods (service Nodeport) car ils sont déposés au Passerelle NAT.

  • Existe-t-il une plage d'adresses IP par défaut pour une région Google Cloud que je peux fournir au tiers pour la liste blanche (ou)

  • Si GKE fournit un moyen de sélectionner les IP externes des nœuds dans une liste pré-réservée d'IP statiques (ou)

  • Existe-t-il un autre moyen d'obtenir une seule adresse IP statique ou une plage IP qui représente le trafic sortant des pods

J'ai trouvé des questions similaires comme celle-ci , mais elles ne résolvent pas mon problème car les pods doivent être connectables en externe, ce qui casse lors de l'utilisation d'un NAT.

Parag
la source

Réponses:

6

Google Cloud propose désormais un service de passerelle NAT géré - Cloud NAT .

Cette passerelle peut être utilisée avec un cluster GKE, qui fournit une adresse IP de sortie publique stable à tous les pods à l'intérieur, ce qui leur permet d'être mis sur liste blanche par des fournisseurs de services tiers.

L'exemple d'implémentation de l'utilisation de Cloud NAT avec GKE est fourni ici - https://cloud.google.com/nat/docs/gke-example

Parag
la source
Le cluster doit-il être privé?
Gajus
3
Oui, le cluster doit être privé, mais le maître peut être public. Si l'un de vos services doit également être public, il peut être exposé par un équilibreur de charge.
Parag
@Parag Est-il obligatoire que le cluster soit privé? Existe-t-il un moyen que je peux utiliser si les adresses IP des nœuds sont publiques.
Suhas Chikkanna
1
@SuhasChikkanna Avec CloudNAT no. Si vous voulez que les nœuds aient des IP externes mais que vous vouliez également une seule IP sortante, vous pouvez créer votre propre instance de passerelle NAT à l'aide de Squid, et avoir un routage conditionnel, qui acheminera vos serveurs internes vers les instances directement, mais tout trafic provenant de l'extérieur vient à travers le NAT. Cela donnera à vos utilisateurs une seule adresse IP sortante, tout en rendant vos nœuds accessibles aux sources IP sélectionnées.
Parag
@Parag Sounds good! J'essaierais certainement cela. Merci beaucoup :)
Suhas Chikkanna
1

Vous pouvez essayer cette solution:

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

Dans des circonstances normales, les nœuds Google Kubernetes Engine acheminent tout le trafic de sortie via la passerelle Internet associée à leur cluster de nœuds. La connexion à la passerelle Internet, à son tour, est définie par le réseau Compute Engine associé au cluster de nœuds. Chaque nœud du cluster possède une adresse IP externe éphémère. Lorsque des nœuds sont créés et détruits lors de la mise à l'échelle automatique, de nouvelles adresses IP de nœuds sont allouées automatiquement.

Le comportement de la passerelle par défaut fonctionne bien dans des circonstances normales. Cependant, vous souhaiterez peut-être modifier la façon dont les adresses IP externes éphémères sont allouées afin de:

  • Fournissez un service tiers avec une adresse IP externe cohérente.
  • Surveillez et filtrez le trafic sortant du cluster Google Kubernetes Engine.
alphayax
la source