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 bases de datos que administra 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 envía los cambios a Ops Manager, que modifica la configuración de la implementación de MongoDB.

El CRD MongoDB admite tres tipos de despliegue. 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 miembro, ya que un conjunto de réplicas te permite agregar miembros en el futuro. En Kubernetes, un recurso Standalone es equivalente a un recurso ReplicaSet con un solo miembro.

Para un recurso Standalone, el operador de Kubernetes implementa un conjunto de réplicas con un único miembro como StatefulSet. El operador de Kubernetes crea el StatefulSet, que contiene la especificación del Pod, y se basa en el controlador StatefulSet de Kubernetes para crear el Pod para esta única instancia mongod.

Para un ReplicaSet recurso, el operador de Kubernetes implementa un conjunto de réplicas como un StatefulSet, con un número de miembros igual al valor de. El operador de Kubernetes se basa en el controlador StatefulSet de Kubernetes para crear un Pod por cada miembro. Cada Pod ejecuta una instancia del agente de MongoDB que gestiona spec.members el mongod proceso en ese Pod.

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

  • Un único StatefulSet para todos los servidores de configuración.

  • Un StatefulSet para todas las instancias mongos

  • Un StatefulSet para cada fragmento

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

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, miembro de fragmento o miembro del servidor de configuración

Cuando se aplica una especificación de recurso personalizado de MongoDB, el operador de Kubernetes implementa cada recurso como un StatefulSet. A continuación, el operador de Kubernetes entra en un bucle de reconciliación continua:

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

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

  3. Se conecta a 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 elemento <project-id>-group-secret exista o lo crea con claves API de Ops Manager.

    • Registra al operador de Kubernetes como observador del ConfigMap y de los secretos de credenciales.

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

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

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

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

    • Cada agente de MongoDB consulta al Administrador de Operaciones para obtener la configuración de automatización.

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

    • Después de recibir la configuración, el agente de MongoDB se 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 las actualizaciones de configuración de automatización a Ops Manager. Cada agente de MongoDB consulta la configuración actualizada y la aplica. Si se modifica algún campo, el operador de Kubernetes realiza una actualización progresiva de los StatefulSets.

  7. Crea o actualiza servicios de Kubernetes:

    • Para ReplicaSet o Standalone: un servicio ClusterIP sin cabeza llamado <resource-name>-svc.

    • Para ShardedCluster:

      • mongos: utiliza el nombre en spec.service o <resource-name>-svc.

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

      • Cada fragmento: <resource-name>-sh.

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

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

El siguiente diagrama ilustra el flujo de reconciliación para clústeres fragmentados:

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

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

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

  2. Se conecta con Ops Manager, lee la organización y el proyecto, y verifica la clave secreta 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 elimina el nombre anterior y agrega uno nuevo.

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

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