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

Arquitectura de recursos de bases de datos MongoDB

El recurso personalizado de MongoDB define las implementaciones de la base de datos que gestiona el operador de Kubernetes. Las especificaciones de su recurso personalizado definen estos recursos, y el operador de Kubernetes los supervisa. Cuando actualiza la especificación de un recurso, el operador de Kubernetes transmite los cambios a MongoDB Ops Manager, que modifica la configuración de la implementación de MongoDB.

El CRD MongoDB admite tres tipos de implementación. El siguiente diagrama ilustra la composición de cada uno:

Diagrama que muestra la arquitectura de alto nivel de los recursos de MongoDB en MongoDB Controllers for Kubernetes Operator
haga clic para ampliar

Advertencia

El operador de Kubernetes no es compatible con nodos árbitros.

Aunque puedes implementar un recurso Standalone, te recomendamos que implementes un recurso ReplicaSet con un solo nodo, ya que un set de réplicas te permite agregar nodos en el futuro. En Kubernetes, un recurso Standalone es equivalente a un recurso ReplicaSet con un solo nodo.

Para un recurso Standalone, el operador de Kubernetes implementa un set de réplicas con un solo nodo como un StatefulSet. El operador de Kubernetes crea el StatefulSet, que contiene la especificación del Pod, y depende del controlador StatefulSet de Kubernetes para crear el Pod para esta única instancia mongod.

Para un recurso ReplicaSet, el operador de Kubernetes implementa un set de réplicas como un StatefulSet, con un número de nodos igual al valor de spec.members. El operador de Kubernetes depende del controlador StatefulSet de Kubernetes para crear un Pod por nodo. Cada Pod ejecuta una instancia de MongoDB Agent que gestiona el proceso mongod en ese Pod.

Un recurso ShardedCluster consta de servidores de configuración, instancias mongos y nodos de particiones. El operador de Kubernetes implementa:

  • Un StatefulSet para todos los servidores de configuración

  • Un StatefulSet para todas las instancias de mongos

  • Un StatefulSet para cada partición

El operador de Kubernetes se basa en el controlador StatefulSet de Kubernetes para crear un Pod en cada StatefulSet. Para un clúster particionado con 2 particiones, esto significa 4 StatefulSets en total (1 para servidores de configuración + 1 para mongos + 2 para particiones).

Tipo de implementación
StatefulSets
Tamaño de StatefulSet

Autónomo

1

1 Pod

Set de réplicas

1

1 Pod por nodo

Clúster fragmentado

<numberOfShards> + 2

1 Pod por mongos, nodo de partición o nodo de servidor de configuración

Cuando aplica una especificación de recurso personalizado de MongoDB, el operador de Kubernetes implementa cada recurso como un StatefulSet. El operador de Kubernetes entra entonces en un bucle de reconciliación continuo:

  1. Lee la configuración del proyecto del ConfigMap especificado en spec.opsManager.configMapRef.name.

  2. Lee las credenciales de la API del secreto especificado en spec.credentials o de su herramienta de almacenamiento de secretos.

  3. Se conecta a MongoDB Ops Manager y realiza lo siguiente:

    • Lee la organización desde el orgId en el ConfigMap.

    • Lee o crea el proyecto especificado en projectName.

    • Verifica que el <project-id>-group-secret exista o lo crea con las claves de API de MongoDB Ops Manager.

    • Registra el operador de Kubernetes como observador de ConfigMap y Secrets de credenciales.

  4. Verifica los certificados TLS y X.509 , si están habilitados:

    • Para set de réplicas: busca certificados en <prefix>-<resource-name>-cert.

    • Para clústeres particionados: busca certificados en <prefix>-<resource-name>-x-cert (por partición), <prefix>-<resource-name>-config-cert (servidores de configuración) y <prefix>-<resource-name>-mongos-cert (instancias de mongos).

  5. Crea o actualiza StatefulSets. El número depende del tipo de implementación. En este punto, cada Pod ejecuta un MongoDB Agent, pero aún no contiene instancias de mongod.

    • Cada MongoDB Agent sondea Ops Manager para obtener la configuración de automatización.

    • En los contenedores no estáticos, el MongoDB Agent descarga los binarios de MongoDB con la versión especificada en spec.version.

    • Después de recibir la configuración, el MongoDB Agent inicia mongod.

    • El operador de Kubernetes genera PersistentVolumeClaims para cada Pod (excepto los Pods mongos), a menos que spec.persistent sea false.

  6. Envía actualizaciones de configuración de automatización a Ops Manager. Cada MongoDB Agent sondea la configuración actualizada y la aplica. Si cambia algún campo, el operador de Kubernetes realiza una actualización gradual de los StatefulSets.

  7. Crea o actualiza servicios de Kubernetes:

    • Para ReplicaSet o Standalone: un servicio ClusterIP sin interfaz gráfica denominado <resource-name>-svc.

    • Para ShardedCluster:

      • mongosutiliza el nombre en spec.service o <resource-name>-svc.

      • Config servers: <resource-name>-cs.

      • Cada partición: <resource-name>-sh.

El siguiente diagrama ilustra el flujo de reconciliación para los sets de réplicas:

Diagrama que muestra el flujo de reconciliación del set de réplicas
haga clic para ampliar

El siguiente diagrama ilustra el flujo de conciliación para clústeres particionados:

Diagrama que muestra el flujo de reconciliación del clúster particionado
haga clic para ampliar

Si el método de autenticación de usuario es SCRAM, el recurso MongoDBUser depende de un secreto que almacena las credenciales del usuario. El operador de Kubernetes supervisa el secreto en busca de cambios y se concilia de la siguiente manera:

  1. Determina el recurso del usuario de MongoDB a partir de spec.MongoDBResourceRef.name.

  2. Se conecta a MongoDB Ops Manager, lee la organización y el Proyecto, y verifica el secreto del agente.

  3. Actualiza las credenciales del usuario en Ops Manager o crea un nuevo usuario si no existe. Si el nombre de usuario ha cambiado, el operador de Kubernetes remueve el nombre anterior y agrega uno nuevo.

El siguiente diagrama ilustra el flujo de reconciliación MongoDBUser:

Diagrama que muestra el flujo de conciliación de MongoDBUser
haga clic para ampliar