Utiliza este procedimiento para crear un nuevo set de réplicas en un clúster nodo de Kubernetes, dentro de una implementación de MongoDB en varios clústeres de Kubernetes.
Este procedimiento te permite configurar distintos ajustes para el recurso de set de réplicas, como anulaciones para la configuración de statefulSet. Como alternativa al uso de este procedimiento, se puede usar el inicio rápido de Multi-Kubernetes-Cluster, el cual crea una implementación de MongoDB de clúster de múltiples Kubernetes con ajustes predeterminados.
Antes de empezar:
Infórmate sobre implementaciones de múltiples clústeres de Kubernetes.
Revisa la lista de servicios y herramientas multi-Kubernetes-clúster.
Instale el Kubernetes operador en una implementación de MongoDB en clúster múltiple de Kubernetes. Consulte Inicio rápido de Multi-Kubernetes-clúster.
Completa los requisitos previos.
Implementar un recurso MongoDBMultiCluster
Puedes utilizar los siguientes procedimientos en esta pestaña TLS-Encrypted Connections:
Implementar un recurso
MongoDBMultiClusterRenovar certificados TLS para un recurso de
MongoDBMultiCluster
Estos procedimientos establecen conexiones cifradas mediante TLSentre los hosts de MongoDB en un conjunto de réplicas, y entre las aplicaciones cliente y las implementaciones de MongoDB.
Antes de comenzar, debe tener certificados válidos para el cifrado TLS.
Implementar un recurso MongoDBMultiCluster
Crea el secreto para el certificado TLS de tu MongoDBMultiCluster recurso.
<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
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
Debe anteponer sus secretos con <prefix>-<metadata.name>.
Por ejemplo, si llama a su despliegue my-deployment y establece el prefijo en mdb, debe nombrar el secreto TLS para las comunicaciones TLS del cliente como mdb-my-deployment-cert. Además, debe nombrar el secreto TLS para la autenticación interna del clúster (si está habilitada) como mdb-my-deployment-clusterfile.
Cree el ConfigMap para vincular su CA con su recurso MongoDBMultiCluster.
Ejecute el comando kubectl para vincular su CA con su recurso MongoDBMultiCluster. Especifique el archivo de certificado de CA que siempre debe llamar 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>
Configure kubectl para que utilice el espacio de nombres del clúster central.
Si no lo has hecho aún, ejecuta los siguientes comandos para ejecutar todos los comandos kubectl en el clúster central bajo el namespace por defecto.
kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME kubectl config set-context $(kubectl config current-context) \ --namespace=mongodb
Copia y pega el recurso de muestra.
Copie el archivo YAML del conjunto de réplicas de ejemplo y péguelo en un nuevo archivo de texto.
Cambia la configuración del archivo para que coincida con la configuración de set de réplicas deseada.
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 ...
Cambia la configuración a tus valores preferidos.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
string | Etiqueta para el recurso Los nombres de recursos deben tener 44 caracteres o menos. Véase también |
| |
string | Versión de MongoDB en la que debe ejecutarse este recurso El formato debe ser 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. |
| |
| string | Nombre del ConfigMap con la configuración de conexión de Ops Manager. La configuración 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 |
|
| string | Nombre del clúster en el recurso |
|
| entero | El número de nodos en este clúster. |
|
| 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 de Kubernetes múltiples. Si se especifica a nivel de clúster individual en | Consulta el ejemplo. |
| Colección | Consulta el ejemplo. | |
string | Nombre del secreto que creó como credenciales de autenticación de la API de Ops Manager para que el operador de Kubernetes se comunique con Ops Manager. El objeto Ops Manager Kubernetes Secret que contiene las credenciales debe existir en el mismo espacio de nombres que el recurso que desea crear. IMPORTANTE: El operador de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
|
Añade cualquier configuración adicional aceptada para una implementación de recursos de MongoDBMultiCluster.
También puede agregar configuraciones opcionales a la especificación del objeto. Consulte la Especificación de recursos de clústeres de Kubernetes múltiples.
Inicie el despliegue de su conjunto de réplicas.
En cualquier directorio, ejecute el siguiente comando de Kubernetes para crear su conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastrea el estado de tu implementación de MongoDB en varios clústeres de Kubernetes.
Para comprobar el estado de su recurso MongoDBMultiCluster, utilice el siguiente comando en el clúster central:
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.
Renovar certificados TLS para un recurso de MongoDBMultiCluster
Renueve sus certificados TLS periódicamente siguiendo el siguiente procedimiento.
Renueva el secreto para un recurso MongoDBMultiCluster.
Ejecute este comando kubectl para renovar un secreto existente que almacena los certificados para el 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> \ --dry-run=client \ -o yaml | kubectl apply -f -
Este procedimiento no cifra las conexiones entre los hosts de MongoDB en un set de réplicas, ni entre las aplicaciones cliente y las implementaciones de MongoDB.
Implementar un recurso MongoDBMultiCluster
Configure kubectl para que utilice el espacio de nombres del clúster central.
Si no lo has hecho aún, ejecuta los siguientes comandos para ejecutar todos los comandos kubectl en el clúster central bajo el namespace por defecto.
kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME kubectl config set-context $(kubectl config current-context) \ --namespace=mongodb
Copia y pega el recurso de muestra.
Copie el archivo YAML del conjunto de réplicas de ejemplo y péguelo en un nuevo archivo de texto.
Cambia la configuración del archivo para que coincida con la configuración de set de réplicas deseada.
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 ...
Cambia la configuración a tus valores preferidos.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
string | Etiqueta para el recurso Los nombres de recursos deben tener 44 caracteres o menos. Véase también |
| |
string | Versión de MongoDB en la que debe ejecutarse este recurso El formato debe ser 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. |
| |
| string | Nombre del ConfigMap con la configuración de conexión de Ops Manager. La configuración 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 |
|
| string | Nombre del clúster en el recurso |
|
| entero | El número de nodos en este clúster. |
|
| 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 de Kubernetes múltiples. Si se especifica a nivel de clúster individual en | Consulta el ejemplo. |
| Colección | Consulta el ejemplo. | |
string | Nombre del secreto que creó como credenciales de autenticación de la API de Ops Manager para que el operador de Kubernetes se comunique con Ops Manager. El objeto Ops Manager Kubernetes Secret que contiene las credenciales debe existir en el mismo espacio de nombres que el recurso que desea crear. IMPORTANTE: El operador de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
|
Añade cualquier configuración adicional aceptada para una implementación de recursos de MongoDBMultiCluster.
También puede agregar configuraciones opcionales a la especificación del objeto. Consulte la Especificación de recursos de clústeres de Kubernetes múltiples.
Inicie el despliegue de su conjunto de réplicas.
En cualquier directorio, ejecute el siguiente comando de Kubernetes para crear su conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastrea el estado de tu implementación de MongoDB en varios clústeres de Kubernetes.
Para comprobar el estado de su recurso MongoDBMultiCluster, utilice el siguiente comando en el clúster central:
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.