Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Especificación de recursos multicluster de Kubernetes

La MongoDBMultiCluster El recurso define su implementación de MongoDB en múltiples clústeres de Kubernetes y proporciona el Controladores de MongoDB para el operador de Kubernetes la información que necesita para crear o actualizar sus clústeres, Implementación de Ops Manager, conjuntos de estado, servicios y otros recursos de Kubernetes.

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
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
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...

Esta sección describe ajustes que debes utilizar para tu recurso MongoDBMultiCluster.

apiVersion

Tipo: string

Versión del esquema de recursos de MongoDB Kubernetes.

kind

Tipo: string

Tipo de recurso de Kubernetes de MongoDB que se va a crear. Configurar esto en MongoDBMultiCluster.

metadata.name

Tipo: string

Nombre del recurso de MongoDB Kubernetes que está creando.

Los nombres de recursos deben tener 44 caracteres o menos.

spec.credentials

Tipo: string

Nombre del secreto que created as MongoDB Ops Manager API credenciales de autenticación para que el Operador de Kubernetes se comunique con Ops Manager.

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

Importante

El operador gestiona los cambios en el secreto.

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

spec.type

Tipo: string

Tipo de recurso de MongoDB Kubernetes a crear. El único valor aceptado para una implementación de MongoDB en un clúster de múltiples Kubernetes es ReplicaSet.

spec.version

Tipo: string

Versión de MongoDB instalada para este recurso MongoDBMultiCluster.

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.

MongoDBMultiCluster los recursos pueden utilizar los siguientes ajustes:

spec.additionalMongodConfig

tipo: colección

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

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

  • net.port

  • net.tls.certificateKeyFile

  • net.tls.clusterFile

  • replication.replSetName

  • security.clusterAuthMode

  • sharding.clusterRole

  • storage.dbPath

  • systemLog.destination

  • systemLog.path

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

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

spec.agent

tipo: colección

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

spec.agent.startupOptions

tipo: colección

Configuraciones de MongoDB Agent con las cuales deseas iniciar el recurso de la base de datos MongoDB.

Debe proporcionar la configuración de MongoDB Agent como pares clave-valor. Los valores deben ser cadenas de texto. Para obtener una lista de configuraciones admitidas del MongoDB Agent, consulta:

spec.backup

tipo: colección

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

spec.backup.assignmentLabels

Tipo: arreglo

Una lista de etiquetas de asignación para los procesos del daemon de copias de seguridad Service. Utiliza etiquetas de asignación para identificar que procesos específicos del daemon de copias de seguridad están asociados con Proyectos particulares. Si configura etiquetas de asignación usando el Operador de Kubernetes, los valores que se establecen 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 configures usando el Operador de Kubernetes seguirán utilizando los valores configurados en la interfaz de usuario de Ops Manager.

spec.backup.autoTerminateOnDeletion

Tipo: booleano

Indicador que determina si el Operador de Kubernetes se detiene y finaliza la copia de seguridad cuando se elimina un recurso MongoDBMultiCluster. El valor por defecto es false. Configurar este indicador en true es útil cuando se desea borrar el recurso MongoDBMultiCluster mientras la configuración spec.copia de seguridad.modo está en enabled.

spec.backup.encryption

Tipo: Objeto

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

spec.backup.encryption.kmip

Tipo: Objeto

Objeto que contiene la configuración de copia de seguridad de KMIP. Para obtener más información, consulta Configuración del cifrado de copia de seguridad KMIP para Ops Manager.

spec.backup.encryption.kmip.client

Tipo: Objeto

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

spec.backup.mode

Tipo: string

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

Nota

La configuración spec.backup.mode depende de copia de seguridad que esté habilitado en el Administrador de Operaciones y requiere que el valor spec.backup.enabled en la especificación de recursos del Administrador de Operaciones esté configurado en true.

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

spec.backup.snapshotSchedule

tipo: colección

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

spec.backup.snapshotSchedule.dailySnapshotRetentionDays

Tipo: número

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

spec.backup.snapshotSchedule.fullIncrementalDayOfWeek

Tipo: string

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

spec.backup.snapshotSchedule.monthlySnapshotRetentionMonths

Tipo: número

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

spec.backup.snapshotSchedule.pointInTimeWindowHours

Tipo: número

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

spec.backup.snapshotSchedule.referenceHourOfDay

Tipo: número

UTC hora del día para programar instantáneas utilizando un reloj de 24 horas. Puedes establecer un valor entre 0 y 23, ambos incluidos.

spec.backup.snapshotSchedule.referenceMinuteOfHour

Tipo: número

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

spec.backup.snapshotSchedule.snapshotIntervalHours

Tipo: número

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

spec.backup.snapshotSchedule.snapshotRetentionDays

Tipo: número

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

spec.backup.snapshotSchedule.weeklySnapshotRetentionWeeks

Tipo: número

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

spec.cloudManager.configMapRef.name

Tipo: string

Alias para spec.opsManager.configMapRef.name.

spec.clusterSpecList

tipo: colección

Lista de especificaciones para cada clúster de Kubernetes en un recurso MongoDBMultiCluster .

spec.clusterSpecList.clusterName

Tipo: string

Nombre del clúster donde los MongoDB Controllers para Kubernetes Operator programan el StatefulSet. Cuando el operador de Kubernetes implementa este recurso MongoDBMultiCluster, crea una cuenta de servicio. Este nombre es el que la cuenta de servicio en el clúster del operador utiliza para comunicarse con los clústeres de carga de trabajo.

spec.clusterSpecList.externalAccess.externalDomain

Tipo: string

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

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

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

Por ejemplo:

multi-replica-set-0-1.cluster-0.example.com

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

Para especificar otros nombres de host para conectarse al set de réplicas, puede utilizar el ajuste spec.connectivity.replicaSetHorizons. Sin embargo, las siguientes conexiones aún utilizan el nombre de host con el dominio externo:

  • El agente de MongoDB se conecta a mongod.

  • mongod para conectar con otras mongod instancias.

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

Importante

Use este ajuste solo al implementar un set de réplicas de MongoDB en una implementación multi-Kubernetes sin una malla de servicios. Consulta Implementar conjuntos de réplicas en un clúster de varios Kubernetes sin un service mesh.

spec.clusterSpecList.externalAccess.externalService

tipo: colección

Configuración para exponer externamente un clúster específico en su implementación de MongoDB con múltiples clústeres de Kubernetes. Estos ajustes anulan el spec.externalAccess.externalService global. configuración.

Cuando configures el spec.externalAccess la configuración, el operador de Kubernetes crea automáticamente un servicio de balanceador de carga externo con valores por defecto. Puede anular ciertos valores o agregar nuevos valores dependiendo de sus necesidades. Por ejemplo, si planeas crear servicios NodePort y no necesitas un balanceador de carga, debes configurar sobrescrituras en tu especificación de Kubernetes:

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

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

spec.clusterSpecList.externalAccess.externalService.annotations

tipo: 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.

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

Valor
Descripción

{resourceName}

{namespace}

{podIndex}

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

{podName}

Igual a {resourceName}-{clusterIndex}-{podIndex}.

{clusterName}

El nombre del clúster actual configurado 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}

El StatefulSet. Igual a {resourceName}-{clusterIndex}.

{externalServiceName}

Nombre generado del servicio externo, basado en los valores de los marcadores de posición que hayas especificado. 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 mongod FQDN.

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

{mongodProcessFQDN}

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

El nombre del host del proceso depende de la configuración de tu implementación. Si ha configurado su implementación de MongoDB en un clúster multi-Kubernetes para usar dominios externos, como para una implementación sin malla de servicios, el nombre de host del proceso usará el siguiente formato:

{resourceName}-{clusterIndex}-{podIndex}.{mongodProcessDomain}

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

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

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

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

Nota

Debes usar solo los valores de marcadores de posición conocidos, tal y como se especifica en la tabla, y asegurarte de que tus marcadores de posición no usen valores vacíos o nulos. De lo contrario, el operador de Kubernetes devuelve un error. Por ejemplo, puede que te encuentre con 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.clusterSpecList.externalAccess.externalService.spec

tipo: colección

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

spec.clusterSpecList.memberConfig

tipo: colección

Especificación para cada set de réplicas de MongoDB y sus nodos en su implementación de MongoDB en un clúster multi-Kubernetes.

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

Ejemplo

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

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

Tipo: string

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

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

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

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

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

spec.clusterSpecList.memberConfig.tags

Tipo: mapa

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

spec.clusterSpecList.memberConfig.votes

Tipo: número

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

spec.clusterSpecList.members

Tipo: número

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

spec.clusterSpecList.service

Tipo: string

Por defecto: <resource_name>+"-service"

Nombre del servicio de Kubernetes que deseas crear o utilizar para un StatefulSet. Si ya existe un servicio con este nombre, los Controladores MongoDB para el Operador Kubernetes no lo borran ni lo recrean. Esta configuración le permite crear sus propios servicios personalizados y permite que el Operador de Kubernetes los reutilice.

spec.clusterSpecList.statefulSet.spec

tipo: colección

Proporciona la configuración para la StatefulSet anulación de cada una de las StatefulSets del clúster en una implementación de MongoDB en un clúster multi-Kubernetes. Para establecer la configuración global que se aplica a todos los clústeres en tu implementación de MongoDB de múltiples clústeres de 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.connectivity.replicaSetHorizons

tipo: colección

Te permite proporcionar distintas configuraciones DNS para aplicaciones clientes y los Agentes de MongoDB. El operador de Kubernetes utiliza DNS de horizonte dividido para los miembros de los conjuntos de réplicas. Esta funcionalidad permite la comunicación tanto dentro del clúster de Kubernetes como desde fuera de Kubernetes.

Puede añadir múltiples mapeos externos por host.

Nota

En este ejemplo, los clientes se comunican con el set 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.duplicateServiceObjects

Tipo: booleano

Por defecto: true

Especifica si el Kubernetes Operator duplica el objeto service mesh de un Pod en cada clúster para permitir la resolución DNS. Se configura en false si se configura un proxy DNS para la malla de servicio. Por ejemplo, consulte Proxy DNS en la documentación de Istio.

spec.externalAccess

tipo: colección

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

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

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

Campo
Valor
Descripción

Name

<pod-name>-svc-external

Nombre del Servicio externo. No puedes cambiar este valor.

Type

LoadBalancer

Crea un servicio externo LoadBalancer.

Port

<Port Number>

Un puerto para mongod.

publishNotReadyAddress

true

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

Nota

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

spec.externalAccess.externalService

tipo: colección

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

Cuando configures el spec.externalAccess la configuración, el operador de Kubernetes crea automáticamente un servicio de balanceador de carga externo con valores por defecto. Puede anular ciertos valores o agregar nuevos valores dependiendo de sus necesidades. Por ejemplo, si planeas crear servicios NodePort y no necesitas un balanceador de carga, debes configurar sobrescrituras en tu especificación de Kubernetes:

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

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

spec.externalAccess.externalService.annotations

tipo: colección

Pares clave-valor que te permiten añadir configuraciones específicas del proveedor de nube a todos los clústeres en tu implementación de MongoDB con múltiples clústeres de Kubernetes. Para anulaciones específicas de clúster, consulte spec.clusterSpecList.externalAccess.externalService.annotations. Para obtener más información, consulta anotaciones y la documentación del proveedor de la nube que utilizas para implementación de Kubernetes.

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

Valor
Descripción

{resourceName}

{namespace}

{podIndex}

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

{podName}

Igual a {resourceName}-{clusterIndex}-{podIndex}.

{clusterName}

El nombre del clúster actual configurado 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}

El StatefulSet. Igual a {resourceName}-{clusterIndex}.

{externalServiceName}

Nombre generado del servicio externo, basado en los valores de los marcadores de posición que hayas especificado. 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 mongod FQDN.

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

{mongodProcessFQDN}

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

El nombre del host del proceso depende de la configuración de tu implementación. Si ha configurado su implementación de MongoDB en un clúster multi-Kubernetes para usar dominios externos, como para una implementación sin malla de servicios, el nombre de host del proceso usará el siguiente formato:

{resourceName}-{clusterIndex}-{podIndex}.{mongodProcessDomain}

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

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

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

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

Nota

Debes usar solo los valores de marcadores de posición conocidos, tal y como se especifica en la tabla, y asegurarte de que tus marcadores de posición no usen valores vacíos o nulos. De lo contrario, el operador de Kubernetes devuelve un error. Por ejemplo, puede que te encuentre con el siguiente mensaje de error:

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

Ejemplo

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

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

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

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

tipo: colección

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

spec.featureCompatibilityVersion

Tipo: 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 setFeatureCompatibilityVersion en el Manual de MongoDB.

spec.logLevel

Tipo: string

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

spec.opsManager.configMapRef.name

Tipo: string

Nombre del ConfigMap con la configuración de la conexión de Cloud Manager u Ops Manager. El spec.cloudManager.configMapRef.name ajuste es un alias de este ajuste 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.persistent

Tipo: booleano

Por defecto: true

ADVERTENCIA: Otorga a tus contenedores permiso para guardar en tu volumen persistente. El operador de Kubernetes establece fsGroup = 2000, runAsUser = 2000 y runAsNonRoot = true en securityContext. El Kubernetes Operator establece fsgroup igual a runAsUser para que el volumen sea escribible para un usuario que ejecute el proceso principal en el contenedor. Para obtener más información, consulte Configuración de un contexto de seguridad para un pod o un contenedor y el debate relacionado en la documentación de Kubernetes. Si volver a implementar el recurso no resuelve los problemas con tu Volumen Persistente, comunícate con el Soporte de MongoDB.

Si no usas volúmenes persistentes, el Disk Usage y Disk IOPS gráficas no pueden mostrarse 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.security.authentication

tipo: colección

Especificaciones de autenticación para tu implementación de MongoDB en un clúster múltiple de Kubernetes.

spec.security.authentication.agents

tipo: colección

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

spec.security.authentication.agents.automationLdapGroupDN

Tipo: string

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

Esta configuración es necesaria si:

spec.security.authentication.agents.automationPasswordSecretRef

tipo: colección

Detalles del secreto que contiene la contraseña de spec.security.authentication.agents.automationUserName usuario.

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

spec.security.authentication.agents.automationPasswordSecretRef.key

Tipo: string

Introduzca la clave en el spec.seguridad.autenticación.agentes.automationPasswordSecretRef.name secreto que contiene la contraseña para el usuario en spec.seguridad.autenticación.agentes.automationUserName.

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

spec.security.authentication.agents.automationPasswordSecretRef.name

Tipo: string

Nombre del secreto que contiene la contraseña para el spec.security.authentication.agents.automationUserName user. Debe crear este secreto en el mismo namespace al 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 de spec.security.authentication.agents.automationUserName usuario en su implementación de LDAP.

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

spec.security.authentication.agents.automationPasswordSecretRef.optional

Tipo: booleano

Especifica si estas opciones son obligatorias u opcionales:

spec.security.authentication.agents.automationUserName

Tipo: string

Nombre del usuario que utilizan los agentes de MongoDB para interactuar con la implementación de MongoDB de tu clúster multi-Kubernetes. El nombre de usuario se asigna a un Nombre Distinguido (DN) de LDAP de acuerdo con spec.security.authentication.ldap.userToDNMapping. El nombre distinguido resultante ya debe existir en su implementación de LDAP.

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

spec.security.authentication.agents.clientCertificateSecretRef.name

Tipo: string

Por defecto: agent-certs

Especifica el secreto que contiene el certificado TLS del MongoDB Agent.

Este secreto debe contener la clave mms-automation-agent-pem. El valor de esta clave debe ser un certificado TLS que pueda ser validado por el servidor.

Se debe crear este secreto en el mismo namespace al que se implemente el Operador Kubernetes:

kubectl create secret generic agent-certs \
--from-file=mms-automation-agent-pem=<automation-cert.pem> \
--namespace=<metadata.namespace>
spec.security.authentication.enabled

Tipo: booleano

Por defecto: false

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

Importante

El operador de Kubernetes gestiona la autenticación para este recurso MongoDB si se incluye este ajuste, incluso si está configurado en false. No puedes configurar la autenticación para este recurso usando la interfaz de usuario de Cloud Manager u Ops Manager, ni usar las API, 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.mode

Tipo: string

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

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

spec.security.authentication.ignoreUnknownUsers

Tipo: booleano

Por defecto: false

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

Para gestionar usuarios de base de datos directamente a través de la mongod o mongos, establece a true.

spec.security.authentication.internalCluster

Tipo: 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 los siguientes ajustes:

El Operador de Kubernetes acepta los siguientes valores:

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

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

Importante

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

spec.security.authentication.ldap

tipo: colección

Requerido para la autenticación LDAP.

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

spec.security.authentication.ldap.authzQueryTemplate

Tipo: string

Requerido para la autorizacion 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 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).

Para obtener más detalles, consulta Plantillas de query de LDAP en el Manual de MongoDB.

spec.security.authentication.ldap.bindQueryPasswordSecretRef

tipo: colección

Requerido para la autenticación LDAP.

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

spec.security.authentication.ldap.bindQueryPasswordSecretRef.name

Tipo: string

Requerido para la autenticación LDAP.

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

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

spec.security.authentication.ldap.bindQueryUser

Tipo: string

Requerido para la autenticación LDAP.

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

spec.security.authentication.ldap.caConfigMapRef

tipo: colección

Se requiere para la autenticación LDAP con TLS.

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

spec.security.authentication.ldap.caConfigMapRef.key

Tipo: string

Se requiere para la autenticación LDAP con TLS.

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

spec.security.authentication.ldap.caConfigMapRef.name

Tipo: string

Se requiere para la autenticación LDAP con TLS.

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

spec.security.authentication.ldap.caConfigMapRef.optional

Tipo: booleano

Especifica si estas opciones son obligatorias u opcionales:

spec.security.authentication.ldap.servers

Tipo: arreglo de cadenas

Requerido para la autenticación LDAP.

Lista de nombres de host 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.timeoutMS

Tipo: entero

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

spec.security.authentication.ldap.transportSecurity

Tipo: string

Requerido para la autenticación LDAP.

Especifica si el servidor LDAP acepta TLS.

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

Nota

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

spec.security.authentication.ldap.userCacheInvalidationInterval

Tipo: entero

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

spec.security.authentication.ldap.userToDNMapping

Tipo: string

Mapea el nombre de usuario proporcionado a mongod o mongos para autenticación a un nombre distinguido (DN) de LDAP.

Para obtener más detalles, consulta security.ldap.userToDNMapping en el Manual de MongoDB.

spec.security.authentication.modes

Tipo: arreglo

Especifica el mecanismo de autenticación que utiliza tu implementación de MongoDB en varios clústeres de Kubernetes. Los valores válidos son SCRAM, SCRAM-SHA-1, MONGODB-CR, X509 y LDAP. Recomendamos SCRAM-SHA-256 (SCRAM) en lugar de SCRAM-SHA-1. Si especificas SCRAM-SHA-1, también debes especificar MONGODB-CR.

Nota

Para habilitar X.509 autenticación interna en clúster para el proyecto de Cloud Manager o Ops Manager, establece este valor en ["X509"] y especifica los siguientes ajustes:

Si proporciona más de un valor para spec.security.authentication.modes, también debe especificar un valor para spec.seguridad.autenticación.agentes.moda.

spec.security.authentication.requireClientTLSAuthentication

Tipo: booleano

Por defecto: false

Especifica si el host de MongoDB requiere que los clientes se conecten usando un certificado TLS. Los valores predeterminados serán true si habilitas la autenticación TLS.

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

spec.security.certsSecretPrefix

Tipo: 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.

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

Por ejemplo, si le llamas a tu implementación my-deployment y estableces el prefijo en mdb, debes nombrar el secreto TLS para las comunicaciones TLS del cliente mdb-my-deployment-cert. Además, debes nombrar el secreto TLS para la autenticación interna del clúster (si está habilitada) mdb-my-deployment-clusterfile.

Para obtener más información sobre cómo nombrar los secretos que contienen tus certificados TLS, consulta el tema en Guía de inicio rápido para múltiples clústeres de Kubernetes que aplica a tu implementación.

spec.security.roles

Tipo: arreglo

Arreglo que define roles definidos por el usuario que le proporcionan un control de acceso detallado sobre su implementación de MongoDB en clústeres múltiples de Kubernetes.

Para habilitar roles definidos por el usuario, el spec.seguridad.autenticación.enabled debe estar true.

Ejemplo

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

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

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

1 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.authenticationRestrictions

Tipo: arreglo

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

spec.security.roles.authenticationRestrictions.clientSource

Tipo: arreglo

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

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

spec.security.roles.authenticationRestrictions.serverAddress

Tipo: arreglo

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

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

spec.security.roles.db

Tipo: string

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

Ejemplo

admin

spec.security.roles.privileges

Tipo: arreglo

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

spec.security.roles.privileges.actions

Tipo: arreglo

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

spec.security.roles.privileges.resource

tipo: colección

Recursos a los que se aplica el privilegio spec.security.roles.privileges.actions.

Esta colección debe incluir cualquiera de lo siguiente:

spec.security.roles.privileges.resource.cluster

Tipo: booleano

Por defecto: false

Bandera que indica que el privilegio spec.security.roles.privileges.actions aplica a todas las bases de datos y colecciones en la implementación de MongoDB.

Si se establece en verdadero, no se deben proporcionar valores para spec.seguridad.roles.privilegios.recurso.db y spec.seguridad.roles.privilegios.recurso.colección.

spec.security.roles.privileges.resource.collection

Tipo: string

Colección en el spec.security.roles.privileges.resource.db para la cual el privilegio spec.security.roles.privileges.actions aplica.

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.db

Tipo: string

Base de datos a la que se aplican los privilegios 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.role

Tipo: string

Nombre del rol definido por el usuario.

spec.security.tls.additionalCertificateDomains

tipo: colección

Lista de cada dominio que se debe agregar a los certificados TLS para cada Pod en esta implementación. Cuando configuras este parámetro, cada CSR que el Operador de Kubernetes convierte en un certificado TLS incluye un SAN en la forma <pod name>.<additional cert domain>.

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

Nota

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

  1. Remueve cualquier CSRexistente para que Kubernetes pueda generar nuevos CSR. Para aprender a borrar un recurso, consulta el borrado de recursos en la documentación de Kubernetes.

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

spec.security.tls.ca

Tipo: string

Proporciona el nombre del ConfigMap que almacena la CA.

Importante

Si utilizas una CA personalizada para firmar tus certificados TLS para el recurso MongoDBMultiCluster, debes especificar este parámetro.

El operador de Kubernetes requiere que se nombre el certificado para el recurso MongoDBMultiCluster como ca-pem en el ConfigMap.

spec.security.tls.enabled

Tipo: booleano

Importante

spec.security.tls.enabled está en desuso y se eliminará en una futura versión del Operador de Kubernetes. Para habilitar TLS, proporciona un valor para el spec.seguridad.certsSecretPrefix configuración.

Cifra las comunicaciones utilizando certificados TLS entre:

  • Hosts de MongoDB en una configuración de set de réplicas o clúster fragmentado

  • Clientes (mongo shell, controladores, MongoDB Compass y otros) y la implementación de MongoDB

spec.statefulSet.spec

tipo: colección

Especificación global para el StatefulSet que los Controladores de MongoDB para Kubernetes operador crean para tu implementación de MongoDB en un clúster multi-Kubernetes.

Para revisar qué campos puedes agregar a spec.statefulSet.spec, consulta StatefulSetSpec v1 aplicaciones en la documentación de Kubernetes.

Volver

Databases

En esta página