In den ersten beiden Beiträgen der Blogreihe über Kubernetes ging es um die Einführung in Container, Docker und Kubernetes. In diesem Blogbeitrag geht es nun etwas weniger theoretisch und mehr praktisch zu. Es wird schrittweise ein lokales Kubernetes Cluster mit drei Knoten aufgesetzt. Exemplarisch wird hier nur die Installation unter Windows aufgezeigt. Eine Anleitung für Linux ist in diesem Github-Repository zu finden.

Systemvoraussetzungen

Unter Windows muss Hyper-V aktiviert und Docker Desktop for Windows installiert sein. Bei der Installation von Docker muss darauf geachtet werden, dass Linux containers ausgewählt sind. Docker muss nach der Installation gestartet werden.

Minikube vs kind

Das Tool Minikube bietet die Möglichkeit lokal eine Kubernetes Umgebung auszuführen. Eine Beschränkung hierbei ist, dass nur ein Knoten ausgeführt werden kann. Mithilfe der Open Source Software kind wird diese Beschränkung aufgehoben. Die Knoten werden basierend auf kubeadm erstellt. In einer Konfigurationsdatei, die beim Erstellen eines Clusters übergeben wird, kann die Anzahl an Master- und Arbeitsknoten angegeben werden. Die Einstellungen für Docker Desktop können in der Anleitung von kind unter Settings for Docker Desktop entnommen werden.

kind installieren und einrichten

Unter Windows kann kind entweder mit choco oder curl installiert werden. Zu Beginn muss ein Verzeichnis erstellt werden, in der die kind.exe abgelegt wird (bei der Installation mit curl). In diesem Beispiel erstellen wir ein Verzeichnis mit dem Namen kind unter:

Copy to Clipboard

Bei der Installation mit curl muss dieser Pfad angegeben werden, um die kind.exe dort abzulegen.

Copy to Clipboard

Befindet man sich nun im Verzeichnis, in das die kind.exe gespeichert wurde, kann mit dem Befehl (Kommandozeile als Administrator starten)

Copy to Clipboard

die Umgebungsvariable angelegt werden, um das Kommandozeilen-Tool von kind global verwenden zu können. Testweise kann nun kind in der Powershell (oder Kommandozeile) eingegeben werden, um die Funktionalität des Kommandozeilen-Tools zu testen. Die Ausgabe in der Konsole sollte der unten stehenden stark ähneln.

Copy to Clipboard
Copy to Clipboard
Copy to Clipboard
Copy to Clipboard

Multi-Node Cluster erstellen

Möchte man nun ein Multi-node Cluster erstellen, benötigt man eine Konfigurationsdatei, in der die gewünschte Anzahl an Master- und Arbeitsknoten deklariert ist. Exemplarisch erstellen wir eine mit dem Namen kind-example-config.yaml und legen diese auch im Verzeichnis mit der kind.exe ab. Generell kann die Datei in jedem beliebigen Verzeichnis abgelegt werden.

Copy to Clipboard
Copy to Clipboard

In dieser Konfigurationsdatei sind ein Master- und zwei Arbeitsknoten deklariert. In der Dokumentation von kind sind weitere Beispiele für Konfigurationsdateien. Mit dem Befehl

Copy to Clipboard

wird auf Basis der übergeben Konfigurationsdatei das entsprechende Kubernetes Cluster erstellt.

Kubernetes Dashboard

Mit Kubernetes Dashboard besteht die Möglichkeit sein Kubernetes Cluster über eine Weboberfläche zu verwalten (Erstellen, Löschen, Bearbeiten und Überwachen von Kubernetes Ressourcen und Objekten). Mit dem Befehl

Copy to Clipboard

werden die dafür benötigten Ressourcen und Objekte erstellt. Für den Zugriff im Browser muss noch der entsprechende Proxy Service gestartet werden.

Copy to Clipboard

Das Kubernetes Dashboard kann über folgende URL aufgerufen werden:

Copy to Clipboard

Für den Zugriff wird nun ein Access-Token benötigt, der über folgenden Befehl extrahiert werden kann:

Copy to Clipboard

Die Ausgabe mit dem Access-Token (den letzten der Ausgabe verwenden) ähnelt stark der Folgenden:

Copy to Clipboard
Copy to Clipboard
Copy to Clipboard

Sobald man die Checkbox mit dem Namen Token ausgewählt und den token: eingefügt hat, kann man auf das Kubernetes Dashboard zugreifen.

Fallstrick Berechtigungen

Auf den ersten Blick wird aber direkt ein Problem ersichtlich. Man hat keinen Zugriff auf Ressourcen des Kubernetes Clusters. In diesem Cluster wird die Sicherheit mit RBAC – Rollenbasierter Zugriffssteuerung realisiert. Es gibt Rollen, die bestimmte Berechtigungen auf Ressourcen haben und Dienstkonten (jeder Pod hat ein Dienstkonto), denen eine oder mehrere Rollen zugewiesen sind. In diesem Blogbeitrag liegt der Fokus aber nicht auf RBAC und die Sicherheitsaspekte von Kubernetes.

Dashboard Benutzer Berechtigungen erteilen

Die Rolle, mit der Zugriff auf das Kubernetes Dashboard möglich ist, trägt den Namen kubernetes-dashboard. In diesem Beispiel weisen wir dieser Rolle alle Berechtigungen (lesen, schreiben, löschen und bearbeiten) für alle Ressourcen und Objekte des Kubernetes Clusters zu (Achtung: dies sollte in Produktivumgebungen natürlich in jedem Fall vermieden werden!). Mit dem Befehl

Copy to Clipboard

kann die Konfigurationsdatei für diese Rolle bearbeitet werden. Es muss der folgende Teil der Konfigurationsdatei mit dem hier angegebenen ersetzt werden.

Copy to Clipboard

Wenn die Datei gespeichert und geschlossen ist, sollten alle Ressourcen und Objekte im Browser sichtbar und zu bearbeiten sein.