values.yaml-Dateien gespeichert. Zwei Provider werden unterstützt; pro Installation ist genau einer über vantage.secrets konfiguriert.
Unterstützte Provider
Die beiden Provider verwenden dieselbe Secret-Alias-Konvention. Vantage-Workloads suchen Secrets anhand von Aliasen, unabhängig davon, woher die Werte stammen. Verwenden Sie das Alias-Inventar unten, um die Bereitstellung zu planen.
Azure Key Vault-Provider
Identitätsmodi
So funktioniert es
SecretProviderClass jedes Charts wird als CSI-Volume in den verwendenden pod eingebunden, und dieses Mount veranlasst den Driver, die Werte in ein Kubernetes-Secret pro Chart zu synchronisieren (die secretObjects-Funktion der SPC), das der pod über envFrom und Volume-Mounts verwendet. Die Kette ist:
- Der Operator erstellt pro Chart eine
SecretProviderClass(SPC), in der festgelegt wird, welche Key-Vault-Aliase das jeweilige Chart benötigt und wie jeder Alias einem Schlüssel in einem Kubernetes-Secretpro Chart zugeordnet wird. - Wenn ein Pod das Volume der SPC einhängt, authentifiziert sich der Secrets Store CSI driver mit der durch
identityModeausgewählten identity, ruft die benannten objects aus Key Vault ab und synchronisiert sie über diesecretObjects-Funktion der SPC in ein Kubernetes-Secretpro Chart. - Der Pod des Charts verwendet das
Secretpro Chart:- Die meisten secrets werden über
envFromals environment variables geladen. - Zertifikate (
authSigningTlsCrtusw.) werden übervolumeMountszusätzlich als Dateien eingehängt (in der Regel unter/var/run/certs/).
- Die meisten secrets werden über
Secret pro Chart und zur Runtime in der Umgebung des Pods; für kubectl get secret sind sie also nicht unsichtbar. Sie erscheinen jedoch nie in values.yaml, ArgoCD-Diffs oder Git, da der CSI driver sie beim Start des Pods befüllt.
Der Secrets Store CSI driver und das Azure Key Vault provider plugin müssen vor Vantage im cluster installiert werden. Siehe Voraussetzungen.
Ressourcen pro Chart
Diese Aufteilung nach Charts sorgt dafür, dass der Zugriff auf Key Vault auf das notwendige Minimum beschränkt bleibt: Die SPC eines Charts verweist nur auf die Aliasse, die dieses Chart tatsächlich benötigt.
ServiceAccounts und Identitätsbereich
ServiceAccount-Ressourcen. Jedes Chart bringt über die standardmäßigen Helm-Werte sein eigenes SA mit; der Kunde ist dafür verantwortlich, die ServiceAccounts der einzelnen Charts, die die SPCs einbinden, mit der benutzerzugewiesenen verwalteten Identität (UAMI) zu föderieren, deren clientId in vantage.secrets.azure.clientId angegeben ist. Diese Identität muss Lesezugriff auf die Key-Vault-Objekte haben, die den Aliasen der Charts zugrunde liegen.
Der Key-Vault-Zugriff und der Zugriff für Image-Pulls sind getrennte Themen, die denselben ServiceAccounts zugewiesen sein können. Die UAMI-Föderierung (auf dieser Seite) gewährt Leserechte für Secrets; sie authentifiziert keine Image-Pulls. Fügen Sie für Pulls den
imagePullSecrets des ServiceAccount, der in vantage.serviceAccountName angegeben ist, ein Registry-Pull-Secret hinzu, oder gewähren Sie stattdessen AcrPull für die AKS-Kubelet-Identität. Siehe Zugriff für Image-Pulls.Kubernetes-Secrets-Provider
Secret-Ressourcen im Installations-Namespace, bevor Sie das Chart ausführen. Wenn objects nicht definiert ist, werden die Standardnamen für Secrets verwendet. Geben Sie eine objects-Zuordnung (secretName pro Alias) an, um auf Secrets mit abweichenden Namen zu verweisen.
Dieser Provider erfordert weder den Secrets Store CSI driver noch einen Cloud-Schlüsseltresor. Die Werte werden direkt aus den Secret-Objekten im Cluster gelesen.
Während der Vorabprüfung validiert der Operator die Secrets-Konfiguration. Die zugehörigen Operator- und Vantage-Charts installieren eine Secret-Reader-ClusterRole und binden sie ausschließlich im Vantage-Release-Namespace an das ServiceAccount des Operators. Wenn Sie den Zugriff auf Secrets über resourceNames einschränken, schließen Sie jeden Standardnamen und jeden überschriebenen Secret-Namen ein.
Ein externes Secret-Management-System kann weiterhin Ihre maßgebliche Quelle bleiben. So kann External Secrets Operator beispielsweise Kubernetes-Secrets aus HashiCorp Vault materialisieren. Vantage verwendet nur die daraus entstehenden Kubernetes-Secrets und stellt keine direkte Verbindung zu External Secrets oder Vault her.
PostgreSQL und dienstspezifische Secrets
vantage.databaseProvider: PostgreSQL, um PostgreSQL zu verwenden. Jeder Service muss eine Verbindungszeichenfolge erhalten, die eine eigene logische Datenbank angibt; bei gemeinsamer Nutzung derselben Datenbank kommt es zu Konflikten beim Migrationsstatus der Services.
Einige Workloads lesen eindeutig benannte Schlüssel für Verbindungszeichenfolgen und können sich ein Secret teilen. Andere Workloads lesen den generischen Schlüssel Database__ConnectionString; erstellen Sie für jeden dieser Services ein separates Secret und ordnen Sie dessen Alias über vantage.secrets.kubernetes.objects zu:
reportingEnabled: false, wenn Sie PostgreSQL verwenden.
Secret-Aliasse
objects-Mapping in Ihrer Secrets-Konfiguration neu zuordnen.
Plattform
Speicher
spec.storage.custom für ein Backend konfiguriert ist, das auf einer Kubernetes-StorageClass basiert (zum Beispiel NFS), werden diese Aliasse nicht verwendet. Jeder Alias ist eine Verbindungszeichenfolge für ein Speicherkonto; Informationen dazu, wofür die einzelnen Speichertypen verwendet werden, finden Sie in der grundlegenden Vantage-Systemdokumentation.
Datenbanken
OAuth
†
sendgridApiKey ist nur erforderlich, wenn kein SMTP verwendet wird. Siehe Bekannte Einschränkungen.
Zertifikataliasse
Beim Azure-Provider ist es am einfachsten, zwei selbstsignierte Zertifikate in Key Vault mit den Namen
auth-signing und auth-deactivated zu erstellen (Common Name = Ihr Vantage-dnsRecord-Wert) und anschließend vier Key Vault-Secrets anzulegen, deren Namen den obigen Aliasen entsprechen. Beim Kubernetes-Provider erstellen Sie die Secret-Ressourcen mit dem PEM-Material vorab. Die Standard-Datenschlüssel sind auth-signing-tls-crt, auth-signing-tls-key, auth-deactivated-tls-crt und auth-deactivated-tls-key. Verwenden Sie ein objects-Mapping, um Secret-Namen neu zuzuordnen.
Benennung und Zuordnung
objects-Zuordnung aufgeführt sind, den Alias selbst als Namen des Key Vault-Objekts (abgerufen als Typ secret). Wenn Ihre Key Vault-Objekte bereits so benannt sind, dass sie den Aliasen entsprechen, ist keine objects-Zuordnung erforderlich. Beim Kubernetes-Provider werden die Standardnamen der Secrets verwendet, wenn objects nicht definiert ist.
Wenn Ihr Bereitstellungsprozess andere Namen verwendet, geben Sie in Ihrer Secrets-Konfiguration eine objects-Zuordnung an:
Erforderliche Berechtigungen
workloadIdentity(Standard): die benutzerzugewiesene verwaltete Identität, derenclientIdinvantage.secrets.azure.clientIdangegeben ist.vmManagedIdentity: die Identität, deren Client ID invantage.secrets.azure.userAssignedIdentityIDangegeben ist.podIdentity: kein getestetes Szenario; wenden Sie sich an Ihr ABBYY Account Team, bevor Sie diese Option verwenden.
Secret-Ressourcen vorab im Installations-Namespace; Vantage verwendet sie direkt.
Die Workload Identity für den CSI driver (hier) unterscheidet sich von der Workload Identity, die von anderen Workloads in Ihrem Cluster verwendet wird (zum Beispiel von einem In-mesh Prometheus, den Sie zur Überwachung bereitstellen; das Vantage-Installationsprogramm stellt Prometheus nicht bereit). Dabei kann dieselbe UAMI oder es können unterschiedliche UAMIs verwendet werden.
Nächste Schritte
Voraussetzungen
Anforderungen auf Cluster-Ebene und an externe Services für jede Installation.
Installation auf Azure
Azure Key Vault-Übersicht und die Schritt-für-Schritt-Installation.
Selbstverwaltetes Kubernetes
Native Kubernetes-Secrets und PostgreSQL-Konfiguration.
