[How-To] vSphere Supervisor Services

Back to Blog

[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

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:

Actions > Install on 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.

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.

 

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Blog