Wir ziehen eine kleine modern Private Cloud hoch.
CPU: 4CPU RAM: 8GB
Die installation der benötigten Tools ist abhängig des verwendeten Rechners. Im Allgemeinen wird jedoch make vorausgesetzt.
WSL2 Support ist hier experimental und darf gerne hinzugefügt werden!
Die nötigen Tools werden je nach Umgebung (Linux|Mac) entsprechend automatisiert installiert.
Für Mac nutzen wir den Installationsmanager brew für die Installation von allen benötigten Komponenten.
- MacOS: wir nutzen hier
brewfür die Installation aller Tools - Linux: in Anlehnung an alle verfügbaren Distros werden wir hier statische Binaries verwenden.
# Installation aller nötigen Tools
make install-toolsMacOS muss hier mit colima gestartet werden, da die Apple Container noch nicht so weit sind.
Diese muss einmal eingerichtet und gestartet werden. (Wir verwenden hier 8GB RAM und 4 CPUs)
# Starten der Colima instanz
make colima-startWir müssen einmal die SystemSettings patchen.
make patch-linuxDie verwendeten kubeconfigs werden hier immer im Repo (.kube) mit abgelegt werden. Die OrdnerStruktur wird definitiv mit angelegt, jedoch die kubeconfigs nie mit hochgeladen.
Das Management Cluster beinhaltet eine Rancher Installation zur Verwaltung der Cluster (Einfache Übersicht) und kamaji als Tenant ControlPlane hoster.
Das Starten des Management-Clusters ist hier sehr einfach gehalten:
make management-clusterUnter MacOS müssen wir einmal die Colima Engine Patchen, damit wir hier auch die richtigen Endpunkte bekommen.
make patch-colimaführt hier einmalig zum Ziel!
Danach werden noch die Tools des Management Clusters benötigt. Folgende Tools werden hier installiert:
- cert-manager
- metallb (LoadBalancing)
- rancher
- kamaji
- gateway-api (Abhänhigkeit zu Kamaji, werden wir aber nicht nutzen)
make bootstrap-management-clusterNachdem Bootstrapping kann die Rancher Oberfläche unter https://rancher.<ip>.sslip.io erreicht werden. Die echte IP wird in der Konsole mit ausgegeben.
Kamaji Console wird ebenfalls als Deployment mit ausgegeben und ist ebenfalls über eine IP erreichbar.
Die KubeConfig des Management Clusters ist hier zu finden `export KUBECONFIG=./.kube/management-cluster.yaml``
Das Tenant Cluster kubevirt wird hier ebenfalls mittels MakeFile in Betrieb genommen. Hierfür wird eigens ein kleines nacktes kind-Cluster hochgezogen und konfiguriert.
Hierfür wird auf dem Management Cluster eine Tenant Control Plane installiert und für diese Tenant-Control-Plane ein eigener Ingress durch metallb angelegt.
Nach Anlegen der Control Plane wird ein kind-Cluster ohne ControlPlane deployed und mittels einmaligem Bootstrap Script der Control Plane gejoined.
Damit haben wir ein vollständiges Cluster erhalten.
Initial beinhaltet das Cluster damit lediglich:
- coredns
- flannel (cni)
- kube-proxy
make bootstrap-tenant-clusterDamit wir das Cluster in Rancher verwalten können, müssen wir das Tenant Cluster in die Rancher Umgebung als Exisiting Cluster importieren.
Dazu muss in der UI unter Cluster-Management ein Cluster importiert werden und der Registration Befehel (insecure) einmalig auf dem Neuen Cluster ausgeführt werden
Die Installation direkt auf dem Node ist ohne umschweife möglich
# WICHTIG: HIER UNBEDINGT AUF DIE "" hinweisen...
docker exec -it tenant-node-1 sh -c "<hier der Befehl von Rancher insecure>"Hierfür müssen wir die Kubeconfigs entsprechend joinen, dann haben wir auch die nötigen Kontexte.
export KUBECONFIG=./.kube/config.yaml
# Setze richtigen Context
kubectl config set-context kubernetes-admin@kubevirt
# Ausführen des Rancher Import befehls
<Rancher import Befehl>export KUBECONFIG=$(KUBECONFIG_DIR)/tenant-cluster.yaml
kustomize build ./kubevirt/vm | kubectl apply -f -
```