Nota
En cualquier lugar de esta página donde diga Ops Manager, puedes sustituir Cloud Manager.
Importante
Puedes usar el Operador de Kubernetes para implementar recursos de MongoDB con Cloud Manager y con Ops Manager versión 6.0.x o posterior.
Puedes usar el Atlas Operator para implementar recursos de MongoDB en Atlas.
Advertencia
El operador de Kubernetes no es compatible con nodos árbitros.
Un set de réplicas es un grupo de implementaciones de MongoDB que mantienen el mismo conjunto de datos. Los sets de réplicas proporcionan redundancia y alta disponibilidad, y son la base de todas las implementaciones en producción.
Para obtener más información sobre los sets de réplicas, consulta la Introducción a la replicación en el manual de MongoDB.
Utiliza este procedimiento para implementar un nuevo set de réplicas que gestione Ops Manager. Después de la implementación, utiliza Ops Manager para administrar el set de réplicas, incluyendo operaciones como agregar, remover y reconfigurar nodos.
Considerations
Cuando se implementa el set de réplicas mediante el operador de Kubernetes, debe elegir si se desea cifrar las conexiones usando certificados TLS.
El siguiente procedimiento para TLS-Encrypted conexiones:
Establece conexiones cifradas TLSentre los hosts de MongoDB en el set de réplicas.
Establece conexiones cifradas mediante TLSentre aplicaciones cliente y implementaciones de MongoDB.
Requiere certificados válidos para el cifrado TLS.
El siguiente procedimiento para Non-Encrypted Connections:
No cifra las conexiones entre los hosts de MongoDB en el set de réplicas.
No cifra las conexiones entre las aplicaciones cliente y las implementaciones de MongoDB.
Tiene menos requisitos de configuración que una implementación con conexiones cifradas TLS.
Nota
No puedes asegurar una instancia autónoma de MongoDB en un clúster de Kubernetes.
Para configurar el cifrado <span class=\" \">TLS para un clúster fragmentado, consulta <a class=\" \" href=\"\">Implementar un clúster fragmentado.
Seleccione la pestaña apropiada dependiendo de si desea cifrar sus conexiones de set de réplicas con TLS.
Requisitos previos
Para implementar un set de réplicas utilizando un objeto, debe:
Tenga o cree una instancia de Ops Manager o una organización de Cloud Manager.
Tener o instalar los Controladores MongoDB para el Operador de Kubernetes.
Crea o genera un ConfigMap de Kubernetes Operator.
Nota
Para evitar almacenar secretos en implementaciones de Kubernetes de un solo clúster, puedes migrar todos los secretos a una herramienta de almacenamiento de secretos. Las implementaciones en múltiples clústeres de Kubernetes no admiten el almacenamiento de secretos en herramientas de almacenamiento de secretos, como HashiCorp Vault.
Genera un certificado TLS para cada uno de los siguientes componentes:
Tu set de réplicas. Asegúrese de agregar SANs para cada pod de Kubernetes que aloje un nodo de su set de réplicas al certificado.
En su certificado TLS, el SAN para cada pod debe utilizar el siguiente formato:
<pod-name>.<metadata.name>-svc.<namespace>.svc.cluster.local Importante
Si utilizan un proveedor de servicios basado en ACME como Let's Encrypt para emitir certificados TLS, el proveedor podría impedirles añadir los FQDN(
*.svc.cluster.local) por defecto del Pod a los SANen el certificado.Para utilizar un certificado basado en ACME, debemos configurar el certificado para el recurso del set de réplicas. Para obtener más información, consulta el paso sobre certificados TLS basados en ACME en el procedimiento.
El MongoDB Agent de tu proyecto. Para el certificado del agente MongoDB, asegúrese de cumplir los siguientes requisitos:
El Nombre común en el certificado TLS no está vacío.
El conjunto de Organización y Unidad Organizacional en cada certificado TLS difiere del conjunto de Organización y Unidad Organizacional en el certificado TLS para los miembros del set de réplicas.
Debe tener el archivo de certificado CA y nombrarlo
ca-pem.Debes tener la clave que utilizaste para firmar tus certificados TLS.
Importante
El operador de Kubernetes utiliza kubernetes.io/tls secretos para almacenar certificados TLS y llaves privadas para MongoDB Ops Manager y recursos de MongoDB. A partir de la versión 1.17.0 del operador de Kubernetes, el operador de Kubernetes no admite archivos PEM concatenados almacenados como Opaque secrets.
Para implementar un set de réplicas utilizando un objeto, debe:
Tenga o cree una instancia de Ops Manager o una organización de Cloud Manager.
Tener o instalar los Controladores MongoDB para el Operador de Kubernetes.
Crea o genera un ConfigMap de Kubernetes Operator.
Nota
Para evitar almacenar secretos en implementaciones de Kubernetes de un solo clúster, puedes migrar todos los secretos a una herramienta de almacenamiento de secretos. Las implementaciones en múltiples clústeres de Kubernetes no admiten el almacenamiento de secretos en herramientas de almacenamiento de secretos, como HashiCorp Vault.
Implementar un set de réplicas
Configura kubectl para que sea por defecto en tu namespace.
Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los comandos de kubectl en el namespace que creó.
Nota
Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:
Defina
contextcomo el nombre del clúster operador, por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establece el
--namespaceen el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo:kubectl config --namespace "mongodb".
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Crea el secreto para el TLS certificado de tu set de réplicas.
Ejecuta este comando kubectl para crear un nuevo secreto que almacena el certificado del set de réplicas:
kubectl create secret tls <prefix>-<metadata.name>-cert \ --cert=<replica-set-tls-cert> \ --key=<replica-set-tls-key>
Nota
Debe anteponer sus secretos con <prefix>-<metadata.name>.
Por ejemplo, si llama a su implementación my-deployment y establece el prefijo en mdb, debe nombrar el secreto TLS para las comunicaciones TLS del cliente mdb-my-deployment-cert. Además, debe nombrar el secreto TLS para la autenticación interna del clúster (si está habilitada) mdb-my-deployment-clusterfile.
Si está utilizando HashiCorp Vault como su herramienta de almacenamiento de secretos, puede Crear un secreto de Vault en su lugar.
Para conocer sus opciones para el almacenamiento de secretos, consulte Configurar almacenamiento de secretos.
Crea el secreto para el certificado TLS de su agente.
Ejecuta este comando kubectl para crear un nuevo secreto que almacene el certificado TLS del agente:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key>
Si está utilizando HashiCorp Vault como su herramienta de almacenamiento de secretos, puede Crear un secreto de Vault en su lugar.
Crea el ConfigMap para vincular tu CA con tu implementación.
Ejecuta este comando kubectl para vincular tu CA a tu set de réplicas y especificar el archivo de certificado CA.
Importante
El Operador de Kubernetes requiere que el certificado para el recurso MongoDB se llame ca-pem en el ConfigMap.
kubectl create configmap custom-ca --from-file=ca-pem=<your-custom-ca-file>
Copia el recurso de set de réplicas de muestra.
Cambia los ajustes de este archivo YAML para que coincidan con la configuración de set de réplicas deseada.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "8.0.0" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true 16 ...
16 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 ...
Pega el ejemplo copiado para crear un nuevo set de réplicas recurso.
Abre tu editor de texto preferido y pega la especificación del objeto en un nuevo archivo de texto.
Cambia la configuración a tus valores preferidos.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
string | Etiqueta para este set de réplicas de Kubernetes objeto. Los nombres de recursos deben tener 44 caracteres o menos. Para aprender más, consulta |
| |
entero | Número de nodos del set de réplicas. |
| |
string | Versión de MongoDB que este set de réplicas debería ejecutar. 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 | Name of the ConfigMap with the Ops Manager connection configuration. The 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 secreto que creaste como Ops Manager API credenciales de autenticación para que el operador de Kubernetes pueda comunicarse con Ops Manager. The Ops Manager Kubernetes Secret object holding the Credentials must exist on the same Namespace as the resource you want to create. IMPORTANTE: El operador de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
| |
string | Opcional. Flag indicating if this Si este valor es Para cambiar la configuración de tu claim de volumen persistente, configura las siguientes colecciones para cumplir con los requisitos de tu implementación:
WARNING: Grant your containers permission to write to your Persistent Volume. The Kubernetes Operator sets If you do not use Persistent Volumes, the Disk Usage and Disk IOPS charts cannot be displayed in either the Processes tab on the Deployment page or in the Metrics page when reviewing the data for this deployment. |
|
Configura los ajustes de TLS para tu set de réplicas recurso usando una autoridad certificadora personalizada (CA).
Para habilitar TLS en su implementación, configure los siguientes ajustes en su objeto de Kubernetes:
Clave | Tipo | Necesidad | Descripción | Ejemplo |
|---|---|---|---|---|
| string | Requerido | Agrega el nombre del ConfigMap que almacena la CA personalizada que usaste para firmar los certificados TLS de tu implementación. |
|
| string | Requerido | Agrega el Por ejemplo, si llama a su implementación |
|
Opcional: Configura certificados ACME basados en TLS para tu recurso de set de réplicas.
Si utilizan un proveedor de servicios basado en ACME como Let's Encrypt para emitir certificados TLS, el proveedor podría impedirles añadir los FQDN(*.svc.cluster.local) por defecto del Pod a los SANen el certificado.
Para configurar un certificado que no contenga los FQDNdel pod:
Emitir el certificado para un dominio externo. Para obtener más información, consulte la documentación de Let's Encrypt o la documentación de su proveedor.
Asegúrate de que tu certificado contenga todos los nombres de host que planeas implementar en el set de réplicas. Alternativamente, puedes emitir un certificado comodín para
*.<externalDomain>.Para usar un certificado que contenga solo dominios externos para tu implementación del set de réplicas, deberás cambiar el hostname por defecto que usa el set de réplicas:
If you prefer to configure the hostname while creating your Kubernetes cluster, change the default domain from
cluster.localto the external domain when creating or recreating your Kubernetes cluster. Then, set this domain in your MongoDB resource by using thespec.clusterDomainsetting.De lo contrario, cree su implementación de MongoDB con la siguiente configuración en su objeto de Kubernetes:
Clave | Tipo | Necesidad | Descripción | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| string | Requerido | Un dominio externo utilizado para exponer externamente su implementación de set de réplicas. Por defecto, cada nodo del set de réplicas utiliza el FQDN (
Por ejemplo:
After you deploy the replica set with this setting, the Kubernetes Operator uses the hostname with the external domain to override the Para especificar otros nombres de host para conectarse al set de réplicas, puede utilizar el ajuste
WARNING: Specifying this field changes how Ops Manager registers | |||||||
| Colección | Opcional | Configuración para el ServiceSpec. Al configurar el ajuste Para obtener más información sobre la especificación Kubernetes, consulta ServiceSpec en la documentación de Kubernetes. | |||||||
| Colección | Opcional | Pares clave-valor que le permiten agregar configuraciones específicas del proveedor de nube a todos los clústeres de su implementación. Para obtener más información, consulte anotaciones y la documentación de su proveedor de nube de Kubernetes. Puedes especificar valores de marcador de posición para personalizar tus anotaciones. Para obtener más información, consulta |
Agrega cualquier configuración adicional aceptada para un set de réplicas implementación.
También puede añadir cualquiera de los siguientes ajustes opcionales al archivo de especificaciones del objeto para el set de réplicas implementación:
Advertencia
You must set spec.clusterDomain if your Kubernetes cluster has a default domain other than the default cluster.local. If you neither use the default nor set the spec.clusterDomain option, the Kubernetes Operator might not function as expected.
Guarde este archivo de configuración del set de réplicas con una .yaml extensión.
Inicie su set de réplicas.
En cualquier directorio, ejecuta el siguiente comando de Kubernetes para crear tu set de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastree el estado de la implementación de su set de réplicas.
Para verificar el estado de su MongoDB recurso, utilice el siguiente comando:
kubectl get mdb <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.
Después de cifrar tu recurso de base de datos con TLS, puedes proteger lo siguiente:
Renovar los certificados TLS para un set de réplicas
Renueva sus certificados TLS periódicamente utilizando el siguiente procedimiento:
Configura kubectl para que sea por defecto en tu namespace.
Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los comandos de kubectl en el namespace que creó.
Nota
Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:
Defina
contextcomo el nombre del clúster operador, por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establece el
--namespaceen el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo:kubectl config --namespace "mongodb".
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Renueva el secreto de tus certificados TLS.
Ejecuta este comando kubectl para renovar un secreto existente que almacena los certificados del set de réplicas:
kubectl create secret tls <prefix>-<metadata.name>-cert \ --cert=<replica-set-tls-cert> \ --key=<replica-set-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Configura kubectl para que sea por defecto en tu namespace.
Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los comandos de kubectl en el namespace que creó.
Nota
Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:
Defina
contextcomo el nombre del clúster operador, por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establece el
--namespaceen el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo:kubectl config --namespace "mongodb".
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Copia el recurso de set de réplicas de muestra.
Cambia los ajustes de este archivo YAML para que coincidan con la configuración de set de réplicas deseada.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "8.0.0" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true 16 ...
Pega el ejemplo copiado para crear un nuevo set de réplicas recurso.
Abre tu editor de texto preferido y pega la especificación del objeto en un nuevo archivo de texto.
Cambia la configuración a tus valores preferidos.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
string | Etiqueta para este set de réplicas de Kubernetes objeto. Los nombres de recursos deben tener 44 caracteres o menos. Para aprender más, consulta |
| |
entero | Número de nodos del set de réplicas. |
| |
string | Versión de MongoDB que este set de réplicas debería ejecutar. 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 | Name of the ConfigMap with the Ops Manager connection configuration. The 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 secreto que creaste como Ops Manager API credenciales de autenticación para que el operador de Kubernetes pueda comunicarse con Ops Manager. The Ops Manager Kubernetes Secret object holding the Credentials must exist on the same Namespace as the resource you want to create. IMPORTANTE: El operador de Kubernetes rastrea cualquier cambio realizado en el Secreto y reconcilia el estado del recurso |
| |
string | Tipo de recurso |
| |
string | Opcional. Flag indicating if this Si este valor es Para cambiar la configuración de tu claim de volumen persistente, configura las siguientes colecciones para cumplir con los requisitos de tu implementación:
WARNING: Grant your containers permission to write to your Persistent Volume. The Kubernetes Operator sets If you do not use Persistent Volumes, the Disk Usage and Disk IOPS charts cannot be displayed in either the Processes tab on the Deployment page or in the Metrics page when reviewing the data for this deployment. |
|
Agrega cualquier configuración adicional aceptada para un set de réplicas implementación.
También puede añadir cualquiera de los siguientes ajustes opcionales al archivo de especificaciones del objeto para el set de réplicas implementación:
Advertencia
You must set spec.clusterDomain if your Kubernetes cluster has a default domain other than the default cluster.local. If you neither use the default nor set the spec.clusterDomain option, the Kubernetes Operator might not function as expected.
Guarde este archivo de configuración del set de réplicas con una .yaml extensión.
Inicie su set de réplicas.
En cualquier directorio, ejecuta el siguiente comando de Kubernetes para crear tu set de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastree el estado de la implementación de su set de réplicas.
Para verificar el estado de su MongoDB recurso, utilice el siguiente comando:
kubectl get mdb <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.