Die Charts
vantage-operator und vantage-selfhosted müssen dieselbe Version verwenden. Die Beispiele auf dieser Seite verwenden für beide Charts die Version 0.70.13.Referenzarchitektur
Unterstützte und getestete Komponentenversionen finden Sie unter Kompatibilität. Das vollständige Infrastrukturinventar und die Dimensionierungsgrundlage finden Sie unter Voraussetzungen.
Bevor Sie beginnen
Sie benötigen außerdem:
- Einen DNS-Eintrag für
$your_vantage_hostname, der auf Ihren Ingress-Einstiegspunkt verweist. - Ein gültiges TLS-Zertifikat für diesen Hostnamen.
- Kubernetes-Registry-Pull-Secrets, wenn Ihre Registry eine Authentifizierung erfordert.
- Jedes Anwendungs-Secret, das unter Secret aliases aufgeführt ist.
- Einen eindeutigen logischen Datenbanknamen für jeden Datenbankalias. Der Migrator jedes Service erstellt seine Datenbank beim ersten Ausführen.
- Knoten mit Labels für TechCore-Worker.
Cluster vorbereiten
ArgoCD konfigurieren
Application-Manifest abzulegen.
Service Mesh konfigurieren
$install_namespace, bevor Sie Vantage installieren.
Zum Beispiel mit Linkerd:
TechCore-Worker-Knoten konfigurieren
Pending. Informationen zur Isolierung von Training-Workern und zur Dimensionierungsgrundlage finden Sie unter Kubernetes-Knotenanforderungen.
Persistenten Speicher konfigurieren
StorageClass, bevor Sie Vantage installieren. Die Speicherimplementierung muss Ihre Anforderungen an Produktionsverfügbarkeit, Datenbeständigkeit, Kapazität, Erweiterbarkeit, Backup und Wiederherstellung erfüllen.
Geben Sie sie in den Vantage-Werten an:
StorageClass ist unabhängig von der Kubernetes-Distribution. Übernehmen Sie die lokale StorageClass eines Entwicklungsclusters nicht in die Produktion, ohne zuvor die Ausfall- und Failover-Eigenschaften zu bewerten.
Vantage erstellt seine eigenen PersistentVolumeClaims in der von Ihnen angegebenen Klasse. Für jede StorageClass gelten zwei Anforderungen:
- Bereitgestellte Volumes müssen für einen Benutzer ohne Root-Rechte beschreibbar sein. Vantage-Services werden ohne Root-Rechte ausgeführt. Wenn das Mount-Verzeichnis eines Volumes Root gehört und für den Container-Benutzer nicht beschreibbar ist (zum Beispiel Modus
0755), schlägt die Dateisystemprüfung beim Start des Serviceblobstoragefehl, die Hostinitialisierung wird abgebrochen, und jeder vom Speicher abhängige Service wechselt in den ZustandDegraded. - Der Wert
storageClassNameeines PVC ist unveränderlich. Um eine vorhandene Installation in eine andere StorageClass zu verschieben, löschen Sie die PVCs des Operators und erstellen Sie sie in der neuen Klasse neu.
nfs-StorageClass bereitstellt. Das Knoten-Plugin des Treibers bringt die NFS-Mount-Utilities mit, sodass Clusterknoten keine zusätzlichen NFS-Pakete benötigen.
- Der Treiber erfordert einen vorhandenen und bereits konfigurierten NFSv3- oder NFSv4-Server. Vantage wird weder mit dem Treiber noch mit dem Server ausgeliefert und verwaltet keinen von beiden; Sie installieren und betreiben beide selbst.
- Setzen Sie
mountPermissions: "0777"für dieStorageClass. Der Provisioner erstellt das Unterverzeichnis jedes Volumes mit root als Eigentümer, und ein Verzeichnis mit0755ist für den Vantage-Servicebenutzer nicht beschreibbar. - Der NFS-Server muss von jedem Knoten aus erreichbar sein und seine Freigabe mit
rw,sync,all_squash,insecure,no_subtree_check,anonuid=65532,anongid=65532exportieren. Dasall_squash-Mapping mitanonuid/anongidweist jeden Client, einschließlich des CSI-Treibers, der UID/GID65532zu und entspricht damit dem Sicherheitskontext des Vantage-Pods.insecureerlaubt Verbindungen über die nicht privilegierten Ports, die containerisierte NFS-Clients verwenden; ohne diese Option weist der Server diese Verbindungen stillschweigend ab, und Schreibvorgänge auf dem Speicher schlagen ohne sichtbaren Fehler fehl. - Das Export-Stammverzeichnis muss
65532:65532gehören und den Modus0755haben. Nachdem Sie/etc/exportsoder die Eigentümerschaft auf einem laufenden Server geändert haben, exportieren Sie mitexportfs -raerneut.
Datenbanken vorbereiten
SqlServer und PostgreSQL. Ein Wert wie Postgresql oder PostgreSql kann zur Laufzeit fehlschlagen, weil er nicht mit dem Data-Provider-Namen der Anwendung übereinstimmt.
Jeder Vantage-Service muss eine eigene logische Datenbank verwenden. Services führen ihre eigenen Migrationen aus, und wenn mehrere Services auf dieselbe Datenbank verweisen, geraten ihre Migrationszustände in Konflikt. Verwenden Sie die Datenbankübersicht unter Datenbankaliasen, um Datenbanknamen und Verbindungszeichenfolgen zu planen. Sie müssen die Datenbanken nicht manuell erstellen: Der Migrator des jeweiligen Service erstellt seine Datenbank beim ersten Start.
PostgreSQL-Verbindungszeichenfolgen müssen einzeilig sein und dürfen weder führende noch nachgestellte oder eingebettete Zeilenumbruchzeichen enthalten.
Kubernetes Secrets vorbereiten
Secret-Ressourcen aus $install_namespace. Vantage stellt keine direkte Verbindung zu Vault oder einem anderen externen Speicher für Secrets her. Wenn Sie External Secrets Operator, einen CSI-Treiber oder ein anderes Synchronisierungstool verwenden, konfigurieren Sie es so, dass die erforderlichen Kubernetes Secrets vor der Installation von Vantage erstellt werden.
Wählen Sie den Kubernetes-Provider aus:
objects, um einem Alias ein anderes Secret zuzuordnen:
Database__ConnectionString verwenden, erstellen Sie für jeden Service ein separates Secret und ordnen Sie jeden Datenbankalias über vantage.secrets.kubernetes.objects zu. Ihr Secret-Management-System kann diese Secrets aus einer gemeinsamen Connection-String-Vorlage ableiten, aber jede daraus erzeugte Connection-String muss eine andere Datenbank angeben.
Der Operator validiert die Secrets-Konfiguration bei der Vorabprüfung. Die aufeinander abgestimmten Charts
vantage-operator und vantage-selfhosted gewähren dem Operator über eine ClusterRole Lesezugriff auf Secrets, die nur im Namespace des Vantage-Release gebunden ist. Wenn Sie den Operator-Namespace oder das Controller-ServiceAccount anpassen, achten Sie darauf, dass die entsprechenden operator-Werte im Vantage-Chart mit dieser Installation übereinstimmen. Eine benutzerdefinierte resourceNames-Einschränkung muss jedes Secret enthalten, auf das der Kubernetes-Provider verweist.Registry-Zugriff konfigurieren
Erstellen Sie Registry-Secrets in dem Namespace, in dem der jeweilige Nutzer ausgeführt wird. Speichern Sie keine Registry-Kennwörter im Klartext in Ihrer Values-Datei.
Geben Sie für die OCI-Migration die Secrets für die Anmeldedaten der Quell- und Ziel-Registry an:
imagePullSecrets des ServiceAccount hinzu, der durch vantage.serviceAccountName angegeben ist und als Standard-ServiceAccount für Vantage-Workloads dient.
Wenn ein Komponenten-Pod unter einem anderen ServiceAccount ausgeführt wird, benötigt auch dieser ServiceAccount Pull-Zugriff auf die Registry. Prüfen Sie den
spec.serviceAccountName des Pods, bevor Sie den default-ServiceAccount des Namespace ändern.Autoskalierung und Metriken konfigurieren
scaler-Feld entfernt, das von den aktuellen Vantage-Workload-Charts verwendet wird; daher können die erforderlichen HPAs nicht erstellt werden.
Einige Vantage-ScaledObject-Ressourcen fragen Prometheus unter dieser festen Adresse ab:
- Installieren Sie KEDA 2.17.3.
- Installieren Sie Prometheus Operator und eine Prometheus-Instanz im Namespace
observability. - Vergewissern Sie sich, dass der zugehörige Service
prometheus-operatedheißt und Port9090verfügbar macht. - Konfigurieren Sie Prometheus so, dass es den
ServiceMonitorvon Vantage erkennt.
Vantage-Ressource und aktivieren Sie den ServiceMonitor des Charts über den separaten observability-Abschnitt auf oberster Ebene:
observability ist ein Top-Level-Schlüssel; verschachteln Sie ihn nicht unter vantage. Informationen zu Trigger-Strategien, Verifizierung und Kapazitätsplanung finden Sie unter Automatische Skalierung mit KEDA. Informationen zur mesh-spezifischen Scraping-Konfiguration finden Sie unter Überwachung mit Prometheus.
Ingress und TLS konfigurieren
- HTTPS für
vantage.dnsRecordmit einem vertrauenswürdigen Zertifikat terminieren. - die Pfade für Vantage-UI, API, Authentifizierung, Hilfe, SCIM, URL-Shortener, Workspace, Verifizierung und Try Any Skill an die entsprechenden Services weiterleiten.
- die von Vantage verwendeten Rewrites für
/api/vN/nach/publicapi/vN/,/api/, SCIM und Heartbeat anwenden. - spezifischere Routen vor der Catch-all-Route der UI abgleichen.
- den ursprünglichen Host und das ursprüngliche Schema weiterleiten, einschließlich
X-Forwarded-Proto: https, wenn TLS am Ingress-Controller terminiert wird.
IngressRoute und geordneten Middleware-Ressourcen um. Behandeln Sie das Routenmanifest als versionierte Vantage-Konfiguration: Parametrisieren Sie den Hostnamen, den Namespace, das Zertifikats-Secret und die generierten Service-Namen für Ihr Release, anstatt Werte aus einer anderen Umgebung zu übernehmen.
Routing-Kontrakt
$install_namespace und implementieren Sie dann diese Routen in der aufgeführten Reihenfolge. Regex- und exakte Routen müssen Vorrang vor Präfix- und Catch-all-Routen haben.
Der integrierte Istio-Ingress des Charts blockiert außerdem
/api/status und /api/status/config, die interne Statusinformationen offenlegen, die Clients nicht benötigen. Das Blockieren dieser Pfade wird empfohlen, ist aber für den Betrieb von Vantage nicht erforderlich. Wenn Ihr Ingress-Controller keine direkte Ablehnungsantwort zurückgeben kann, können Sie diese Pfade vor der allgemeinen /api-Regel an ein dediziertes Deny-Backend weiterleiten.
Weitergeleitetes HTTPS-Schema
X-Forwarded-Proto auswerten. Andernfalls kann das OIDC-Discovery-Dokument http://-Endpoints ausweisen, und die Browser-Anmeldung schlägt fehl. Aktivieren Sie diese Konfiguration, indem Sie vantage.reverseProxy auf true setzen:
Installieren Sie den Operator
--wait zum Befehl hinzu:
Vantage installieren
vantage-selfhosted-Chart:
Installation überwachen
Ready meldet:
Ready:
Ready meldet:
- Jede generierte ArgoCD-Anwendung ist
SyncedundHealthy. - Die Vantage-Pods laufen und sind mesh-injiziert.
- Prometheus meldet die Vantage-
/metrics-text-Targets alsUP. - KEDA-
ScaledObject-Ressourcen sindReady, und die HPA-Metrikwerte sind nicht<unknown>. - Das OIDC-Discovery-Dokument und die Browser-Weiterleitungen verwenden
https://-URLs. - Vantage ist unter
https://$your_vantage_hostnameverfügbar.
Wie geht es weiter
Secrets
Kubernetes-Secret-Aliase, Schlüsselpaare für die Authentifizierung und Datenbank-Verbindungsstrings.
Überwachung
Konfigurieren Sie Prometheus so, dass Metriken von Vantage über das Service Mesh abgerufen werden.
Fehlerbehebung
Diagnostizieren Sie Ausfälle von Operator, Datenbank, Registry, Ingress und Autoskalierung.
Upgrade
Aktualisieren Sie den Operator und die Vantage Charts gemeinsam.
