Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google Kubernetes Engine ohne NAT – mit kubeIP!

By Aviv LauferJun 21, 20182 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

1 owrbjei zwuebf8vv4ww9g

Viele Anwendungen müssen aus Sicherheitsgründen anhand der Quell-IP-Adresse freigeschaltet werden. Bislang lässt sich einem GKE-Cluster kein statischer Adresspool zuweisen – stattdessen ist eine komplexe NAT-basierte Lösung nötig: teuer, wartungsintensiv und mit aufwendigen Regeln für Load Balancing und Redundanz.

kubeIP setzt genau hier an: Das Tool weist GKE-Knoten statische externe IP-Adressen aus einem reservierten Pool zu, überwacht die Kubernetes-API laufend auf neue Knoten und passt die Zuordnungen automatisch an.

kubeIP ist in Go geschrieben und läuft als Pod direkt in Ihrem GKE-Cluster – ohne Eingriffe am Cluster selbst. Konfiguriert wird über Umgebungsvariablen, die in einer ConfigMap von kubeIP hinterlegt sind.

apiVersion:

v1

data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:

ConfigMap

metadata: labels: app:

kubeip

name:

kubeip-config

namespace:

default

kubeIP registriert sich als Listener für Events des Kubernetes-Clusters. Sobald ein neuer Knoten entsteht, sucht kubeIP im reservierten Pool nach einer freien statischen IP-Adresse (gekennzeichnet mit dem Namen Ihres GKE-Clusters) und weist sie dem neuen Knoten zu. Ist keine Adresse verfügbar, passiert nichts.

Damit das Deployment möglichst einfach bleibt, stellen wir ein Docker-Image von kubeIP auf Docker Hub bereit (docker pull doitintl/kubeip). Alternativ können Sie es selbst aus dem Quellcode bauen und dazu das kubeIP-Repository auf GitHub klonen.

Mehr davon gefällig? Schauen Sie in unseren Blog oder folgen Sie Aviv auf Twitter.