Virtual Clusters
Teil von Runtimes
Dies ist eine detaillierte Anleitung für Virtual Clusters (Cloud Native Deployments). Für einen Überblick über alle Runtime-Typen und wie man zwischen ihnen wählt, siehe Runtimes-Übersicht.
Mit Virtual Clusters lassen sich Kubernetes-Workloads innerhalb der Codesphere-Infrastruktur ausführen. Jeder Virtual Cluster stellt eine dedizierte Kubernetes-Umgebung für die Resource Group bereit und unterstützt standardmäßige Kubernetes-Workloads und -Tools.
Jeder Virtual Cluster ist isoliert und verfügt über eine eigene Control Plane sowie eigene Ressourcenlimits. Workloads können unabhängig von und sicher gegenüber anderen Resource Groups bereitgestellt, aktualisiert und entfernt werden.
Virtual Clusters sind als Managed Services innerhalb von Codesphere implementiert. Jeder Virtual Cluster läuft als verwaltete Kubernetes-Umgebung. Codesphere verwaltet die zugrunde liegende Infrastruktur, während Virtual Clusters die Vorteile der Kubernetes-APIs bieten und native Workloads sowie Abhängigkeiten unterstützen.
hinweis
Diese Funktion richtet sich an fortgeschrittene Nutzer mit Kubernetes-Erfahrung. Wer keinen direkten Zugriff auf Kubernetes-Primitive benötigt, sollte für einfachere Workflows einen anderen Typ der Codesphere Runtimes in Betracht ziehen.
Kompatibilität
Virtual Clusters sind auf maximale Flexibilität bei der Bereitstellung eigener Workloads ausgelegt. Eigene Kubernetes-Abhängigkeiten können mitgebracht und vertraute Tools wie Helm Charts genutzt werden, um Anwendungen und Services mit minimalem Aufwand direkt in das Codesphere-Ökosystem zu deployen.
tipp
Zum Beispiel lässt sich Apache Superset in nur wenigen Schritten aus der Codesphere-IDE oder der Landscape heraus direkt in den Virtual Cluster deployen:
helm repo add superset https://apache.github.io/superset
helm repo update
kubectl create namespace superset
helm install superset superset/superset --namespace superset
Konnektivität
Virtual Clusters sind eng mit der Codesphere-Plattform integriert, wodurch sich Kubernetes-Workloads leicht mit anderen Codesphere-Ressourcen verbinden lassen. Als Teil des Codesphere Host-Clusters können Virtual Clusters nahtlos mit Landscapes, Managed Services und anderen Ressourcen innerhalb desselben Teams kommunizieren. Diese Integration vereinfacht komplexe Architekturen und ermöglicht leistungsstarke Workflows über die gesamte Cloud-Infrastruktur hinweg.

Zugehörige barrierefreie Textbeschreibung
Zugriff auf Cluster-Ressourcen
Kubernetes Pods und Services, die innerhalb des Virtual Clusters laufen, sind von jedem Workspace innerhalb derselben Resource Group aus erreichbar. Das bedeutet, dass direkt aus den Codesphere-Workspaces mit den Anwendungen und Services interagiert werden kann, was die Entwicklung und Fehlerbehebung effizienter macht.
info
Um auf einen im Virtual Cluster laufenden Service zuzugreifen, benötigt man folgende Informationen:
- Den Ressourcennamen (z. B. superset)
- Den Namespace-Namen (z. B. default)
- Die Codesphere Resource-Group-ID (z. B. 180312) Mit diesen Informationen lässt sich der Service über eine URL im folgenden Format erreichen:
http://[RESOURCE_NAME]-x-[VIRTUAL_NAMESPACE]-x-k8s.rg-[RESOURCE_GROUP_NAME]
Zugriff vom Virtual Cluster aus
Der Virtual Cluster kann auch auf andere Codesphere-Ressourcen zugreifen, wie Landscapes und Managed Services (zum Beispiel Managed Postgres) innerhalb derselben Resource Group. Dies erleichtert den Aufbau komplexer Multi-Service-Anwendungen, die sowohl Kubernetes als auch Codesphere-Lösungen umfassen.
info
Um von einem Virtual Cluster aus auf ein Workspace-Reactive zuzugreifen, wird Folgendes benötigt:
- Der Name des Landscape-Reactive-Service
- Die ID des Workspace, in dem das Reactive bereitgestellt ist Anschließend kann folgendes URL-Format verwendet werden:
http://ws-server-[WORKSPACE_ID]-[REACTIVE_NAME].workspaces
Mögliche Anwendungsfälle
- Superset als Helm Chart deployen
- Grafana deployen und mit einem Managed-Postgres-Service verbinden, der in Codesphere läuft
- Prometheus deployen und mit den in Codesphere laufenden Anwendungen verbinden, um benutzerdefinierte Metriken zu überwachen
- Eine Custom Resource Definition und Controller hinzufügen (z. B. JSPolicy)
Cluster-Zugriff
Der wichtigste Weg zur Interaktion mit dem Virtual Cluster ist die kubeconfig-Datei, die direkt in das Workspace-Dateisystem eingebunden wird. Diese Konfigurationsdatei ermöglicht es, kubectl- und helm-Befehle direkt im Workspace-Terminal und in den Ausführungsschritten der Landscape zu verwenden.
Die Konfigurationsdatei wird automatisch als ~/.kube/config in das Workspace-Dateisystem eingebunden. kubectl und helm verwenden sie standardmäßig, um sich mit dem Virtual Cluster zu verbinden.
tipp
Releases können in der Prepare- oder Run-Stage einer Landscape automatisiert und versioniert werden, indem Folgendes ausgeführt wird:
helm upgrade --install my-release my-charts/my-app --version 2.1.0
Auslösen einer Konfigurationsaktualisierung
Die Kubeconfig-Datei wird (erneut) in den Workspace eingebunden, wenn eines der folgenden Ereignisse eintritt:
- Die Liste der Workspace-Umgebungsvariablen wird geändert
- Der Workspace wird gestartet
- Workspace-Ressourcen werden aktualisiert (z. B. Plan-Änderung, Landscape-Synchronisierung)
info
Wir arbeiten daran, die Synchronisierung der Kubeconfig-Datei für Landscapes und langlaufende Workspaces zu verbessern. Bei Problemen mit einer veralteten oder fehlenden Kubeconfig kann derzeit versucht werden, eine Umgebungsvariable zu ändern oder den Workspace (neu) zu starten, um eine erneute Einbindung der Konfigurationsdatei auszulösen.
Abhängigkeiten
Die Binärdateien kubectl und helm sind im Standard-Codesphere-Workspace-Image vorinstalliert. Bei Verwendung eines eigenen Images sollte sichergestellt werden, dass diese Abhängigkeiten vorhanden sind, falls mit dem Virtual Cluster interagiert werden soll.
Verwalten von Clustern
Virtual Clusters sind als Managed Service in Codesphere verfügbar. Der Lebenszyklus der Clusters wird über die Managed-Services-Oberfläche verwaltet, wo Cluster nach Bedarf erstellt, aktualisiert und gelöscht werden können.
Weitere Details siehe die Managed-Services-Dokumentation.
Erstellen eines Virtual Clusters
info
Derzeit kann jede Resource Group aufgrund der Namespace-Beschränkungen der Resource Group nur einen Virtual Cluster besitzen. Vor dem Erstellen eines neuen Clusters sollte geprüft werden, ob die Resource Group bereits einen enthält.
Um einen Virtual Cluster zu erstellen, folgende Schritte ausführen:
- Zum Tab Managed Services im Codesphere-Workspace navigieren.
- Virtual Kubernetes Cluster aus dem Service-Katalog auswählen. Mit dieser Option lässt sich ein neuer Cluster für das Team einrichten.
- Einen Namen eingeben und den Plan entsprechend den Anforderungen konfigurieren:
- vCPU
- Arbeitsspeicher
- Speicher
- Ephemeral Storage

- Bestätigen und warten, bis der Cluster bereit ist. Die Bereitstellung kann einige Augenblicke dauern.

Bearbeiten des Virtual Clusters
- Zum Tab Managed Services navigieren.
- Auf Settings klicken und den Tab Configuration für den Cluster öffnen.
- Auf Edit Configuration klicken und die Plan-Werte nach Bedarf anpassen.

- Bestätigen und warten, bis die Änderungen wirksam werden. Der Cluster aktualisiert seine Ressourcen entsprechend.
Pläne & Ressourcen
Virtual Clusters setzen Ressourcengrenzen mithilfe von Kubernetes ResourceQuota- und LimitRange-Objekten durch. Diese Einstellungen steuern den maximal verfügbaren Arbeitsspeicher, CPU, Speicher und Ephemeral Storage innerhalb des Clusters.
- Pods müssen Ressourcen-Requests und Limits angeben, um eine faire Nutzung und Planung zu gewährleisten
- Werden diese nicht angegeben, greift die Standard-LimitRange
hinweis
Der Plan begrenzt derzeit die kumulierten Ressourcenlimits über alle Pods hinweg, nicht die tatsächliche Ressourcennutzung. Wenn Pods nicht geplant werden können, sollten die einzelnen Pod-Limits reduziert werden, damit sie in das Kontingent des Plans passen.
Die aktuelle LimitRange lautet:
| Typ | Ressource | Standard-Request | Standard-Limit |
|---|---|---|---|
| Container | memory | 128Mi | 2Gi |
| Container | cpu | 100m | 500m |
| Container | ephemeral-storage | 500Mi | 6Gi |
Löschen eines Virtual Clusters
Wenn ein Cluster nicht mehr benötigt wird:
- Zum Tab Managed Services navigieren.
- Auf Actions klicken und Delete für den zu entfernenden Cluster auswählen. Diese Aktion kann nicht widerrufen werden.
- Bestätigen und warten, bis der Cluster entfernt wurde.
