
De nombreuses applications doivent figurer sur une liste blanche basée sur l'adresse IP source, généralement pour des raisons de sécurité. À ce jour, Google Kubernetes Engine ne permet pas d'affecter un pool statique d'adresses à un cluster GKE et impose le déploiement d'une solution complexe reposant sur du NAT, coûteuse, difficile à maintenir et exigeant un ensemble de règles complexes pour la répartition de charge et la redondance.
kubeIP tente de résoudre ce problème en affectant aux nœuds GKE des adresses IP externes statiques issues d'un pool d'adresses réservé, tout en surveillant en continu l'API Kubernetes pour détecter les nouveaux nœuds et appliquer les changements en conséquence.
kubeIP est écrit en Go et s'exécute en tant que pod au sein de votre cluster GKE, sans la moindre modification du cluster. La configuration passe par des variables d'environnement exposées dans une ConfigMap kubeIP.
apiVersion:
v1data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:
ConfigMapmetadata: labels: app:
kubeipname:
kubeip-confignamespace:
defaultkubeIP s'enregistre comme listener des événements du cluster Kubernetes. Lorsqu'un événement signale la création d'un nouveau nœud, kubeIP cherche dans le pool réservé une adresse IP statique disponible (portant le label correspondant au nom de votre cluster GKE) et l'affecte à ce nouveau nœud. Si aucune adresse n'est disponible, aucune action n'est déclenchée.
Pour simplifier le déploiement, nous mettons à disposition une image Docker de kubeIP sur Docker Hub (docker pull doitintl/kubeip) ; vous pouvez aussi la compiler vous-même depuis le code source en clonant le dépôt GitHub kubeIP.
Envie d'autres articles ? Consultez notre blog ou suivez Aviv sur Twitter.