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
/ /

Despliegue en clústeres multi-Kubernetes: Sin Service Mesh

Utiliza este procedimiento para implementar un set de réplicas en una implementación de MongoDB multi-Kubernetes Cluster sin utilizar una malla de servicios para establecer la conectividad externa entre los clústeres de Kubernetes nodos.

Como alternativa a usar este procedimiento, puedes usar el Guía rápida de inicio para clústeres Kubernetes múltiples, que utiliza una malla de servicios.

En una implementación de MongoDB en múltiples clústeres de Kubernetes sin un service mesh, utiliza lo siguiente MongoDBMultiCluster configuración de recursos:

El siguiente procedimiento establece conexiones cifradas TLSentre los hosts de MongoDB en un set de réplicas y entre aplicaciones cliente y implementaciones de MongoDB.

1

Ejecute el comando kubectl para crear un nuevo secreto que almacene el certificado de recurso MongoDBMultiCluster:

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key>

Nota

Debes anteponer a tus secretos el prefijo <prefix>-<metadata.name>.

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

2

Ejecute el comando kubectl para vincular su CA a su recurso MongoDBMultiCluster . Especifica el archivo del certificado CA al que siempre debes asignar el nombre ca-pem para el recurso MongoDBMultiCluster:

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
3

Si no lo has hecho ya, ejecuta los siguientes comandos para ejecutar todos los comandos kubectl en el clúster de operador en el espacio de nombres por defecto.

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
4
  1. Copie el archivo YAML del conjunto de réplicas de muestra y péguelo en un nuevo archivo de texto.

  2. Cambia la configuración del archivo para que coincida con la configuración de set de réplicas deseada.

1# Provides statefulSet override 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 credentials: my-credentials
11 opsManager:
12 configMapRef:
13 name: my-project
14 externalAccess:
15 externalService:
16 annotations:
17 # Global cloud-specific annotations added to external services in all clusters
18 spec:
19 # ServiceSpec attributes to override in external services in all clusters
20 clusterSpecList:
21 - clusterName: cluster1.example.com
22 members: 2
23 externalAccess:
24 # Domain suffix that mongod processes will use in cluster1
25 externalDomain: cluster1.example.com
26 externalService:
27 annotations:
28 # Cloud-specific annotations for external services
29 spec:
30 # ServiceSpec attributes to override if necessary
31 - clusterName: cluster2.example.com
32 members: 1
33 externalAccess:
34 # Domain suffix that mongod processes will use in cluster2
35 externalDomain: cluster2.example.com
36 externalService:
37 annotations:
38 # Cloud-specific annotations for external services
39 spec:
40 # ServiceSpec attributes to override if necessary
41 - clusterName: cluster3.example.com
42 members: 1
43 externalAccess:
44 # Domain suffix that mongod processes will use in cluster3
45 externalDomain: cluster3.example.com
46 externalService:
47 annotations:
48 # Cloud-specific annotations for external services
49 spec:
50 # ServiceSpec attributes to override if necessary
51
52...
5

Especifique valores globales que afecten a todos los clústeres en una implementación de MongoDB en múltiples clústeres de Kubernetes usando el spec.externalAccess configuraciones y anulaciones específicas del clúster usando el spec.clusterSpecList.externalAccess.externalService configuración.

Cuando proporciones estos ajustes en la especificación de recursos MongoDBMultiCluster, el operador Kubernetes crea servicios externos para cada pod en todos los clústeres de Kubernetes. A continuación, se utilizan estos servicios para establecer la conectividad externa a todos los procesos mongod de la implementación.

6

Define un dominio externo para cada clúster nodo utilizando spec.clusterSpecList.externalAccess.externalDomain. ajuste.

Como resultado, el operador de Kubernetes registra todos los procesos mongod en el clúster nodo de Kubernetes bajo un nombre de host según la siguiente convención:

<pod-name>.<externalDomain>

Por ejemplo, un proceso de mongod puede tener el siguiente nombre de host: my-replica-set-0-0.cluster-1.example.com.

7
Clave
Tipo
Descripción
Ejemplo

string

Etiqueta para el recurso MongoDBMultiCluster.

Los nombres de recursos deben tener 44 caracteres o menos.

Consulta también metadata.name y nombres en la documentación de Kubernetes.

multi-replica-set

string

Versión de MongoDB en la que debe ejecutarse este recurso MongoDBMultiCluster.

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

IMPORTANTE: Asegúrate de elegir una versión compatible del servidor MongoDB. Las versiones compatibles varían según la imagen base que utiliza el recurso de la base de datos MongoDB.

Para obtener más información sobre el versionado de MongoDB, consulta versionado de MongoDB en el manual de MongoDB.

8.0.0

spec
.opsManager
.configMapRef

string

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

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

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

<my-project>

spec
.clusterSpecList
.clusterName

string

Nombre del clúster en el recurso MongoDBMultiCluster.

cluster1.example.com

spec
.clusterSpecList
.members

entero

El número de nodos en este clúster.

2

spec
.clusterSpecList
.statefulSet
.spec

Colección

Opcional.

Proporciona la configuración para la anulación de StatefulSet para cada uno de los StatefulSets del clúster en una implementación de MongoDB en clústeres múltiples de Kubernetes. Si se especifica en el nivel de clúster individual bajo clusterSpecList, anula la configuración global del StatefulSet para la implementación completa de MongoDB en clúster multi-Kubernetes. Consulta Especificación de Recursos Multiclúster de Kubernetes y la documentación de Kubernetes para aplicaciones StatefulSet v1.

Vea el ejemplo.

spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec

Colección

opcional. Si se especifica, se proporciona una anulación por clúster para el tamaño de almacenamiento por defecto de volumeClaimtemplates, para el volumen persistente que almacena los datos.

Vea el ejemplo.

string

Nombre del secreto que creaste como Ops Manager API credenciales de autenticación para que el Operador 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 de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso MongoDB.

<mycredentials>

string

Tipo de recurso MongoDB a crear. El único valor admitido para este campo es ReplicaSet. Consulta las Limitaciones.

ReplicaSet

8

También puedes agregar cualquier configuración opcional a la especificación objeto. Consulta Especificación de Recursos Multi-Kubernetes-clúster.

9
10

En cualquier directorio, ejecuta el siguiente comando de Kubernetes para crear tu set de réplicas:

kubectl apply -f <replica-set-conf>.yaml
11
  1. Verifica el estado de los servicios externos en todos los clústers de nodos:

    kubectl get services

    Kubernetes debe devolver un servicio externo creado para cada pod del conjunto de réplicas en todos los clústeres miembros.

  2. Verifica que cada servicio externo esté expuesto externamente y sea accesible. Ejecuta el comando similar al siguiente ejemplo:

    mongosh mongodb://my-replica-set-0-0.cluster-0.example.com:27017 \
    -tls -tlsCAFile "issuer-ca.pem"

    Conectarse a my-replica-set-0-0.cluster-0.example.com:27017 debe dirigir el tráfico del cliente a un servicio externo llamado my-replica-set-0-0-svc-external, que, a su vez, dirige el tráfico al proceso mongod.

  3. Configura tu zona DNS para el dominio externo especificado para que apunte a los servicios externos correspondientes. Esta configuración depende del entorno o proveedor de nube que esté utilizando.

12

Para comprobar el estado de tu recurso MongoDBMultiCluster, utiliza el siguiente comando en el clúster del operador:

kubectl get mdbmc <resource-name> -o yaml -w

Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.

Volver

Implementar un recurso

En esta página