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

Especificación de recursos de la base de datos MongoDB

Nota

En cualquier lugar de esta página donde diga Ops Manager, puedes sustituir Cloud Manager.

El Controladores de MongoDB para el operador de Kubernetes crea statefulSets de Kubernetes a partir de archivos de especificaciones que usted guarda.

El Operador de Kubernetes crea recursos específicos de MongoDB en Kubernetes como recursos personalizados.

Para administrar estos recursos personalizados, utilice el siguiente proceso:

  1. Cree o actualice una especificación de recursos MongoDB.

  2. Controladores de MongoDB directos para el operador de Kubernetes para aplicar en tu entorno de Kubernetes. Como resultado, el Operador de Kubernetes realiza estas acciones:

    • Crea los statefulSets definidos, servicios y otros recursos de Kubernetes.

    • Actualiza la configuración de implementación de Ops Manager para reflejar los cambios.

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

Cada recurso MongoDB utiliza una especificación de objeto en YAML para definir las características y configuraciones del objeto MongoDB: autónomo, set de réplicas y clúster.

Cada tipo de recurso debe utilizar la siguiente configuración:

apiVersion

Tipo: string

Versión del esquema de recursos MongoDB.

kind

Tipo: string

Tipo de recurso MongoDB que se desea crear. Establece esto en MongoDB

metadata.name

Tipo: string

Nombre del recurso MongoDB que creas.

Los nombres de recursos deben tener 44 caracteres o menos.

spec.credentials

Tipo: string

Obligatorio. Nombre del secreto de Kubernetes que creaste como Ops Manager API credenciales de autenticación para que Kubernetes operador se comunique con Cloud Manager u Ops Manager.

El objeto secreto de Kubernetes de Ops Manager que contiene las credenciales debe estar en el mismo namespace que el recurso que se quiere crear.

Importante

El operador gestiona los cambios en el secreto.

El operador de Kubernetes rastrea cualquier cambio en el Secreto y reconcilia el estado del recurso MongoDB.

spec.persistent

Tipo: booleano

Por defecto: true

ADVERTENCIA: Otorgue a sus contenedores permiso para escribir en su Volumen Persistente. El Operador de Kubernetes establece fsGroup = 2000, runAsUser = 2000 y runAsNonRoot = true en securityContext. El Operador de Kubernetes establece fsgroup igual a runAsUser para que el volumen sea escribible para el usuario que ejecuta el proceso principal en el contenedor. Para obtener más información, consulte Configurar un Contexto de Seguridad para un Pod o Contenedor y la sección relacionada en la documentación de Kubernetes. Si la redistribución del recurso no soluciona los problemas con su Volumen Persistente, póngase en contacto con el Soporte de MongoDB.

Si no utiliza volúmenes persistentes, los gráficos Disk Usage y Disk IOPS no se podrán mostrar ni en la pestaña Processes de la página Deployment ni en la página Metrics al revisar los datos de esta implementación.

spec.type

Tipo: string

Tipo de recurso MongoDB a crear. Los valores aceptados son:

  • Standalone

  • ReplicaSet

  • ShardedCluster

spec.version

Tipo: string

Versión de MongoDB que instalaste en este recurso MongoDB.

El formato debe ser X.Y.Z para la Community Edition y X.Y.Z-ent para la edición Enterprise.

Importante

Asegúrate de elegir una versión compatible de MongoDB Server.

Las versiones compatibles difieren según la imagen base que utiliza el recurso de base de datos de MongoDB.

Nota

Si actualiza este valor a una versión posterior de MongoDB para sus recursos de base de datos, la compatibilidad de características entre versiones permanece en la versión de MongoDB desde la que está actualizando para darle la opción de degradar si es necesario. Si desea que la compatibilidad de características entre versiones coincida con la nueva versión de MongoDB, debe establecer manualmente spec.featureCompatibilityVersion en la nueva versión o en AlwaysMatchVersion. Para aprender más, consulte spec.featureCompatibilityVersion.

Cada recurso debe usar una de las siguientes configuraciones:

spec.opsManager.configMapRef.name

Tipo: string

Nombre del ConfigMap con la configuración de conexión de Cloud Manager u Ops Manager. La configuración spec.cloudManager.configMapRef.name es un alias para esta configuración y puede usarse en su lugar.

Este valor debe existir en el mismo espacio de nombres que el recurso que quieres crear.

Importante

El operador gestiona los cambios en el ConfigMap

El Operador de Kubernetes rastrea cualquier cambio en el ConfigMap y reconcilia el estado del recurso MongoDB.

spec.cloudManager.configMapRef.name

Tipo: string

Alias para spec.opsManager.configMapRef.name.

Cada tipo de recurso puede usar la(s) siguiente(s) configuración(es):

metadata.annotations.mongodb.com/v1.architecture

Tipo: string

Determina la arquitectura de contenedor utilizada por una implementación específica:

Los valores aceptados son:

  • static

  • non-static

apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-project
annotations:
mongodb.com/v1.architecture: "static"
spec.agent.backupAgent.logRotate

Tipo: Objeto

Umbrales a partir de los cuales el MongoDB Agent rota el registro de copia de seguridad.

spec.agent.backupAgent.logRotate.sizeThresholdMB

Tipo: entero

Tamaño máximo, en MB, de una entrada de registro de copia de seguridad antes de que el MongoDB Agent rote los registros.

spec.agent.backupAgent.logRotate.timeThresholdHrs

Tipo: entero

Número de horas después de las cuales el MongoDB Agent rota el archivo de entrada de registro de copia de seguridad.

spec.agent.mongod.auditlogRotate

Tipo: Objeto

Objeto que contiene la configuración de rotación del registro de auditoría para los procesos de MongoDB.

spec.agent.mongod.auditlogRotate.sizeThresholdMB

Tipo: string

Tamaño máximo de una entrada de registro individual antes de la rotación. La string debe poder convertirse a float64. Se admiten valores fraccionarios de MB.

spec.agent.mongod.auditlogRotate.timeThresholdHrs

Tipo: entero

Número de horas después de las cuales el MongoDB Agent gira el archivo de registro de auditoría.

spec.agent.mongod.auditlogRotate.numUncompressed

Tipo: entero

Número máximo de entradas de registro totales de auditoría que se pueden dejar sin comprimir, incluyendo la entrada de registro actual.

spec.agent.mongod.auditlogRotate.numTotal

Tipo: entero

Número total de archivos de registro de auditoría que Ops Manager conserva. Si no estableces este valor, el número total de archivos de entrada de registro de auditoría por defecto es 0.

spec.agent.mongod.auditlogRotate.percentOfDiskspace

Tipo: string

Porcentaje máximo del espacio total en disco que deben ocupar estas entradas de registro. La string debe poder convertirse a float64.

spec.agent.mongod.logRotate

Tipo: Objeto

Umbrales después de los cuales Ops Manager rota los registros de MongoDB de un proceso.

spec.agent.mongod.logRotate.sizeThresholdMB

Tipo: string

Tamaño máximo de una entrada de registro individual antes de la rotación. La string debe poder convertirse a float64. Se admiten valores fraccionarios de MB.

spec.agent.mongod.logRotate.timeThresholdHrs

Tipo: entero

Duración máxima en horas para una entrada de registro individual antes de la siguiente rotación. El tiempo es desde la última rotación.

Ops Manager rota la entrada de registro una vez que el archivo cumple con timeThresholdHrs o con la spec.agent.mongod.logRotate.sizeThresholdMB.

spec.agent.monitoringAgent.logRotate

Tipo: Objeto

Umbrales después de los cuales el MongoDB Agent rota el registro de supervisión.

spec.agent.monitoringAgent.logRotate.sizeThresholdMB

Tipo: entero

Tamaño máximo en MB para una entrada de registro individual antes de que el MongoDB Agent rote el registro de supervisión.

spec.agent.monitoringAgent.logRotate.timeThresholdHrs

Tipo: entero

Número de horas después de las cuales el Agente de MongoDB rota el registro de supervisión.

spec.agent.readinessProbe.environmentVariables

Tipo: Objeto

Configura las siguientes variables de entorno utilizadas para controlar las entradas de registro del Readiness Probe:

apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-project
spec:
agent:
readinessProbe:
environmentVariables:
READINESS_PROBE_LOGGER_BACKUPS: 1
READINESS_PROBE_LOGGER_MAX_SIZE: 10
READINESS_PROBE_LOGGER_MAX_AGE: 3
READINESS_PROBE_LOGGER_COMPRESS: true
MDB_WITH_AGENT_FILE_LOGGING: false
LOG_FILE_PATH: /var/log/mongodb-mms-automation/readiness.log
spec.featureCompatibilityVersion

Tipo: string

Por defecto, la versión principal anterior de MongoDB tras la actualización de MongoDB.

Limita los cambios en los datos que ocurren con una nueva actualización a una nueva versión principal. Por ejemplo, si actualizas de MongoDB 5.0 a MongoDB 6.0, la compatibilidad de características entre versiones se mantiene en 5.0 para que tengas la opción de realizar un downgrade si es necesario.

Si quieres que la compatibilidad de características entre versiones coincida con la nueva versión de MongoDB, debes configurar manualmente featureCompatibilityVersion a la nueva versión. Por ejemplo, featureCompatibilityVersion: 6.0.

Alternativamente, puedes activar la opción AlwaysMatchVersion para actualizar automáticamente la compatibilidad de características entre versiones para que coincida con la versión de MongoDB durante las actualizaciones. Por ejemplo, featureCompatibilityVersion: AlwaysMatchVersion.

Para aprender más sobre la compatibilidad de funcionalidades, consulte setFeatureCompatibilityVersion en el Manual de MongoDB.

spec.clusterDomain

Tipo: string

por defecto: clúster.local

Nombre de dominio del clúster de Kubernetes donde se implementa el Operador de Kubernetes. Cuando Kubernetes crea un StatefulSet, Kubernetes asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el Operador de Kubernetes calcula el FQDN para cada pod usando un nombre de clúster proporcionado. Kubernetes no proporciona una API para query estos nombres de host.

Advertencia

Debe configurar spec.clusterDomain si su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminado cluster.local. Si no utiliza el dominio predeterminado ni configura la opción spec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.

spec.clusterName

Tipo: string

por defecto: clúster.local

Importante

spec.clusterName está obsoleto

Utiliza spec.clusterDomain en su lugar.

Nombre de dominio del clúster de Kubernetes donde se implementa el Operador de Kubernetes. Cuando Kubernetes crea un StatefulSet, Kubernetes asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el Operador de Kubernetes calcula el FQDN para cada pod usando un nombre de clúster proporcionado. Kubernetes no proporciona una API para query estos nombres de host.

Advertencia

Debe configurar spec.clusterDomain si su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminado cluster.local. Si no utiliza el dominio predeterminado ni configura la opción spec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.

metadata.namespace

Tipo: string

Kubernetes namespace (espacio de nombres), donde se crea este recurso de MongoDB y otros objetos.

spec.service

Tipo: string

Por defecto: <resource_name>+"-svc" y <resource_name>+"-svc-external".

Importante

spec.service está Deprecated

Utiliza spec.statefulSet.spec.serviceName en su lugar.

Nombre del servicio de Kubernetes que se creará o se utilizará para un StatefulSet. Si el servicio con este nombre ya existe, el MongoDB Controllers for Kubernetes operador no lo borra ni lo vuelve a crear. Esta configuración permite crear sus propios servicios personalizados y permite que el Operador de Kubernetes los reutilice.

spec.logLevel

Tipo: string

por defecto: INFO

Configura el nivel de registro del agente de automatización dentro del Pod. Los valores aceptados incluyen:

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

spec.security.authentication.ignoreUnknownUsers

Tipo: booleano

Por defecto: false

Determina si se pueden modificar los usuarios de la base de datos que no fueron configurados a través de Kubernetes operador, Cloud Manager u Ops Manager.

Para gestionar usuarios de base de datos directamente a través de la mongod o el mongos, establezca esta configuración en true.

Otros ajustes que puedes y debes usar en una especificación de recurso MongoDB dependen del elemento de implementación de MongoDB que deseas crear:

Nota

Todas las Configuraciones autónomas también aplican a los recursos de sets de réplicas.

spec.additionalMongodConfig

tipo: colección

Opciones de configuración adicionales con las que deseas iniciar los procesos de MongoDB.

El operador de Kubernetes admite todas las opciones de configuración que admite la versión de MongoDB que se implementa a través del MongoDB Agent, excepto que el operador de Kubernetes anula los valores que proporciona para cualquiera de las siguientes opciones:

Para obtener más información sobre las opciones de configuración que gestiona el operador de Kubernetes, consulte Configuraciones exclusivas del operador de Kubernetes de MongoDB.

Para saber qué opciones de configuración puedes utilizar, consulta Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.

spec.agent

tipo: colección

Configuración del MongoDB Agent para el recurso de base de datos MongoDB.

spec.agent.startupOptions

tipo: colección

Configuraciones de MongoDB Agent con las que desea iniciar el recurso de base de datos MongoDB.

Debe proporcionar la configuración de MongoDB Agent como pares clave-valor. Los valores deben ser cadenas.

Para obtener una lista de la configuración admitida de MongoDB Agent, consulta:

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: my-standalone
6spec:
7 version: "8.0.0"
8 service: my-service
9
10 opsManager:
11 configMapRef:
12 name: my-project
13 credentials: my-credentials
14 type: Standalone
15
16 persistent: true
17 agent:
18 startupOptions:
19 maxLogFiles: "30"
20 dialTimeoutSeconds: "40"
21...
spec.podSpec

Tipo: Objeto

Objeto que contiene las especificaciones de los Pods de CustomResourceDefinition de MongoDB.

spec.externalAccess

tipo: colección

Especificación para exponer su clúster a conexiones externas. Para aprender cómo conectarse a su recurso de MongoDB desde fuera del clúster de Kubernetes, consulte Conectase a un recurso de base de datos MongoDB desde fuera de Kubernetes.

Si añades spec.externalAccess, el Operador de Kubernetes crea un servicio externo para cada Pod en un set de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada pod de la base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que emparejan el servicio externo con un Pod específico.

Si agrega esta configuración sin ningún valor, el Operador de Kubernetes crea un servicio externo con los siguientes valores por defecto:

Campo
Valor
Descripción

Name

<pod-name>-svc-external

Nombre del Servicio externo. No puedes cambiar este valor.

Type

LoadBalancer

Crea un servicio externo LoadBalancer.

Port

<Port Number>

Un puerto para mongod.

publishNotReadyAddress

true

Especifica que registros DNS se crean incluso si el Pod no está listo. No configures false para ningún Pod de base de datos.

Nota

Si estableces spec.externalAccess.externalDomain, el servicio externo añade otro puerto (Port Number + 1) para copias de seguridad.

spec.externalAccess.externalService

tipo: colección

Especificación para anular los valores por defecto en spec.externalAccess.

Al configurar el ajuste spec.externalAccess, el operador de Kubernetes crea automáticamente un servicio de balanceador de carga externo con valores predeterminados. Puede anular ciertos valores o agregar nuevos según sus necesidades. Por ejemplo, si desea crear servicios NodePort y no necesita un balanceador de carga, debe configurar anulaciones en su especificación de Kubernetes:

externalAccess:
externalService:
annotations:
# cloud-specific annotations for the service
spec:
type: NodePort # default is LoadBalancer
# you can specify other spec overrides if necessary

Para obtener más información sobre la especificación de Kubernetes, consulta ServiceSpec en la documentación de Kubernetes.

spec.externalAccess.externalService.annotations

tipo: colección

Pares clave-valor que le permiten agregar configuraciones específicas del proveedor de nube a todos los clústeres de su implementación. Para obtener más información, consulte anotaciones y la documentación de su proveedor de nube de Kubernetes.

Puedes usar anotaciones para especificar los valores de marcador de posición para los servicios externos utilizados por los implementaciones de Kubernetes operador. El operador de Kubernetes sustituye automáticamente estos valores por los valores correctos, tal como se describe en la siguiente tabla. Utilizar marcadores de posición permite proporcionar anotaciones específicas en cada servicio para un Pod específico.

Valor
Descripción

{resourceName}

{namespace}

{podIndex}

Índice del Pod asignado por el StatefulSet y dirigido por el servicio externo actual.

{podName}

Igual a {resourceName}-{podIndex}.

{statefulSetName}

El StatefulSet. Igual a {resourceName}.

{externalServiceName}

Nombre generado del servicio externo, basado en los valores de los marcadores de posición que hayas especificado. Igual a {resourceName}-{podIndex}-svc-external.

{mongodProcessDomain}

El nombre de dominio del servidor que aloja el proceso mongod. Igual a spec.externalAccess.externalDomain si se especifica. De lo contrario, igual al dominio utilizado para el mongod FQDN del proceso.

Por ejemplo, para el nombre de host del proceso mdb-rs-1.example.com, example.com es el nombre de dominio.

{mongodProcessFQDN}

El nombre de host del proceso mongod establecido en la configuración de automatización.

El nombre de host del proceso depende de la configuración de la implementación. Si ha configurado su implementación para usar external domains, el nombre de host del proceso utiliza el siguiente formato:

{resourceName}-{podIndex}.{mongodProcessDomain}

Por ejemplo: mdb-rs-1.example.com

Si tu implementación no utiliza dominios externos, el nombre de host del proceso utiliza el siguiente formato:

{resourceName}-{podIndex}.{resourceName}-{podIndex}-svc.{namespace}.svc.cluster.local

Por ejemplo: mdb-rs-1.mdb-rs-1-svc.ns.svc.cluster.local

Nota

Debes utilizar únicamente los valores de sustitución conocidos especificados en la tabla y asegurarte de que tus marcadores de posición no utilicen valores vacíos o nulos. Tampoco puedes utilizar un placeholder específico para implementaciones multi clúster de Kubernetes en una única implementación de recurso de MongoDB.

De lo contrario, el operador de Kubernetes devuelve un error. Por ejemplo, se puede encontrar el siguiente mensaje de error:

error replacing placeholders in map with key=external-dns.alpha.kubernetes.io/hostname, value={resourceName}-{podIndex}-{unknownPlaceholder}.{clusterName}-{clusterIndex}.example.com: missing values for the following placeholders: {clusterName}, {clusterIndex}, {unknownPlaceholder}``

Ejemplo

El siguiente ejemplo especifica los marcadores de posición {resourceName}, {podIndex} y {namespace}:

apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: mdb-rs
namespace: ns
spec:
replicas: 3
externalAccess:
externalService:
annotations:
external-dns.alpha.kubernetes.io/hostname: {resourceName}-{podIndex}-{namespace}.example.com

El operador de Kubernetes completa automáticamente las anotaciones para los servicios externos en función del valor adecuado para cada marcador de posición. Por ejemplo:

mdb-rs-0-svc-external:
annotations:
external-dns.alpha.kubernetes.io/hostname: mdb-rs-0-ns.example.com
mdb-rs-1-svc-external:
annotations:
external-dns.alpha.kubernetes.io/hostname: mdb-rs-1-ns.example.com
mdb-rs-2-svc-external:
annotations:
external-dns.alpha.kubernetes.io/hostname: mdb-rs-2-ns.example.com
spec.externalAccess.externalService.spec

tipo: colección

Configuración para ServiceSpec. Para obtener más información, consulte spec.externalAccess.externalService.

spec.podSpec.persistence.single

tipo: colección

Haga que el Operador de Kubernetes cree un Reclamo de Volumen Persistente y monte los tres directorios de datos, diario y registros en un mismo Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puedes definir esta colección o bien las persistence.multiple colecciones pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Tamaño mínimo de Volumen Persistente que debe montarse. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16 Gi.

Por ejemplo, si una implementación autónoma requiere 60 gigabytes de espacio de almacenamiento, establezca este valor en 60Gi.

storageClass

string

Tipo de almacenamiento especificado en un Reclamo de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.podSpec.persistence.multiple.data

tipo: colección

El Operador de Kubernetes crea una Solicitud de Volumen Persistente y monta un directorio para datos en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación independiente en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16 Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para la implementación autónoma. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.podSpec.persistence.multiple.journal

tipo: colección

Permite que Kubernetes Operator cree un Reclamación de volumen persistente y monte un directorio para el diario en su propio Volumen persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación independiente en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 1Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para la implementación autónoma. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.podSpec.persistence.multiple.logs

tipo: colección

Hace que el operador de Kubernetes cree un Reclamo de volumen persistente y monte un directorio para los registros en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación independiente en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 3Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para la implementación autónoma. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.podSpec.podTemplate

tipo: colección

Plantilla para los Pods de Kubernetes que los MongoDB Controllers for Kubernetes Operator crea para los recursos de la base de datos MongoDB.

Los valores de la plantilla tienen prioridad sobre los valores especificados en spec.podSpec.

Nota

El Operador de Kubernetes no valida los campos que se proporcionan en spec.podSpec.podTemplate.

spec.podSpec.podTemplate.metadata

tipo: colección

Metadatos para los Pods de Kubernetes que los Controladores de MongoDB para el Operador de Kubernetes crean para los recursos de la base de datos MongoDB.

Para revisar qué campos puedes agregar a spec.podSpec.podTemplate.metadata, consulta la documentación de Kubernetes.

spec.podSpec.podTemplate.spec

tipo: colección

Especificaciones de los Pods de Kubernetes que los Controladores de MongoDB del Operador de Kubernetes crean para recursos de bases de datos MongoDB.

Para revisar los campos que puedes añadir a spec.podSpec.podTemplate.spec, consulta la Kubernetes PodSpec v1 Core API.

Nota

Cuando añades contenedores a spec.podSpec.podTemplate.spec.containers, el operador de Kubernetes los añade al pod de Kubernetes. Estos contenedores se añaden a los contenedores de recursos de bases de datos de MongoDB en el pod.

Utiliza esta configuración para especificar la asignación de CPU y RAM para cada pod. Para obtener ejemplos, consulta las muestras en GitHub.

spec.podSpec.podTemplate.spec.affinity.nodeAffinity

Tipo: Estructura

Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.

Para un rendimiento de lectura-escritura optimizado, utiliza reglas de afinidad de nodos que restrinjan los Pods para ejecutarse en nodos en particular, o para dar preferencia a la ejecución en nodos en particular.

spec.podSpec.podTemplate.spec.affinity.podAffinity

Tipo: Estructura

Regla de Kubernetes para determinar si varios recursos MongoDB Pods deben estar ubicados junto con otros Pods. Para obtener más información sobre los casos de uso, consulta afinidad y anti-afinidad en la documentación de Kubernetes.

spec.podSpec.podTemplate.spec.affinity.podAntiAffinity

Tipo: Estructura

Default: kubernetes.io/hostname

Establece una regla para distribuir Pods que alojan el recurso MongoDB en diferentes ubicaciones. Una ubicación puede ser un solo nodo, rack o región. De forma predeterminada, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.

spec.podSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey

Tipo: Estructura

Default: kubernetes.io/hostname

Esta clave define qué etiqueta se usa para determinar a qué dominio de la topología pertenece un nodo.

Nota

Todas las Configuraciones autónomas también aplican a los recursos de sets de réplicas.

Las siguientes configuraciones se aplican a los tipos de recursos del conjunto de réplicas:

spec.backup

tipo: colección

El contenedor de colección de spec.backup.mode, que permite realizar copias de seguridad continuas de recursos de MongoDB en Kubernetes operador.

spec.backup.assignmentLabels

Tipo: arreglo

Una lista de etiquetas separadas por comas para asignar daemons de copias de seguridad, almacenes de oplog, almacenes de bloques, S3 almacenamientos de snapshot y almacenes de sistemas de archivos a proyectos o grupos específicos. Utilice etiquetas de asignación para identificar que los almacenes de copia de seguridad específicos están asociados con proyectos particulares.

Si se establecen etiquetas de asignación mediante el operador de Kubernetes, los valores que se establecen en el archivo de configuración de Kubernetes para las etiquetas de asignación sobrescriben los valores definidos en la interfaz de usuario del Ops Manager. Las etiquetas de asignación que no configuraste usando el Operador de Kubernetes continúan usando los valores configurados en la Interfaz de usuario de Ops Manager.

Nota

Si estableces este parámetro, la clave de la API vinculada con el valor de spec.credentials debe tener un rol de Global Owner.

spec.backup.mode

Tipo: string

Permite copias de seguridad continuas para un recurso de MongoDB. Los valores posibles son enabled, disabled y terminated.

Nota

La configuración spec.backup.mode depende de la copia de seguridad habilitada en el MongoDB Ops Manager y requiere que el valor spec.backup.enabled en la especificación de recursos del MongoDB Ops Manager esté configurado en true.

Después de habilitar las copias de seguridad continuas para su recurso MongoDB con spec.backup.mode, puede verificar el estado de la copia de seguridad.

spec.backup.encryption

Tipo: Objeto

Un objeto que contiene la configuración de cifrado de copias de seguridad.

spec.backup.encryption.kmip

Tipo: Objeto

Object that contains the KMIP backup encryption configuration settings. To learn more, see Configure KMIP Backup Encryption for Ops Manager.

spec.backup.encryption.kmip.client

Tipo: Objeto

Objeto que contiene los ajustes de configuración del cliente de cifrado de copia de seguridad KMIP.

spec.backup.encryption.kmip.client.clientCertificatePrefix

Tipo: string

spec.backup.snapshotSchedule

tipo: colección

Contenedor de colección para la configuración del cronograma de snapshot de copia de seguridad continuas para recursos de MongoDB en Kubernetes operador.

spec.backup.snapshotSchedule.snapshotIntervalHours

Tipo: número

Número de horas entre instantáneas. Puede establecer un valor de 6, 8, 12 o 24.

spec.backup.snapshotSchedule.snapshotRetentionDays

Tipo: número

Número de días para mantener las snapshot recientes. Puedes establecer un valor entre 2 y 5, inclusive.

spec.backup.snapshotSchedule.dailySnapshotRetentionDays

Tipo: número

Número de días para conservar las instantáneas diarias. Puede establecer un valor entre 1 y 365, inclusivo. Establecer el valor en 0 desactiva esta regla.

spec.backup.snapshotSchedule.weeklySnapshotRetentionWeeks

Tipo: número

Número de semanas para conservar los snapshots semanales. Puedes establecer un valor entre 1 y 52, inclusive. Configurar el valor a 0 deshabilita esta regla.

spec.backup.snapshotSchedule.monthlySnapshotRetentionMonths

Tipo: número

Número de meses para conservar copias de seguridad mensuales. Puede establecer un valor entre 1 y 36, inclusivo. Establecer el valor en 0 desactiva esta regla.

spec.backup.snapshotSchedule.pointInTimeWindowHours

Tipo: número

Número de horas en el pasado para las que puedes crear una snapshot puntual.

spec.backup.snapshotSchedule.referenceHourOfDay

Tipo: número

Hora UTC del día para el cronograma de snapshot utilizando un reloj de 24 horas. Puede establecer un valor entre 0 y 23, inclusive.

spec.backup.snapshotSchedule.referenceMinuteOfHour

Tipo: número

Minuto UTC de la hora para cronograma snapshot. Puede establecer un valor entre 0 y 59, ambos inclusive.

spec.backup.snapshotSchedule.fullIncrementalDayOfWeek

Tipo: string

Día de la semana en que Ops Manager toma una snapshot completa. Esta configuración garantiza una copia de seguridad completa reciente. Ops Manager establece el valor por defecto en SUNDAY.

spec.clusterName

Tipo: string

por defecto: clúster.local

Importante

spec.clusterName está obsoleto

Utiliza spec.clusterDomain en su lugar.

Nombre de dominio del clúster de Kubernetes donde se implementa el Operador de Kubernetes. Cuando Kubernetes crea un StatefulSet, Kubernetes asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el Operador de Kubernetes calcula el FQDN para cada pod usando un nombre de clúster proporcionado. Kubernetes no proporciona una API para query estos nombres de host.

Advertencia

Debe configurar spec.clusterDomain si su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminado cluster.local. Si no utiliza el dominio predeterminado ni configura la opción spec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.

spec.connectivity.replicaSetHorizons

tipo: colección

Permite proporcionar diferentes configuraciones de DNS para las aplicaciones cliente y los Agentes de MongoDB. El Operador Kubernetes utiliza DNS de horizonte dividido para los miembros del set de réplicas. Esta funcionalidad permite la comunicación tanto dentro del clúster de Kubernetes como desde fuera de Kubernetes.

Puede agregar varios mapeos externos por host.

Requisitos de horizonte dividido:

Ejemplo

Los nodos del set de réplicas se comunican entre sí mediante los nombres de host configurados en la configuración de replicación (members[n].host). El horizonte example-website proporciona direcciones alternativas para los clientes que se conectan a través de ese horizonte.

Los nombres de los horizontes mencionados son arbitrarios para los propósitos de este ejemplo. Puedes poner el nombre que quieras a tu horizonte, pero asegúrate de que el nombre del horizonte sea el mismo para todos los hostnames que forman parte de ese horizonte.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "8.0.0"
9 type: ReplicaSet
10 opsManager:
11 configMapRef:
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 persistent: true
15 security:
16 tls:
17 enabled: true
18 connectivity:
19 replicaSetHorizons:
20 - "example-website": "web1.example.com:30907"
21 - "example-website": "web2.example.com:32350"
22 - "example-website": "web3.example.com:31185"
23...
spec.externalAccess.externalDomain

Tipo: string

Un dominio externo utilizado para exponer externamente su implementación de set de réplicas.

Por defecto, cada nodo del set de réplicas utiliza el FQDN (*.svc.cluster.local) del Pod de Kubernetes como nombre de host por defecto. Sin embargo, si agregas un dominio externo a esta configuración, el set de réplicas utiliza un nombre de host que es un subdominio del dominio especificado en su lugar. Este nombre de host utiliza el siguiente formato:

<replica-set-name>-<pod-idx>.<externalDomain>

Por ejemplo:

replica-set-1.example.com

Después de implementar el set de réplicas con esta configuración, el Kubernetes operador utiliza el nombre de host con el dominio externo para anular el campo processes[n].hostname en la configuración de automatización de MongoDB Ops Manager configuración de automatización. Luego, el MongoDB Agent utiliza este nombre de host para conectarse a mongod.

Para especificar otros nombres de host para conectarse al set de réplicas, puede utilizar la configuración de spec.connectivity.replicaSetHorizons. Sin embargo, las siguientes conexiones siguen utilizando el nombre de host con el dominio externo:

  • El MongoDB Agent para conectarse a mongod.

  • mongod para conectarse a otras mongod instancias.

ADVERTENCIA: La especificación de este campo cambia la forma en que Ops Manager registra los procesos de mongod. No puede cambiar el valor de este campo ni de ninguno de los processes[n].hostname campos en la configuración de automatización de MongoDB Ops Manager para una implementación de set de réplicas en ejecución.

spec.members

Tipo: entero

Requerido. Número de nodos del set de réplicas.

spec.memberConfig

tipo: colección

Especificación para cada miembro del set de réplicas de MongoDB implementado a partir del recurso MongoDB.

El orden de los elementos en el arreglo debe reflejar el orden de los miembros en el set de réplicas. Por ejemplo, el primer elemento del arreglo afecta al Pod en el índice 0, el segundo elemento afecta al índice 1 y así sucesivamente.

Ejemplo

Considere la siguiente especificación de ejemplo para un conjunto de réplicas de tres nodos:

spec:
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- votes: 1
priority: "1.5"
tags:
tag2: "value2"
environment: "prod"
- votes: 0
priority: "0.5"
tags:
tag2: "value2"
environment: "prod"
spec.memberConfig.priority

Tipo: string

Número que indica la probabilidad relativa de que un miembro del conjunto de réplicas de MongoDB se convierta en el primario.

  • Para aumentar la probabilidad relativa de que un miembro del set de réplicas se convierta en el primario, es necesario especificar un valor de priority más alto.

  • Para disminuir la probabilidad relativa de que un miembro del set de réplicas se convierta en el primario, especifica un valor priority más bajo.

Por ejemplo, un nodo con un memberConfig.priority de 1.5 es más probable que se convierta en primario que un nodo con un memberConfig.priority de 0.5.

Un nodo con un memberConfig.priority de 0 no es elegible para convertirse en el titular primario. Para obtener más información, consulta Prioridad de nodos.

spec.memberConfig.tags

Tipo: mapa

Mapa de etiquetas de set de réplicas para dirigir las operaciones de lectura y escritura a nodos específicos de su set de réplicas de MongoDB.

spec.memberConfig.votes

Tipo: número

Determina si un nodo de un set de réplicas de MongoDB puede votar en una elección. Establezca en 1 para permitir que el nodo vote. Establezca en 0 para excluir el nodo de una elección.

La configuración siguiente se aplica únicamente a los tipos de recursos de sets de réplicas:

spec.backup.autoTerminateOnDeletion

Tipo: booleano

Indicador que controla si el operador de Kubernetes detiene y finaliza la copia de seguridad cuando borra un recurso de MongoDB. Si se omite, el valor por defecto es false. Establecer esta marca en true es útil cuando desea borrar el recurso personalizado de MongoDB mientras la configuración de spec.backup.mode está establecida en enabled.

Nota

Todos los ajustes de set de réplicas también se aplican a los recursos de clúster, salvo que se indique lo contrario.

La siguiente configuración se aplica solo a los tipos de recursos de clúster fragmentado:

spec.backup.snapshotSchedule.clusterCheckpointIntervalMin

Tipo: número

Número de minutos entre los puntos de control sucesivos del clúster. Esta configuración solo se aplica a los clústeres fragmentados que ejecutan MongoDB con una versión de compatibilidad de características entre versiones 7.0 o anterior. Este número determina el nivel de detalle de las restauraciones a un punto específico del tiempo para los clústeres. Puede establecer un valor de 15, 30 o 60.

spec.configServerCount

Tipo: entero

Obligatorio. Número de nodos en el servidor de configuración.

spec.configSrv.additionalMongodConfig

tipo: colección

Opciones de configuración adicionales con las que se desee iniciar cada nodo del servidor de configuración.

El operador de Kubernetes admite todas las opciones de configuración que admite la versión de MongoDB que se implementa a través del MongoDB Agent, excepto que el operador de Kubernetes anula los valores que proporciona para cualquiera de las siguientes opciones:

Para obtener más información sobre las opciones de configuración que gestiona el operador de Kubernetes, consulte Configuraciones exclusivas del operador de Kubernetes de MongoDB.

Para saber qué opciones de configuración puedes utilizar, consulta Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.

spec.configSrv.agent

tipo: colección

Configuración del MongoDB Agent para cada nodo del servidor de configuración.

spec.configSrv.agent.startupOptions

tipo: colección

MongoDB Agent settings con la que desea iniciar cada nodo de servidor de configuración.

Debe proporcionar la configuración de MongoDB Agent como pares clave-valor. Los valores deben ser cadenas.

Para obtener una lista de la configuración admitida de MongoDB Agent, consulta:

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: my-sharded-cluster-options
6spec:
7 version: "8.0.0"
8 type: ShardedCluster
9 opsManager:
10 configMapRef:
11 name: my-project
12 credentials: my-credentials
13 persistent: true
14 shardCount: 2
15 mongodsPerShardCount: 3
16 mongosCount: 2
17 configServerCount: 1
18
19 mongos:
20 agent:
21 startupOptions:
22 maxLogFiles: "30"
23
24 configSrv:
25 agent:
26 startupOptions:
27 dialTimeoutSeconds: "40"
28 shard:
29 agent:
30 startupOptions:
31 serverSelectionTimeoutSeconds: "20"
32...
spec.configSrvPodSpec

Tipo: Objeto

El objeto que contiene las especificaciones para los Pods del servidor de configuración de MongoDB CustomResourceDefinition.

spec.configSrvPodSpec.persistence.single

tipo: colección

Haga que el Operador de Kubernetes cree un Reclamo de Volumen Persistente y monte los tres directorios de datos, diario y registros en un mismo Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puedes definir esta colección o bien las persistence.multiple colecciones pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Tamaño mínimo de Volumen Persistente que debe montarse. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 5 Gi.

Por ejemplo, si cada servidor de configuración nodo necesita 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento especificado en un Reclamo de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.configSrvPodSpec.persistence.multiple.data

tipo: colección

El Operador de Kubernetes crea una Solicitud de Volumen Persistente y monta un directorio para datos en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro de servidor de configuración en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16 Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada nodo del servidor de configuración. Puedes crear este tipo de almacenamiento como un objeto StorageClass antes de utilizarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.configSrvPodSpec.persistence.multiple.journal

tipo: colección

Permite que Kubernetes Operator cree un Reclamación de volumen persistente y monte un directorio para el diario en su propio Volumen persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro de servidor de configuración en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 1Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada nodo del servidor de configuración. Puedes crear este tipo de almacenamiento como un objeto StorageClass antes de utilizarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.configSrvPodSpec.persistence.multiple.logs

tipo: colección

Hace que el operador de Kubernetes cree un Reclamo de volumen persistente y monte un directorio para los registros en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro de servidor de configuración en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 3Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada nodo del servidor de configuración. Puedes crear este tipo de almacenamiento como un objeto StorageClass antes de utilizarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.configSrvPodSpec.podTemplate

tipo: colección

Plantilla para los Pods de Kubernetes que el MongoDB Controllers for Kubernetes operador crea para cada servidor de configuración nodo.

Los valores de la plantilla tienen prioridad sobre los valores especificados en spec.configSrvPodSpec.

Nota

El Operador de Kubernetes no valida los campos que se proporcionan en spec.configSrvPodSpec.podTemplate.

spec.configSrvPodSpec.podTemplate.metadata

tipo: colección

Metadatos para los Pods de Kubernetes que el MongoDB Controllers for Kubernetes Operator crea para cada nodo del servidor de configuración.

Para revisar qué campos puedes agregar a spec.configSrvPodSpec.podTemplate.metadata, consulta la documentación de Kubernetes.

spec.configSrvPodSpec.podTemplate.spec

tipo: colección

Especificaciones de los Kubernetes Pods que los controladores de MongoDB para el Operador de Kubernetes crean para cada nodo de servidor de configuración.

Para revisar los campos que puedes añadir a spec.configSrvPodSpec.podTemplate.spec, consulta la Kubernetes PodSpec v1 Core API.

Nota

Cuando añades contenedores a spec.configSrvPodSpec.podTemplate.spec.containers, el Kubernetes operador los agrega al pod de Kubernetes. Estos contenedores se agregan a cada contenedor de nodos del servidor de configuración en el pod.

Utiliza esta configuración para especificar la asignación de CPU y RAM para cada pod. Para obtener ejemplos, consulta las muestras en GitHub.

spec.configSrvPodSpec.podTemplate.spec.affinity.podAffinity

tipo: colección

Regla de Kubernetes para determinar si varios recursos MongoDB Pods deben estar ubicados junto con otros Pods. Para obtener más información sobre los casos de uso, consulta afinidad y anti-afinidad en la documentación de Kubernetes.

spec.configSrvPodSpec.podTemplate.spec.affinity.nodeAffinity

tipo: colección

Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.

Para un rendimiento de lectura-escritura optimizado, utiliza reglas de afinidad de nodos que restrinjan los Pods para ejecutarse en nodos en particular, o para dar preferencia a la ejecución en nodos en particular.

spec.configSrvPodSpec.podTemplate.spec.affinity.podAntiAffinity

Tipo: string

Default: kubernetes.io/hostname

Establece una regla para distribuir Pods que alojan el recurso MongoDB en diferentes ubicaciones. Una ubicación puede ser un solo nodo, rack o región. De forma predeterminada, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.

spec.configSrvPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey

Tipo: string

Default: kubernetes.io/hostname

Esta clave define qué etiqueta se usa para determinar a qué dominio de la topología pertenece un nodo.

spec.mongodsPerShardCount

Tipo: entero

Requerido. Número de nodos por partición.

spec.mongosCount

Tipo: entero

Requerido. Número de mongos instancias en el clúster particionado.

spec.mongos.additionalMongodConfig

tipo: colección

Opciones adicionales de configuración con las que quieres iniciar cada instancia de mongos.

El operador de Kubernetes admite todas las opciones de configuración que admite la versión de MongoDB que se implementa a través del MongoDB Agent, excepto que el operador de Kubernetes anula los valores que proporciona para cualquiera de las siguientes opciones:

Para obtener más información sobre las opciones de configuración que gestiona el operador de Kubernetes, consulte Configuraciones exclusivas del operador de Kubernetes de MongoDB.

Para saber qué opciones de configuración puedes utilizar, consulta Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.

spec.mongos.agent

tipo: colección

Configuración de MongoDB Agent para cada instancia de mongos.

spec.mongos.agent.startupOptions

tipo: colección

Ajustes del MongoDB Agent con los que deseas iniciar cada mongos instancia.

Debe proporcionar la configuración de MongoDB Agent como pares clave-valor. Los valores deben ser cadenas.

Para obtener una lista de la configuración admitida de MongoDB Agent, consulta:

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: my-sharded-cluster-options
6spec:
7 version: "8.0.0"
8 type: ShardedCluster
9 opsManager:
10 configMapRef:
11 name: my-project
12 credentials: my-credentials
13 persistent: true
14 shardCount: 2
15 mongodsPerShardCount: 3
16 mongosCount: 2
17 configServerCount: 1
18
19 mongos:
20 agent:
21 startupOptions:
22 maxLogFiles: "30"
23
24 configSrv:
25 agent:
26 startupOptions:
27 dialTimeoutSeconds: "40"
28 shard:
29 agent:
30 startupOptions:
31 serverSelectionTimeoutSeconds: "20"
32...
spec.mongosPodSpec

Tipo: Objeto

Objeto que contiene las especificaciones para los Pods de mongos de MongoDB CustomResourceDefinition.

spec.mongosPodSpec.podTemplate

tipo: colección

Plantilla para los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes crea para cada instancia mongos.

Los valores de la plantilla tienen prioridad sobre los valores especificados en spec.mongosPodSpec.

Nota

El Operador de Kubernetes no valida los campos que se proporcionan en spec.mongosPodSpec.podTemplate.

spec.mongosPodSpec.podTemplate.metadata

tipo: colección

Metadatos para los Pods de Kubernetes que el MongoDB Controllers for Kubernetes operador crea para cada instancia de mongos.

Para revisar qué campos puedes agregar a spec.mongosPodSpec.podTemplate.metadata, consulta la documentación de Kubernetes.

spec.mongosPodSpec.podTemplate.spec

tipo: colección

Especificaciones de los Kubernetes Pods que los controladores de MongoDB para el Operador de Kubernetes crean para cada mongos instancia.

Para revisar los campos que puedes añadir a spec.mongosPodSpec.podTemplate.spec, consulta la Kubernetes PodSpec v1 Core API.

Nota

Cuando añades contenedores a spec.mongosPodSpec.podTemplate.spec.containers, el Kubernetes operador los agrega al pod de Kubernetes. Estos contenedores se anexan a los contenedores de instancia de cada mongos en el pod.

Utiliza esta configuración para especificar la asignación de CPU y RAM para cada pod. Para obtener ejemplos, consulta las muestras en GitHub.

spec.mongosPodSpec.podTemplate.spec.affinity.podAffinity

tipo: colección

opcional. Kubernetes regla para determinar si varios Pods de recursos MongoDB deben ubicarse junto con otros Pods.

spec.mongosPodSpec.podTemplate.spec.affinity.nodeAffinity

tipo: colección

Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.

Para un rendimiento de lectura-escritura optimizado, utiliza reglas de afinidad de nodos que restrinjan los Pods para ejecutarse en nodos en particular, o para dar preferencia a la ejecución en nodos en particular.

spec.mongosPodSpec.podTemplate.spec.affinity.podAntiAffinity

Tipo: string

Default: kubernetes.io/hostname

Establece una regla para distribuir Pods que alojan el recurso MongoDB en diferentes ubicaciones. Una ubicación puede ser un solo nodo, rack o región. De forma predeterminada, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.

spec.mongosPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey

Tipo: string

Default: kubernetes.io/hostname

Esta clave define qué etiqueta se usa para determinar a qué dominio de la topología pertenece un nodo.

spec.shardCount

Tipo: entero

Requerido. Número de particiones en el clúster particionado.

spec.shard.additionalMongodConfig

tipo: colección

Opciones de configuración adicionales con las que desee iniciar cada nodo de partición del clúster.

El operador de Kubernetes admite todas las opciones de configuración que admite la versión de MongoDB que se implementa a través del MongoDB Agent, excepto que el operador de Kubernetes anula los valores que proporciona para cualquiera de las siguientes opciones:

Para obtener más información sobre las opciones de configuración que gestiona el operador de Kubernetes, consulte Configuraciones exclusivas del operador de Kubernetes de MongoDB.

Para saber qué opciones de configuración puedes utilizar, consulta Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.

spec.shard.agent

tipo: colección

Configuración de MongoDB Agent para cada nodo del clúster particionado.

spec.shard.agent.startupOptions

tipo: colección

Ajustes del MongoDB Agent con los que deseas iniciar cada nodo del la partición del clúster.

Debe proporcionar la configuración de MongoDB Agent como pares clave-valor. Los valores deben ser cadenas.

Para obtener una lista de la configuración admitida de MongoDB Agent, consulta:

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: my-sharded-cluster-options
6spec:
7 version: "8.0.0"
8 type: ShardedCluster
9 opsManager:
10 configMapRef:
11 name: my-project
12 credentials: my-credentials
13 persistent: true
14 shardCount: 2
15 mongodsPerShardCount: 3
16 mongosCount: 2
17 configServerCount: 1
18
19 mongos:
20 agent:
21 startupOptions:
22 maxLogFiles: "30"
23
24 configSrv:
25 agent:
26 startupOptions:
27 dialTimeoutSeconds: "40"
28 shard:
29 agent:
30 startupOptions:
31 serverSelectionTimeoutSeconds: "20"
32...
spec.shardPodSpec

Tipo: Objeto

Objeto que contiene las especificaciones para el MongoDB CustomResourceDefinition partición Pods.

spec.shardPodSpec.persistence.multiple.data

tipo: colección

El Operador de Kubernetes crea una Solicitud de Volumen Persistente y monta un directorio para datos en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad de almacenamiento mínima que debe estar disponible en un nodo de Kubernetes para hostear a cada nodo de la partición del clúster en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16 Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada miembro de partición de clúster sharded. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.shardPodSpec.persistence.multiple.journal

tipo: colección

Permite que Kubernetes Operator cree un Reclamación de volumen persistente y monte un directorio para el diario en su propio Volumen persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad de almacenamiento mínima que debe estar disponible en un nodo de Kubernetes para hostear a cada nodo de la partición del clúster en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 1Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada miembro de partición de clúster sharded. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.shardPodSpec.persistence.multiple.logs

tipo: colección

Hace que el operador de Kubernetes cree un Reclamo de volumen persistente y monte un directorio para los registros en su propio Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puede establecer esta colección o la colección persistence.single, pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Capacidad de almacenamiento mínima que debe estar disponible en un nodo de Kubernetes para hostear a cada nodo de la partición del clúster en Kubernetes. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 3Gi.

Por ejemplo, si este recurso MongoDB requiere 60 gigabytes de espacio de almacenamiento, configure este valor en 60Gi.

storageClass

string

Tipo de almacenamiento necesario para cada miembro de partición de clúster sharded. Puedes crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objetos.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

spec.shardPodSpec.podTemplate

tipo: colección

Plantilla para los Pods de Kubernetes que los controladores de MongoDB para Kubernetes Operator crean para cada clúster particionado de un nodo de la partición.

Los valores de la plantilla tienen prioridad sobre los valores especificados en spec.shardPodSpec.

Nota

El Operador de Kubernetes no valida los campos que se proporcionan en spec.shardPodSpec.podTemplate.

spec.shardPodSpec.podTemplate.metadata

tipo: colección

Metadatos para los pods de Kubernetes que el operador MongoDB Controllers for Kubernetes crea para cada nodo de particiones de clúster.

Para revisar qué campos puedes agregar a spec.shardPodSpec.podTemplate.metadata, consulta la documentación de Kubernetes.

spec.shardPodSpec.podTemplate.spec

tipo: colección

Especificaciones de los pods de Kubernetes que los controladores de MongoDB para el operador de Kubernetes crean para cada nodo de clúster.

Para revisar los campos que puedes añadir a spec.shardPodSpec.podTemplate.spec, consulta la Kubernetes PodSpec v1 Core API.

Nota

Cuando añades contenedores a spec.shardPodSpec.podTemplate.spec.containers, el Kubernetes operador los agrega al pod de Kubernetes. Estos contenedores se anexan a cada uno de los contenedores de los nodos de particiones del clúster en el pod.

Utiliza esta configuración para especificar la asignación de CPU y RAM para cada pod. Para obtener ejemplos, consulta las muestras en GitHub.

spec.shardPodSpec.podTemplate.spec.affinity.podAffinity

Tipo: string

Regla de Kubernetes para determinar si varios recursos MongoDB Pods deben estar ubicados junto con otros Pods. Para obtener más información sobre los casos de uso, consulta afinidad y anti-afinidad en la documentación de Kubernetes.

spec.shardPodSpec.podTemplate.spec.affinity.nodeAffinity

Tipo: string

Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.

Para un rendimiento de lectura-escritura optimizado, utiliza reglas de afinidad de nodos que restrinjan los Pods para ejecutarse en nodos en particular, o para dar preferencia a la ejecución en nodos en particular.

spec.shardPodSpec.podTemplate.spec.affinity.podAntiAffinity

Tipo: string

Default: kubernetes.io/hostname

Establece una regla para distribuir Pods que alojan el recurso MongoDB en diferentes ubicaciones. Una ubicación puede ser un solo nodo, rack o región. De forma predeterminada, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.

spec.shardPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey

Tipo: string

Default: kubernetes.io/hostname

Esta clave define qué etiqueta se usa para determinar a qué dominio de la topología pertenece un nodo.

spec.shardSpecificPodSpec

Tipo: arreglo

Lista que contiene StatefulSet anulaciones por partición.

spec.shardSpecificPodSpec.podTemplate

tipo: colección

Plantilla para los Pods de Kubernetes que los Controladores MongoDB para Kubernetes operador crean para la partición específica.

Los valores de la plantilla tienen prioridad sobre los valores especificados en spec.shardSpecificPodSpec.

Nota

El Operador de Kubernetes no valida los campos que se proporcionan en spec.shardSpecificPodSpec.podTemplate.

spec.shardSpecificPodSpec.podTemplate.metadata

tipo: colección

Metadatos para los pods de Kubernetes que los controladores de MongoDB para el operador de Kubernetes crean para la partición específica.

Para revisar qué campos puedes agregar a spec.shardSpecificPodSpec.podTemplate.metadata, consulta la documentación de Kubernetes.

spec.shardSpecificPodSpec.podTemplate.spec

tipo: colección

Especificaciones de los pods de Kubernetes que los controladores de MongoDB del operador de MongoDB para Kubernetes crean para la partición específica.

Para revisar los campos que puedes añadir a spec.shardSpecificPodSpec.podTemplate.spec, consulta la Kubernetes PodSpec v1 Core API.

Nota

Cuando agregas contenedores a spec.shardSpecificPodSpec.podTemplate.spec.containers, el operador de Kubernetes los añade al pod de Kubernetes. Estos contenedores se añaden a los contenedores específicos de particiones del pod.

Utiliza esta configuración para especificar la asignación de CPU y RAM para cada pod. Para obtener ejemplos, consulta las muestras en GitHub.

spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAffinity

Tipo: string

Regla de Kubernetes para determinar si varios recursos MongoDB Pods deben estar ubicados junto con otros Pods. Para obtener más información sobre los casos de uso, consulta afinidad y anti-afinidad en la documentación de Kubernetes.

spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAntiAffinity

Tipo: string

Default: kubernetes.io/hostname

Establece una regla para distribuir Pods que alojan el recurso MongoDB en diferentes ubicaciones. Una ubicación puede ser un solo nodo, rack o región. De forma predeterminada, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.

spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey

Tipo: string

Default: kubernetes.io/hostname

Esta clave define qué etiqueta se usa para determinar a qué dominio de la topología pertenece un nodo.

spec.topology

Tipo: string

Opcional

Por defecto: SingleCluster

Define la topología del clúster fragmentado. No puede cambiarse para una implementación existente. Si se establece en MultiCluster:

  • Todos los componentes del clúster fragmentado deben tener clusterSpecList definido:

    • spec.mongos.clusterSpecList

    • spec.configSrv.clusterSpecList

    • spec.shard.clusterSpecList

  • Los siguientes campos se ignoran, ya que sus valores equivalentes se pasan para cada clúster en los objetos spec.<section>.clusterSpecList:

    • spec.mongodsPerShardCount está definido en spec.shard.clusterSpecList.members

    • spec.mongosCount está definido en spec.mongos.clusterSpecList.members

    • spec.configServerCount está definido en spec.configSrv.clusterSpecList.members

    • spec.shardOverrides.memberConfig está definido en spec.shardOverrides.clusterSpecList.memberConfig

    • spec.shardOverrides.members está definido en spec.shardOverrides.clusterSpecList.members

    • spec.shardOverrides.statefulSet está definido en spec.shardOverrides.clusterSpecList.statefulSet

ejemplo:

apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: sc
spec:
shardCount: 3
# we don't specify mongodsPerShardCount, mongosCount and configServerCount as they don't make sense for multi-cluster
topology: MultiCluster
type: ShardedCluster
version: 7.0.12
cloudManager:
configMapRef:
name: my-project
credentials: my-credentials
persistent: true
shard:
clusterSpecList:
- clusterName: member-cluster-0
members: 2 # each shard will have 2 members in cluster 0, unless overriden
- clusterName: member-cluster-1
members: 2
- clusterName: member-cluster-2
members: 1
shardOverrides:
- shardNames: [sc-2] # this override will apply to the third shard (here, shards are indexed from 0 to 2 as we have 3 shards)
clusterSpecList:
- clusterName: member-cluster-0 # all other fields are optional, if not provided the fields from matching member cluster from shard.clusterSpecList will be taken by default
members: 3
- clusterName: member-cluster-1 # we don't deploy this shard to member-cluster-1
# Note that it is also possible to make it explicit with members: 0
# we don't provide entry for clusterName: member-cluster-1, so it won't be deployed there
- clusterName: member-cluster-2
members: 2
configSrv:
clusterSpecList:
- clusterName: member-cluster-0
members: 2 # config server will have 2 members in this cluster
- clusterName: member-cluster-1
members: 1
- clusterName: member-cluster-2
members: 2
mongos:
clusterSpecList:
- clusterName: member-cluster-0
members: 2 # router will have 2 members in this cluster
- clusterName: member-cluster-1
members: 1

Los siguientes campos se refieren exclusivamente a implementaciones en las que topology=MultiCluster:

spec.configSrv.clusterSpecList

Nota

Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.

Tipo: arreglo de objetos

Obligatorio si topology=MultiCluster

Un arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:

clusterName

Tipo: string

Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.

externalAccess

tipo: colección

Especificación para exponer tu implementación de MongoDB en multi-Kubernetes para conexiones externas. Para aprender cómo conectarse a su implementación de MongoDB Multi-Kubernetes desde fuera del clúster de Kubernetes, consulte Conectarse al recurso multi-clúster desde fuera de Kubernetes.

Estos ajustes se aplican a los servicios en todos los clústeres. Para anular estos ajustes globales en un clúster específico, utiliza spec.clusterSpecList.externalAccess.externalService.

Si añades spec.externalAccess, el Operador de Kubernetes crea un servicio externo para cada Pod en un set de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada pod de la base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que emparejan el servicio externo con un Pod específico.

Si agrega esta configuración sin ningún valor, el Operador de Kubernetes crea un servicio externo con los siguientes valores por defecto:

Campo
Valor
Descripción

Name

<pod-name>-svc-external

Nombre del Servicio externo. No puedes cambiar este valor.

Type

LoadBalancer

Crea un servicio externo LoadBalancer.

Port

<Port Number>

Un puerto para mongod.

publishNotReadyAddress

true

Especifica que registros DNS se crean incluso si el Pod no está listo. No configures false para ningún Pod de base de datos.

Nota

Si establece spec.clusterSpecList.externalAccess.externalDomain, el servicio externo agrega otro puerto (Port Number + 1) para copias de seguridad.

members

Tipo: número

Número de miembros en el set de réplicas de MongoDB.

memberConfig

tipo: colección

Especificación para cada partición de MongoDB y sus miembros en tu implementación de clúster multi-Kubernetes de MongoDB.

El orden de los elementos en el objeto para partición debe reflejar el orden de los miembros en el set de réplicas. Por ejemplo, el primer elemento afecta al Pod en el índice 0, el segundo elemento afecta al índice 1, y así sucesivamente.

Ejemplo

Se debe considerar el siguiente ejemplo de especificación para una implementación de MongoDB en un clúster multi-Kubernetes con tres sets de réplicas:

apiVersion: mongodb.com/v1
kind: MongoDBMultiCluster
metadata:
name: multi-replica-set
spec:
version: 8.0.0
type: ReplicaSet
duplicateServiceObjects: false
credentials: my-credentials
opsManager:
configMapRef:
name: my-project
clusterSpecList:
- clusterName: cluster1.example.com
members: 2
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- votes: 1
priority: "1.5"
tags:
tag2: "value2"
environment: "prod"
- clusterName: cluster2.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- clusterName: cluster3.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"

podSpec.persistence

tipo: colección

Disponible solo en clusterSpecItem objetos pasados a spec.configSrv.clusterSpecList y spec.shard.clusterSpecList. Sobrescribe la configuración de persistencia existente para un clúster determinado.

statefulSet

tipo: colección

Proporciona la configuración para la anulación de StatefulSet para cada uno de los StatefulSets del clúster en una implementación de MongoDB en clústeres múltiples de Kubernetes. Para configurar la configuración global que se aplica a todos los clústeres en tu implementación de clústeres múltiples de MongoDB en Kubernetes, consulta spec.statefulSet.spec.

Esta configuración se aplica solo a tipos de recursos de sets de réplicas en implementaciones de MongoDB multiclúster en Kubernetes.

spec.duplicateServiceObjects

Nota

Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.

Tipo: booleano

Opcional

Por defecto: true

Se ignora si la topología no es MultiCluster. Se aplica a los servicios para todos los componentes del clúster fragmentado: mongos, configSrv y shards.

Si se configura en true:

El operador de Kubernetes crea todos los Pod Services de todos los clústeres de nodos en cada clúster de nodos.

Si se configura en false:

El operador de Kubernetes crea solo el Pod Services para los Pods host en cada clúster de nodo.
spec.mongos.clusterSpecList

Nota

Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.

Tipo: arreglo de objetos

Obligatorio si topology=MultiCluster

Un arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:

clusterName

Tipo: string

Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.

externalAccess

tipo: colección

Especificación para exponer tu implementación de MongoDB en multi-Kubernetes para conexiones externas. Para aprender cómo conectarse a su implementación de MongoDB Multi-Kubernetes desde fuera del clúster de Kubernetes, consulte Conectarse al recurso multi-clúster desde fuera de Kubernetes.

Estos ajustes se aplican a los servicios en todos los clústeres. Para anular estos ajustes globales en un clúster específico, utiliza spec.clusterSpecList.externalAccess.externalService.

Si añades spec.externalAccess, el Operador de Kubernetes crea un servicio externo para cada Pod en un set de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada pod de la base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que emparejan el servicio externo con un Pod específico.

Si agrega esta configuración sin ningún valor, el Operador de Kubernetes crea un servicio externo con los siguientes valores por defecto:

Campo
Valor
Descripción

Name

<pod-name>-svc-external

Nombre del Servicio externo. No puedes cambiar este valor.

Type

LoadBalancer

Crea un servicio externo LoadBalancer.

Port

<Port Number>

Un puerto para mongod.

publishNotReadyAddress

true

Especifica que registros DNS se crean incluso si el Pod no está listo. No configures false para ningún Pod de base de datos.

Nota

Si establece spec.clusterSpecList.externalAccess.externalDomain, el servicio externo agrega otro puerto (Port Number + 1) para copias de seguridad.

members

Tipo: número

Número de miembros en el set de réplicas de MongoDB.

memberConfig

tipo: colección

Especificación para cada partición de MongoDB y sus miembros en tu implementación de clúster multi-Kubernetes de MongoDB.

El orden de los elementos en el objeto para partición debe reflejar el orden de los miembros en el set de réplicas. Por ejemplo, el primer elemento afecta al Pod en el índice 0, el segundo elemento afecta al índice 1, y así sucesivamente.

Ejemplo

Se debe considerar el siguiente ejemplo de especificación para una implementación de MongoDB en un clúster multi-Kubernetes con tres sets de réplicas:

apiVersion: mongodb.com/v1
kind: MongoDBMultiCluster
metadata:
name: multi-replica-set
spec:
version: 8.0.0
type: ReplicaSet
duplicateServiceObjects: false
credentials: my-credentials
opsManager:
configMapRef:
name: my-project
clusterSpecList:
- clusterName: cluster1.example.com
members: 2
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- votes: 1
priority: "1.5"
tags:
tag2: "value2"
environment: "prod"
- clusterName: cluster2.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- clusterName: cluster3.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"

statefulSet

tipo: colección

Proporciona la configuración para la anulación de StatefulSet para cada uno de los StatefulSets del clúster en una implementación de MongoDB en clústeres múltiples de Kubernetes. Para configurar la configuración global que se aplica a todos los clústeres en tu implementación de clústeres múltiples de MongoDB en Kubernetes, consulta spec.statefulSet.spec.

Esta configuración se aplica solo a tipos de recursos de sets de réplicas en implementaciones de MongoDB multiclúster en Kubernetes.

spec.shard.clusterSpecList

Nota

Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.

Tipo: arreglo de objetos

Obligatorio si topology=MultiCluster

Un arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:

clusterName

Tipo: string

Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.

externalAccess

tipo: colección

Especificación para exponer tu implementación de MongoDB en multi-Kubernetes para conexiones externas. Para aprender cómo conectarse a su implementación de MongoDB Multi-Kubernetes desde fuera del clúster de Kubernetes, consulte Conectarse al recurso multi-clúster desde fuera de Kubernetes.

Estos ajustes se aplican a los servicios en todos los clústeres. Para anular estos ajustes globales en un clúster específico, utiliza spec.clusterSpecList.externalAccess.externalService.

Si añades spec.externalAccess, el Operador de Kubernetes crea un servicio externo para cada Pod en un set de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada pod de la base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que emparejan el servicio externo con un Pod específico.

Si agrega esta configuración sin ningún valor, el Operador de Kubernetes crea un servicio externo con los siguientes valores por defecto:

Campo
Valor
Descripción

Name

<pod-name>-svc-external

Nombre del Servicio externo. No puedes cambiar este valor.

Type

LoadBalancer

Crea un servicio externo LoadBalancer.

Port

<Port Number>

Un puerto para mongod.

publishNotReadyAddress

true

Especifica que registros DNS se crean incluso si el Pod no está listo. No configures false para ningún Pod de base de datos.

Nota

Si establece spec.clusterSpecList.externalAccess.externalDomain, el servicio externo agrega otro puerto (Port Number + 1) para copias de seguridad.

members

Tipo: número

Número de miembros en el set de réplicas de MongoDB.

memberConfig

tipo: colección

Especificación para cada partición de MongoDB y sus miembros en tu implementación de clúster multi-Kubernetes de MongoDB.

El orden de los elementos en el objeto para partición debe reflejar el orden de los miembros en el set de réplicas. Por ejemplo, el primer elemento afecta al Pod en el índice 0, el segundo elemento afecta al índice 1, y así sucesivamente.

Ejemplo

Se debe considerar el siguiente ejemplo de especificación para una implementación de MongoDB en un clúster multi-Kubernetes con tres sets de réplicas:

apiVersion: mongodb.com/v1
kind: MongoDBMultiCluster
metadata:
name: multi-replica-set
spec:
version: 8.0.0
type: ReplicaSet
duplicateServiceObjects: false
credentials: my-credentials
opsManager:
configMapRef:
name: my-project
clusterSpecList:
- clusterName: cluster1.example.com
members: 2
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- votes: 1
priority: "1.5"
tags:
tag2: "value2"
environment: "prod"
- clusterName: cluster2.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"
- clusterName: cluster3.example.com
members: 1
memberConfig:
- votes: 1
priority: "0.5"
tags:
tag1: "value1"
environment: "prod"

podSpec.persistence

tipo: colección

Disponible solo en clusterSpecItem objetos pasados a spec.configSrv.clusterSpecList y spec.shard.clusterSpecList. Sobrescribe la configuración de persistencia existente para un clúster determinado.

statefulSet

tipo: colección

Proporciona la configuración para la anulación de StatefulSet para cada uno de los StatefulSets del clúster en una implementación de MongoDB en clústeres múltiples de Kubernetes. Para configurar la configuración global que se aplica a todos los clústeres en tu implementación de clústeres múltiples de MongoDB en Kubernetes, consulta spec.statefulSet.spec.

Esta configuración se aplica solo a tipos de recursos de sets de réplicas en implementaciones de MongoDB multiclúster en Kubernetes.

spec.shardOverrides

Tipo: arreglo de objetos

Opcional

Lista que contiene anulaciones por partición. Cada objeto contiene los siguientes campos:

  • shardNames

    Requerido

    El nombre de la partición al que se aplica esta anulación.

  • podSpec.Persistence

    Opcional

    Define cómo el Operador de Kubernetes crea y asigna volúmenes persistentes a particiones. Para topology=MultiCluster establece los ajustes de persistencia para todos los clústeres nodos. Puedes definir la configuración de persistencia para un clúster de nodos en particular en spec.shardOverrides.clusterSpecList.persistence.

  • additionalMongodConfig

    Opcional

    Anulación específica de la partición para spec.shard.additionalMongodConfig.

  • agent

    Opcional

    Anulación específica de la partición para spec.shard.agent.

  • statefulSet

    Opcional

    Instrucción específica de partición para spec.shardPodSpec.podTemplate y spec.shard.clusterSpecList.statefulSet.

  • members

    Opcional

    Disponible solo cuando topology=SingleCluster. Anulación específica de partición para anulación para spec.mongodsPerShardCount.

  • memberConfig

    Opcional

    Disponible solo cuando topology=SingleCluster. Anulación específica de partición para spec.shard.memberConfig.

spec.shardPodSpec.persistence.single

tipo: colección

Haga que el Operador de Kubernetes cree un Reclamo de Volumen Persistente y monte los tres directorios de datos, diario y registros en un mismo Volumen Persistente.

Nota

  • Debe establecer los valores en esta colección si spec.persistent : true.

  • Puedes definir esta colección o bien las persistence.multiple colecciones pero no ambas.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Tamaño mínimo de Volumen Persistente que debe montarse. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16 Gi.

Por ejemplo, si cada nodo de partición del clúster particionado necesita 60 gigabytes de espacio de almacenamiento, establezca este valor en 60Gi.

storageClass

string

Tipo de almacenamiento especificado en un Reclamo de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

Puedes usar Prometheus con sus sets de réplicas o clústeres particionados. La supervisión de Prometheus no es compatible para recursos autónomos. Para supervisar una implementación de un solo nodo con Prometheus, implemente un set de réplicas de un solo nodo en su lugar. Para aprender más información, consulte Implementar un recurso para usar con Prometheus. Para ver un ejemplo, consulte Recurso de MongoDB con Prometheus.

Las siguientes configuraciones se aplican cuando se utiliza Prometheus con tu recurso de MongoDB:

spec.prometheus

Tipo: arreglo

Opcional

Lista que contiene los parámetros para exponer métricas a Prometheus.

spec.prometheus.metricsPath

Tipo: string

Opcional

Por defecto: "/metrics"

string legible por humanos que indica la ruta al endpoint de métricas. Si no especificas este ajuste, se aplicará el valor por defecto.

spec.prometheus.passwordSecretRef

Tipo: Objeto

Condicional

Objeto que contiene los detalles del secreto para la autenticación HTTP básica. Si deseas utilizar Prometheus con tu recurso de MongoDB, debes especificar esta configuración.

spec.prometheus.passwordSecretRef.key

Tipo: string

Opcional

Por defecto: "password"

string legible por seres humanos que identifica la clave en el secreto que almacena la contraseña para la autenticación HTTP básica. Si no especifica esta configuración, se aplicará por defecto.

spec.prometheus.passwordSecretRef.name

Tipo: string

Condicional

Etiqueta legible por humanos que identifica el secreto que contiene la contraseña para la autenticación HTTP básica. Si deseas utilizar Prometheus con tu recurso de MongoDB, debes especificar esta configuración.

spec.prometheus.port

Tipo: entero

Opcional

por defecto: 9216

Número que identifica el puerto al que se vinculará el endpoint de métricas. Si no se especifica esta configuración, se aplica el valor por defecto.

spec.prometheus.tlseSecretKeyRef

Tipo: Objeto

Opcional

Objeto que contiene los detalles del secreto para autenticación TLS.

spec.prometheus.tlseSecretKeyRef.key

Tipo: string

Opcional

Por defecto: "password"

string legible por humanos que identifica la clave en el secreto que almacena la contraseña para la autenticación TLS. Si no especifica esta configuración, se aplicará la configuración por defecto.

spec.prometheus.tlseSecretKeyRef.name

Tipo: string

Condicional

Etiqueta legible por humanos que identifica el secreto que contiene la contraseña para la autenticación TLS. Si quieres usar Prometheus con tu recurso de MongoDB y deseas usar la autenticación TLS, debes especificar este ajuste.

spec.prometheus.username

Tipo: string

Condicional

Etiqueta legible para humanos que identifica al usuario para la autenticación HTTP básica. Si deseas usar Prometheus con tu recurso de MongoDB, debes especificar esta configuración.

Las siguientes configuraciones de seguridad se aplican solo a los tipos de recursos de set de réplicas y clúster:

spec.security.tls.ca

Tipo: string

Proporcione el nombre de la ConfigMap que almacena la CA para el recurso MongoDB.

Importante

Si utiliza una CA personalizada para firmar sus certificados TLS para el MongoDB recurso, debe especificar este parámetro.

El operador de Kubernetes requiere que asignes el nombre del certificado del recurso MongoDB ca-pem en el ConfigMap.

spec.security.certsSecretPrefix

Tipo: string

Texto para anteponer a los secretos de Kubernetes que usted creó y que contienen las claves y certificados TLS de su set de réplicas o clúster.

Debe anteponer sus secretos con <prefix>-<metadata.name>.

Por ejemplo, si llama a su implementación my-deployment y establece el prefijo en mdb, debe asignar el nombre mdb-my-deployment-cert al secreto TLS para las comunicaciones TLS del cliente. Además, debe nombrar el secreto TLS para la autenticación interna del clúster (si está habilitado) mdb-my-deployment-clusterfile.

Para aprender más sobre cómo nombrar los secretos que contienen tus certificados TLS, consulta el tema en Desplegar un set de réplicas que aplica a tu implementación.

spec.security.tls.additionalCertificateDomains

Tipo: booleano

Lista de todos los dominios que deben agregarse a los certificados TLS de cada pod en esta implementación. Cuando se establece este parámetro, cada CSR que el operador de Kubernetes transforma en un certificado TLS incluye un SAN en el formato <pod name>.<additional cert domain>.

Los recursos del set de réplicas no necesitan este parámetro. Utiliza spec.connectivity.replicaSetHorizons en su lugar.

Nota

Si añade este parámetro a un recurso habilitado para TLS, Kubernetes muestra un error cuando el recurso alcanza el estado Pending. Este error muestra: Please manually remove the |csr| in order to proceed. Para solucionar este problema:

  1. Remueve las CSRexistentes para que Kubernetes pueda generar nuevas CSR. Para saber cómo borrar un recurso, consulta borrar recursos en la documentación de Kubernetes.

  2. Aprobar los CSRdespués de que Kubernetes los genere.

spec.additionalMongodConfig.net.ssl.mode

Tipo: string

Por defecto: requireSSL

Especifica qué sslMode se usa para las conexiones de red. Las siguientes son opciones válidas:

Valor
Descripción

allowSSL

Connections between servers do not use TLS. For incoming connections, the server accepts both TLS and non-TLS.

preferSSL

Connections between servers use TLS. For incoming connections, the server accepts both TLS and non-TLS.

requireSSL

El servidor utiliza y acepta únicamente conexiones encriptadas TLS.

spec.additionalMongodConfig.net.tls.disabledProtocols

Tipo: string

Novedades en MongoDB versión 4.2.

Impide que un servidor MongoDB que se ejecute con TLS acepte conexiones entrantes que utilicen un protocolo o protocolos específicos. Para especificar varios protocolos, introduzca una lista de protocolos separados por comas. Por ejemplo, TLS1_0,TLS1_1.

Esta configuración reconoce los siguientes protocolos: TLS1_0, TLS1_1, TLS1_2 y a partir de MongoDB 4.0.4 (y 3.6.9), TLS1_3. Si se especifica un protocolo desconocido, el servidor no se iniciará.

En macOS, no se puede desactivar TLS1_1 y habilitar ambos TLS1_0 y TLS1_2. También debes desactivar al menos TLS1_0 o TLS1_2. Por ejemplo, TLS1_0,TLS1_1 desactiva TLS1_2 en macOS.

La lista de protocolos que se deshabilitan reemplaza la lista por defecto de protocolos deshabilitados.

A partir de la versión 4.0 de MongoDB, se desactiva el uso de TLS 1.0 si TLS 1.1+ está disponible en el sistema. Para habilitar TLS 1.0, especifique none como valor para spec.additionalMongodConfig.net.tls.disabledProtocols.

Los nodos de los sets de réplicas y los clústeres fragmentados deben tener al menos un protocolo en común.

spec.security.authentication

tipo: colección

Especificaciones de autenticación para tu implementación de MongoDB.

spec.security.authentication.enabled

Tipo: booleano

Por defecto: false

Especifica si la autenticación está habilitada en el proyecto de Cloud Manager u Ops Manager. Si se establece en true, debe establecer un mecanismo de autenticación en spec.security.authentication.modes.

Importante

El operador de Kubernetes gestiona la autenticación para este recurso de MongoDB si se incluye esta configuración, incluso si está establecida en false. No puedes configurar la autenticación para este recurso utilizando la Interfaz de Usuario o API de Cloud Manager u Ops Manager mientras esta configuración exista en las especificaciones del recurso.

Omite este ajuste si prefieres gestionar la autenticación utilizando la Interfaz de Usuario de Cloud Manager u Ops Manager o sus API.

spec.security.authentication.modes

Tipo: arreglo

Especifica el mecanismo de autenticación que tu implementación de MongoDB usa. Los valores válidos son SCRAM, SCRAM-SHA-1, MONGODB-CR, X509, LDAP y OIDC. Recomendamos SCRAM-SHA-256 (SCRAM) sobre SCRAM-SHA-1. Si especifíca SCRAM-SHA-1, también debe especificar MONGODB-CR.

Nota

Autenticación interna de clúster X.509

Para habilitar autenticación de clúster interno X.509 para el Proyecto de Cloud Manager o MongoDB Ops Manager, establezca este valor en ["X509"] y especifique la siguiente configuración:

Si proporciona más de un valor para spec.security.authentication.modes, también debe especificar un valor para spec.security.authentication.agents.mode.

spec.security.authentication.internalCluster

Tipo: string

Especifica si la autenticación interna del clúster X.509 está habilitada.

Para habilitar la autenticación interna del clúster X.509, configúrelo en "X509". Requiere que se especifiquen los siguientes ajustes:

El Operador de Kubernetes acepta los siguientes valores:

  • ["X509"]: La autenticación interna de clúster X.509 está habilitada.

  • "" u omitido: la autenticación interna del clúster no está habilitada.

Importante

Después de habilitar la autenticación interna del clúster, no se puede deshabilitar.

spec.security.authentication.requireClientTLSAuthentication

Tipo: booleano

Por defecto: false

Especifica si el host de MongoDB requiere que los clientes se conecten utilizando un certificado TLS. Por defecto, es true si habilita la autenticación TLS.

Para habilitar la autenticación TLS, proporcione un valor para la configuración spec.security.certsSecretPrefix.

spec.security.authentication.ldap

tipo: colección

Requerido para la autenticación LDAP.

Configura la autenticación LDAP para el proyecto Cloud Manager u Ops Manager. Para habilitar la autenticación LDAP, establezca spec.security.authentication.modes en ["LDAP"].

spec.security.authentication.ldap.servers

Tipo: arreglo de cadenas

Requerido para la autenticación LDAP.

List of hostnames and ports of the LDAP servers. Specify hostnames with their respective ports in the following format:

spec:
security:
authentication:
ldap:
servers:
- "<hostname1>:<port1>"
- "<hostname2>:<port2>"
spec.security.authentication.ldap.timeoutMS

Tipo: entero

Especifica cuántos milisegundos debe esperar una solicitud de autenticación antes de agotar el tiempo de espera.

spec.security.authentication.ldap.transportSecurity

Tipo: string

Requerido para la autenticación LDAP.

Especifica si el servidor LDAP acepta TLS.

Si el servidor LDAP acepta TLS, establezca el valor en tls. Si el servidor LDAP no acepta TLS, deje este valor en blanco o establezca el valor en none.

Nota

Si se especifica un string diferente de none o tls, Kubernetes Operator aún establece la configuración en tls.

spec.security.authentication.ldap.caConfigMapRef

tipo: colección

Se requiere para la autenticación LDAP con TLS.

ConfigMap que contiene una CA que valida el LDAP del servidor TLS certificado.

spec.security.authentication.ldap.caConfigMapRef.name

Tipo: string

Se requiere para la autenticación LDAP con TLS.

Nombre del ConfigMap que contiene una CA que valida el servidor LDAP TLS certificado.

spec.security.authentication.ldap.caConfigMapRef.key

Tipo: string

Se requiere para la autenticación LDAP con TLS.

Nombre del campo que almacena la CA que valida el servidor LDAP del certificado TLS.

spec.security.authentication.ldap.bindQueryUser

Tipo: string

Requerido para la autenticación LDAP.

LDAP nombre distinguido al que MongoDB se une al conectarse al servidor LDAP.

spec.security.authentication.ldap.bindQueryPasswordSecretRef

tipo: colección

Requerido para la autenticación LDAP.

Especifica el secreto que contiene la contraseña con la que MongoDB se conecta al servidor LDAP.

spec.security.authentication.ldap.bindQueryPasswordSecretRef.name

Tipo: string

Requerido para la autenticación LDAP.

Nombre del secreto que contiene la contraseña con la que MongoDB se vincula al conectarse al servidor LDAP.

El secreto solo debe contener un campo password en el que se almacena la contraseña.

spec.security.authentication.ldap.authzQueryTemplate

Tipo: string

Requerido para la autorizacion LDAP.

Plantilla de URL de consulta con formato LDAP RFC4515 y RFC4516 ejecutada por MongoDB para obtener los grupos LDAP a los que pertenece el usuario. La consulta es relativa al host o hosts especificados en spec.security.authentication.ldap.servers. Puede utilizar los siguientes tokens en la plantilla:

  • {USER}

    Sustituye el nombre de usuario autenticado o el nombre de usuario transformed en la query LDAP.
  • {PROVIDED_USER}

    Sustituye el nombre de usuario proporcionado, antes de la autenticación o la transformación de LDAP, en la query LDAP. (Disponible a partir de la versión 4.2 de MongoDB)

Tip

Plantillas de query LDAP en el Manual de MongoDB

spec.security.authentication.agents.automationLdapGroupDN

Tipo: string

El Nombre distinguido (DN) del grupo LDAP al que pertenece el usuario de MongoDB Agent.

Esta configuración es necesaria si:

spec.security.authentication.ldap.userToDNMapping

Tipo: string

Asocia el nombre de usuario proporcionado a mongod o mongos para la autenticación con un nombre distinguido (nombre distinguido) de LDAP.

Tip

security.ldap.userToDNMapping en el Manual de MongoDB

spec.security.authentication.ldap.userCacheInvalidationInterval

Tipo: entero

Especifica cuántos segundos espera MongoDB para vaciar la caché de usuarios LDAP. Por defecto, 30 segundos.

spec.security.authentication.oidcProviderConfigs

tipo: colección

Requerido

  • La versión de MongoDB debe ser 7.0.11+ o 8.0.0+

  • Solo se admite MongoDB Enterprise

Nota

Se requiere al menos un elemento en la colección cuando spec.security.authentication.mode está configurado en OIDC.

spec.security.authentication.oidcProviderConfigs.audience

Tipo: string

Requerido

Entidad para la cual tu proveedor de identidad externo (IdP) destina el token. Introduce el valor de audiencia de la aplicación que registraste con tu proveedor de identidad externo. Cuando se define más de un proveedor de identidad, este debe ser un valor único para cada configuración que comparta un issuerURI.

spec.security.authentication.oidcProviderConfigs.authorizationMethod

Tipo: string

Requerido

Los valores válidos son WorkforceIdentityFederation y WorkloadIdentityFederation. Configure el inicio de sesión único para el acceso de usuarios humanos a las implementaciones con Workforce Identity Federation. Para el acceso programático de aplicaciones a implementaciones, utilice Federación de identidad de carga de trabajo. Solo se puede configurar un proveedor de identidad de Workforce Identity Federation por recurso de MongoDB. Para obtener más información, consulte Autenticación y autorización con OIDC/OAuth 2.0.

spec.security.authentication.oidcProviderConfigs.authorizationType

Tipo: string

Requerido

Los valores válidos son GroupMembership y UserID. Seleccione GroupMembership para conceder autorización basada en la membresía del grupo de usuarios de proveedor de identidad o seleccione UserID para conceder autorización a un usuario individual.

spec.security.authentication.oidcProviderConfigs.clientId

Tipo: string

Requerido

Identificador único para su aplicación registrada. Ingresa el valor clientId de la aplicación registrada en un proveedor de identidad externo.

spec.security.authentication.oidcProviderConfigs.configurationName

Tipo: string

Requerido

Etiqueta única que identifica esta configuración. Esta etiqueta es visible para los usuarios de Ops Manager y se usa al crear usuarios y roles para la autorización. Es sensible a mayúsculas y minúsculas y sólo puede contener los siguientes caracteres:

  • caracteres alfanuméricos (combinación de a a z y de 0 a 9)

  • guiones (-)

  • guiones bajos (_)

spec.security.authentication.oidcProviderConfigs.groupsClaim

Tipo: string

Opcional

El identificador del reclamo que incluye la identidad principal del usuario. Acepta el valor por defecto a menos que tu proveedor de identidad utilice un reclamo diferente.

spec.security.authentication.oidcProviderConfigs.issuerURI

Tipo: string

Requerido

Valor de emisor proporcionado por tu aplicación de proveedor de identidad registrada. Usando este URI, MongoDB encuentra un Documento de Configuración del Proveedor OpenID, que está disponible en el endpoint /.wellknown/open-id-configuration. Para MongoDB 8.0+, la combinación de issuerURI y público debe ser única en todas las configuraciones del proveedor OIDC. Para otras versiones de MongoDB, el propio issuerURI debe ser único.

spec.security.roleRefs

Tipo: arreglo

Arreglo que hace referencia a ClusterMongoDBRole recursos personalizados que te proporcionan un control de acceso detallado en tu implementación de MongoDB.

spec.security.roleRefs.kind

Tipo: string

El tipo del recurso personalizado referenciado. Por ejemplo, ClusterMongoDBRole.

spec.security.roleRefs.kind

Tipo: string

El tipo del recurso personalizado referenciado. Por ejemplo, ClusterMongoDBRole.

spec.security.authentication.oidcProviderConfigs.requestedScopes

Tipo: string

Opcional

Tokens que otorgan a los usuarios permiso para realizar una solicitud de datos desde el endpoint de autorización. Solo se utiliza para el método de autorización Federación de identidad laboral.

spec.security.authentication.oidcProviderConfigs.userClaim

Tipo: string

Requerido

El identificador del reclamo que incluye la identidad principal del usuario. Acepta el valor por defecto a menos que tu proveedor de identidad utilice un reclamo diferente.

spec.security.authentication.agents

tipo: colección

Configuración de autenticación del agente de MongoDB para el proyecto de Cloud Manager u Ops Manager.

spec.security.authentication.agents.mode

Tipo: string

El mecanismo de autenticación que utilizan los agentes de MongoDB para su implementación de MongoDB. Los valores válidos son SCRAM, SCRAM-SHA-1, MONGODB-CR, X509, OIDC y LDAP. El valor que especifique también debe estar presente en spec.security.authentication.modes. Recomendamos SCRAM-SHA-256 (SCRAM) en lugar de SCRAM-SHA-1. Si se especifica SCRAM-SHA-1, también debe especificar MONGODB-CR.

Esta configuración es obligatoria si especificó más de un valor para spec.security.authentication.modes.

spec.security.authentication.agents.automationUserName

Tipo: string

Nombre del usuario que los agentes de MongoDB utilizan para interacción con su implementación de MongoDB. El nombre de usuario se asigna a un nombre distinguido (nombre distinguido) de LDAP según spec.security.authentication.ldap.userToDNMapping. El nombre distinguido resultante ya debe existir en su implementación de LDAP.

Esta configuración es necesaria si spec.security.authentication.agents.mode es LDAP.

spec.security.authentication.agents.automationPasswordSecretRef

tipo: colección

Detalles del secreto que contiene la contraseña del usuariospec.security.authentication.agents.automationUserName.

Esta configuración es necesaria si spec.security.authentication.agents.mode es LDAP.

spec.security.authentication.agents.automationPasswordSecretRef.name

Tipo: string

Nombre del secreto que contiene la contraseña del usuario spec.security.authentication.agents.automationUserName. Debe crear este secreto en el mismo espacio de nombres en el que implementa el operador de Kubernetes:

kubectl create secret generic ldap-agent-user \
--from-literal="password=<password>" -n <metadata.namespace>

Este secreto debe contener una clave cuyo valor coincida con la contraseña del usuario spec.security.authentication.agents.automationUserName en su implementación de LDAP.

Esta configuración es necesaria si spec.security.authentication.agents.mode es LDAP.

spec.security.authentication.agents.automationPasswordSecretRef.key

Tipo: string

Introduzca el secreto spec.security.authentication.agents.automationPasswordSecretRef.name que contiene la contraseña del usuario en spec.security.authentication.agents.automationUserName.

Esta configuración es necesaria si spec.security.authentication.agents.mode es LDAP.

spec.security.authentication.agents.clientCertificateSecretRef.name

Tipo: string

Especifica el secreto que contiene el certificado TLS del MongoDB Agent. Si se omite, por defecto será agent-certs.

Debe crear este secreto en el mismo namespace en el que implementa el Operador de Kubernetes y el secreto debe ser de tipo kubernetes.io/tls.

spec.security.roles

Tipo: arreglo

Arreglo que define Roles definidos por el usuario que te dan un control de acceso detallado sobre tu implementación de MongoDB.

Para habilitar los roles definidos por el usuario, el spec.security.authentication.enabled debe estar true.

Ejemplo

En este ejemplo, un rol definido por el usuario llamado customRole permite a los usuarios asignados a este rol:

  • Inserte documentos en la colección cats en la base de datos pets y

  • Buscar e insertar documentos en la colección dogs en la base de datos pets.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "8.0.0"
9 type: ReplicaSet
10 opsManager:
11 configMapRef:
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 persistent: true
15 security:
16 authentication:
17 enabled: true
18 modes:
19 - "SCRAM"
20 roles:
21 - role: "customRole"
22 db: admin
23 privileges:
24 - actions:
25 - insert
26 resource:
27 collection: cats
28 db: pets
29 - actions:
30 - insert
31 - find
32 resource:
33 collection: dogs
34 db: pets
35...
spec.security.roles.role

Tipo: string

Nombre del rol definido por el usuario.

spec.security.roles.db

Tipo: string

La base de datos en la que desea almacenar el rol definido por el usuario.

Ejemplo

admin

spec.security.roles.authenticationRestrictions

Tipo: arreglo

Arreglo que define la dirección IP desde y hacia la cual los usuarios asignados a este spec.security.roles.role pueden conectarse.

spec.security.roles.authenticationRestrictions.clientSource

Tipo: arreglo

Arreglo de direcciones IP o bloques CIDR desde los cuales los usuarios asignados a este spec.security.roles.role pueden conectarse.

Los servidores de MongoDB rechazan las solicitudes de conexión de usuarios con este rol si estas solicitudes provienen de un cliente que no esté presente en este arreglo.

spec.security.roles.authenticationRestrictions.serverAddress

Tipo: arreglo

Arreglo de direcciones IP o bloques CIDR a los que pueden conectarse los usuarios asignados a este spec.security.roles.role.

Los servidores de MongoDB rechazan las solicitudes de conexión de usuarios con este rol si el cliente solicita conectarse a un servidor que no está presente en este arreglo.

spec.security.roles.privileges

Tipo: arreglo

Arreglo que describe los privilegios que poseen los usuarios a quienes se les otorgó este rol.

spec.security.roles.privileges.actions

Tipo: arreglo

Lista de acciones que los usuarios con este rol pueden realizar. Para obtener una lista de los valores aceptados, consulta Acciones de privilegio en el manual de MongoDB para las versiones de MongoDB que implementes con el operador de Kubernetes.

spec.security.roles.privileges.resource

tipo: colección

Recursos a los que se aplica el privilegio actions.

Esta colección debe incluir cualquiera de lo siguiente:

spec.security.roles.privileges.resource.database

Tipo: string

Base de datos a la que se aplica el privilegio actions.

Si proporcionas un valor para esta configuración, también debes proporcionar un valor para spec.security.roles.privileges.resource.collection.

spec.security.roles.privileges.resource.collection

Tipo: string

Colección en el database para la que se aplica el privilegio actions.

Si proporcionas un valor para esta configuración, también debes proporcionar un valor para spec.security.roles.privileges.resource.database.

spec.security.roles.privileges.resource.cluster

Tipo: booleano

Por defecto: False

Bandera que indica que el privilegio actions se aplica a todas las bases de datos y colecciones en la implementación de MongoDB. Si se omite, se establece por defecto en false.

Si está configurado como verdadero, no se deben proporcionar valores para spec.security.roles.privileges.resource.database y spec.security.roles.privileges.resource.collection.

El siguiente ejemplo muestra una especificación de recurso para una implementación autónomo con todas las configuraciones proporcionadas:

apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-standalone
spec:
version: "8.0.0"
service: my-service
opsManager: # Alias of cloudManager
configMapRef:
name: my-project
credentials: my-credentials
persistent: true
type: Standalone
additionalMongodConfig:
systemLog:
logAppend: true
verbosity: 4
operationProfiling:
mode: slowOp
podSpec:
persistence:
single:
storage: "12Gi"
storageClass: standard
labelSelector:
matchExpressions:
- {key: environment, operator: In, values: [dev]}
podTemplate:
metadata:
labels:
label1: mycustomlabel
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: security
operator: In
values:
- S1
topologyKey: failure-domain.beta.kubernetes.io/zone
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
topologyKey: "mykey"
weight: 50
...

La siguiente configuración de statefulSets se aplica únicamente a los tipos de recursos set de réplicas y clúster.

El operador de Kubernetes permite anular la configuración por defecto de StatefulSet y PVC del operador de Kubernetes al especificar valores para spec.statefulSet.spec campos en la especificación de recursos de MongoDB. Sin embargo, solo ciertos campos se conservan durante el proceso de fusión. Las siguientes tablas enumeran los campos de anulación admitidos.

spec.statefulSet.spec

tipo: colección

Especificación para el StatefulSet que los controladores de MongoDB para Kubernetes **operador** crean para los recursos MongoDB.

Los siguientes campos se fusionan y tienen prioridad sobre la configuración predeterminada de StatefulSet cuando se especifican valores en spec.statefulSet.spec. Las rutas de campo son relativas a la definición de StatefulSet, por lo que spec.replicas corresponde a spec.statefulSet.spec.replicas en la especificación de recursos de MongoDB.

Campo

spec.replicas

spec.selector

spec.podManagementPolicy

spec.revisionHistoryLimit

spec.updateStrategy.type

spec.updateStrategy.rollingUpdate

spec.serviceName

spec.template

spec.volumeClaimTemplates

spec.statefulSet.spec.serviceName

Tipo: string

por defecto: <resource_name>-svc y <resource_name>-svc-external

Nombre del servicio de Kubernetes que se va a crear o utilizar para un StatefulSet. Si el servicio con este nombre ya existe, el MongoDB Controllers for Kubernetes operador no lo borra ni lo recrea. Esta configuración le permite crear sus propios servicios personalizados y permite que el Operador de Kubernetes los reutilice.

El operador de Kubernetes fusiona una plantilla de solicitud de volumen que especifique en spec.statefulSet.spec.volumeClaimTemplates solo si su metadata.name coincide con el nombre de una plantilla de solicitud de volumen existente. La siguiente tabla muestra qué campos de PVC conserva el operador de Kubernetes y cuáles descarta cuando especifica valores en spec.statefulSet.spec.volumeClaimTemplates. Las rutas de campo son relativas a una plantilla de reclamación de volumen individual, por lo tanto, spec.volumeMode corresponde a spec.statefulSet.spec.volumeClaimTemplates.spec.volumeMode en la especificación de recursos de MongoDB.

Compatible (conservado)
No compatible (descartado)

metadata.namespace
metadata.labels
metadata.annotations
spec.volumeMode
spec.storageClassName
spec.accessModes [1]
spec.selector
spec.resources.limits
spec.resources.requests
spec.dataSource

spec.volumeAttributesClassName
spec.dataSourceRef
spec.volumeName

[1] El operador de Kubernetes añade los modos de acceso que especifique a los modos de acceso por defecto en lugar de reemplazarlos.