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.
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.
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
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 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)"
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
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.
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
- Tanzu Community Edition Dokumentation
- TCE Download
- Ubuntu Download
- Docker Engine Dokumentation
- Homebrew
- Kubernetes Dokumentation
- Octant Documentation
Update Dezember 2022:
VMware hat das Projekt leider beerdigt. 🙁
Auf der Offiziellen Homepage findet sich in der FAQ folgender Eintrag:
Acting on insights gained through community engagement over the past year, VMware has decided to offer a free download of VMware Tanzu Kubernetes Grid in place of VMware Tanzu Community Edition software and to retire the Tanzu Community Edition open source project. Users can download Tanzu Kubernetes Grid here.