IP pubblico stabile o intervallo IP per connessioni in uscita in GKE


20

Uso Google Kubernetes Engine per eseguire pod on demand. Ogni pod è esposto pubblicamente a Internet tramite un servizio di nodeport.

Sto cercando un modo in GKE per ottenere un singolo IP o un intervallo IP per le connessioni in uscita, per fornirle ad API di terze parti per inserirle nella whitelist.

Gli IP dei nodi GKE non sono gestibili quando i nodi scalano automaticamente o quando li aggiorno. Ho bisogno di un modo per mantenere un IP in uscita coerente.

Ho provato a utilizzare un semplice gateway NAT ai nodi Kubernetes (usando l'esempio da qui ) e mentre questo instrada le connessioni in uscita verso il gateway NAT, interrompe il traffico in entrata verso i pod (servizio Nodeport) poiché vengono rilasciati al Gateway NAT.

  • Esiste un intervallo IP predefinito per una regione cloud di Google che posso fornire a terze parti nella whitelist (o)

  • Se GKE fornisce un modo per selezionare gli IP esterni del nodo da un elenco riservato in precedenza di IP statici (o)

  • Esiste un altro modo per ottenere un singolo IP statico o un intervallo IP che rappresenta il traffico in uscita dai pod

Ho trovato domande simili come questo , ma non affrontano il problema in quanto i baccelli devono essere esternamente collegabile, che si rompe quando si utilizza un NAT.

Risposte:


6

Google Cloud ora fornisce un servizio NAT Gateway gestito - Cloud NAT .

Questo gateway può essere utilizzato con un cluster GKE, che fornisce un IP di uscita pubblico stabile a tutti i pod al suo interno, che consente loro di essere autorizzati da fornitori di servizi di terze parti.

L'implementazione di esempio per l'utilizzo di Cloud NAT con GKE è fornita qui - https://cloud.google.com/nat/docs/gke-example


Il cluster deve essere privato?
Gajus,

3
Sì, il cluster deve essere privato, ma il master può essere pubblico. Se anche uno dei tuoi servizi deve essere pubblico, può essere esposto da un bilanciamento del carico.
Parag,

@Parag È obbligatorio che il cluster sia privato? C'è un modo, posso usare se gli IP dei nodi sono pubblici.
Suhas Chikkanna,

1
@SuhasChikkanna With CloudNAT no. Se vuoi che i nodi abbiano IP esterni ma desideri anche un singolo IP in uscita, puoi creare la tua istanza gateway NAT usando Squid e avere un routing condizionale, che indirizzerà i tuoi server interni direttamente alle istanze, ma tutto il traffico dall'esterno arriva attraverso il NAT. Ciò fornirà ai tuoi utenti un singolo IP in uscita, rendendo i tuoi nodi accessibili a fonti IP selezionate.
Parag

@Parag Sembra buono! Ci proverei sicuramente. Grazie mille :)
Suhas Chikkanna,

1

Puoi provare questa soluzione:

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

In circostanze normali, i nodi di Google Kubernetes Engine instradano tutto il traffico in uscita attraverso il gateway Internet associato al loro cluster di nodi. La connessione gateway Internet, a sua volta, è definita dalla rete del motore di calcolo associata al cluster di nodi. Ogni nodo nel cluster ha un indirizzo IP esterno effimero. Quando i nodi vengono creati e distrutti durante il ridimensionamento automatico, i nuovi indirizzi IP del nodo vengono allocati automaticamente.

Il comportamento predefinito del gateway funziona bene in circostanze normali. Tuttavia, potresti voler modificare il modo in cui gli indirizzi IP esterni effimeri sono allocati al fine di:

  • Fornire un servizio di terze parti con un indirizzo IP esterno coerente.
  • Monitora e filtra il traffico in uscita dal cluster di Google Kubernetes Engine.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.