values.yaml. Se admiten dos proveedores; en cada instalación se configura exactamente uno mediante vantage.secrets.
Proveedores compatibles
Los dos proveedores comparten la misma convención de alias de secreto. Las cargas de trabajo de Vantage buscan los secretos por alias, independientemente de dónde provengan los valores. Usa el inventario de alias que aparece a continuación para planificar el aprovisionamiento.
Proveedor de Azure Key Vault
Modos de identidad
Cómo funciona
SecretProviderClass de cada chart se monta como un volumen CSI en el pod que lo consume, y ese montaje hace que el controlador sincronice los valores en un Secret de Kubernetes específico de cada chart (la funcionalidad secretObjects del SPC), que el pod consume mediante envFrom y montajes de volumen. La secuencia es:
- El operador genera un
SecretProviderClass(SPC) por chart, en el que declara qué alias de Key Vault necesita ese chart y cómo se asigna cada uno a una clave de unSecretde Kubernetes específico del chart. - Cuando un pod monta el volumen del SPC, el controlador Secrets Store CSI se autentica con la identidad seleccionada por
identityMode, obtiene de Key Vault los objetos indicados y los sincroniza en unSecretde Kubernetes específico del chart mediante la funcionalidadsecretObjectsdel SPC. - El pod del chart consume el
Secretespecífico del chart:- La mayoría de los secretos se cargan como variables de entorno mediante
envFrom. - Los certificados (
authSigningTlsCrt, etc.) también se montan como archivos mediantevolumeMounts(normalmente en/var/run/certs/).
- La mayoría de los secretos se cargan como variables de entorno mediante
Secret de Kubernetes específico del chart y en el entorno del pod en tiempo de ejecución, por lo que no son invisibles para kubectl get secret. Pero nunca aparecen en values.yaml, en los diffs de ArgoCD ni en Git, porque el controlador CSI los completa al iniciarse el pod.
El controlador Secrets Store CSI y el plugin de proveedor de Azure Key Vault deben estar instalados en el clúster antes de Vantage. Consulte Requisitos previos.
Recursos por chart
Esta división por chart mantiene el acceso a Key Vault con el mínimo privilegio: el SPC de un chart solo hace referencia a los alias que ese chart realmente necesita.
Cuentas de servicio y alcance de la identidad
ServiceAccount. Cada chart aporta su propia SA mediante valores estándar de Helm; el cliente es responsable de federar las ServiceAccount de cada chart que montan los SPC con la identidad administrada asignada por el usuario (UAMI) cuyo clientId se proporciona en vantage.secrets.azure.clientId. Esa identidad debe tener acceso de lectura a los objetos de Key Vault que respaldan los alias de los charts.
El acceso a Key Vault y el acceso para extraer imágenes son aspectos independientes que pueden recaer en las mismas
ServiceAccount. La federación de UAMI (esta página) concede acceso de lectura a los secretos; no autentica la extracción de imágenes. Para la extracción, agregue un secret de extracción del registry a imagePullSecrets de la ServiceAccount indicada por vantage.serviceAccountName, o bien conceda AcrPull a la identidad de kubelet de AKS. Consulte Acceso para extraer imágenes.Proveedor de Secrets para Kubernetes
Secret en el espacio de nombres de instalación antes de ejecutar el chart. Si objects no está definido, se usarán los nombres predeterminados de los secretos; proporcione una asignación de objects (secretName por alias) para que apunte a Secrets con nombres distintos.
Este proveedor no requiere el controlador Secrets Store CSI ni ningún Key Vault en la nube. Los valores se leen directamente de los objetos Secret del clúster.
Durante la comprobación previa, el operador valida la configuración de los secretos. Los charts del operador matched y de Vantage instalan un ClusterRole con acceso de lectura a Secrets y lo vinculan a la ServiceAccount del operador solo en el espacio de nombres de la release de Vantage. Si restringe el acceso a Secret mediante resourceNames, incluya todos los nombres de Secret predeterminados y reemplazados.
Un sistema externo de gestión de secretos puede seguir siendo su fuente de referencia. Por ejemplo, External Secrets Operator puede materializar Secrets de Kubernetes desde HashiCorp Vault. Vantage solo consume los Secrets de Kubernetes resultantes y no se conecta directamente a External Secrets ni a Vault.
PostgreSQL y Secrets por servicio
vantage.databaseProvider: PostgreSQL para usar PostgreSQL. Cada servicio debe recibir una cadena de conexión que especifique una base de datos lógica diferente; si comparten una sola base de datos, el estado de migración de los servicios entrará en conflicto.
Algunas cargas de trabajo leen claves de cadena de conexión con nombres únicos y pueden compartir un Secret. Otras cargas de trabajo leen la clave genérica Database__ConnectionString; crea un Secret independiente para cada uno de esos servicios y asigna su alias mediante vantage.secrets.kubernetes.objects:
reportingEnabled: false cuando uses PostgreSQL.
Alias de secretos
objects en la configuración de secretos.
Plataforma
Almacenamiento
spec.storage.custom está configurado para un backend respaldado por una StorageClass de Kubernetes (por ejemplo, NFS), estos alias no se utilizan. Cada alias es una cadena de conexión de una storage account; consulta la documentación base del sistema Vantage para ver para qué se usa cada tipo de almacenamiento.
Bases de datos
OAuth
†
sendgridApiKey solo es obligatorio si no se usa SMTP. Consulte Limitaciones conocidas.
Alias de certificados
Con el proveedor de Azure, la forma más sencilla es crear dos certificados autofirmados en Key Vault llamados
auth-signing y auth-deactivated (Nombre común = el valor de dnsRecord de Vantage) y, a continuación, crear cuatro secretos de Key Vault con nombres que coincidan con los alias anteriores. Con el proveedor de Kubernetes, cree previamente los recursos Secret que contengan el material PEM. Las claves de datos predeterminadas son auth-signing-tls-crt, auth-signing-tls-key, auth-deactivated-tls-crt y auth-deactivated-tls-key. Use una asignación de objects para reasignar los nombres de Secret.
Nombres y reasignación
objects usan el propio alias como nombre del objeto de Key Vault (recuperado como tipo secret). Si los objetos de Key Vault ya tienen nombres que coinciden con los alias, no se requiere ninguna asignación objects. Con el proveedor de Kubernetes, se usan los nombres predeterminados de los secrets cuando no se define objects.
Si el proceso de aprovisionamiento usa nombres diferentes, proporcione una asignación objects en la configuración de secrets:
Permisos necesarios
workloadIdentity(predeterminado): la identidad administrada asignada por el usuario cuyoclientIdse proporciona envantage.secrets.azure.clientId.vmManagedIdentity: la identidad cuyo ID de cliente se proporciona envantage.secrets.azure.userAssignedIdentityID.podIdentity: no es un escenario probado; ponte en contacto con tu equipo de cuenta de ABBYY antes de confiar en él.
Secret en el namespace de instalación; Vantage los consume directamente.
La identidad de carga de trabajo del controlador CSI (aquí) es distinta de la identidad de carga de trabajo que usan otras cargas de trabajo de tu clúster (por ejemplo, un Prometheus en la malla que implementes para la supervisión; el instalador de Vantage no implementa Prometheus). Pueden usar la misma UAMI o UAMIs diferentes.
Qué sigue
Requisitos previos
Requisitos a nivel de clúster y de servicios externos para cualquier instalación.
Instalar en Azure
Inventario de Azure Key Vault y la instalación paso a paso.
Kubernetes autogestionado
Secrets nativos de Kubernetes y configuración de PostgreSQL.
