Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configure el almacenamiento de secretos

Puede elegir la herramienta secreta de almacenamiento para Kubernetes Operator. La herramienta de almacenamiento secreto es un lugar seguro para almacenar información confidencial para los componentes que gestiona el Operador de Kubernetes. Esto incluye secretos para bases de datos MongoDB, Ops Manager y AppDB.

Una vez que configures el almacenamiento de secretos, el Operador de Kubernetes accede a la herramienta, recupera los secretos y los utiliza para establecer conexiones de forma segura.

Kubernetes operador admite las siguientes herramientas de almacenamiento secreto:

  • Kubernetes: almacena información sensible como secretos (el almacenamiento de secretos integrado para Kubernetes). Los secretos de Kubernetes almacenan credenciales de autenticación para que solo Kubernetes pueda acceder a ellas.

  • HashiCorp Vault: almacena información sensible en Vault, un servicio de terceros para la gestión de secretos.

Puedes utilizar cualquier herramienta de almacenamiento secreto compatible para cualquier secreto en la documentación de MongoDB Controllers for Kubernetes Operator, excepto los que se enumeran en las limitaciones.

Importante

Después de la configuración, el Operador de Kubernetes utiliza tu herramienta de almacenamiento de secretos seleccionada para todos los secretos, excepto los enumerados en las limitaciones. No puedes mezclar y combinar herramientas de almacenamiento de secretos.

Existen las siguientes limitaciones para las herramientas de almacenamiento secreto admitidas:

Para configurar la herramienta de almacenamiento de secretos, selecciona una de las siguientes opciones:

Todos los tutoriales de esta documentación de MongoDB Controllers para el operador de Kubernetes utilizan secretos de Kubernetes por defecto. Para utilizar secretos de Kubernetes para almacenar secretos para el Kubernetes Operator, proceda con la instalación del Kubernetes Operator y siga los pasos en los tutoriales.

Para usar HashiCorp Vault para almacenar secretos para el Operador de Kubernetes, completa el siguiente procedimiento.

Antes de comenzar, debes:

  • Configura una instancia de Vault. El clúster de Kubernetes donde se ejecuta el Kubernetes Operator debe tener acceso a la instancia de Vault.

    Nota

    Asegúrese de que Vault no esté ejecutándose en modo dev y de que su instalación de Vault siga las recomendaciones de configuracióncorrespondientes.

  • Habilite autenticación de Kubernetes para la instancia de Vault. Esto le permite autenticarse con Vault.

  • Implemente el inyector de sidecar del agente Vault en el clúster de Kubernetes. Esto te permite inyectar secretos desde Vault en tus Pods de Kubernetes.

  • Descargue los cuatro archivos de políticas de Vault para Kubernetes operador, la base de datos de MongoDB, Ops Manager y AppDB.

  • Create a role in Vault with the name mongodbenterprise. The configuration of secrets in the Kubernetes Operator relies on the presence of this role and its exact name.

1

Guarde las políticas para el Operador de Kubernetes, la base de datos MongoDB, el Ops Manager y los recursos de AppDB en Vault usando el siguiente comando, sustituyendo las variables por los valores de la tabla:

Marcador de posición
Descripción

{PolicyName}

Etiqueta legible por humanos que identifica la política que estás creando en Vault.

{PathToPolicyFile}

La ruta absoluta al archivo de políticas que descargaste.

vault policy write {PolicyName} {PathToPolicyFile}

Repita el comando para todos los recursos que está agregando a Vault.

2

Asocie los roles de Vault a las políticas para el Operador de Kubernetes, la base de datos MongoDB, Ops Manager y los recursos de AppDB utilizando los siguientes cuatro comandos, reemplazando las variables por los valores de la tabla:

Marcador de posición
Descripción

{OperatorPolicyName}

Una etiqueta legible por humanos que identifica la política del Operador de Kubernetes en Vault.

{DatabasePolicyName}

Una etiqueta legible por humanos que identifica la política de la base de datos de MongoDB en Vault.

{OpsManagerPolicyName}

Una etiqueta legible por humanos que identifica la política de Ops Manager en Vault.

{AppDBPolicyName}

Una etiqueta legible por humanos que identifica la política de AppDB en Vault.

{ServiceAccountNamespace}

Etiqueta que identifica el namespace de la cuenta de servicio vinculada a tu pod.

vault write auth/kubernetes/role/{OperatorPolicyName}
bound_service_account_names=enterprise-operator bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{DatabasePolicyName}
bound_service_account_names=mongodb-kubernetes-database-pods bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{OpsManagerPolicyName}
bound_service_account_names=mongodb-kubernetes-ops-manager bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{AppDBPolicyName}
bound_service_account_names=mongodb-kubernetes-appdb bound_service_account_namespaces={ServiceAccountNamespace}

Estos comandos garantizan que los pods de cada componente tengan solo el acceso especificado en su política.

Nota

Este paso otorga al Operador de Kubernetes acceso a Vault. Para utilizar Vault con aplicaciones que el Operador de Kubernetes no administra, se deben guardar y vincular políticas de Vault para esas aplicaciones.

You can adapt the commands in this step to bind other policies by replacing the name of the service accounts. To configure other applications to use Vault, replace the {ServiceAccountName} in the following command with the service account used for the application's pod:

vault write auth/kubernetes/role/{PolicyName}
bound_service_account_names={ServiceAccountName} bound_service_account_namespaces={ServiceAccountNamespace}
3

Before running commands in this step, ensure that you have created a Vault role with the name mongodbenterprise.

Agrega las siguientes líneas resaltadas a la sección spec.template.metadata.annotations de tu archivo de implementación del Operador de Kubernetes. Para la mayoría de los usuarios, el nombre de este archivo es mongodb-kubernetes.yaml o mongodb-kubernetes-openshift.yaml.

Nota

Si instalaste el Operador de Kubernetes usando Helm y configuraste operator.vaultSecretBackend.enabled como true, el Operador de Kubernetes añade las siguientes anotaciones. Puede pasar al siguiente paso.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-kubernetes-operator
namespace: production
spec:
replicas: 1
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "mongodbenterprise"

Si está ejecutando Vault en modo TLS, y especificó el valor operator.vaultSecretBackend.tlsSecretRef, el operador de Kubernetes añade las siguientes anotaciones. De lo contrario, añada la siguiente línea resaltada al archivo, sustituyendo {TLSSecret} por el nombre del secreto que contiene una entrada ca.crt. El contenido de la entrada ca.crt debe coincidir con el certificado de la CA utilizada para generar los certificados TLS de Vault.

annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "mongodbenterprise"
vault.hashicorp.com/tls-secret: {TLSSecret}
vault.hashicorp.com/ca-cert: /vault/tls/ca.crt
4

Agrega las siguientes líneas resaltadas a la sección spec.env de tu archivo de implementación del Operador de Kubernetes. Para la mayoría de los usuarios, el nombre de este archivo es mongodb-kubernetes.yaml o mongodb-kubernetes-openshift.yaml.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-kubernetes-operator
namespace: production
spec:
env:
- name: OPERATOR_ENV
value: ENVIRONMENT_NAME
- name: SECRET_BACKEND
value: VAULT_BACKEND

Esto define la variable de entorno para Vault en Kubernetes.

5

Utilizando la aplicación de edición de texto que prefieras, crea un archivo llamado config. Pegue el siguiente texto en el archivo:

apiVersion: v1
kind: ConfigMap
metadata:
name: secret-configuration
namespace: {Namespace}
data:
VAULT_SERVER_ADDRESS: {VaultServerAddress}
OPERATOR_SECRET_BASE_PATH: mongodbenterprise/operator
DATABASE_SECRET_BASE_PATH: mongodbenterprise/database
OPS_MANAGER_SECRET_BASE_PATH: mongodbenterprise/opsmanager
APPDB_SECRET_BASE_PATH: mongodbenterprise/appdb

Las rutas en este archivo son las rutas por defecto. Puedes reemplazarlas con tus rutas base si personalizaste la configuración del Operador de Kubernetes.

Si está ejecutando Vault en modo TLS, también debe agregar la siguiente línea resaltada al archivo:

OPS_MANAGER_SECRET_BASE_PATH: mongodbenterprise/opsmanager
APPDB_SECRET_BASE_PATH: mongodbenterprise/appdb
TLS_SECRET_REF: {TLSSecret}
6

Reemplaza los marcadores de posición en el archivo config con estos valores. Guarda el archivo con un tipo de archivo YAML reemplazando la extensión de archivo .txt por .yaml.

Marcador de posición
Descripción

{Namespace}

El namespace que creaste para el Operador de Kubernetes. El namespace por defecto es mongodb.

{VaultServerAddress}

La dirección que el Operador de Kubernetes debe usar para conectarse a Vault.

{TLSSecret}

Nombre de un secreto que contiene una entrada ca.crt. El contenido del registro ca.crt debe coincidir con el certificado de la CA utilizado para generar los certificados TLS de Vault.

7

Ejecute el siguiente comando para crear un ConfigMap que contenga la información de Vault:

kubectl create configmap secret-configuration --from-file=config.yaml

This creates a ConfigMap named secret-configuration. This ConfigMap contains the contents of the config file.

8

Debes migrar manualmente los siguientes secretos para almacenarlos en Vault:

Para migrar manualmente o crear nuevos secretos, añádelos a Vault. Después de agregarlas a Vault, puedes removerlas de Kubernetes.

Todos los demás secretos que crea el operador de Kubernetes se migran automáticamente, y el operador de Kubernetes utiliza Vault para los nuevos secretos. Los secretos creados por el usuario deben añadirse a Vault.

Nota

cert-manager recrea automáticamente los secretos de Kubernetes que genera si los eliminas de Kubernetes. Debe gestionar manualmente la eliminación de estos secretos o dejar de usar cert-manager para evitar almacenar los secretos en Kubernetes.

Después de configurar la herramienta de almacenamiento secreto para el Operador MongoDB Controllers for Kubernetes, podrás: