[How-To] vSphere Supervisor Services
In vSphere IaaS Control Plane (ehem. vSphere with Tanzu) gibt es Supervisor Services. Mithilfe von Supervisor Services lassen sich Kubernetes Deployments direkt auf dem vSphere Namespace ausführen, somit ist kein Kubernetes Guest Cluster mehr nötig und die Pods laufen mithilfe der vSphere CRX Runtime direkt auf dem ESXi Host.
Standardmässig aktiv ist der TKG Services, welcher verwendet wird, um Kubernetes Guest Cluster auf einem vSphere Namespace bereitzustellen.
Weitere Supervisor Services sind:
Installation eines Supervisor Service
Ein Supervisor Service besteht grundsätzlich aus zwei YAML Manifests:
- Ein Installation-Manifest zur Registrierung des Supervisor Service
- Ein Konfigurations-Manifest zur Installation der Services auf dem Supervisor (Values File)
In dieser Anleitung wird NSX und Antrea als CNI verwendet.
Einige Supervisor Services setzen NSX voraus (z.B Velero).
Contour Ingress Controller
- Download Contour Service: Contour v1.28.2
- Download Contour Values: values for all versions (bei Contour muss das Value File nicht angepasst werden)
Unter Workload Management wird der Service hinzugefügt:
Bei der Service Registrierung wird nun das YAML File von Contour angegeben (dieser wird nicht weiter angepasst)
Hier wird das Contour v1.28.2 File angegeben:
Der Service wird nun registriert:
Nach der Registrierung muss der Service noch auf dem Supervisor Installiert werden – das Contour noch auf keinem Supervisor Service installiert ist, sieht man anhand der “0” bei Supervisors:
Nun muss das contour-data-values.yml angegeben werden:
Sobald Contour eine externe IP erhält (auf dem envoy Service), ist der IngressController richtig installiert:
Harbor Container Registry als Supervisor Service
Als Voraussetzung für Harbor muss Contour bereits installiert sein.
- Download Harbor Service: Harbor v2.9.1
- Download Harbor Values File: v2.9.1.
Registrierung von Harbor als Supervisor Service:
Hier wird folgendes YAM eingegeben: Harbor v2.9.1
Installation auf dem Supervisor:
Bei Harbor muss das Value Yaml (v2.9.1) zwingend angepasst werden:
- Hostname
- StorageClass
- Passwörter und Secrets
Nach der Installation auf dem Supervisor wird ein eigener vSphere Namespace für Harbor erstellt:
Da Harbor Contour als IngressController benötigt, muss ein DNS Eintrag auf die IP (vom envoy Service) mit der im Harbor Values File definierten Hostnamen erstellt werden:
In unserem Fall: 10.177.4.12 -> registry.soultec.lab
Das Harbor UI ist nun erreichbar (Login mittels im harbor-values.yaml spezifizierten Passwort – in diesem File lässt sich auch das TLS Zertifikat ändern)
Installation ArgoCD Operator als Supervisor Service
Mittel dem ArgoCD Operator lassen sich ArgoCD Instanzen als vSphere Pods in einem vSphere Namespace installieren:
Zuerst muss der ArgoCD Operator als Supervisor Service installiert werden.
- Download Supervisor Service: ArgoCD Operator v0.12.0
- Download Values File: values.yaml (erfordert keine Anpassung, sofern quay.io vom vSphere Namespace erreicht werden kann)
Nach erfolgter Registrierung und Installation auf dem Supervisor, wird ein vSphere Namespace mit einem Pod erstellt – dies ist lediglich der ArgoCD Operator (noch keine ArgoCD Instanz):
Installation einer ArgoCD Instanz innerhalb eines vSphere Namespace
ArgoCD Deployment: argocd-instance.yaml
Die ArgoCD Instanz wird direkt in einem vSphere Namespace installiert. Dazu per kubectl auf den vSphere Namespace einloggen und der kubectl Kontext setzen:
kubectl vsphere login --server <Supervisor-VIP> -u user@vsphere.local kubectl config use-context <vSphere-Namespace>
Danach kann das Deployment (anhand argocd-instance.yaml) erstellt werden – das File muss nicht angepasst werden:
kubectl apply -f argocd-instance.yaml
Überprüfen der vSphere Pods:
kubectl get pods --watch
Sobald alle Pods laufen, sollte auch eine externe IP für den LoadBalancer zur Verfügung stehen:
kubectl get svc --watch
Nun sollte ein DNS Eintrag auf diese IP erstellen.
In unserem Fall: 10.177.4.18 -> argocd.soultec.lab
Initial ArgoCD Admin Login
Das initiale ArgoCD Passwort für den user “admin” befindet sich in eine Kubernetes Secret:
kubectl get secret stlab-argocd-cluster -o jsonpath='{.data.admin\.password}' | base64 -d
Nun kann ArgoCD via UI verwaltet werden.
Die ArgoCD Konfiguration (SSO, RBAC etc) erfolg über ConfigMaps. Diese ConfigMaps lassen sich auch via ArgoCD ausrollen, so verwaltet sich ArgoCD gleich selbst. Auch lassen sich Default Kubernetes Services (z.B. cert-manager, InGuestCluster IngressController) ausrollen. Hier ist der Ansatz “ArgoCD App of Apps” sehr interessant. Dazu in einem anderen Blog Post mehr.
Fazit
Supervisor Services sind intuitiv und einfach, um Kubernetes Deployment direkt auf einem vSphere Namespace zu installieren. Mit Harbor als Container Registry und ArgoCD sind die Grundsteine für Continuous Deployment gelegt.
Leave a Reply