El MongoDBMultiCluster El recurso define la implementación de MongoDB de su clúster multi-Kubernetes y le brinda al operador de Kubernetes de MongoDB Enterprise la información que necesita para crear o actualizar sus clústeres, la implementación deOps Manager, statefulSets, servicios y otros recursos de Kubernetes.
Ejemplo
El siguiente ejemplo muestra una especificación de recursos para una implementación de MongoDB con múltiples clústeres de Kubernetes:
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 8 version: 8.0.0 9 type: ReplicaSet 10 duplicateServiceObjects: false 11 credentials: my-credentials 12 opsManager: 13 configMapRef: 14 name: my-project 15 clusterSpecList: 16 - clusterName: cluster1.example.com 17 members: 2 18 statefulSet: 19 spec: 20 template: 21 spec: 22 containers: 23 # Example of custom sidecar containers. Remove it before using the file in production. 24 - name: sidecar1 25 image: busybox 26 command: [ "sleep" ] 27 args: [ "infinity" ] 28 # Use the following settings to override the default storage size of the "data" Persistent Volume. 29 volumeClaimTemplates: 30 - metadata: 31 name: data 32 spec: 33 resources: 34 requests: 35 storage: 1Gi 36 - clusterName: cluster2.example.com 37 members: 1 38 statefulSet: 39 spec: 40 template: 41 spec: 42 containers: 43 # Example of custom sidecar containers. Remove it before using the file in production. 44 - name: sidecar2 45 image: busybox 46 command: [ "sleep" ] 47 args: [ "infinity" ] 48 volumeClaimTemplates: 49 - metadata: 50 name: data 51 spec: 52 resources: 53 requests: 54 storage: 1Gi 55 - clusterName: cluster3.example.com 56 members: 1 57 statefulSet: 58 spec: 59 template: 60 spec: 61 containers: 62 # Example of custom sidecar containers. Remove it before using the file in production. 63 - name: sidecar3 64 image: busybox 65 command: [ "sleep" ] 66 args: [ "infinity" ] 67 volumeClaimTemplates: 68 - metadata: 69 name: data 70 spec: 71 resources: 72 requests: 73 storage: 1Gi 74 75 ...
Configuración de recursos obligatoria MongoDBMultiCluster
Esta sección describe ajustes que debes utilizar para tu recurso MongoDBMultiCluster.
apiVersionTipo: string
Versión del esquema de recursos de Kubernetes de MongoDB.
kindTipo: string
Tipo de recurso de MongoDB Kubernetes que se creará. Establézcalo en
MongoDBMultiCluster.
metadata.nameTipo: string
Nombre del recurso MongoDB Kubernetes que está creando.
Los nombres de recursos deben tener 44 caracteres o menos.
spec.credentialsTipo: string
Nombre del secreto que creaste como Ops Manager Credenciales de autenticación deAPI para que el operador de Kubernetes se comunique con Ops Manager.
El objeto secreto de Kubernetes de Ops Manager 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 concilia el estado del recurso
MongoDB.
spec.typeTipo: string
Tipo de recurso de MongoDB Kubernetes que se creará. El único valor aceptado para una implementación de MongoDB con varios clústeres de Kubernetes es ReplicaSet.
spec.versionTipo: string
Versión de MongoDB instalada para este recurso
MongoDBMultiCluster.Importante
Asegúrese de elegir una versión de MongoDB Server compatible.
Las versiones compatibles difieren según la imagen base que utiliza el recurso de base de datos MongoDB.
Configuración de MongoDBMultiCluster recursos opcional
MongoDBMultiCluster Los recursos pueden utilizar las siguientes configuraciones:
spec.additionalMongodConfigTipo: colección
Opciones de configuración adicionales con las que desea iniciar procesos de MongoDB.
El operador de Kubernetes admite todas las opciones de configuración que admite la versión de MongoDB que implementa a través del agente de MongoDB, excepto que el operador de Kubernetes anula los valores que proporciona para cualquiera de las siguientes opciones:
net.portnet.tls.certificateKeyFilenet.tls.clusterFilereplication.replSetNamesecurity.clusterAuthModesharding.clusterRolestorage.dbPathsystemLog.destinationsystemLog.path
Para obtener más información sobre las opciones de configuración que posee el operador de Kubernetes, consulte Configuración exclusiva del operador de Kubernetes de MongoDB.
Para saber qué opciones de configuración puedes utilizar, consulta Opciones avanzadas para implementaciones de MongoDB en la documentación de Ops Manager.
spec.agentTipo: colección
Configuración de MongoDB Agent para el recurso de base de datos de MongoDB.
spec.agent.startupOptionsTipo: colección
Configuración del agente MongoDB con la que desea iniciar el recurso de base de datos MongoDB.
Debe proporcionar la configuración del Agente MongoDB como pares clave-valor. Los valores deben ser cadenas. Para obtener una lista de las configuraciones compatibles con el Agente MongoDB, consulte:
Configuración del agente MongoDB para proyectos de Cloud Manager.
Configuración del agente de MongoDB para la versión de Ops Manager que implementó con el operador de Kubernetes.
spec.backupTipo: colección
El contenedor de recopilación para spec.backup.mode, que permite realizar copias de seguridad continuas de los recursos de MongoDB en el operador de Kubernetes.
spec.backup.assignmentLabelsTipo: arreglo
Una lista de etiquetas de asignación para los procesos del servicio Backup Daemon. Use etiquetas de asignación para identificar qué procesos específicos del servicio Backup Daemon están asociados a proyectos específicos. Si configura etiquetas de asignación con el operador de Kubernetes, los valores que configure en el archivo de configuración de Kubernetes para las etiquetas de asignación anulan los valores definidos en la interfaz de usuario de Ops Manager. Las etiquetas de asignación que no configure con el operador de Kubernetes seguirán usando los valores definidos en la interfaz de usuario de Ops Manager.
spec.backup.autoTerminateOnDeletionTipo: booleano
Indicador que indica si el operador de Kubernetes detiene y finaliza la copia de seguridad al eliminar un
MongoDBMultiClusterrecurso. El valor predeterminadofalsees. Establecer este indicador entruees útil si desea eliminar elMongoDBMultiClusterrecurso mientras el ajuste spec.backup.mode está establecidoenableden.
spec.backup.encryptionTipo: objeto
Objeto que contiene la configuración de cifrado de respaldo.
spec.backup.encryption.kmipTipo: objeto
Objeto que contiene la configuración del cifrado de copias de seguridad de KMIP. Para obtener más información, consulte Configurar el cifrado de copias de seguridad de KMIP para Ops Manager.
spec.backup.encryption.kmip.clientTipo: objeto
Objeto que contiene la configuración del cliente de cifrado de respaldo KMIP.
spec.backup.modeTipo: string
Permite realizar copias de seguridad continuas de un recurso
MongoDBMultiCluster. Los valores posibles sonenabled,disabledyterminated.Nota
La configuración spec.backup.mode depende de la copia de seguridad habilitada en Ops Manager y requiere que el
spec.backup.enabledvalor en la especificación del recurso Ops Manager esté establecidotrueen.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.snapshotScheduleTipo: colección
Contenedor de recopilación para configuraciones de programación de instantáneas para copias de seguridad continuas de recursos de MongoDB en el operador de Kubernetes.
spec.backup.snapshotSchedule.dailySnapshotRetentionDaysTipo: número
Número de días para guardar las instantáneas diarias. Puede establecer un valor entre
1y365, ambos inclusive. Si se establece el valor en0, se deshabilita esta regla.
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.backup.snapshotSchedule.monthlySnapshotRetentionMonthsTipo: número
Número de meses para guardar instantáneas mensuales. Puede establecer un valor entre
1y36, ambos inclusive. Si se establece el valor en0, se deshabilita esta regla.
spec.backup.snapshotSchedule.pointInTimeWindowHoursTipo: número
Número de horas del pasado para las que puede crear una instantánea de un punto en el tiempo.
spec.backup.snapshotSchedule.referenceHourOfDayTipo: número
Hora UTC del día para programar instantáneas con un 24 reloj de horas. Puede establecer un valor entre
0y,23ambos inclusive.
spec.backup.snapshotSchedule.referenceMinuteOfHourTipo: número
MinutoUTC de la hora para programar instantáneas. Puede establecer un valor entre
0y,59ambos inclusive.
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 guardar las instantáneas recientes. Puede establecer un valor entre
2y5, ambos inclusive.
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.cloudManager.configMapRef.nameTipo: string
Alias para spec.opsManager.configMapRef.name.
spec.clusterSpecListTipo: colección
Lista de especificaciones para cada clúster de Kubernetes en un recurso
MongoDBMultiCluster.
spec.clusterSpecList.clusterNameTipo: string
Nombre del clúster donde el operador de Kubernetes de MongoDB Enterprise programa el StatefulSet. Cuando el operador de Kubernetes implementa este
MongoDBMultiClusterrecurso, crea una cuenta de servicio. Este nombre es el que utiliza la cuenta de servicio del clúster del operador para comunicarse con los clústeres de cargas de trabajo.
spec.clusterSpecList.externalAccess.externalDomainTipo: string
Un dominio externo utilizado para exponer externamente la implementación de su conjunto de réplicas.
De forma predeterminada, cada miembro del conjunto de réplicas usa el FQDN del pod de Kubernetes
*.svc.cluster.local() como nombre de host predeterminado. Sin embargo, si se agrega un dominio externo a esta configuración, el conjunto de réplicas usa un nombre de host que es un subdominio del dominio especificado. Este nombre de host tiene el siguiente formato:<replica-set-name>-<cluster-idx>-<pod-idx>.<externalDomain>Por ejemplo:
multi-replica-set-0-1.cluster-0.example.comDespués de implementar el conjunto de réplicas con esta configuración, el operador de Kubernetes usa el nombre de host con el dominio externo para anular el
processes[n].hostnamecampo en la configuración de automatización de Ops Manager. A continuación, el agente de MongoDB usa este nombre de host para conectarsemongoda.Para especificar otros nombres de host para conectarse al conjunto de réplicas, puede usar la configuración. Sin embargo, las siguientes conexiones aún usan el nombre de host con el dominio
spec.connectivity.replicaSetHorizonsexterno:ADVERTENCIA: Al especificar este campo, se modifica la forma en que Ops Manager registra
mongodlos procesos. Solo se puede especificar este campo para nuevas implementaciones de conjuntos de réplicas a partir de la versión del operador de Kubernetes.1.19 No se puede cambiar el valor de este campo ni de ningúnprocesses[n].hostnamecampo en la configuración de automatización de Ops Manager para una implementación de conjuntos de réplicas en ejecución.Importante
Use esta configuración solo al implementar un conjunto de réplicas de implementación de MongoDB en un clúster multi-Kubernetes sin una malla de servicios. Consulte Implementar conjuntos de réplicas en un clúster multi-Kubernetes sin una malla de servicios.
spec.clusterSpecList.externalAccess.externalServiceTipo: colección
Configuración para la exposición externa de un clúster específico en su implementación de MongoDB con varios clústeres de Kubernetes. Esta configuración anula la configuración global de spec.externalAccess.externalService.
Al configurar spec.externalAccess, el operador de Kubernetes crea automáticamente un servicio de balanceador de carga externo con valores predeterminados. Puede anular ciertos valores o añadir nuevos según sus necesidades. Por ejemplo, si desea crear servicios NodePort y no necesita un balanceador de carga, debe configurar las 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.clusterSpecList.externalAccess.externalService.annotationsTipo: colección
Pares clave-valor que te permiten añadir configuraciones específicas del proveedor de nube a un clúster específico en tu implementación de MongoDB multi-Kubernetes cluster. Esta configuración anula la configuración global, spec.externalAccess.externalService.annotations. Para obtener más información, consulta anotaciones y la documentación de tu proveedor de nube de Kubernetes.
Puede 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 por los correctos, como se describe en la siguiente tabla. El uso de marcadores de posición permite proporcionar anotaciones específicas en cada servicio para un pod específico.
ValorDescripción{resourceName}Igual
metadata.namea.{namespace}Igual
metadata.namespacea.{podIndex}Índice del Pod asignado por StatefulSet y al que apunta el servicio externo actual.
{podName}Igual a
{resourceName}-{clusterIndex}-{podIndex}.{clusterName}El nombre del clúster actual establecido en spec.clusterSpecList.clusterName.
{clusterIndex}El índice asignado inicialmente por el operador de Kubernetes para el nombre del clúster actual establecido en spec.clusterSpecList.clusterName.
Este valor podría no reflejar el orden de los clústeres de nodos definidos en spec.clusterSpecList. Aunque se puede cambiar el orden de los clústeres de miembros en spec.clusterSpecList, el operador de Kubernetes sigue utilizando el índice que asignó inicialmente para el nombre actual del clúster.
{statefulSetName}{externalServiceName}Nombre generado del servicio externo, basado en los valores de marcador de posición especificados. Igual a
{resourceName}-{clusterIndex}-{podIndex}-svc-external.{mongodProcessDomain}El nombre de dominio del servidor que aloja el proceso mongod. Igual a spec.externalAccess.externalDomain si se especifica. En caso contrario, igual al dominio utilizado para el proceso
mongodFQDN.Por ejemplo, para el nombre de host del proceso
mdb-rs-1.example.com,example.comes el nombre de dominio.{mongodProcessFQDN}El
mongodnombre de host del proceso establecido en la configuración de automatización.El nombre de host del proceso depende de la configuración de la implementación. Si ha configurado su implementación de MongoDB en un clúster multi-Kubernetes para usar dominios externos, como en una implementación sin malla de servicios, el nombre de host del proceso utiliza el siguiente formato:
{resourceName}-{clusterIndex}-{podIndex}.{mongodProcessDomain}Por ejemplo:
mdb-rs-0-1.example.comSi su implementación no utiliza dominios externos, el nombre de host del proceso utiliza el siguiente formato:
{resourceName}-{clusterIndex}-{podIndex}-svc.{namespace}.svc.cluster.localPor ejemplo:
mdb-rs-1-svc.ns.svc.cluster.localNota
Debe usar solo valores de marcador de posición conocidos, tal como se especifica en la tabla, y asegurarse de que no contengan valores vacíos o nulos. De lo contrario, el operador de Kubernetes devuelve un error. Por ejemplo, podría aparecer 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 rellena automáticamente las anotaciones de los servicios externos según el valor correcto de 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.clusterSpecList.externalAccess.externalService.specTipo: colección
Configuración de ServiceSpec. Para obtener más información, consulte spec.clusterSpecList.externalAccess.externalService.
spec.clusterSpecList.memberConfigTipo: colección
Especificación para cada conjunto de réplicas de MongoDB y sus miembros en su implementación de MongoDB en un clúster de múltiples Kubernetes.
El orden de los elementos del objeto para cada conjunto de réplicas debe reflejar el orden de los miembros en dicho conjunto. Por ejemplo, el primer elemento afecta al pod en el índice
0, el segundo al índice1, y así sucesivamente.Ejemplo
Considere la siguiente especificación de ejemplo para una implementación de MongoDB en un clúster de Kubernetes múltiple con tres conjuntos 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"
spec.clusterSpecList.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 conjunto de réplicas se convierta en el principal, especifique un valor
prioritymás alto.Para disminuir la probabilidad relativa de que un miembro del conjunto de réplicas se convierta en el principal, especifique un valor
prioritymás bajo.
Por ejemplo, un miembro con un
memberConfig.priorityde1.5tiene más probabilidades de convertirse en el principal que un miembro con unmemberConfig.priorityde0.5.Un miembro con un
memberConfig.priorityde0no puede ser el miembro principal. Para obtener más información, consulte Prioridad de miembros.
spec.clusterSpecList.memberConfig.tagsTipo: mapa
Mapa de etiquetas de conjuntos de réplicas para dirigir operaciones de lectura y escritura a miembros específicos de su conjunto de réplicas de MongoDB.
spec.clusterSpecList.memberConfig.votesTipo: número
Determina si un miembro del conjunto de réplicas de MongoDB puede votar en una elección. Se establece en
1para permitir que el miembro vote. Se establece en0para excluirlo de una elección.
spec.clusterSpecList.membersTipo: número
Número de miembros en el conjunto de réplicas de MongoDB.
spec.clusterSpecList.serviceTipo: string
Predeterminado: <resource_name>+"-servicio"
Nombre del servicio de Kubernetes que desea crear o usar para un StatefulSet. Si ya existe un servicio con este nombre, el operador de Kubernetes de MongoDB Enterprise no lo elimina ni lo vuelve a crear. Esta configuración le permite crear sus propios servicios personalizados y que el operador de Kubernetes los reutilice.
spec.clusterSpecList.statefulSet.specTipo: 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 con clústeres multi-Kubernetes. Para establecer la configuración global que se aplica a todos los clústeres de su implementación de MongoDB con clústeres multi-Kubernetes, consulte spec.statefulSet.spec.
Esta configuración se aplica solo a los tipos de recursos de conjuntos de réplicas en implementaciones MongoDB de clústeres de Kubernetes múltiples.
spec.connectivity.replicaSetHorizonsTipo: colección
Permite proporcionar diferentes configuraciones de DNS para las aplicaciones cliente y los agentes de MongoDB. El operador de Kubernetes utiliza DNS de horizonte dividido para los miembros del conjunto de réplicas. Esta función permite la comunicación tanto dentro del clúster de Kubernetes como desde fuera de él.
Puede agregar múltiples asignaciones externas por host.
Nota
Asegúrese de que cada valor de esta matriz sea único.
Asegúrese de que la cantidad de entradas en esta matriz coincida con el valor dado en spec.clusterSpecList.members.
Proporciona un valor para el spec.security.certsSecretPrefix configuración para habilitar TLS. Este método para usar horizontes divididos requiere la extensión de indicación de nombre de servidor del protocolo TLS.
En este ejemplo, los clientes se comunican con el conjunto de réplicas utilizando el horizonte
example-website.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.duplicateServiceObjectsTipo: booleano
Por defecto: true
Especifica si el operador de Kubernetes duplica el objeto de malla de servicio de un pod en cada clúster para permitir la resolución DNS. Se establece en
falsesi se configura un proxy DNS para la malla de servicio. Por ejemplo, consulte "Proxy DNS" en la documentación de Istio.
spec.externalAccessTipo: colección
Especificación para exponer su implementación de MongoDB en un clúster multi-Kubernetes a conexiones externas. Para saber cómo conectarse a su implementación de MongoDB en un clúster multi-Kubernetes desde fuera del clúster de Kubernetes, consulte Conectarse a un recurso multi-clúster desde fuera de Kubernetes.
Estas configuraciones se aplican a los servicios en todos los clústeres. Para anular estas configuraciones globales en un clúster específico, utiliza spec.clusterSpecList.externalAccess.externalService.
Si
spec.externalAccessagrega, el operador de Kubernetes crea un servicio externo para cada pod de un conjunto de réplicas. Los servicios externos proporcionan un punto de entrada externo para cada pod de base de datos MongoDB de 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 predeterminados:
CampoValorDescripciónName<pod-name>-svc-externalNombre del servicio externo. No se puede cambiar este valor.
TypeLoadBalancerCrea un servicio LoadBalancer externo.
Port<Port Number>Un puerto
mongodpara.publishNotReadyAddresstrueEspecifica que los registros DNS se crean incluso si el pod no está listo. No se establece en
falsepara ningún pod de base de datos.Nota
Si configura spec.clusterSpecList.externalAccess.externalDomain, el servicio externo agrega otro puerto
Port Number + 1() para las copias de seguridad.
spec.externalAccess.externalServiceTipo: colección
Especificación para anular los valores predeterminados
spec.externalAccessen.Al configurar spec.externalAccess, el operador de Kubernetes crea automáticamente un servicio de balanceador de carga externo con valores predeterminados. Puede anular ciertos valores o añadir nuevos según sus necesidades. Por ejemplo, si desea crear servicios NodePort y no necesita un balanceador de carga, debe configurar las 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 opciones de configuración específicas del proveedor de nube a todos los clústeres de su implementación de MongoDB con varios clústeres de Kubernetes. Para anulaciones específicas del clúster, consulte spec.clusterSpecList.externalAccess.externalService.annotations. Para obtener más información, consulte las anotaciones y la documentación del proveedor de nube que utiliza para las implementaciones de Kubernetes.
Puede 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 por los correctos, como se describe en la siguiente tabla. El uso de marcadores de posición permite proporcionar anotaciones específicas en cada servicio para un pod específico.
ValorDescripción{resourceName}Igual
metadata.namea.{namespace}Igual
metadata.namespacea.{podIndex}Índice del Pod asignado por StatefulSet y al que apunta el servicio externo actual.
{podName}Igual a
{resourceName}-{clusterIndex}-{podIndex}.{clusterName}El nombre del clúster actual establecido en spec.clusterSpecList.clusterName.
{clusterIndex}El índice asignado inicialmente por el operador de Kubernetes para el nombre del clúster actual establecido en spec.clusterSpecList.clusterName.
Este valor podría no reflejar el orden de los clústeres de nodos definidos en spec.clusterSpecList. Aunque se puede cambiar el orden de los clústeres de miembros en spec.clusterSpecList, el operador de Kubernetes sigue utilizando el índice que asignó inicialmente para el nombre actual del clúster.
{statefulSetName}{externalServiceName}Nombre generado del servicio externo, basado en los valores de marcador de posición especificados. Igual a
{resourceName}-{clusterIndex}-{podIndex}-svc-external.{mongodProcessDomain}El nombre de dominio del servidor que aloja el proceso mongod. Igual a spec.externalAccess.externalDomain si se especifica. En caso contrario, igual al dominio utilizado para el proceso
mongodFQDN.Por ejemplo, para el nombre de host del proceso
mdb-rs-1.example.com,example.comes el nombre de dominio.{mongodProcessFQDN}El
mongodnombre de host del proceso establecido en la configuración de automatización.El nombre de host del proceso depende de la configuración de la implementación. Si ha configurado su implementación de MongoDB en un clúster multi-Kubernetes para usar dominios externos, como en una implementación sin malla de servicios, el nombre de host del proceso utiliza el siguiente formato:
{resourceName}-{clusterIndex}-{podIndex}.{mongodProcessDomain}Por ejemplo:
mdb-rs-0-1.example.comSi su implementación no utiliza dominios externos, el nombre de host del proceso utiliza el siguiente formato:
{resourceName}-{clusterIndex}-{podIndex}-svc.{namespace}.svc.cluster.localPor ejemplo:
mdb-rs-1-svc.ns.svc.cluster.localNota
Debe usar solo valores de marcador de posición conocidos, tal como se especifica en la tabla, y asegurarse de que no contengan valores vacíos o nulos. De lo contrario, el operador de Kubernetes devuelve un error. Por ejemplo, podría aparecer 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 rellena automáticamente las anotaciones de los servicios externos según el valor correcto de 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 de ServiceSpec. Para obtener más información, consulte spec.externalAccess.externalService.
spec.featureCompatibilityVersionTipo: número
Limita los cambios en los datos que ocurren con una nueva actualización a una nueva versión principal. Esto permite volver a la versión principal anterior. Para obtener más información sobre la compatibilidad de funcionalidades, consulta
setFeatureCompatibilityVersionen el Manual de MongoDB.
spec.logLevelTipo: string
Configura el nivel de registro del agente de automatización dentro del pod. Los valores aceptados incluyen:
DEBUGINFOWARNERRORFATAL
spec.opsManager.configMapRef.nameTipo: string
Nombre del ConfigMap con la configuración de conexión de Cloud Manager u Ops Manager. El parámetro spec.cloudManager.configMapRef.name es un alias para este parámetro 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 administra los cambios en ConfigMap
El operador de Kubernetes rastrea cualquier cambio en ConfigMap y concilia 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
fsGroup = 2000establece,runAsUser = 2000yrunAsNonRoot = trueen. ElsecurityContextoperador de Kubernetes establecefsgroupigual arunAsUserpara que el volumen pueda ser escrito por un 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 información relacionada en la documentación de Kubernetes. Si volver a implementar el recurso no soluciona los problemas con su volumen persistente, póngase en contacto con el soporte técnico de MongoDB.Si no utiliza volúmenes persistentes, el Disk Usage y Disk IOPS los gráficos no se pueden mostrar ni en Processes la pestaña de la Deployment página ni en la Metrics página al revisar los datos de esta implementación.
spec.security.authenticationTipo: colección
Especificaciones de autenticación para su implementación de MongoDB en un clúster multi-Kubernetes.
spec.security.authentication.agentsTipo: colección
Configuración de autenticación del agente MongoDB para el proyecto Cloud Manager o Ops Manager.
spec.security.authentication.agents.automationLdapGroupDNTipo: string
El nombre distintivo (DN) del grupo LDAP al que pertenece el usuario del Agente MongoDB.
Esta configuración es necesaria si:
spec.security.authentication.ldap.authzQueryTemplate está presente y
spec.security.authentication.agents.mode es
LDAPX509o.
spec.security.authentication.agents.automationPasswordSecretRefTipo: colección
Detalles del secreto que contiene la contraseña para el usuario spec.security.authentication.agents.automationUserName.
Esta configuración es necesaria si spec.security.authentication.agents.mode
LDAPes.
spec.security.authentication.agents.automationPasswordSecretRef.keyTipo: string
Ingrese el secreto spec.security.authentication.agents.automationPasswordSecretRef.name que contiene la contraseña del usuario en spec.security.authentication.agents.automationUserName.
Esta configuración es necesaria si spec.security.authentication.agents.mode
LDAPes.
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 donde implementa el operador de Kubernetes:
kubectl create secret generic ldap-agent-user \ --from-literal="password=<password>" -n <metadata.namespace> Este secreto debe contener una clave, cuyo valor coincida con la contraseña del usuario spec.security.authentication.agents.automationUserName en su implementación de LDAP.
Esta configuración es necesaria si spec.security.authentication.agents.mode
LDAPes.
spec.security.authentication.agents.automationPasswordSecretRef.optionalTipo: booleano
Especifica si estas opciones son obligatorias u opcionales:
spec.security.authentication.agents.automationUserNameTipo: string
Nombre del usuario que los agentes de MongoDB usan para interactuar con la implementación de MongoDB de su clúster multi-Kubernetes. El nombre de usuario se asigna a un nombre distintivo (DN) LDAP según spec.security.authentication.ldap.userToDNMapping. El DN resultante debe existir previamente en la implementación LDAP.
Esta configuración es necesaria si spec.security.authentication.agents.mode
LDAPes.
spec.security.authentication.agents.clientCertificateSecretRef.nameTipo: string
Predeterminado: agent-certs
Especifica el secreto que contiene el certificado TLS del agente MongoDB.
Este secreto debe contener la
mms-automation-agent-pemclave. El valor de esta clave debe ser un certificado TLS que el servidor pueda validar.Debe crear este secreto en el mismo espacio de nombres en el que implementa el operador de Kubernetes:
kubectl create secret generic agent-certs \ --from-file=mms-automation-agent-pem=<automation-cert.pem> \ --namespace=<metadata.namespace>
spec.security.authentication.enabledTipo: booleano
Por defecto: false
Especifica si la autenticación está habilitada en el proyecto de Cloud Manager o de Ops Manager. Si se establece
trueen, debe configurar un mecanismo de autenticación en spec.security.authentication.modes.Importante
El operador de Kubernetes administra la autenticación de este recurso de MongoDB si se incluye esta configuración, incluso si está establecida en
false. No se puede configurar la autenticación para este recurso mediante la interfaz de usuario o las API de Cloud Manager u Ops Manager mientras esta configuración exista en la especificación del recurso.Omite esta configuración si deseas gestionar la autenticación utilizando la interfaz de usuario de Cloud Manager u Ops Manager o las API.
spec.security.authentication.agents.modeTipo: string
El mecanismo de autenticación que utilizan los agentes de MongoDB para su implementación de MongoDB en un clúster multi-Kubernetes. Los valores válidos
SCRAMSCRAM-SHA-1MONGODB-CRson,,,X509LDAPy. El valor que especifique también debe estar presente en spec.security.authentication.modes. RecomendamosSCRAM-SHA-256 (SCRAM)SCRAM-SHA-1en lugar de. SiSCRAM-SHA-1especifica, también debeMONGODB-CRespecificar.Esta configuración es necesaria si especificó más de un valor para spec.security.authentication.modes.
spec.security.authentication.ignoreUnknownUsersTipo: booleano
Por defecto: false
Determina si se pueden modificar los usuarios de la base de datos que no fueron configurados a través de Kubernetes operador, Cloud Manager u Ops Manager.
Para administrar los usuarios de la base de datos directamente a través de o,
mongodmongosconfigúrelotrueen.
spec.security.authentication.internalClusterTipo: string
Especifica si X.509 autenticación interna de clúster está habilitada.
Para habilitar la autenticación interna del clúster X.509, configúrelo en
"X509". Requiere que se especifiquen las siguientes configuraciones:El operador de Kubernetes acepta los siguientes valores:
["X509"]:X.509 La autenticación del clúster interno está habilitada.""o se omite: la autenticación del clúster interno no está habilitada.
Importante
Después de habilitar la autenticación del clúster interno, no podrá deshabilitarla.
spec.security.authentication.ldapTipo: colección
Necesario para la autenticación LDAP.
Configura la autenticación LDAP para el proyecto de Cloud Manager u Ops Manager. Para habilitar la autenticación LDAP, configure spec.security.authentication.modes
["LDAP"]como.
spec.security.authentication.ldap.authzQueryTemplateTipo: string
Requerido para la autorización LDAP.
Una RFC4515 y una RFC4516 Plantilla de URL de query con formato LDAP 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. Puedes utilizar los siguientes tokens en la plantilla:{USER}- Sustituye el nombre de usuario autenticado, o el
transformednombre de usuario, en la consulta LDAP.
{PROVIDED_USER}- Sustituye el nombre de usuario proporcionado, antes de la autenticación o la transformación LDAP, en la consulta LDAP. (Disponiblea partir de la versión de MongoDB).4.2
Para obtener más detalles, consulte Plantillas de consulta LDAP en el Manual de MongoDB.
spec.security.authentication.ldap.bindQueryPasswordSecretRefTipo: colección
Necesario 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
Necesario para la autenticación LDAP.
Nombre del secreto que contiene la contraseña con la que MongoDB se vincula al conectarse al servidor LDAP.
El secreto debe contener solo un
passwordcampo que almacena la contraseña.
spec.security.authentication.ldap.bindQueryUserTipo: string
Necesario para la autenticación LDAP.
Nombre distinguidoLDAP al que MongoDB se vincula cuando se conecta al servidor LDAP.
spec.security.authentication.ldap.caConfigMapRefTipo: colección
Necesario para la autenticación LDAP con TLS.
ConfigMap que contiene una CA que valida el certificado TLS del servidor LDAP.
spec.security.authentication.ldap.caConfigMapRef.keyTipo: string
Necesario 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.caConfigMapRef.nameTipo: string
Necesario para la autenticación LDAP con TLS.
Nombre del ConfigMap que contiene una CA que valida el certificado TLS del servidor LDAP.
spec.security.authentication.ldap.caConfigMapRef.optionalTipo: booleano
Especifica si estas opciones son obligatorias u opcionales:
spec.security.authentication.ldap.serversTipo: arreglo de cadenas
Necesario para la autenticación LDAP.
Lista de nombres de host y puertos de los servidores LDAP. Especifique 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 expirar.
spec.security.authentication.ldap.transportSecurityTipo: string
Necesario para la autenticación LDAP.
Especifica si el servidor LDAP acepta TLS.
Si el servidor LDAP acepta TLS, establezca el valor
tlsen. Si no lo acepta, deje este valor en blanco o establézcalononeen.Nota
Si especifica una cadena distinta de
noneotls, Kubernetes Operator aún establece la configuración entls.
spec.security.authentication.ldap.userCacheInvalidationIntervalTipo: entero
Especifica cuántos segundos espera MongoDB para vaciar la caché de usuarios LDAP. El valor predeterminado es 30 segundos.
spec.security.authentication.ldap.userToDNMappingTipo: string
Asigna el nombre de usuario proporcionado a
mongodo paramongosla autenticación a un nombre distinguido (DN) LDAP.Para obtener más detalles, consulte security.ldap.userToDNMapping en el Manual de MongoDB.
spec.security.authentication.modesTipo: arreglo
Especifica el mecanismo de autenticación que utiliza la implementación de MongoDB en clústeres multiKubernetes. Los valores válidos son
SCRAM,SCRAM-SHA-1,MONGODB-CR,X509yLDAP. Se recomiendaSCRAM-SHA-256 (SCRAM)en lugar deSCRAM-SHA-1. Si especificaSCRAM-SHA-1, también debe especificarMONGODB-CR.Nota
Para habilitar la autenticación del clúster interno X.509 para el proyecto Cloud Manager u Ops Manager, configure este valor en
["X509"]y especifique las siguientes configuraciones:especificación.seguridad.autenticación.clúster interno
: "X509"Proporcione un valor para la configuración spec.security.certsSecretPrefix.
Si proporciona más de un valor para,
spec.security.authentication.modestambién debe especificar un valor para spec.security.authentication.agents.mode.
spec.security.authentication.requireClientTLSAuthenticationTipo: booleano
Por defecto: false
Especifica si el host de MongoDB requiere que los clientes se conecten mediante un certificado TLS. El valor predeterminado
truees si se habilita la autenticación TLS.Para habilitar la autenticación TLS, proporcione un valor para la configuración spec.security.certsSecretPrefix.
spec.security.certsSecretPrefixTipo: string
Texto para anteponer a los secretos de Kubernetes que hayas creado, que contienen las claves y certificados TLS de tu set de réplicas.
Debes anteponer a tus secretos el prefijo
<prefix>-<metadata.name>.Por ejemplo, si llama a su implementación
my-deploymenty establece el prefijo,mdbdebe asignarle al secreto TLS para las comunicaciones TLS del cliente elmdb-my-deployment-certnombre. Además, debe asignarle al secreto TLS para la autenticación interna del clúster (si está habilitada) elmdb-my-deployment-clusterfilenombre.Para obtener más información sobre cómo nombrar los secretos que contienen sus certificados TLS, consulte el tema en Inicio rápido de múltiples clústeres de Kubernetes que se aplica a su implementación.
spec.security.rolesTipo: arreglo
Matriz que define roles definidos por el usuario que le brindan un control de acceso detallado sobre su implementación de MongoDB en múltiples clústeres de Kubernetes.
Para habilitar roles definidos por el usuario,spec.security.authentication.enabled debe
trueser.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 datospetsyBusque e inserte documentos en la colección
dogsen la base de datospets.
1 security: 2 authentication: 3 enabled: true 4 modes: 5 - "SCRAM" 6 roles: 7 - role: "customRole" 8 db: admin 9 privileges: 10 - actions: 11 - insert 12 resource: 13 collection: cats 14 db: pets 15 - actions: 16 - insert 17 - find 18 resource: 19 collection: dogs 20 db: pets 21 ...
spec.security.roles.authenticationRestrictionsTipo: arreglo
Matriz que define la dirección IP desde y hacia la cual pueden conectarse los usuarios asignados a este spec.security.roles.role.
spec.security.roles.authenticationRestrictions.clientSourceTipo: arreglo
Matriz de direcciones IP o bloques CIDR desde los que los usuarios asignados a este spec.security.roles.role pueden conectarse.
Los servidores MongoDB rechazan las solicitudes de conexión de los usuarios con este rol si las solicitudes provienen de un cliente que no está presente en esta matriz.
spec.security.roles.authenticationRestrictions.serverAddressTipo: arreglo
Matriz de direcciones IP o bloques CIDR a los que pueden conectarse los usuarios asignados a este spec.security.roles.role.
Los servidores MongoDB rechazan las solicitudes de conexión de los usuarios con este rol si el cliente solicita conectarse a un servidor que no está presente en esta matriz.
spec.security.roles.dbTipo: string
La base de datos en la que almacenar el rol definido por el usuario.
Ejemplo
admin
spec.security.roles.privilegesTipo: arreglo
Matriz que describe los privilegios que poseen los usuarios a los que se les otorga 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 privilegios" 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 spec.security.roles.privileges.actions.
Esta colección debe incluir:
Las configuraciones spec.security.roles.privileges.resource.db y spec.security.roles.privileges.resource.collection, o
La configuración spec.security.roles.privileges.resource.cluster con un valor
truede.
spec.security.roles.privileges.resource.clusterTipo: booleano
Por defecto: false
Bandera que indica que el privilegio spec.security.roles.privileges.actions se aplica a todas las bases de datos y colecciones en la implementación de MongoDB.
Si se establece como verdadero, no proporcione valores para spec.security.roles.privileges.resource.db y spec.security.roles.privileges.resource.collection.
spec.security.roles.privileges.resource.collectionTipo: string
Colección en spec.security.roles.privileges.resource.db para la que se aplica el privilegio spec.security.roles.privileges.actions.
Si proporciona un valor para esta configuración, también debe proporcionar un valor para spec.security.roles.privileges.resource.db.
spec.security.roles.privileges.resource.dbTipo: string
Base de datos para la que se aplica el privilegio spec.security.roles.privileges.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.roleTipo: string
Nombre del rol definido por el usuario.
spec.security.tls.additionalCertificateDomainsTipo: colección
Lista de todos los dominios que deben agregarse a los certificados TLS de cada pod en esta implementación. Al configurar este parámetro, cada CSR que el operador de Kubernetes transforma en un certificado TLS incluye un SAN con el
<pod name>.<additional cert domain>formato.Los recursos del conjunto de réplicas no necesitan este parámetro. Utilice spec.connectivity.replicaSetHorizons en su lugar.
Nota
Si agrega este parámetro a un recurso con TLShabilitado, Kubernetes muestra un error cuando el recurso alcanza el
Pendingestado. Este error muestra:Please manually remove the |csr| in order to proceed.Para solucionar este problema:Elimine cualquier CSRexistente para que Kubernetes pueda generar nuevas. Para saber cómo eliminar un recurso, consulte la sección sobre eliminación de recursos en la documentación de Kubernetes.
Aprobar los CSRdespués de que Kubernetes los genere.
spec.security.tls.caTipo: string
Proporcione el nombre del ConfigMap que almacena la CA.
Importante
Si utiliza una CA personalizada para firmar sus certificados TLS para el
MongoDBMultiClusterrecurso, debe especificar este parámetro.El operador de Kubernetes requiere que usted nombre el certificado para el recurso
MongoDBMultiClustercomoca-pemen ConfigMap.
spec.security.tls.enabledTipo: booleano
Importante
spec.security.tls.enabledEstá obsoleto a partir de la versión de Kubernetes Operator 1.19 y se eliminará en una futura versión de Kubernetes Operator. Para habilitar TLS, proporcione un valor para la configuración spec.security.certsSecretPrefix.Cifra las comunicaciones mediante certificados TLS entre:
Hosts MongoDB en un conjunto de réplicas o una configuración de clúster fragmentado
Clientes
mongo(shell, controladores, MongoDB Compass y otros) y la implementación de MongoDB
spec.statefulSet.specTipo: colección
Especificación global para el StatefulSet que el operador MongoDB Enterprise Kubernetes crea para su implementación MongoDB de múltiples clústeres Kubernetes.
Para revisar qué campos puedes agregar
spec.statefulSet.speca, consulta las aplicaciones StatefulSetSpec v1 en la documentación de Kubernetes.