Tanzu Community Edition auf einer Linux VM installieren – Durchmarsch für Einsteiger

Um einen Einblick in VMware Tanzu und Kunernetes zu erhalten benötigt man keinen Enterprise-Cluster. Dank der Tanzu Community Edition (TCE) kann das jetzt jeder selbst ausprobieren – kostenlos. Der Funktionsumpfang ist nicht beschränkt im Vergleich zu kommerziellen Tanzu Versionen. Lediglich auf professionellen Support durch VMware muss man bei der TCE verzichten. Dieser wird über Foren, Slack-Gruppen oder Github durch die Community geleistet. Für einen PoC Cluster oder zum Training auf die CKA Prüfung reicht das vollkommen aus.

Die Bereitstellung geht recht schnell und man hat nach einigen Minuten einen funktionsfähigen Tanzu-Cluster.

TCE Architektur-Varianten

Die TCE kann in zwei Varianten entweder als Standalone-Cluster oder als Managed-Cluster bereitgestellt werden.

Standalone Cluster

Eine schnelle und Ressourcen schonende Art der Bereitstellung ohne Management-Cluster. Ideal für kleine Tests und Demos. Der Standalone-Cluster bietet kein Lifecycle Management. Dafür hat er einen kleinen Fussabdruck und kann auch in kleinen Umgebungen genutzt werden.

Quelle: VMware

Managed Cluster

Wie bei kommerziellen Tanzu-Versionen gibt es einen Management-Cluster und 1 bis n Workload-Cluster. Er verfügt über Lifecycle Management und Cluster-API. Somit kann über deklarative Konfigurationsdateien der Kubernetes Cluster definiert werden. Beispielsweise die Anzahl der Knoten im Management Cluster, die Anzahl der Worker-Nodes, die Version des Ubuntu-Images oder der Kubernetes Version. Cluster-API stellt die Einhaltung der Deklaration sicher. Fällt beispielsweise ein Worker Node aus, so wir dieser automatisch ersetzt.

Durch die Verwendung mehrerer Knoten benötigt der Managed-Cluster natürlich auch deutlich mehr Ressorcen.

Quelle: VMware

Ziele für die Bereitstellung

TCE kann entweder lokal auf der Workstation mit Docker, im eigenen Lab/Datacenter auf vSphere, oder in der Cloud auf Azure oder aws bereitgestellt werden.

Ich habe im Lab ein lizensiertes Tanzu mit vSAN und NSX-T integration eingerichtet. Daher würde TCE auf vSphere hier keinen tieferen Sinn ergeben. Cloud Ressourcen auf aws oder Azure kosten Geld. Daher möchte ich die kleinstmögliche und sparsamste Bereitstellung eines Standalone-Clusters mit Docker beschreiben. Dazu verwende ich eine VM auf VMware-Workstation. Alternativ kann auch ein VMware-Player oder eine andere Art Hypervisor genutzt werden.

Der Schnelldurchlauf für Einsteiger

Spezifikation der VM

Wir benötigen als Gastsystem entweder Windows, Mac oder Linux. Ich verwende in der Beschreibung ein Ubuntu 20.04 LTS.

  • Ubuntu 20.04 LTS oder neuer
  • 4 CPU
  • 6 GB RAM
  • 40 GB Disk (Minimum sind 15 GB, aber durch Thin Privisioning wird ohnehin nur genutzer Datenspeicher belegt)
  • Internet Uplink
  • alle Ubuntu Pakete auf aktuellem Stand

Basisinstallation und Voraussetzungen

Zunächst prüfen wir, ob in unserer Linux Installation die Pakete Docker und curl vorhanden sind.

dpkg -l | grep docker
dpkg -l | grep curl

Meine Installation brachte kein curl mit, was mich überraschte. Docker installieren wir danach. Je nach Distribution gibt es eine ausführliche Docker Installationsanleitung. Dies ist der schnelle Durchlauf für TCE mit Docker Ubuntu.

Curl installieren

sudo apt install curl

Docker installation

Zuerst installieren wir den Docker Public Key.

curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg

Wir stellen die Auswahl des Docker Repositorys auf stable.

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Jetzt aktualisieren wir zunächst die Quellen und installieren Docker.

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Hello-World

Zum Test, ob Docker richtig funktioniert starten wir einen Hello-World Container.

sudo docker run hello-world
Erster Test mit docker run erfolgreich

Docker als nicht-root User ausführen

Aktuell müssen wir docker Kommandos noch mit sudo ausführen. Das ändern wir jetzt.

sudo groupadd docker

Neuerdings wird die Gruppe docker automatisch angelegt. Wenn das so ist erscheint eine Fehlermeldung, aber das ist in Ordnung.

Im nächsten Schritt fügen wir den aktuellen User der Gruppe docker hinzu.

sudo usermod -aG docker $USER

Damit die Einstellungen wirksam werden, müssen wir uns einmal aus Linux abmelden und wieder anmelden.

Wir starten jetzt den gleichen hello-world Container nochmals ohne sudo.

docker run hello-world
Docker run ohne sudo erfolgreich.

Docker Dienst beim Systemboot ausführen

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Kubectl installieren

Damit wir später kubectl Kommandos verwenden können, müssen wir den neuesten Client herunterladen und installieren.

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Wir testen die Funktion mit einem einfachen kubectl Kommando.

kubectl version --client

cgroup Version prüfen

Wir müssen sicher stellen dass die verwendete Linux Distribution mit cgroups V1 arbeitet.

docker info | grep -i cgroup

Alles in Ordnung. Falls hier V2 erscheint muss der Kernelparameter systemd.unified_cgroup_hierarchy=0 angepasst werden. Details hierzu finden sich in der CLI-Dokumentation (Schritt 2).

Homebrew

Zur vereinfachten Installation der Tanzu Communty Edition eignet sich der Homebrew Paketmanager.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Erfolgreiche Installation von Homebrew.

Nach der Installation fügen wir Homebrew dem PATH hinzu und installieren die GNU Compiler Collection (gcc).

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/tanzu/.profile

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 

Homebrew Abhängigkeiten installieren.

sudo apt-get install build-essential

Installation der GNU Compiler Collection über Homebrew.

brew install gcc

Damit sind wir bereit für die Installation der Tanzu Communty Edition.

Installation der TCE

brew install vmware-tanzu/tanzu/tanzu-community-edition

Abschließend wird noch ein Post-Installation Skript benötigt. Der Pfad ist abhängig von der jeweiligen Installation und kann direkt der Terminalausgabe entnommen werden (vgl. oben).

/home/linuxbrew/.linuxbrew/Cellar/tanzu-community-edition/v0.9.1/libexec/configure-tce.sh

Standalone Cluster Setup

Wir haben unsere VM vorbereitet und die Tanzu Community Edition installiert. Jetzt ist es an der Zeit den Cluster zu installieren. Zuvor sollte man aber alle Docker Prozesse beenden und die Docker Umgebung aufräumen.

docker kill $(docker ps -q)

Falls kein Docker Prozess existierte, wird eine Fehlermeldung ausgeworfen. Das ist in Ordnung.

docker system prune -a --volumes

Jetzt erzeugen wir den Standalone Cluster. Der Clustername darf nicht mit einer Ziffer enden und muss auch sonst den Regeln eines DNS Hostnamens entsprechen (RFC 952 und RFC 1123).

Meinen Cluster nenne ich mlx-tce-cluster. Damit lautet der Befehl zur Erstellung:

tanzu standalone-cluster create -i docker mlx-tce-cluster

Damit wir mit dem Cluster kommunizieren können, müssen wir den kubectl Kontext wechseln. Zwischen dem Clusternamen und dem User admin ist nur ein Bindestrich ohne Leerzeichen.

kubectl config use-context CLUSTERNAME-admin@CLUSTERNAME

kubectl config use-context mlx-tce-cluster-admin@mlx-tce-cluster

Wir werfen jetzt ein Blick unter die Haube und schauen, was da erzeugt wurde.

kubectl get pods -A

Hier sind einige Pods neu ausgerollt worden. Alles ist nun bereit zur Verwendung.

Wichtig! Der Cluster überlebt keinen Reboot des Hostsystems. Sollte der Host neu gestartet werden, so muss auch der Cluster wieder neu erzeugt werden. In einer zukünftigen Version könnte sich das ändern.

Package Repository einrichten

Tanzu Packages bereichern die Funktionalität des Clusters und sind einfach zu installieren.

Wir erzeugen das Package Repository im Standard Namespace tanzu-package-repo-global.

tanzu package repository add tce-repo --url projects.registry.vmware.com/tce/main:0.9.1 --namespace tanzu-package-repo-global

Nach der Installation des Package Repositorys können wir dieses anzeigen lassen.

tanzu package repository list --namespace tanzu-package-repo-global

Das sieht gut aus. Schauen wir uns jetzt an, welche Packages verfügbar sind.

tanzu package available list
Tanzu Packages (Liste gekürzt)

Package installieren

Wir installieren hier das Paket cert-manager. Zunächst sehen wir uns die verfügbaren Versionen des Pakets an.

tanzu package available list cert-manager.community.tanzu.vmware.com

Wir werden die Version 1.5.3 installieren.

tanzu package install cert-manager --package-name cert-manager.community.tanzu.vmware.com --version 1.5.3

Nach der Installation können wir die Anweseheit des Pakets kontrollieren.

tanzu package installed list

Octant Dasboard installieren

Damit wir auch etwas fürs Auge haben, installieren wir das Octant Dasboard. Auch hier hilft uns der Homebrew Paketmanager.

brew install octant

Octant starten wir durch eingabe des Kommandos octant auf der CLI. Daraufhin wird sich ein Browserfenster öffnen, welches auf localhost Port 7777 zeigt.

Octant Dashboard

Das Octant Dasboard stellt viele Clusterparameter graphisch dar, die ansonsten mit kubectl abgefragt werden müssten.

Diese Demonstration kann nun als Ausgangspunkt für eigene Erkundungen genutzt werden.

Zusammenfassung

Dieser Artikel zeigt, wie man mit wenigen Ressourcen durchaus einen funktionalen Tanzu Community Edition Cluster erzeugen kann. Nach diesem Schnelldurchlauf solltet Ihr ein lauffähiges Tanzu System in den Händen halten, das es Euch ermöglicht mit Tanzu und Kubernetes zu experimentieren, Pods zu starten oder Deployments zu konfigurieren. Alles weitere würde den Rahmen dieses Blogartikels sprengen. Die TCE Dokumentation ist sehr ausführlich und unterscheidet die verschiedenen Deployment Varianten und Plattformen.

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.