values.yaml. Deux fournisseurs sont pris en charge ; un seul est configuré pour chaque installation via vantage.secrets.
Fournisseurs pris en charge
Les deux providers reposent sur la même convention d’alias de secret. Les charges de travail Vantage recherchent les secrets par alias, quelle que soit l’origine des valeurs. Utilisez l’inventaire des alias ci-dessous pour planifier le provisionnement.
Fournisseur Azure Key Vault
Modes d’identité
Fonctionnement
SecretProviderClass de chaque chart est monté sous forme de volume CSI dans le pod qui l’utilise, et ce montage déclenche la synchronisation des valeurs par le driver dans un Secret Kubernetes propre à chaque chart (fonctionnalité secretObjects du SPC), que le pod consomme via envFrom et des montages de volume. La chaîne est la suivante :
- L’opérateur génère un
SecretProviderClass(SPC) par chart, en déclarant les alias Key Vault dont ce chart a besoin et la manière dont chacun est mis en correspondance avec une clé dans unSecretKubernetes propre au chart. - Lorsqu’un pod monte le volume du SPC, le Secrets Store CSI driver s’authentifie avec l’identité sélectionnée par
identityMode, récupère les objets nommés depuis Key Vault et les synchronise dans unSecretKubernetes propre au chart via la fonctionnalitésecretObjectsdu SPC. - Le pod du chart consomme le
Secretpropre au chart :- La plupart des secrets sont chargés comme variables d’environnement via
envFrom. - Les certificats (
authSigningTlsCrt, etc.) sont également montés sous forme de fichiers viavolumeMounts(généralement sous/var/run/certs/).
- La plupart des secrets sont chargés comme variables d’environnement via
Secret Kubernetes propre au chart et dans l’environnement du pod au runtime ; elles sont donc visibles avec kubectl get secret. Mais elles n’apparaissent jamais dans values.yaml, les diffs ArgoCD ou Git, car le CSI driver les renseigne au démarrage du pod.
Le Secrets Store CSI driver et le plugin fournisseur Azure Key Vault doivent être installés dans le cluster avant Vantage. Voir Prérequis.
Ressources par chart
Cette répartition par chart permet de limiter au strict minimum les privilèges d’accès à Key Vault : le SPC d’un chart ne référence que les alias dont ce chart a réellement besoin.
Comptes de service et portée de l’identité
ServiceAccount. Chaque chart apporte son propre SA via les valeurs Helm standard ; il incombe au client de fédérer les ServiceAccount de chaque chart qui montent les SPC avec l’identité managée attribuée par l’utilisateur (UAMI) dont le clientId est fourni dans vantage.secrets.azure.clientId. Cette identité doit disposer d’un accès en lecture aux objets Key Vault sur lesquels reposent les alias des charts.
L’accès à Key Vault et l’accès au pull d’images sont deux aspects distincts qui peuvent concerner les mêmes
ServiceAccount. La fédération UAMI (cette page) accorde l’accès en lecture aux secrets ; elle n’authentifie pas les pulls d’images. Pour les pulls, ajoutez un secret de pull de registry dans imagePullSecrets du ServiceAccount nommé par vantage.serviceAccountName, ou accordez plutôt AcrPull à l’identité du kubelet AKS. Voir Accès au pull d’images.Fournisseur de Secrets Kubernetes
Secret dans l’espace de noms d’installation avant d’exécuter le chart. Si objects n’est pas défini, les noms de secret par défaut sont utilisés ; indiquez une mise en correspondance objects (secretName par alias) pour cibler des Secrets portant des noms différents.
Ce provider ne nécessite ni Secrets Store CSI driver ni coffre de clés dans le cloud. Les valeurs sont lues directement à partir des objets Secret du cluster.
Lors des vérifications préalables, l’operator valide la configuration des secrets. Les charts matched operator et Vantage installent un ClusterRole de lecture des Secrets et l’associent au ServiceAccount de l’operator, uniquement dans l’espace de noms de la release Vantage. Si vous limitez l’accès aux Secrets via resourceNames, incluez tous les noms de Secret, par défaut comme remplacés.
Un système externe de gestion des secrets peut rester votre source de référence. Par exemple, External Secrets Operator peut matérialiser des Secrets Kubernetes à partir de HashiCorp Vault. Vantage consomme uniquement les Secrets Kubernetes ainsi obtenus et ne se connecte ni à External Secrets ni à Vault directement.
PostgreSQL et les Secrets par service
vantage.databaseProvider: PostgreSQL pour utiliser PostgreSQL. Chaque service doit recevoir une chaîne de connexion pointant vers une base de données logique distincte ; le partage d’une même base de données entraîne un conflit entre les états de migration des services.
Certaines charges de travail lisent des clés de chaîne de connexion portant des noms uniques et peuvent partager un Secret. D’autres charges de travail lisent la clé générique Database__ConnectionString ; créez un Secret distinct pour chacun de ces services et mettez en correspondance son alias via vantage.secrets.kubernetes.objects :
reportingEnabled: false lorsque vous utilisez PostgreSQL.
Alias de secrets
objects dans votre configuration des secrets.
Plateforme
Stockage
spec.storage.custom est configuré pour un back-end reposant sur une StorageClass Kubernetes (par exemple, NFS), ces alias ne sont pas utilisés. Chaque alias correspond à une chaîne de connexion de compte de stockage ; consultez la documentation de base du système Vantage pour savoir à quoi sert chaque type de stockage.
Bases de données
OAuth
†
sendgridApiKey est obligatoire uniquement si vous n’utilisez pas SMTP. Voir Limitations connues.
Alias de certificat
Avec le fournisseur Azure, l’approche la plus simple consiste à créer deux certificats auto-signés dans Key Vault, nommés
auth-signing et auth-deactivated (Common Name = votre valeur Vantage dnsRecord), puis à créer quatre secrets Key Vault dont les noms correspondent aux alias ci-dessus. Avec le fournisseur Kubernetes, créez au préalable les ressources Secret contenant les éléments PEM. Les clés de données par défaut sont auth-signing-tls-crt, auth-signing-tls-key, auth-deactivated-tls-crt et auth-deactivated-tls-key. Utilisez une mise en correspondance objects pour remapper les noms de Secret.
Nommage et mise en correspondance
objects utilisent par défaut l’alias lui-même comme nom d’objet de Key Vault (récupéré avec le type secret). Si vos objets Key Vault portent déjà des noms correspondant aux alias, aucune mise en correspondance objects n’est requise. Avec le fournisseur Kubernetes, les noms de secret par défaut sont utilisés lorsque objects n’est pas défini.
Si votre processus de provisionnement utilise des noms différents, fournissez une mise en correspondance objects dans votre configuration des secrets :
Autorisations requises
workloadIdentity(par défaut) : l’identité managée attribuée par l’utilisateur dont leclientIdest indiqué dansvantage.secrets.azure.clientId.vmManagedIdentity: l’identité dont l’ID client est indiqué dansvantage.secrets.azure.userAssignedIdentityID.podIdentity: scénario non testé ; contactez l’équipe ABBYY en charge de votre compte avant de vous appuyer dessus.
Secret dans le namespace d’installation ; Vantage les utilise directement.
L’identité de charge de travail du driver CSI (ici) est distincte de l’identité de charge de travail utilisée par les autres charges de travail de votre cluster (par exemple, un Prometheus dans le mesh que vous déployez pour le monitoring ; le programme d’installation de Vantage ne déploie pas Prometheus). Elles peuvent utiliser la même UAMI ou des UAMI différentes.
Prochaines étapes
Prérequis
Exigences relatives au cluster et aux services externes pour toute installation.
Installer sur Azure
Éléments Azure Key Vault requis et procédure d’installation pas à pas.
Kubernetes autogéré
Configuration des Secrets Kubernetes natifs et de PostgreSQL.
