Nota
En cualquier lugar de esta página donde diga Ops Manager, puedes sustituir Cloud Manager.
El operador de controladores de MongoDB para Kubernetes crea conjuntos con estado de Kubernetes a partir de archivos de especificación que usted mismo escribe.
El operador de Kubernetes crea recursos específicos de MongoDB en Kubernetes como recursos personalizados.
Para administrar estos recursos personalizados, utilice el siguiente proceso:
Cree o actualice una especificación de recursos
MongoDB.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 miembro |
Clúster fragmentado | <numberOfShards> + 2 |
Cada recurso MongoDB utiliza una especificación de objeto en YAML para definir las características y configuraciones del objeto MongoDB: independiente,conjuntode réplicas y clúster fragmentado.
Configuraciones comunes de recursos
Cada tipo de recurso debe utilizar la siguiente configuración:
Requerido
metadata.nameTipo: string
Nombre del recurso
MongoDBque creas.Los nombres de recursos deben tener 44 caracteres o menos.
spec.credentialsTipo: 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 Ops Manager Kubernetes Secret que contiene las credenciales debe existir en el mismo espacio de nombres que el recurso que desea 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.persistentTipo: booleano
Por defecto: true
ADVERTENCIA: Otorgue a sus contenedores permiso para escribir en su Volumen Persistente. El Operador de Kubernetes establece
fsGroup = 2000,runAsUser = 2000yrunAsNonRoot = trueensecurityContext. El Operador de Kubernetes establecefsgroupigual arunAsUserpara 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 pueden 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.typeTipo: string
Tipo de recurso
MongoDBa crear. Los valores aceptados son:StandaloneReplicaSetShardedCluster
spec.versionTipo: string
Versión de MongoDB que instalaste en este recurso
MongoDB.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 versión de compatibilidad de características se mantiene en la versión de MongoDB desde la que está actualizando, lo que le permite optar por una versión anterior si fuera necesario. Si desea que la versión de compatibilidad de características coincida con la nueva versión de MongoDB, debe establecer manualmente
spec.featureCompatibilityVersiona la nueva versión o aAlwaysMatchVersion. Para obtener más información, consultespec.featureCompatibilityVersion.
Condicional
Cada recurso debe usar una de las siguientes configuraciones:
spec.opsManager.configMapRef.nameTipo: string
Nombre del ConfigMap con la configuración de conexión de Cloud Manager u Ops Manager. La configuración
spec.cloudManager.configMapRef.namees 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.nameTipo: string
Alias para
spec.opsManager.configMapRef.name.
Opcional
Cada tipo de recurso puede usar la(s) siguiente(s) configuración(es):
metadata.annotations.mongodb.com/v1.architectureTipo: string
Determina la arquitectura de contenedor utilizada por una implementación específica:
Los contenedores no estáticos por defecto que descargan el binario de MongoDB en tiempo de ejecución, o
Contenedores estáticos (Visualización pública) que son inmutables en tiempo de ejecución.
Los valores aceptados son:
staticnon-static
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-project annotations: mongodb.com/v1.architecture: "static"
spec.agent.backupAgent.logRotateTipo: Objeto
Umbrales a partir de los cuales el MongoDB Agent rota el registro de copia de seguridad.
spec.agent.backupAgent.logRotate.sizeThresholdMBTipo: 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.timeThresholdHrsTipo: 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.auditlogRotateTipo: Objeto
Objeto que contiene la configuración de rotación del registro de auditoría para los procesos de MongoDB.
spec.agent.mongod.auditlogRotate.sizeThresholdMBTipo: número
Tamaño máximo, en MB, de un archivo de registro de auditoría antes de que el MongoDB Agent gire los registros.
spec.agent.mongod.auditlogRotate.timeThresholdHrsTipo: 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.numUncompressedTipo: 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.numTotalTipo: 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.percentOfDiskspaceTipo: número
Porcentaje máximo del espacio total en disco que Ops Manager puede utilizar para almacenar las entradas de registro expresado como decimal. Si se supera este límite, Ops Manager borra las entradas de registro comprimidas hasta cumplirlo. Ops Manager elimina primero los archivos de registro más antiguos.
El valor por defecto es 0,02.
spec.agent.mongod.logRotateTipo: Objeto
Umbrales después de los cuales Ops Manager rota los registros de MongoDB de un proceso.
spec.agent.mongod.logRotate.sizeThresholdMBTipo: entero
Tamaño máximo en MB para un archivo de registro individual antes de que Ops Manager lo rote. Ops Manager rota el archivo de registro inmediatamente si alcanza el valor especificado en
sizeThresholdMBo enspec.agent.mongod.logRotate.timeThresholdHrs.
spec.agent.mongod.logRotate.timeThresholdHrsTipo: 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 el archivo de registro una vez que el archivo cumple con
timeThresholdHrsospec.agent.mongod.logRotate.sizeThresholdMB.
spec.agent.monitoringAgent.logRotateTipo: Objeto
Umbrales después de los cuales el MongoDB Agent rota el registro de supervisión.
spec.agent.monitoringAgent.logRotate.sizeThresholdMBTipo: 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.timeThresholdHrsTipo: entero
Número de horas después de las cuales el Agente de MongoDB rota el registro de supervisión.
spec.agent.readinessProbe.environmentVariablesTipo: 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.featureCompatibilityVersionTipo: 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
featureCompatibilityVersiona la nueva versión. Por ejemplo,featureCompatibilityVersion: 6.0.Alternativamente, puedes activar la opción
AlwaysMatchVersionpara 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 obtener más información sobre la compatibilidad de las funciones, consulte
setFeatureCompatibilityVersionen el Manual de MongoDB.
spec.clusterDomainTipo: 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, asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el operador de Kubernetes calcula el FQDN de cada Pod utilizando el nombre del clúster proporcionado. Kubernetes no ofrece una API para consultar estos nombres de host.
Advertencia
Debe configurar
spec.clusterDomainsi su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminadocluster.local. Si no utiliza el dominio predeterminado ni configura la opciónspec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.
spec.clusterNameTipo: 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, asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el operador de Kubernetes calcula el FQDN de cada Pod utilizando el nombre del clúster proporcionado. Kubernetes no ofrece una API para consultar estos nombres de host.
Advertencia
Debe configurar
spec.clusterDomainsi su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminadocluster.local. Si no utiliza el dominio predeterminado ni configura la opciónspec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.
metadata.namespaceTipo: string
Espacio de nombres de Kubernetes donde se crea este recurso
MongoDBy otros objetos.
spec.serviceTipo: string
Por defecto: <resource_name>+"-svc" y <resource_name>+"-svc-external".
Nombre del servicio de Kubernetes que se creará o utilizará para un StatefulSet. Si el servicio con este nombre ya existe, el operador de controladores de MongoDB para Kubernetes no lo elimina ni lo vuelve a crear. Esta configuración permite crear servicios personalizados y que el operador de Kubernetes los reutilice.
spec.logLevelTipo: string
por defecto: INFO
Configura el nivel de registro del agente de automatización dentro del Pod. Los valores aceptados incluyen:
DEBUGINFOWARNERRORFATAL
spec.security.authentication.ignoreUnknownUsersTipo: booleano
Por defecto:
falseDetermina 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 administrar los usuarios de la base de datos directamente a través de
mongodomongos, configure este ajuste entrue.
Configuración de recursos específica de implementación
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:
Configuración autónoma
Nota
Todas las configuraciones independientes también se aplican a los recursos del conjunto de réplicas.
spec.additionalMongodConfigtipo: colección
Opciones de configuración adicionales con las que desea 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 puede utilizar, consulte Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.
spec.agent.startupOptionstipo: 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:
Configuración de MongoDB Agent para proyectos de Cloud Manager.
Configuración del MongoDB Agent para la versión de Ops Manager que implementaste con el operador de Kubernetes.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-standalone 6 spec: 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.podSpecTipo: Objeto
Objeto que contiene las especificaciones para los Pods de MongoDB CustomResourceDefinition.
spec.externalAccesstipo: 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 agrega
spec.externalAccess, el operador de Kubernetes crea un servicio externo para cada Pod en un conjunto de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada Pod de base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que lo asocian a 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:
CampoValorDescripciónName<pod-name>-svc-externalNombre del Servicio externo. No puedes cambiar este valor.
TypeLoadBalancerCrea un servicio LoadBalancer externo.
Port<Port Number>Un puerto para
mongod.publishNotReadyAddresstrueEspecifica que los registros DNS se crean incluso si el Pod no está listo. No lo configure en
falsepara ningún Pod de base de datos.Nota
Si configura
spec.externalAccess.externalDomain, el servicio externo agrega otro puerto (Port Number + 1) para copias de seguridad.
spec.externalAccess.externalServicetipo: colección
Especificación para anular los valores predeterminados 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, consulte ServiceSpec en la documentación de Kubernetes.
spec.externalAccess.externalService.annotationstipo: colección
Pares clave-valor que 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 las anotaciones y la documentación de su proveedor de nube Kubernetes.
Puedes usar anotaciones para especificar valores de marcador de posición para los servicios externos que utilizan las implementaciones del Operador de Kubernetes. El Operador de Kubernetes reemplaza automáticamente estos valores con los correctos, tal como se describe en la siguiente tabla. El uso de marcadores de posición te permite proporcionar anotaciones específicas para cada servicio de un Pod concreto.
ValorDescripción{resourceName}Igual a
metadata.name.{namespace}Igual a
metadata.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. Si se especifica, será igual a
spec.externalAccess.externalDomain. De lo contrario, será igual al dominio utilizado para el FQDN del procesomongod.Por ejemplo, para el nombre de host del proceso
mdb-rs-1.example.com,example.comes el nombre de dominio.{mongodProcessFQDN}El nombre de host del proceso
mongodestablecido en la configuración de automatización.El nombre de host del proceso depende de la configuración de su 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.comSi 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.localPor ejemplo:
mdb-rs-1.mdb-rs-1-svc.ns.svc.cluster.localNota
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.spectipo: colección
Configuración para ServiceSpec. Para obtener más información, consulte
spec.externalAccess.externalService.
spec.podSpec.persistence.singletipo: colección
El operador de Kubernetes crea un reclamo de volumen persistente y monta los tres directorios para datos, diario y registros en el 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.multiplecolecciones pero no ambas.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del 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 la implementación independiente requiere 60 gigabytes de espacio de almacenamiento, establezca este valor en
60Gi.storageClassstring
Tipo de almacenamiento especificado en una solicitud de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.podSpec.persistence.multiple.datatipo: colección
El operador de Kubernetes crea una solicitud de volumen persistente y monta un directorio de 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación autónoma 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para la implementación independiente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.podSpec.persistence.multiple.journaltipo: 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación autónoma 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para la implementación independiente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.podSpec.persistence.multiple.logstipo: colección
Haz que Kubernetes operador cree una Solicitud de Volumen Persistente y monte un directorio para 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar una implementación autónoma 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para la implementación independiente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.podSpec.podTemplatetipo: colección
Plantilla para los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes 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.metadatatipo: 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 puede agregar a
spec.podSpec.podTemplate.metadata, consulte la documentación de Kubernetes.
spec.podSpec.podTemplate.spectipo: 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 qué campos puede agregar a
spec.podSpec.podTemplate.spec, consulte la API principal de Kubernetes PodSpec v1.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.Utilice esta configuración para especificar la asignación de CPU y RAM para cada pod. Para ver ejemplos, consulte los ejemplos en GitHub.
spec.podSpec.podTemplate.spec.affinity.nodeAffinityTipo: Estructura
Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.
Para optimizar el rendimiento de lectura y escritura, emplea reglas de afinidad de nodos que restrinjan los POD a que se ejecuten en nodos particulares, o que prefieran ejecutarse en determinados nodos.
spec.podSpec.podTemplate.spec.affinity.podAffinityTipo: Estructura
Regla de Kubernetes para determinar si varios Pods de recursos
MongoDBdeben ubicarse junto con otros Pods. Para obtener más información sobre los casos de uso, consulte Afinidad y antiafinidad en la documentación de Kubernetes.
spec.podSpec.podTemplate.spec.affinity.podAntiAffinityTipo: Estructura
Default: kubernetes.io/hostname
Establece una regla para distribuir los Pods que alojan el recurso
MongoDBen diferentes ubicaciones. Una ubicación puede ser un nodo, rack o región. Por defecto, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.
spec.podSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKeyTipo: Estructura
Default: kubernetes.io/hostname
Esta clave define qué etiqueta se utiliza para determinar a qué dominio topológico pertenece un nodo.
Configuración del set de réplicas
Nota
Todas las configuraciones independientes también se aplican a los recursos del conjunto de réplicas.
Las siguientes configuraciones se aplican a los tipos de recursos del conjunto de réplicas:
spec.backuptipo: colección
El contenedor de recopilación para
spec.backup.mode, que permite copias de seguridad continuas para los recursos de MongoDB en Kubernetes Operator.
spec.backup.assignmentLabelsTipo: arreglo
Una lista de etiquetas separadas por comas para asignar demonios de copia de seguridad, almacenes de oplog, almacenes de bloques, almacenes deinstantáneas S3 y almacenes del sistema de archivos a proyectos o grupos específicos. Utilice etiquetas de asignación para identificar que determinados almacenes de copia de seguridad están asociados a proyectos concretos.
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 configura este parámetro, la clave API vinculada con el valor
spec.credentialsdebe tener un rolGlobal Owner.
spec.backup.modeTipo: string
Permite copias de seguridad continuas para un recurso de MongoDB. Los valores posibles son
enabled,disabledyterminated.Nota
La configuración
spec.backup.modedepende de Backup que está habilitado en Ops Manager y requiere que el valorspec.backup.enableden la especificación de recursos de Ops Manager esté establecido entrue.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.encryptionTipo: Objeto
Un objeto que contiene la configuración de cifrado de copias de seguridad.
spec.backup.encryption.kmipTipo: Objeto
Objeto que contiene la configuración de cifrado de copia de seguridad KMIP. Para obtener más información, consulte Configurar el cifrado de copia de seguridad KMIP para Ops Manager.
spec.backup.encryption.kmip.clientTipo: Objeto
Objeto que contiene la configuración del cliente de cifrado de copia de seguridad KMIP.
spec.backup.snapshotScheduletipo: 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.snapshotIntervalHoursTipo: número
Número de horas entre instantáneas. Puede establecer un valor de
6,8,12o24.
spec.backup.snapshotSchedule.snapshotRetentionDaysTipo: número
Número de días para mantener las snapshot recientes. Puedes establecer un valor entre
2y5, inclusive.
spec.backup.snapshotSchedule.dailySnapshotRetentionDaysTipo: número
Número de días para conservar las instantáneas diarias. Puede establecer un valor entre
1y365, inclusivo. Establecer el valor en0desactiva esta regla.
spec.backup.snapshotSchedule.weeklySnapshotRetentionWeeksTipo: número
Número de semanas para conservar los snapshots semanales. Puedes establecer un valor entre
1y52, inclusive. Configurar el valor a0deshabilita esta regla.
spec.backup.snapshotSchedule.monthlySnapshotRetentionMonthsTipo: número
Número de meses para conservar copias de seguridad mensuales. Puede establecer un valor entre
1y36, inclusivo. Establecer el valor en0desactiva esta regla.
spec.backup.snapshotSchedule.pointInTimeWindowHoursTipo: número
Número de horas en el pasado para las que puedes crear una snapshot puntual.
spec.backup.snapshotSchedule.referenceHourOfDayTipo: número
HoraUTC del día para programar instantáneas usando un reloj de 24 horas. Puede establecer un valor entre
0y23, ambos inclusive.
spec.backup.snapshotSchedule.referenceMinuteOfHourTipo: número
MinutoUTC de la hora para programar instantáneas. Puede establecer un valor entre
0y59, ambos inclusive.
spec.backup.snapshotSchedule.fullIncrementalDayOfWeekTipo: 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.clusterNameTipo: 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, asigna a cada Pod un FQDN. Para actualizar Cloud Manager u Ops Manager, el operador de Kubernetes calcula el FQDN de cada Pod utilizando el nombre del clúster proporcionado. Kubernetes no ofrece una API para consultar estos nombres de host.
Advertencia
Debe configurar
spec.clusterDomainsi su clúster de Kubernetes tiene un dominio predeterminado distinto del predeterminadocluster.local. Si no utiliza el dominio predeterminado ni configura la opciónspec.clusterDomain, es posible que el operador de Kubernetes no funcione como se espera.
spec.connectivity.replicaSetHorizonstipo: 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:
Asegúrese de que cada valor en este arreglo sea único.
Asegúrese de que el número de entradas en esta matriz coincida con el valor dado en
spec.members.Proporcione un valor para la configuración
spec.security.certsSecretPrefixpara habilitar TLS. Este método para usar horizontes divididos requiere la extensión Indicación de Nombre de Servidor del protocolo TLS.
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 horizonteexample-websiteproporciona 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 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 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.externalDomainTipo: string
Un dominio externo utilizado para exponer externamente su implementación de set de réplicas.
De forma predeterminada, cada miembro del conjunto de réplicas utiliza el FQDN del Pod de Kubernetes (
*.svc.cluster.local) como nombre de host predeterminado. Sin embargo, si agrega un dominio externo a esta configuración, el conjunto de réplicas utilizará un nombre de host que sea un subdominio del dominio especificado. Este nombre de host utiliza el siguiente formato:<replica-set-name>-<pod-idx>.<externalDomain>Por ejemplo:
replica-set-1.example.comDespués de implementar el conjunto de réplicas con esta configuración, el operador de Kubernetes utiliza el nombre de host con el dominio externo para sobrescribir el campo
processes[n].hostnameen la configuración de automatización de Ops Manager. A continuación, el agente de MongoDB utiliza este nombre de host para conectarse amongod.Para especificar otros nombres de host para conectarse al conjunto de réplicas, puede usar la configuración
spec.connectivity.replicaSetHorizons. Sin embargo, las siguientes conexiones siguen usando el nombre de host con el dominio externo:El agente de MongoDB para conectarse a
mongod.
ADVERTENCIA: Especificar este campo modifica la forma en que Ops Manager registra los procesos
mongod. No puede cambiar el valor de este campo ni de ningún otro campoprocesses[n].hostnameen la configuración de automatización de Ops Manager para una implementación de conjunto de réplicas en ejecución.
spec.memberConfigtipo: 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 índice1y 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.priorityTipo: string
Número que indica la probabilidad relativa de que un miembro del conjunto de réplicas de MongoDB se convierta en el principal.
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
prioritymás alto.Para disminuir la probabilidad relativa de que un miembro del set de réplicas se convierta en el primario, especifica un valor
prioritymás bajo.
Por ejemplo, un nodo con un
memberConfig.priorityde1.5es más probable que se convierta en primario que un nodo con unmemberConfig.priorityde0.5.Un nodo con un
memberConfig.priorityde0no es elegible para convertirse en el titular primario. Para obtener más información, consulta Prioridad de nodos.
spec.memberConfig.tagsTipo: 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.votesTipo: número
Determina si un miembro del conjunto de réplicas de MongoDB puede votar en una elección. Establezca el valor en
1para permitir que el miembro vote. Establezca el valor en0para excluir al miembro de una elección.
La configuración siguiente se aplica únicamente a los tipos de recursos de sets de réplicas:
spec.backup.autoTerminateOnDeletionTipo: booleano
Indicador que controla si el operador de Kubernetes detiene y finaliza la copia de seguridad al eliminar un recurso de MongoDB. Si se omite, el valor predeterminado es
false. Establecer este indicador entruees útil cuando se desea eliminar el recurso personalizado de MongoDB mientras que la configuraciónspec.backup.modeestá establecida enenabled.
Configuración de clúster fragmentado
Nota
Todas las configuraciones del conjunto de réplicas también se aplican a los recursos del clúster fragmentado, a menos que se especifique lo contrario.
La siguiente configuración se aplica solo a los tipos de recursos de clúster fragmentado:
spec.backup.snapshotSchedule.clusterCheckpointIntervalMinTipo: 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 4.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,30o60.
spec.configServerCountTipo: entero
Obligatorio. Número de miembros en el servidor de configuración.
spec.configSrv.additionalMongodConfigtipo: colección
Opciones de configuración adicionales con las que desea iniciar cada miembro 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 puede utilizar, consulte Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.
spec.configSrv.agenttipo: colección
Configuración del agente de MongoDB para cada miembro del servidor de configuración.
spec.configSrv.agent.startupOptionstipo: colección
Configuración del agente de MongoDB con la que desea iniciar cada miembro del 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:
Configuración de MongoDB Agent para proyectos de Cloud Manager.
Configuración del MongoDB Agent para la versión de Ops Manager que implementaste con el operador de Kubernetes.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 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.configSrvPodSpecTipo: Objeto
Objeto que contiene las especificaciones para los Pods del servidor de configuración CustomResourceDefinition de MongoDB.
spec.configSrvPodSpec.persistence.singletipo: colección
El operador de Kubernetes crea un reclamo de volumen persistente y monta los tres directorios para datos, diario y registros en el 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.multiplecolecciones pero no ambas.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del 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 miembro del servidor de configuración requiere 60 gigabytes de espacio de almacenamiento, establezca este valor en
60Gi.storageClassstring
Tipo de almacenamiento especificado en una solicitud de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.configSrvPodSpec.persistence.multiple.datatipo: colección
El operador de Kubernetes crea una solicitud de volumen persistente y monta un directorio de 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del servidor de configuración. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.configSrvPodSpec.persistence.multiple.journaltipo: 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del servidor de configuración. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.configSrvPodSpec.persistence.multiple.logstipo: colección
Haz que Kubernetes operador cree una Solicitud de Volumen Persistente y monte un directorio para 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del servidor de configuración. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.configSrvPodSpec.podTemplatetipo: 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.metadatatipo: colección
Metadatos para los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes crea para cada miembro del servidor de configuración.
Para revisar qué campos puede agregar a
spec.configSrvPodSpec.podTemplate.metadata, consulte la documentación de Kubernetes.
spec.configSrvPodSpec.podTemplate.spectipo: 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 qué campos puede agregar a
spec.configSrvPodSpec.podTemplate.spec, consulte la API principal de Kubernetes PodSpec v1.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.Utilice esta configuración para especificar la asignación de CPU y RAM para cada pod. Para ver ejemplos, consulte los ejemplos en GitHub.
spec.configSrvPodSpec.podTemplate.spec.affinity.podAffinitytipo: colección
Regla de Kubernetes para determinar si varios Pods de recursos
MongoDBdeben ubicarse junto con otros Pods. Para obtener más información sobre los casos de uso, consulte Afinidad y antiafinidad en la documentación de Kubernetes.
spec.configSrvPodSpec.podTemplate.spec.affinity.nodeAffinitytipo: colección
Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.
Para optimizar el rendimiento de lectura y escritura, emplea reglas de afinidad de nodos que restrinjan los POD a que se ejecuten en nodos particulares, o que prefieran ejecutarse en determinados nodos.
spec.configSrvPodSpec.podTemplate.spec.affinity.podAntiAffinityTipo: string
Default: kubernetes.io/hostname
Establece una regla para distribuir los Pods que alojan el recurso
MongoDBen diferentes ubicaciones. Una ubicación puede ser un nodo, rack o región. Por defecto, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.
spec.configSrvPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKeyTipo: string
Default: kubernetes.io/hostname
Esta clave define qué etiqueta se utiliza para determinar a qué dominio topológico pertenece un nodo.
spec.mongodsPerShardCountTipo: entero
Obligatorio. Número de miembros por fragmento.
spec.mongosCountTipo: entero
Obligatorio. Número de instancias de
mongosen el clúster fragmentado.
spec.mongos.additionalMongodConfigtipo: colección
Opciones de configuración adicionales con las que desea 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 puede utilizar, consulte Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.
spec.mongos.agenttipo: colección
Configuración del agente de MongoDB para cada instancia
mongos.
spec.mongos.agent.startupOptionstipo: colección
Configuración del agente de MongoDB con la que desea iniciar cada instancia de
mongos.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:
Configuración de MongoDB Agent para proyectos de Cloud Manager.
Configuración del MongoDB Agent para la versión de Ops Manager que implementaste con el operador de Kubernetes.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 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.mongosPodSpecTipo: Objeto
Objeto que contiene las especificaciones para los Pods mongos de MongoDB CustomResourceDefinition.
spec.mongosPodSpec.podTemplatetipo: 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.metadatatipo: colección
Metadatos para los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes crea para cada instancia
mongos.Para revisar qué campos puede agregar a
spec.mongosPodSpec.podTemplate.metadata, consulte la documentación de Kubernetes.
spec.mongosPodSpec.podTemplate.spectipo: colección
Especificaciones de los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes crea para cada instancia
mongos.Para revisar qué campos puede agregar a
spec.mongosPodSpec.podTemplate.spec, consulte la API principal de Kubernetes PodSpec v1.Nota
Cuando agregas contenedores a
spec.mongosPodSpec.podTemplate.spec.containers, el operador de Kubernetes los agrega al pod de Kubernetes. Estos contenedores se agregan a cada contenedor de instanciamongosen el pod.Utilice esta configuración para especificar la asignación de CPU y RAM para cada pod. Para ver ejemplos, consulte los ejemplos en GitHub.
spec.mongosPodSpec.podTemplate.spec.affinity.podAffinitytipo: colección
Opcional. Regla de Kubernetes para determinar si varios Pods de recursos
MongoDBdeben ubicarse junto con otros Pods.
spec.mongosPodSpec.podTemplate.spec.affinity.nodeAffinitytipo: colección
Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.
Para optimizar el rendimiento de lectura y escritura, emplea reglas de afinidad de nodos que restrinjan los POD a que se ejecuten en nodos particulares, o que prefieran ejecutarse en determinados nodos.
spec.mongosPodSpec.podTemplate.spec.affinity.podAntiAffinityTipo: string
Default: kubernetes.io/hostname
Establece una regla para distribuir los Pods que alojan el recurso
MongoDBen diferentes ubicaciones. Una ubicación puede ser un nodo, rack o región. Por defecto, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.
spec.mongosPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKeyTipo: string
Default: kubernetes.io/hostname
Esta clave define qué etiqueta se utiliza para determinar a qué dominio topológico pertenece un nodo.
spec.shardCountTipo: entero
Obligatorio. Número de fragmentos en el clúster fragmentado.
spec.shard.additionalMongodConfigtipo: 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 puede utilizar, consulte Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.
spec.shard.agenttipo: colección
Configuración del agente de MongoDB para cada miembro del fragmento del clúster.
spec.shard.agent.startupOptionstipo: colección
Configuración del agente de MongoDB con la que desea iniciar cada miembro del fragmento 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:
Configuración de MongoDB Agent para proyectos de Cloud Manager.
Configuración del MongoDB Agent para la versión de Ops Manager que implementaste con el operador de Kubernetes.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 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.shardPodSpecTipo: Objeto
Objeto que contiene las especificaciones para los Pods de fragmentación CustomResourceDefinition de MongoDB.
spec.shardPodSpec.persistence.multiple.datatipo: colección
El operador de Kubernetes crea una solicitud de volumen persistente y monta un directorio de 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del clúster fragmentado 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del clúster fragmentado. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.shardPodSpec.persistence.multiple.journaltipo: 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del clúster fragmentado 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del clúster fragmentado. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.shardPodSpec.persistence.multiple.logstipo: colección
Haz que Kubernetes operador cree una Solicitud de Volumen Persistente y monte un directorio para 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.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Capacidad mínima de almacenamiento que debe estar disponible en un nodo de Kubernetes para alojar cada miembro del clúster fragmentado 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
MongoDBrequiere 60 gigabytes de espacio de almacenamiento, configure este valor en60Gi.storageClassstring
Tipo de almacenamiento necesario para cada miembro del clúster fragmentado. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
spec.shardPodSpec.podTemplatetipo: 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.metadatatipo: 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 puede agregar a
spec.shardPodSpec.podTemplate.metadata, consulte la documentación de Kubernetes.
spec.shardPodSpec.podTemplate.spectipo: 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 qué campos puede agregar a
spec.shardPodSpec.podTemplate.spec, consulte la API principal de Kubernetes PodSpec v1.Nota
Cuando agregas contenedores a
spec.shardPodSpec.podTemplate.spec.containers, el operador de Kubernetes los agrega al pod de Kubernetes. Estos contenedores se agregan a cada contenedor miembro del clúster fragmentado en el pod.Utilice esta configuración para especificar la asignación de CPU y RAM para cada pod. Para ver ejemplos, consulte los ejemplos en GitHub.
spec.shardPodSpec.podTemplate.spec.affinity.podAffinityTipo: string
Regla de Kubernetes para determinar si varios Pods de recursos
MongoDBdeben ubicarse junto con otros Pods. Para obtener más información sobre los casos de uso, consulte Afinidad y antiafinidad en la documentación de Kubernetes.
spec.shardPodSpec.podTemplate.spec.affinity.nodeAffinityTipo: string
Kubernetes rule para ubicar Pods para set de réplicas en un rango específico de nodos.
Para optimizar el rendimiento de lectura y escritura, emplea reglas de afinidad de nodos que restrinjan los POD a que se ejecuten en nodos particulares, o que prefieran ejecutarse en determinados nodos.
spec.shardPodSpec.podTemplate.spec.affinity.podAntiAffinityTipo: string
Default: kubernetes.io/hostname
Establece una regla para distribuir los Pods que alojan el recurso
MongoDBen diferentes ubicaciones. Una ubicación puede ser un nodo, rack o región. Por defecto, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.
spec.shardPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKeyTipo: string
Default: kubernetes.io/hostname
Esta clave define qué etiqueta se utiliza para determinar a qué dominio topológico pertenece un nodo.
spec.shardSpecificPodSpecTipo: arreglo
Lista que contiene StatefulSet sobrescrituras por partición.
spec.shardSpecificPodSpec.podTemplatetipo: colección
Plantilla para los Pods de Kubernetes que el operador de controladores de MongoDB para Kubernetes crea para el fragmento específico.
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.metadatatipo: 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 puede agregar a
spec.shardSpecificPodSpec.podTemplate.metadata, consulte la documentación de Kubernetes.
spec.shardSpecificPodSpec.podTemplate.spectipo: 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 qué campos puede agregar a
spec.shardSpecificPodSpec.podTemplate.spec, consulte la API principal de Kubernetes PodSpec v1.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.Utilice esta configuración para especificar la asignación de CPU y RAM para cada pod. Para ver ejemplos, consulte los ejemplos en GitHub.
spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAffinityTipo: string
Regla de Kubernetes para determinar si varios Pods de recursos
MongoDBdeben ubicarse junto con otros Pods. Para obtener más información sobre los casos de uso, consulte Afinidad y antiafinidad en la documentación de Kubernetes.
spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAntiAffinityTipo: string
Default: kubernetes.io/hostname
Establece una regla para distribuir los Pods que alojan el recurso
MongoDBen diferentes ubicaciones. Una ubicación puede ser un nodo, rack o región. Por defecto, el operador de Kubernetes intenta distribuir los pods entre diferentes nodos.
spec.shardSpecificPodSpec.podTemplate.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKeyTipo: string
Default: kubernetes.io/hostname
Esta clave define qué etiqueta se utiliza para determinar a qué dominio topológico pertenece un nodo.
spec.topologyTipo: string
Opcional
Por defecto:
SingleClusterDefine 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
clusterSpecListdefinido:spec.mongos.clusterSpecListspec.configSrv.clusterSpecListspec.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.mongodsPerShardCountestá definido enspec.shard.clusterSpecList.membersspec.mongosCountestá definido enspec.mongos.clusterSpecList.membersspec.configServerCountestá definido enspec.configSrv.clusterSpecList.membersspec.shardOverrides.memberConfigestá definido enspec.shardOverrides.clusterSpecList.memberConfigspec.shardOverrides.membersestá definido enspec.shardOverrides.clusterSpecList.membersspec.shardOverrides.statefulSetestá definido enspec.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.clusterSpecListNota
Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.
Tipo: arreglo de objetos
Obligatorio si
topology=MultiClusterUn arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:
clusterNameTipo: string
Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.
externalAccesstipo: 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 agrega
spec.externalAccess, el operador de Kubernetes crea un servicio externo para cada Pod en un conjunto de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada Pod de base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que lo asocian a 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:
CampoValorDescripciónName<pod-name>-svc-externalNombre del Servicio externo. No puedes cambiar este valor.
TypeLoadBalancerCrea un servicio LoadBalancer externo.
Port<Port Number>Un puerto para
mongod.publishNotReadyAddresstrueEspecifica que los registros DNS se crean incluso si el Pod no está listo. No lo configure en
falsepara 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.
membersTipo: número
Número de miembros en el set de réplicas de MongoDB.
memberConfigtipo: 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 índice1, 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.persistencetipo: colección
Solo disponible en objetos
clusterSpecItempasados aspec.configSrv.clusterSpecListyspec.shard.clusterSpecList. Sobrescribe la configuración de persistencia existente para un clúster determinado.
statefulSettipo: 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.duplicateServiceObjectsNota
Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.
Tipo: booleano
Opcional
Por defecto:
trueSe ignora si la topología no es
MultiCluster. Se aplica a los servicios para todos los componentes del clúster fragmentado:mongos,configSrvyshards.- Si se configura en
true: - El operador de Kubernetes crea todos los
Pod Servicesde todos los clústeres miembros en cada clúster miembro. - Si se configura en
false: - El operador de Kubernetes crea solo el
Pod Servicespara los Pods host en cada clúster de nodo.
- Si se configura en
spec.mongos.clusterSpecListNota
Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.
Tipo: arreglo de objetos
Obligatorio si
topology=MultiClusterUn arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:
clusterNameTipo: string
Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.
externalAccesstipo: 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 agrega
spec.externalAccess, el operador de Kubernetes crea un servicio externo para cada Pod en un conjunto de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada Pod de base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que lo asocian a 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:
CampoValorDescripciónName<pod-name>-svc-externalNombre del Servicio externo. No puedes cambiar este valor.
TypeLoadBalancerCrea un servicio LoadBalancer externo.
Port<Port Number>Un puerto para
mongod.publishNotReadyAddresstrueEspecifica que los registros DNS se crean incluso si el Pod no está listo. No lo configure en
falsepara 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.
membersTipo: número
Número de miembros en el set de réplicas de MongoDB.
memberConfigtipo: 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 índice1, 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"
statefulSettipo: 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.clusterSpecListNota
Este campo está disponible exclusivamente para implementaciones de clústeres multiclúster.
Tipo: arreglo de objetos
Obligatorio si
topology=MultiClusterUn arreglo de objetos para uso en implementaciones de clústeres particionados multiclúster con los siguientes campos de nivel superior:
clusterNameTipo: string
Nombre del clúster donde el Operador de MongoDB Controllers para Kubernetes programa el StatefulSet.
externalAccesstipo: 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 agrega
spec.externalAccess, el operador de Kubernetes crea un servicio externo para cada Pod en un conjunto de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada Pod de base de datos MongoDB en un clúster. Cada servicio externo tiene selectores que lo asocian a 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:
CampoValorDescripciónName<pod-name>-svc-externalNombre del Servicio externo. No puedes cambiar este valor.
TypeLoadBalancerCrea un servicio LoadBalancer externo.
Port<Port Number>Un puerto para
mongod.publishNotReadyAddresstrueEspecifica que los registros DNS se crean incluso si el Pod no está listo. No lo configure en
falsepara 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.
membersTipo: número
Número de miembros en el set de réplicas de MongoDB.
memberConfigtipo: 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 índice1, 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.persistencetipo: colección
Solo disponible en objetos
clusterSpecItempasados aspec.configSrv.clusterSpecListyspec.shard.clusterSpecList. Sobrescribe la configuración de persistencia existente para un clúster determinado.
statefulSettipo: 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.shardOverridesTipo: arreglo de objetos
Opcional
Lista que contiene anulaciones por partición. Cada objeto contiene los siguientes campos:
shardNamesRequerido
El nombre de la partición al que se aplica esta anulación.
podSpec.PersistenceOpcional
Define cómo el Operador de Kubernetes crea y asigna volúmenes persistentes a particiones. Para
topology=MultiClusterestablece 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 enspec.shardOverrides.clusterSpecList.persistence.additionalMongodConfigOpcional
Anulación específica de la partición para
spec.shard.additionalMongodConfig.agentOpcional
Anulación específica de la partición para
spec.shard.agent.statefulSetOpcional
Instrucción específica de partición para
spec.shardPodSpec.podTemplateyspec.shard.clusterSpecList.statefulSet.membersOpcional
Disponible solo cuando
topology=SingleCluster. Anulación específica de partición para anulación paraspec.mongodsPerShardCount.memberConfigOpcional
Disponible solo cuando
topology=SingleCluster. Anulación específica de partición paraspec.shard.memberConfig.
spec.shardPodSpec.persistence.singletipo: colección
El operador de Kubernetes crea un reclamo de volumen persistente y monta los tres directorios para datos, diario y registros en el 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.multiplecolecciones pero no ambas.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del 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 miembro del fragmento del clúster fragmentado requiere 60 gigabytes de espacio de almacenamiento, establezca este valor en
60Gi.storageClassstring
Tipo de almacenamiento especificado en una solicitud de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrese de configurar StorageClass
reclaimPolicyen Retain. Esto garantiza que los datos se conserven cuando se elimine una solicitud de volumen persistente.
Configuraciones de Prometheus
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.prometheusTipo: arreglo
Opcional
Lista que contiene los parámetros para exponer métricas a Prometheus.
spec.prometheus.metricsPathTipo: 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.passwordSecretRefTipo: Objeto
Condicional
Objeto que contiene los detalles del secreto para la autenticación HTTP básica. Si desea utilizar Prometheus con su recurso MongoDB, debe especificar esta configuración.
spec.prometheus.passwordSecretRef.keyTipo: string
Opcional
Por defecto:
"password"Cadena legible 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á el valor predeterminado.
spec.prometheus.passwordSecretRef.nameTipo: string
Condicional
Etiqueta legible para humanos que identifica el secreto que contiene la contraseña para la autenticación HTTP básica. Si desea utilizar Prometheus con su recurso MongoDB, debe especificar esta configuración.
spec.prometheus.portTipo: 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.tlseSecretKeyRefTipo: Objeto
Opcional
Objeto que contiene los detalles del secreto para la autenticación TLS.
spec.prometheus.tlseSecretKeyRef.keyTipo: string
Opcional
Por defecto:
"password"Cadena legible 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á el valor predeterminado.
spec.prometheus.tlseSecretKeyRef.nameTipo: 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.
Configuración de seguridad
Las siguientes configuraciones de seguridad se aplican solo a los tipos de recursos de set de réplicas y clúster:
spec.security.tls.caTipo: string
Proporcione el nombre del ConfigMap que almacena la CA para el recurso
MongoDB.Importante
Si utiliza una CA personalizada para firmar sus certificados TLS para el recurso
MongoDB, debe especificar este parámetro.El operador de Kubernetes requiere que asignes el nombre del certificado del recurso
MongoDBca-pemen el ConfigMap.
spec.security.certsSecretPrefixTipo: string
Texto que se añadirá como prefijo a los secretos de Kubernetes que haya creado y que contengan las claves y certificados TLS de su conjunto de réplicas o clúster fragmentado.
Debe anteponer sus secretos con
<prefix>-<metadata.name>.Por ejemplo, si llama a su despliegue
my-deploymenty establece el prefijo enmdb, debe nombrar el secreto TLS para las comunicaciones TLS del cliente comomdb-my-deployment-cert. Además, debe nombrar el secreto TLS para la autenticación interna del clúster (si está habilitada) comomdb-my-deployment-clusterfile.Para obtener más información sobre cómo nombrar los secretos que contienen sus certificados TLS, consulte el tema correspondiente a su implementación en Implementar un conjunto de réplicas.
spec.security.tls.additionalCertificateDomainsTipo: booleano
Lista de todos los dominios que deben agregarse a los certificados TLS de cada pod en este despliegue. Al configurar este parámetro, cada CSR que el operador de Kubernetes transforma en un certificado TLS incluye un SAN con el formato
<pod name>.<additional cert domain>.Los recursos del conjunto de réplicas no necesitan este parámetro. Utilice
spec.connectivity.replicaSetHorizonsen su lugar.Nota
Si agrega 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:Elimine cualquier CSR existentepara que Kubernetes pueda generar nuevos CSR. Para obtener información sobre cómo eliminar un recurso, consulte la sección "Eliminar recursos" en la documentación de Kubernetes.
Apruebe las solicitudes de servicio de cliente (CSR) después de que Kubernetes las genere.
spec.additionalMongodConfig.net.ssl.modeTipo: string
Por defecto:
requireSSLEspecifica qué
sslModese usa para las conexiones de red. Las siguientes son opciones válidas:ValorDescripciónallowSSLLas conexiones entre servidores no utilizan TLS. Para las conexiones entrantes, el servidor acepta tanto TLS como conexiones que no utilizan TLS.
preferSSLLas conexiones entre servidores utilizan TLS. Para las conexiones entrantes, el servidor acepta tanto TLS como conexiones que no utilizan TLS.
requireSSLEl servidor utiliza y acepta únicamente conexiones cifradas mediante TLS.
spec.additionalMongodConfig.net.tls.disabledProtocolsTipo: string
Novedades en MongoDB versión 4.2.
Impide que un servidor MongoDB que se ejecuta 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_2y 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_1y habilitar ambosTLS1_0yTLS1_2. También debes desactivar al menosTLS1_0oTLS1_2. Por ejemplo,TLS1_0,TLS1_1desactivaTLS1_2en 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
nonecomo valor paraspec.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.authenticationtipo: colección
Especificaciones de autenticación para tu implementación de MongoDB.
spec.security.authentication.enabledTipo: booleano
Por defecto:
falseEspecifica si la autenticación está habilitada en el proyecto de Cloud Manager o Ops Manager. Si se establece en
true, debe configurar un mecanismo de autenticación enspec.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.modesTipo: 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,LDAPyOIDC. RecomendamosSCRAM-SHA-256(SCRAM) sobreSCRAM-SHA-1. Si especifícaSCRAM-SHA-1, también debe especificarMONGODB-CR.Nota
Autenticación interna de clúster X.509
Para habilitar la autenticación interna del clúster X.509 para el proyecto Cloud Manager u Ops Manager, establezca este valor en
["X509"]y especifique la siguiente configuración:Proporcione un valor para la configuración
spec.security.certsSecretPrefix.
Si proporciona más de un valor para
spec.security.authentication.modes, también debe especificar un valor paraspec.security.authentication.agents.mode.
spec.security.authentication.internalClusterTipo: 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:spec.security.authentication.modes: ["X509"]
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.requireClientTLSAuthenticationTipo: booleano
Por defecto:
falseEspecifica si el servidor de MongoDB requiere que los clientes se conecten mediante un certificado TLS. El valor predeterminado es
truesi se habilita la autenticación TLS.Para habilitar la autenticación TLS, proporcione un valor para la configuración
spec.security.certsSecretPrefix.
spec.security.authentication.ldaptipo: 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, cambie
spec.security.authentication.modesa["LDAP"].
spec.security.authentication.ldap.serversTipo: arreglo de cadenas
Requerido para la autenticación LDAP.
Lista de nombres de servidores y puertos de los servidores LDAP. Especifica los nombres de host con sus respectivos puertos en el siguiente formato:
spec: security: authentication: ldap: servers: - "<hostname1>:<port1>" - "<hostname2>:<port2>"
spec.security.authentication.ldap.timeoutMSTipo: entero
Especifica cuántos milisegundos debe esperar una solicitud de autenticación antes de agotar el tiempo de espera.
spec.security.authentication.ldap.transportSecurityTipo: 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 ennone.Nota
Si se especifica un string diferente de
noneotls, Kubernetes Operator aún establece la configuración entls.
spec.security.authentication.ldap.caConfigMapReftipo: 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.nameTipo: 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.keyTipo: 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.bindQueryUserTipo: string
Requerido para la autenticación LDAP.
Nombre distintivoLDAP al que se vincula MongoDB al conectarse al servidor LDAP.
spec.security.authentication.ldap.bindQueryPasswordSecretReftipo: colección
Requerido para la autenticación LDAP.
Especifica el secreto que contiene la contraseña con la que MongoDB se vincula al conectarse al servidor LDAP.
spec.security.authentication.ldap.bindQueryPasswordSecretRef.nameTipo: string
Requerido para la autenticación LDAP.
Nombre del secreto que contiene la contraseña con la que MongoDB se autentica al conectarse al servidor LDAP.
El secreto debe contener solo un campo
passwordque almacene la contraseña.
spec.security.authentication.ldap.authzQueryTemplateTipo: 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 consulta 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.automationLdapGroupDNTipo: 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.authzQueryTemplateestá presente, yspec.security.authentication.agents.modeesLDAPoX509.
spec.security.authentication.ldap.userToDNMappingTipo: string
Asigna el nombre de usuario proporcionado a
mongodomongospara la autenticación en un nombre distinguido (DN) de LDAP.Tip
security.ldap.userToDNMapping en el manual de MongoDB
spec.security.authentication.ldap.userCacheInvalidationIntervalTipo: entero
Especifica cuántos segundos espera MongoDB para vaciar la caché de usuarios LDAP. Por defecto, 30 segundos.
spec.security.authentication.oidcProviderConfigstipo: 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.modeestá configurado enOIDC.
spec.security.authentication.oidcProviderConfigs.audienceTipo: 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.authorizationMethodTipo: string
Requerido
Los valores válidos son
WorkforceIdentityFederationyWorkloadIdentityFederation. 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 las implementaciones, utilice Workload Identity Federation. Solo se puede configurar un IdP 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.authorizationTypeTipo: string
Requerido
Los valores válidos son
GroupMembershipyUserID. SeleccioneGroupMembershippara conceder autorización basada en la membresía del grupo de usuarios de proveedor de identidad o seleccioneUserIDpara conceder autorización a un usuario individual.
spec.security.authentication.oidcProviderConfigs.clientIdTipo: string
Requerido
Identificador único para su aplicación registrada. Ingresa el valor
clientIdde la aplicación registrada en un proveedor de identidad externo.
spec.security.authentication.oidcProviderConfigs.configurationNameTipo: 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.groupsClaimTipo: 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.issuerURITipo: 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 MongoDB8.0+, la combinación deissuerURIy público debe ser única en todas las configuraciones del proveedor OIDC. Para otras versiones de MongoDB, el propioissuerURIdebe ser único.
spec.security.roleRefsTipo: arreglo
Arreglo que hace referencia a
ClusterMongoDBRolerecursos personalizados que te proporcionan un control de acceso detallado en tu implementación de MongoDB.
spec.security.roleRefs.kindTipo: string
El tipo del recurso personalizado referenciado. Por ejemplo,
ClusterMongoDBRole.
spec.security.roleRefs.kindTipo: string
El tipo del recurso personalizado referenciado. Por ejemplo,
ClusterMongoDBRole.
spec.security.authentication.oidcProviderConfigs.requestedScopesTipo: 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.userClaimTipo: 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.agentstipo: colección
Configuración de autenticación del agente de MongoDB para el proyecto de Cloud Manager u Ops Manager.
spec.security.authentication.agents.modeTipo: string
Mecanismo de autenticación que utilizan los agentes de MongoDB para su implementación. Los valores válidos son
SCRAM,SCRAM-SHA-1,MONGODB-CR,X509,OIDCyLDAP. El valor que especifique también debe estar presente enspec.security.authentication.modes. RecomendamosSCRAM-SHA-256(SCRAM) en lugar deSCRAM-SHA-1. Si especificaSCRAM-SHA-1, también debe especificarMONGODB-CR.Esta configuración es necesaria si especificó más de un valor para
spec.security.authentication.modes.
spec.security.authentication.agents.automationUserNameTipo: string
Nombre del usuario que los agentes de MongoDB utilizan para interactuar con su implementación de MongoDB. El nombre de usuario se asigna a un nombre distinguido (DN) de LDAP según
spec.security.authentication.ldap.userToDNMapping. El DN resultante debe existir previamente en su implementación de LDAP.Esta configuración es necesaria si
spec.security.authentication.agents.modeesLDAP.
spec.security.authentication.agents.automationPasswordSecretReftipo: colección
Detalles del secreto que contiene la contraseña del usuario
spec.security.authentication.agents.automationUserName.Esta configuración es necesaria si
spec.security.authentication.agents.modeesLDAP.
spec.security.authentication.agents.automationPasswordSecretRef.nameTipo: 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.automationUserNameen su implementación LDAP.Esta configuración es necesaria si
spec.security.authentication.agents.modeesLDAP.
spec.security.authentication.agents.automationPasswordSecretRef.keyTipo: string
Introduzca el secreto
spec.security.authentication.agents.automationPasswordSecretRef.nameque contiene la contraseña del usuario enspec.security.authentication.agents.automationUserName.Esta configuración es necesaria si
spec.security.authentication.agents.modeesLDAP.
spec.security.authentication.agents.clientCertificateSecretRef.nameTipo: string
Especifica el secreto que contiene el certificado TLS del agente de MongoDB. Si se omite, se utiliza por defecto
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.rolesTipo: 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.enableddebe sertrue.Ejemplo
En este ejemplo, un rol definido por el usuario llamado
customRolepermite a los usuarios asignados a este rol:Inserte documentos en la colección
catsen la base de datospetsyBuscar e insertar documentos en la colección
dogsen la base de datospets.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 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.dbTipo: string
La base de datos en la que desea almacenar el rol definido por el usuario.
Ejemplo
admin
spec.security.roles.authenticationRestrictionsTipo: arreglo
Matriz que define la dirección IP desde la cual y a la cual los usuarios asignados a este
spec.security.roles.rolepueden conectarse.
spec.security.roles.authenticationRestrictions.clientSourceTipo: arreglo
Conjunto de direcciones IP o bloques CIDR desde los que pueden conectarse los usuarios a los que se les ha asignado este
spec.security.roles.role.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.serverAddressTipo: arreglo
Conjunto 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.privilegesTipo: arreglo
Arreglo que describe los privilegios que poseen los usuarios a quienes se les otorgó este rol.
spec.security.roles.privileges.actionsTipo: arreglo
Lista de acciones que pueden realizar los usuarios con este rol. Para ver la lista de valores aceptados, consulte Acciones de privilegio en el Manual de MongoDB para las versiones de MongoDB que implemente con el Operador de Kubernetes.
spec.security.roles.privileges.resourcetipo: colección
Recursos para los que se aplica el privilegio
actions.Esta colección debe incluir cualquiera de lo siguiente:
La configuración
spec.security.roles.privileges.resource.clustercon un valor detrue.
spec.security.roles.privileges.resource.databaseTipo: string
Base de datos para la que se aplica el privilegio
actions.Si proporciona un valor para esta configuración, también debe proporcionar un valor para
spec.security.roles.privileges.resource.collection.
spec.security.roles.privileges.resource.collectionTipo: string
Recolección en el
databasepara el cual se aplica el privilegioactions.Si proporciona un valor para esta configuración, también debe proporcionar un valor para
spec.security.roles.privileges.resource.database.
spec.security.roles.privileges.resource.clusterTipo: booleano
Por defecto: False
Indicador que especifica que el privilegio
actionsse aplica a todas las bases de datos y colecciones en la implementación de MongoDB. Si se omite, se utiliza el valor predeterminadofalse.Si se establece en verdadero, no proporcione valores para
spec.security.roles.privileges.resource.databaseyspec.security.roles.privileges.resource.collection.
Ejemplos
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 ...
El siguiente ejemplo muestra una especificación de recurso para un set de réplicas con todas las configuraciones proporcionadas:
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-replica-set spec: members: 3 version: "8.0.0" service: my-service opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true type: ReplicaSet podSpec: persistence: multiple: data: storage: "10Gi" journal: storage: "1Gi" labelSelector: matchLabels: app: "my-app" logs: storage: "500M" storageClass: standard 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 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service additionalMongodConfig: net: ssl: mode: preferSSL ...
El siguiente ejemplo muestra una especificación de recursos para un clúster particionado con todas las configuraciones proporcionadas:
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-sharded-cluster spec: shardCount: 2 mongodsPerShardCount: 3 mongosCount: 2 configServerCount: 3 version: "8.0.0" service: my-service type: ShardedCluster ## Please Note: The default Kubernetes cluster name is ## `cluster.local`. ## If your cluster has been configured with another name, you can ## specify it with the `clusterDomain` attribute. opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true configSrvPodSpec: # if "persistence" element is omitted then Operator uses the # default size (5Gi) for mounting single Persistent Volume podTemplate: 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: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongosPodSpec: podTemplate: 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: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId shardPodSpec: persistence: multiple: # if the child of "multiple" is omitted then the default size will be used. # 16GB for "data", 1GB for "journal", 3GB for "logs" data: storage: "20Gi" logs: storage: "4Gi" storageClass: standard podTemplate: 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: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongos: additionalMongodConfig: systemLog: logAppend: true verbosity: 4 configSrv: additionalMongodConfig: operationProfiling: mode: slowOp shard: additionalMongodConfig: storage: journal: commitIntervalMs: 50 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service ...
Configuración de StatefulSet
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 predeterminada de StatefulSet y PVC especificando valores para los campos spec.statefulSet.spec en la especificación del recurso de MongoDB. Sin embargo, solo se conservan ciertos campos durante el proceso de fusión. Las siguientes tablas enumeran los campos de anulación admitidos.
spec.statefulSet.spectipo: colección
Especificación para el StatefulSet que el operador de controladores de MongoDB para Kubernetes crea para los recursos
MongoDB.
Campos de anulación de StatefulSet
Los siguientes campos se combinan y tienen prioridad sobre la configuración predeterminada de StatefulSet cuando se especifican valores en spec.statefulSet.spec. Las rutas de los campos 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.statefulSet.spec.serviceNameTipo: string
por defecto:
<resource_name>-svcy<resource_name>-svc-externalNombre 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.
PVC (VolumeClaimTemplates) Override Fields
El operador de Kubernetes fusiona una plantilla de reclamación de volumen especificada en spec.statefulSet.spec.volumeClaimTemplates solo si su metadata.name coincide con el nombre de una plantilla de reclamación de volumen existente. La siguiente tabla muestra qué campos de PVC conserva y cuáles descarta el operador de Kubernetes al especificar valores en spec.statefulSet.spec.volumeClaimTemplates. Las rutas de los campos son relativas a una plantilla de reclamación de volumen individual, por lo que spec.volumeMode corresponde a spec.statefulSet.spec.volumeClaimTemplates.spec.volumeMode en la especificación de recursos de MongoDB.
Compatible (conservado) | No compatible (descartado) |
|---|---|
|
|
| [1] | El operador de Kubernetes añade los modos de acceso que especifique a los modos de acceso por defecto en lugar de reemplazarlos. |