Utilice este procedimiento para crear un nuevo conjunto de réplicas en un clúster de Kubernetes miembro en una implementación de MongoDB de varios clústeres de Kubernetes.
Este procedimiento permite configurar diferentes ajustes para el recurso del conjunto de réplicas, como anulaciones para la configuración de statefulSet. Como alternativa a este procedimiento, puede usar la Guía de inicio rápido para clústeres multi-Kubernetes, que crea una implementación de MongoDB para clústeres multi-Kubernetes con la configuración predeterminada.
Antes de empezar:
Obtenga información sobre las implementaciones de múltiples clústeres de Kubernetes.
Revise la lista de servicios y herramientas de múltiples clústeres de Kubernetes.
Instale el operador de Kubernetes en una implementación de MongoDB con varios clústeres de Kubernetes. Consulte la Guía de inicio rápido para varios clústeres de Kubernetes.
Completar los prerrequisitos.
Implementar un MongoDBMultiCluster Resource
Puede utilizar los siguientes procedimientos en este TLS-Encrypted Connections pestaña:
Implementar un recurso
MongoDBMultiClusterRenovar certificados TLS para un recurso
MongoDBMultiCluster
Estos procedimientos establecen Conexionescifradas con TLS entre hosts MongoDB en un conjunto de réplicas y entre aplicaciones cliente e implementaciones de MongoDB.
Antes de comenzar, debe tener certificados válidos para el cifrado TLS.
Implementa un recurso MongoDBMultiCluster
Cree el secreto para el certificado TLS de su MongoDBMultiCluster recurso.
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.
Cree el ConfigMap para vincular su CA con su recurso MongoDBMultiCluster.
Ejecute el kubectl comando para vincular su CA a su MongoDBMultiCluster recurso. Especifique el archivo de certificado de CA que siempre debe llamarse ca-pem para el MongoDBMultiCluster recurso:
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 utilizar el espacio de nombres del clúster del operador.
Si aún no lo ha hecho, ejecute los siguientes comandos para ejecutar todos los comandos kubectl en el clúster del operador en el espacio de nombres predeterminado.
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 muestra y péguelo en un nuevo archivo de texto.
Cambie la configuración del archivo para que coincida con la configuración del conjunto 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: 6.0.0-ent 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 ...
Cambie la configuración a sus 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 que este recurso El formato debe ser IMPORTANTE: Asegúrese de elegir una versión compatible de MongoDB Server. Las versiones compatibles varían según la imagen base que utilice el recurso de 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. El parámetro es un alias de este parámetro y puede utilizarse en su 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 |
| |
spec.clusterSpecList.clusterName | string | Nombre del clúster en el recurso |
|
spec.clusterSpecList.members | entero | El número de miembros en este grupo. |
|
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 con clústeres multi-Kubernetes. Si se especifica a nivel de | Vea el ejemplo. |
spec.clusterSpecList.statefulSet.spec.volumeClaimTemplates.spec | Colección | Opcional. Si se especifica, proporciona una anulación por clúster del tamaño de almacenamiento predeterminado de las plantillas volumeClaimtemplates para el volumen persistente que almacena los datos. | Vea el ejemplo. |
string | Nombre del secreto que creó como credenciales de autenticación de API de Ops Manager 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 de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
|
Agregue cualquier configuración adicional aceptada para una MongoDBMultiCluster implementación de recursos.
También puede agregar cualquier configuración opcional a la especificación del objeto. Consulte la Especificación de recursos de clústeres multi-Kubernetes.
Guarde este archivo de configuración del conjunto de réplicas con una .yaml extensión.
Inicie la implementación de su conjunto de réplicas.
En cualquier directorio, invoque el siguiente comando de Kubernetes para crear su conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Realice un seguimiento del estado de la implementación de MongoDB de su clúster multi-Kubernetes.
Para comprobar el estado de su recurso MongoDBMultiCluster, utilice el siguiente comando en el clúster del operador:
kubectl get mdbmc <resource-name> -o yaml -w
Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.
Renovar certificados TLS para un MongoDBMultiCluster recurso
Renueve sus certificados TLS periódicamente utilizando el siguiente procedimiento.
Renueva el secreto para un recurso MongoDBMultiCluster.
Ejecute este kubectl comando para renovar un secreto existente que almacena los certificados para el MongoDBMultiCluster recurso:
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 conjunto de réplicas, ni entre las aplicaciones cliente y las implementaciones de MongoDB.
Implementa un recurso MongoDBMultiCluster
Configure kubectl para utilizar el espacio de nombres del clúster del operador.
Si aún no lo ha hecho, ejecute los siguientes comandos para ejecutar todos los comandos kubectl en el clúster del operador en el espacio de nombres predeterminado.
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 muestra y péguelo en un nuevo archivo de texto.
Cambie la configuración del archivo para que coincida con la configuración del conjunto 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: 6.0.0-ent 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 ...
Cambie la configuración a sus valores preferidos.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
string | Etiqueta para el recurso Los nombres de recursos deben tener 44 caracteres o menos. Consulte también |
| |
string | Versión de MongoDB que este recurso El formato debe ser IMPORTANTE: Asegúrese de elegir una versión compatible de MongoDB Server. Las versiones compatibles varían según la imagen base que utilice el recurso de 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. El parámetro es un alias de este parámetro y puede utilizarse en su 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 |
| |
spec.clusterSpecList.clusterName | string | Nombre del clúster en el recurso |
|
spec.clusterSpecList.members | entero | El número de miembros en este grupo. |
|
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 con clústeres multi-Kubernetes. Si se especifica a nivel de | Vea el ejemplo. |
spec.clusterSpecList.statefulSet.spec.volumeClaimTemplates.spec | Colección | Opcional. Si se especifica, proporciona una anulación por clúster del tamaño de almacenamiento predeterminado de las plantillas volumeClaimtemplates para el volumen persistente que almacena los datos. | Vea el ejemplo. |
string | Nombre del secreto que creó como credenciales de autenticación de API de Ops Manager 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 de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
|
Agregue cualquier configuración adicional aceptada para una MongoDBMultiCluster implementación de recursos.
También puede agregar cualquier configuración opcional a la especificación del objeto. Consulte la Especificación de recursos de clústeres multi-Kubernetes.
Guarde este archivo de configuración del conjunto de réplicas con una .yaml extensión.
Inicie la implementación de su conjunto de réplicas.
En cualquier directorio, invoque el siguiente comando de Kubernetes para crear su conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Realice un seguimiento del estado de la implementación de MongoDB de su clúster multi-Kubernetes.
Para comprobar el estado de su recurso MongoDBMultiCluster, utilice el siguiente comando en el clúster del operador:
kubectl get mdbmc <resource-name> -o yaml -w
Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.