Tech4Hosting Kubernetes Cluster in 5 Minuten einrichten


Du möchtest deine Applikation auf Kubernetes betreiben? Dir und deinen Teammitgliedern fehlt allerdings die Erfahrung damit? Kein Problem, Kubernetes ist relativ neu auf dem Markt und zudem noch sehr komplex. Hinzu kommt, dass das Betreiben eines Kubernetes Clusters eine andere Herausforderung ist, als Kubernetes als Plattform zu nutzen.

Mit Tech4Hosting Kubernetes (GSK) bieten wir dir einen Managed Kubernetes Service an, sodass du dich um den Betrieb deiner Applikation kümmern kannst und nicht um das Cluster selbst.

In diesem Tutorial erstellen wir einen GSK Cluster, konfigurieren die Kommandozeilen-Tools und installieren ein WordPress auf dem GSK. Viel Spaß!

Einen GSK Cluster erstellen

Wie immer legen wir viel Wert auf eine möglichst einfache und effiziente Bedienbarkeit, daher ist auch das Erstellen eines GSK gewohnt einfach. Als erstes musst du dich natürlich in unser Tech4Hosting Panel einloggen. In der linken Navigationsleiste wählst du dann das schon bekannte Kubernetes-Icon aus.

Jetzt erstellst du den Service und bekommst ein Dialogfenster angezeigt, in dem du ein paar einfache Konfigurationen vornehmen kannst.

Gib deinem Cluster einen Namen und passe die Konfiguration an. Für das Beispiel reichen die oben abgebildeten Einstellungen völlig aus. Diese kannst du auch nachher anpassen.

Nun erstelle das GSK Cluster. Das dauert ungefähr 5-7 Minuten. Die Zeit nutzen wir und richten derweil die Kommandozeilen-Tools ein.

Zugriff aufs GSK Cluster einrichten

Um mit dem GSK Cluster bequem und einfach interagieren zu können installieren wir jetzt kubectl, helm und gscloud.

kubectl – Kubernetes CLI

Da ich auf einem Linux System unterwegs bin, sind folgende Schritte darauf ausgelegt.

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

Für andere Systeme verweise ich auf die offizielle Dokumentation von Kubernetes selbst:

Helm – der Kubernetes Packet Manager

Da wir wahrscheinlich noch auf das Cluster warten, installieren wir schnell noch Helm. Helm ist eine Art Paketmanager, mit dem wir nachher WordPress installieren werden. Wenn man gerade mit Helm startet, sollte man auf jeden Fall Helm 3 benutzen.

Hier wieder mein Installationsverlauf mit Verweis auf die offizielle Dokumentation:

Geh auf GitHub Releases für die letzte stable Helm 3 Version. Download Helm 3 für die jeweilige Architektur, entpacken und dann noch in meinen Pfad verschieben:

wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
tar -xzf helm-v3.2.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

gscloud – Tech4Hosting CLI

Wir von Tech4Hosting entwickeln mit gscloud ein Kommandozeilen-Tool, mit dem du mit Tech4Hosting interagieren kann. Warum brauchen wir jetzt ein weiteres Tool, um mit Kubernetes zu agieren? Würde nicht die kubeconfig ausreichen? Ja, du kannst jetzt ins Panel gehen und dir die kubeconfig für deinen GSK Cluster herunterladen und schon loslegen.

Allerdings ist das Clientzertifikat in der kubeconfig nur 3 Tage gültig, da dies nicht widerrufen werden kann. Damit wir nicht alle 3 Tage ins Panel müssen und eine neue kubeconfig herunterladen müssen, können wir gscloud so einrichten, dass es beim Ablauf automatisch das Zertifikat erneuert, wenn wir kubectl nutzen.

Holt euch dafür den Downloadlink für eure Architektur hier.

gscloud installieren

wget https://github.com/Tech4Hosting/gscloud/releases/download/v0.3.0-beta/gscloud_0.3.0-beta_linux_amd64.zip
unzip gscloud_0.3.0-beta_linux_amd64.zip
sudo mv gscloud_0.3.0-beta_linux_amd64 /usr/local/bin/gscloud

gscloud konfigurieren

Wir richten gscloud nun ein, da wir damit die kubeconfig sehr einfach generieren können.

Hiermit erstellen wir eine config für gscloud:
gscloud make-config

Das sieht dann so aus:

cat /home/${USER}/.config/gscloud/config.yaml

Im Panel unter API-Keys kannst du dir die User-UUID kopieren und einen API-Token erstellen. Diese beiden kopierst du in die gscloud config. Die kubeconfig kannst du dir nun mit folgendem Befehl generieren:

gscloud kubernetes cluster save-kubeconfig --credential-plugin --cluster CLUSTER-UUID

Die Cluster-UUID bekommst du im Panel angezeigt, wenn du auf dein GSK Cluster auswählst.

Mit dem GSK Cluster arbeiten

Das GSK Cluster ist provisioniert, alle Kommandozeilen-Tools sind eingerichtet. Jetzt kannst du anfangen mit dem Cluster zu interagieren. Zuerst schauen wir uns alle Nodes an:

kubectl get nodes

Dann schauen wir, welche Pods auf dem GSK Cluster laufen:

kubectl get pods --all-namespaces

WordPress mit Helm installieren

Helm ist der Paketmanager für Kubernetes. Viele bekannte Anbieter bieten ihre Kubernetes YAML Dateien als Helm Chart an. Es gibt momentan 2 Hubs auf denen man Helm Charts finden kann.

Jetzt suchst du nach “Wordpress” und siehst mehrere Anbieter.

Wir nehmen das Helm Chart “bitnami/wordpress”.

Mit “helm repo list” kann man prüfen, ob man das Repository schon konfiguriert hat. Bei einer frischen Installation von Helm 3 sollte kein Repository vorhanden sein. Mit folgendem Befehl fügen wir das Repository von bitnami hinzu:

helm repo add bitnami https://charts.bitnami.com/bitnami

Kurze Kontrolle mit helm repo list

Nun ist das Repository für Helm verfügbar. Als nächstes wird ein namespace erstellt in dem wir unsere WordPress Ressourcen deployen wollen.

kubectl create namespace wordpress

Im letzten Schritt deployen wir mit Helm das WordPress Chart. Hierfür belassen wir es bei den Standardwerten, da diese für unser Beispiel ausreichen.

helm install test-wordpress bitnami/wordpress --version 9.4.2 --namespace wordpress

Die Standardwerte eines Helm Charts werden für gewöhnlich im README.md gepflegt und sind auch im Hub einsehbar: https://hub.kubeapps.com/charts/bitnami/wordpress

Im Code des Helm Charts selbst sind die Standardwerte in der values.yaml des Helm Charts zu finden: https://github.com/bitnami/charts/blob/master/bitnami/wordpress/values.yaml

Für uns sind folgende Parameter wichtig:

service.type Kubernetes Service type LoadBalancer

Damit wird in dem GSK Cluster ein LoadBalancer erstellt, der die WordPress Installation direkt von außen erreichbar macht.

kubectl get svc --namespace wordpress
original


Wir sehen in unserem Beispiel, dass der WordPress Service mit der externen IP http://45.12.48.144/ erreichbar ist.

Im WordPress Helm Chart sind folgende Werte für persistente Datenhaltung wichtig:
mariadb.master.persistence.enabled true
mariadb.master.persistence.size 8Gi

persistence.enabled true
persistence.size 10Gi

In dem GSK Cluster werden dadurch automatisch Persistent Volumes und Persistent Volume Claims angelegt:

kubectl get pvc -n wordpress

kubectl get pv

Mit GSK einen Kubernetes Cluster erstellen

Mit einem Tech4Hosting Kubernetes Cluster haben wir in Windeseile ein gemanagtes Kubernetes Cluster erstellt. Funktionen wie ein LoadBalancer und Storage Volumes sind direkt integriert und machen den Einstieg in die komplexe Kubernetes Welt sehr einfach.

Zurück zur Tutorial Übersicht Back to Tutorial Overview

© 2002-2023 Phox inc. all rights reserved.

© 2002-2023 Phox inc. all rights reserved.