
Molte applicazioni devono essere autorizzate dai consumatori in base all'indirizzo IP di origine, in genere per motivi di sicurezza. Ad oggi, Google Kubernetes Engine non consente di assegnare un pool statico di indirizzi a un cluster GKE e impone di implementare una complessa soluzione basata su NAT: costosa, difficile da mantenere e con regole articolate per bilanciamento del carico e ridondanza.
kubeIP nasce per risolvere questo problema: assegna ai nodi GKE indirizzi IP esterni statici prelevati da un pool riservato e monitora costantemente l'API di Kubernetes per intercettare i nuovi nodi e applicare le modifiche di conseguenza.
kubeIP è scritto in Go e gira come pod all'interno del cluster GKE, senza richiedere alcuna modifica al cluster stesso. La configurazione avviene tramite variabili d'ambiente esposte in una ConfigMap di kubeIP.
apiVersion:
v1data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:
ConfigMapmetadata: labels: app:
kubeipname:
kubeip-confignamespace:
defaultkubeIP si registra come listener degli eventi del cluster Kubernetes. Alla creazione di un nuovo nodo, cerca nel pool riservato un indirizzo IP statico libero (etichettato con il nome del suo cluster GKE) e lo assegna al nodo appena creato. Se non vi sono indirizzi disponibili, non viene eseguita alcuna azione.
Per semplificare il deployment, mettiamo a disposizione un'immagine Docker di kubeIP su Docker Hub (docker pull doitintl/kubeip); in alternativa, può compilarla dal codice sorgente clonando il repository GitHub di kubeIP.
Vuole leggere altri articoli? Dia un'occhiata al nostro blog oppure segua Aviv su Twitter.