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
Halten Sie die folgenden Werte und Ressourcen bereit:
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
Installieren Sie ArgoCD und aktivieren Sie ApplicationSet Progressive Syncs. ArgoCD benötigt außerdem eine OCI-Repository-Verbindung, die die Vantage-Komponenten-Charts aus Ihrer Ziel-Registry abrufen kann. Registrieren Sie die Ziel-Registry als OCI-Helm-Repository, indem Sie die ArgoCD-Dokumentation zu privaten Repositories befolgen. Bewahren Sie die Registry-Zugangsdaten in Ihrem vorhandenen Secret-Management-System auf, anstatt die Zugangsdaten direkt in einem ArgoCD-Application-Manifest abzulegen.
Service Mesh konfigurieren
Vantage erfordert mTLS zwischen seinen Workloads. Installieren und betreiben Sie ein unterstütztes Service Mesh und aktivieren Sie anschließend die Mesh-Injektion für$install_namespace, bevor Sie Vantage installieren.
Zum Beispiel mit Linkerd:
TechCore-Worker-Knoten konfigurieren
TechCore-Worker-Workloads wählen Knoten mit dem Labelk8s.abbyy.com/techcore=true aus. Versehen Sie jeden Knoten im TechCore-Pool mit einem Label und einem Taint:
Pending. Informationen zur Isolierung der Training-Worker finden Sie unter Kubernetes-Knoten-Anforderungen; zur Kapazität pro Pool siehe Sizing.
Persistenten Speicher konfigurieren
Erstellen oder wählen Sie eineStorageClass, 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
Vantage unterstützt SQL Server und PostgreSQL. Legen Sie den Provider genau wie gezeigt fest; der Wert berücksichtigt die Groß- und Kleinschreibung: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
Der Provider für Kubernetes Secrets liest native Kubernetes-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
Der Registry-Zugriff hat drei getrennte Nutzer:
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
Die Unterstützung für KEDA ist optional, wird jedoch empfohlen. Verwenden Sie KEDA 2.17.3: In KEDA 2.18 und späteren Versionen wurde einscaler-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
Der im Chart integrierte Ingress ist für Istio gedacht. Wenn Sie Traefik oder einen anderen Ingress-Controller verwenden, deaktivieren Sie ihn:- 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
Ermitteln Sie die generierten Kubernetes-Service-Namen in$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
Wenn TLS an einem Ingress-Controller endet und die Backend-Verbindung über HTTP erfolgt, müssen die Vantage-Authentifizierungs-ServicesX-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
Installieren Sie eine Operator-Instanz im Cluster:--wait zum Befehl hinzu:
Vantage installieren
Erstellen Sie eine Datei mit den Werten, die die oben vorbereitete Konfiguration zusammenführt. Dieses gekürzte Beispiel zeigt die für Self-Managed spezifischen Werte; fügen Sie die vollständigen Secret-Zuordnungen und die Registry-Zugangsdaten für Ihre Umgebung hinzu:vantage-selfhosted-Chart:
Installation überwachen
Warten Sie, bis die Custom-Resource den StatusReady 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.
