Cuando migra un set de réplicas habilitado para TLS de máquinas virtuales a Kubernetes, un set de réplicas es un dominio de confianza. Emita los certificados de nodo de Kubernetes de la misma autoridad de certificación (CA) que firmó los certificados de la máquina virtual. Este es el único requisito de TLS específico de la migración. La documentación general de TLS para el operador de Kubernetes cubre todo lo demás sobre la configuración de TLS. Una falta de coincidencia de CA hace que la ejecución de prueba falle, por diseño. Para aprender cómo la ejecución de prueba detecta ese error, consulte Validar la preparación de la migración con una ejecución de prueba.
Importante
Los campos de esta página existen únicamente para la migración. No los configure en una implementación nueva de operador de Kubernetes a menos que la descripción del campo indique lo contrario.
Acerca de esta tarea
Para aprender a emitir certificados, estructurar Secrets y ConfigMaps y configurar los ajustes generales de TLS en el recurso personalizado MongoDB, consulte:
Configuración de seguridad para ver la lista completa de
spec.security.tlsy los campos relacionados.Configurar una integración de cert-manager para emitir certificados con
cert-manager.Generar certificados de cliente X.509 para emitir certificados manualmente.
Cuando siga esa documentación para una migración, emita los certificados de nodo de Kubernetes de la misma CA que firmó los certificados de máquina virtual, no de una nueva CA. La CA ConfigMap denominada <resourceName>-ca debe contener una clave ca-pem rellenada desde esa misma CA.
Antes de comenzar
Necesita lo siguiente:
El certificado de CA existente y el material clave de la implementación de la máquina virtual.
cert-managero una herramienta equivalente para emitir los certificados de nodo de Kubernetes de la misma CA.El
MongoDBrecurso personalizado generado de Migrar un set de réplicas a Kubernetes.
Procedimiento
Cree el certificado y los recursos de CA desde la CA de origen.
Siga Configurar una integración de cert-manager o Generar509 certificados de kubernetes.io/tls Secret cliente X.509 para crear el <certsSecretPrefix>-<resourceName>-cert denominado, emitiendo el certificado desde la misma CA que firmó los certificados de la máquina virtual.
Cree la CA ConfigMap denominada <resourceName>-ca con una clave ca-pem rellenada desde esa misma CA.
Si utiliza la autenticación de agente X.509, cree también el <certsSecretPrefix>-<resourceName>-agent-certs Secret y configure spec.security.authentication.agents.clientCertificateSecretRef para que haga referencia a él. Este requisito se aplica únicamente a la autenticación de agente, no a la autenticación de clúster interna (spec.security.authentication.internalCluster).
Establezca los campos de compatibilidad de ruta para que coincidan con la implementación de origen.
Estos campos existen únicamente para que la vista del operador de Kubernetes de las rutas de archivo coincida con la forma en que la implementación de la máquina virtual ya organiza sus certificados y archivos de claves. Configure únicamente los que se apliquen a su implementación de origen:
spec.security.tls.caFilePath: la ruta absoluta a la que se proyecta la CA dentro del Pod. Se establece por defecto en/mongodb-automation/tls/ca/ca-pem. La ruta debe contener al menos dos segmentos de ruta. Este campo no es compatible con la base de datos de la aplicación. Si supodTemplatemonta otro volumen sobre esta ruta, ese montaje oculta la CA proyectada y el MongoDB Ops Manager agente no puede leerla.spec.security.authentication.agents.autoPEMKeyFilePath: la ruta absoluta del archivo PEM combinado del agente dentro de los Pods de la base de datos. Este campo configura solo la autenticación de agente. Al establecer este campo, se establece el valortls.autoPEMKeyFilePathde Ops Manager y se monta elSecretal que hace referenciaclientCertificateSecretRefen esa ruta. Por defecto, utiliza una ruta de montaje del certificado del agente derivada de hash, y para configurarlo, es necesario quespec.security.authentication.agents.clientCertificateSecretRefya esté configurado. Establezca este campo solo cuando la implementación de la máquina virtual utilice una ruta PEM de agente no por defecto.spec.downloadBase: el directorio donde el Ops Manager agente binario se descarga. Se establece en/var/lib/mongodb-mms-automationpor defecto. El operador de Kubernetes deriva la ruta del archivo de claves de este valor como<downloadBase>/keyfile.
Si la implementación de origen no utiliza TLS, deshabilite TLS en la implementación de origen.
Si la implementación de la máquina virtual nunca configuró TLS, establezca net.tls.mode en disabled en MongoDB Ops Manager o Cloud Manager en la implementación de la máquina virtual existente antes de migrar. No establezca este campo en el recurso personalizado MongoDB.
Si deja sin establecer el modo TLS de la implementación de origen, el operador de Kubernetes intenta un cambio de implementación que no coincide con la configuración de automatización de origen, porque su vista predeterminada de TLS difiere de una implementación que nunca configuró TLS. Al establecer el campo en disabled en la implementación de origen, la vista del operador de Kubernetes coincide con la implementación de la máquina virtual y se evita ese cambio espurio.
Ejecute el simulacro para confirmar que la CA coincide.
Aplicar el recurso con la anotación de ejecutar en seco aún presente y comprobar la condición NetworkConnectivityVerified. Para aprender a leer el resultado y qué hacer si falla, consulte Validar la preparación para la migración con una prueba en seco.
Para clúster particionado
Un clúster particionado necesita un certificado por componente, siguiendo el patrón <resourceName>-config-* para el servidor de configuración, <resourceName>-<shardIndex>-* para cada partición y <resourceName>-mongos-* para los mongos enrutadores.
Nota
Confirme los nombres exactos de Secret por componente con el recurso generado antes de conciliar. Para saber cómo una migración de clúster particionado difiere de una migración de set de réplicas, consulte Migrar un clúster particionado a Kubernetes.