Lokaler Kubernetes Cluster mit TLS Zertifikat von traefik.me
Gerade für Experimente und zur Entwicklung bietet sich ein lokaler Kubernetes Cluster an. Zur einfachen Umsetzung gibt es diverse Optionen wie Minikube, KinD oder auch k3s. Auch wir setzen in unseren Kubernetes Schulungen gerne auf ein Cluster Setup, dass durch die Teilnehmer mit geringem Aufwand auf dem eigenen System verwendet werden kann, um auch nach der Schulung eigenständig weiter zu lernen und Übungen nachzuvollziehen.
Wie geht man jedoch bei so einem Setup mit dem Thema TLS Zertifikaten um?
Umgehen ist nicht immer ein praktikabler Weg:
Manche Browser APIs, wie zum Beispiel der Zugriff auf die Webcam erfordern schlicht den Einsatz von TLS.
Speziell für diesen Anwendungsfall bietet traefik.me eine Domain, Wildcard-DNS Service und ein durch Let’s Encrypt validiertes Zertifikat an. Dieser Beitrag zeigt die Verwendung von traefik.me in Kombination mit Kubernetes.
Ein lokales Kubernetes sollte von allen Geräten, die bei der Entwicklung bzw. Test verwendet werden, erreichbar sein. Dabei geht es nicht darum, einen Kubernetes Cluster auch im Internet verfügbar zu machen, dafür sollten andere TLS Zertifikate, als die von traefik.me verwendet werden.
Im einfachsten Fall geht es lediglich um den lokalen Einsatz von einem Arbeitsplatz heraus, ohne Zugriff durch andere Geräte wie z.B. Mobiltelefone oder via Wifi.
Ist der Kubernetes Cluster über die localhost IP Adresse 127.0.0.1 erreichbar, so kann ein beliebiger Hostname als Präfix von traefik.me genutzt werden.
Zum Beispiel demo.traefik.me
, demo.php.traefik.me
oder demo-php.traefik.me
- all diese Hostnamen werden zu 127.0.0.1 aufgelöst.
Bei minikube funktioniert dies über ein Portmapping mit dem Docker-Driver unter Linux sehr gut, bei KinD muss ebenfalls ein HostPort-Mapping angelegt werden, k3s läuft typischerweise direkt auf dem Host.
Bei anderen Lösungen wie einer virtuellen Maschine, oder wenn k3s auf einem anderen Server betrieben wird, kann die IP Addresse der Antwort mit in der Anfrage übergeben werden.
Ist zum Beispiel der Kubernetes Cluster unter 192.168.40.1 erreichbar, kann man mit dem Hostnamen php.192.168.40.1.traefik.me
oder auch in der Schreibweise php-192-168-40-1.traefik.me
einen DNS Eintrag erhalten, der zu 192.168.40.1 auflöst.
Von traefik.me gibt es auch passendes Zertifikatmaterial, dass direkt heruntergeladen un in Kubernetes bereitgestellt werden kann.
Dazu lädt man die Dateien https://traefik.me/fullchain.pem und privkey.pem von der traefik.me Domain herunter:
In der fullchain.pem befindet sich die Zertfikatkette als Wildcard Zertifikat für die traefik.me Domain, im privkey.pem befindet sich der zugehörige private Schlüssel.
Fazit
Dies Setup ermöglicht es, sehr schnell und kostenlos eine mit vertrauenswürdigen TLS Zertifikaten ausgestattete Umgebung aufzubauen.
Damit lässt sich Kubernetes Ingress und GatewayAPI Wissen sehr praxisnah aufbauen und verschiedene Setups ausprobieren, ohne, dass man einen Cluster im Internet verfügbar machen muss.
Es wird nicht einmal eine eigene Domain benötigt.
Das macht es gerade für Einsteiger sehr angenehm und erlaubt auch außerhalb einer Schulung niedrigschwellig eigene Experimente durchzuführen.
Viel Spass mit traefik.me und Kubernetes!
Zu den Themen Kubernetes, Docker und Cloudarchitektur bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:
Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.