Al migrar un conjunto de réplicas con TLS habilitado desde máquinas virtuales a Kubernetes, cada conjunto de réplicas constituye un dominio de confianza. Los certificados de los miembros de Kubernetes deben emitirse desde la misma autoridad de certificación (CA) que firmó los certificados de las máquinas virtuales. Este es el único requisito de TLS específico para la migración. La documentación general de TLS para Kubernetes Operator cubre todo lo demás relacionado con la configuración de TLS. Una discrepancia en la CA provoca un fallo en la prueba, según el diseño. Para saber cómo la prueba detecta este fallo, consulte Validar la preparación para la migración con una prueba.
Importante
Los campos de esta página existen únicamente para la migración. No los configure en una implementación nueva de Kubernetes Operator a menos que la descripción del campo indique lo contrario.
Acerca de esta tarea
Para aprender cómo emitir certificados, estructurar Secrets y ConfigMaps, y configurar los ajustes generales de TLS en el recurso personalizado MongoDB, consulte:
Configuración de seguridad para la lista completa de
spec.security.tlsy campos relacionados.Configura una integración con cert-manager para emitir certificados con
cert-manager.Genere certificados decliente X.509 para emitir certificados manualmente.
Al seguir esa documentación para la migración, emita los certificados de miembro de Kubernetes desde la misma CA que firmó los certificados de la máquina virtual, no desde una nueva CA. La CA ConfigMap denominada <resourceName>-ca debe contener una clave ca-pem generada desde esa misma CA.
Antes de comenzar
Necesitas lo siguiente:
El certificado CA y el material de clave existentes para la implementación de la máquina virtual.
cert-managero una herramienta equivalente para emitir los certificados de miembro de Kubernetes desde esa misma CA.El recurso personalizado
MongoDBgenerado por Migrate a Replica Set to Kubernetes.
Procedimiento
Cree el certificado y los recursos de CA a partir de la CA de origen.
Siga Configurar una integración de cert-manager o Generar certificados de cliente X.509 para crear el kubernetes.io/tls Secret llamado <certsSecretPrefix>-<resourceName>-cert, emitiendo el certificado desde la misma CA que firmó los certificados de la máquina virtual.
Cree la CA ConfigMap llamada <resourceName>-ca con una clave ca-pem obtenida de esa misma CA.
Si utiliza la autenticación de agente X.509, cree también <certsSecretPrefix>-<resourceName>-agent-certs y Secret, y configure spec.security.authentication.agents.clientCertificateSecretRef para que haga referencia a ella. Este requisito se aplica únicamente a la autenticación de agente, no a la autenticación interna del clúster (spec.security.authentication.internalCluster).
Configure los campos de compatibilidad de ruta para que coincidan con la implementación de origen.
Estos campos existen únicamente para que la vista de las rutas de archivo del operador de Kubernetes coincida con la forma en que la implementación de la máquina virtual ya organiza sus certificados y archivo de clave. Configure solo aquellos que correspondan a su implementación de origen:
spec.security.tls.caFilePathRuta absoluta a la que se proyecta la CA dentro del Pod. El valor predeterminado es/mongodb-automation/tls/ca/ca-pem. La ruta debe contener al menos dos segmentos. Este campo no es compatible con la base de datos de la aplicación. SipodTemplatemonta otro volumen sobre esta ruta, dicho montaje oculta la CA proyectada y el agente de Ops Manager no puede leerla.spec.security.authentication.agents.autoPEMKeyFilePathRuta absoluta del archivo PEM combinado del agente dentro de los Pods de la base de datos. Este campo configura únicamente la autenticación del agente. Al configurar este campo, se establece el valortls.autoPEMKeyFilePathdel Administrador de operaciones y se monta elSecretreferenciado porclientCertificateSecretRefen esa ruta. De forma predeterminada, utiliza una ruta de montaje de certificado de agente derivada de hash, y para configurarlo se requiere quespec.security.authentication.agents.clientCertificateSecretRefya esté configurado. Configure este campo solo cuando la implementación de la máquina virtual utilice una ruta PEM de agente distinta a la predeterminada.spec.downloadBase: el directorio donde se descarga el binario del agente de Ops Manager. Por defecto es/var/lib/mongodb-mms-automation. El operador de Kubernetes deriva la ruta del archivo de clave a partir de este valor como<downloadBase>/keyfile.
Si el despliegue de origen no utiliza TLS, desactive TLS en el despliegue de origen.
Si la implementación de la máquina virtual nunca configuró TLS, establezca net.tls.mode en disabled en Ops Manager o Cloud Manager en la implementación de la máquina virtual existente antes de migrar. No configure este campo en el recurso personalizado MongoDB.
Si no se configura el modo TLS del despliegue de origen, Kubernetes Operator intenta realizar un cambio de despliegue que no coincide con la configuración de automatización de origen, ya que su vista predeterminada de TLS difiere de la de un despliegue que nunca configuró TLS. Al establecer el campo en disabled en el despliegue de origen, la vista de Kubernetes Operator coincide con la del despliegue de la máquina virtual y se evita ese cambio erróneo.
Realiza una prueba en seco para confirmar las coincidencias de CA.
Aplique el recurso con la anotación de prueba aún presente y verifique la condición NetworkConnectivityVerified. Para saber cómo interpretar el resultado y qué hacer si falla, consulte Validar la preparación para la migración con una prueba.
Para clústeres fragmentados
Un clúster fragmentado necesita un certificado por componente, siguiendo el patrón <resourceName>-config-* para el servidor de configuración, <resourceName>-<shardIndex>-* para cada fragmento y <resourceName>-mongos-* para los enrutadores mongos.
Nota
Confirme los nombres exactos de cada componente (Secret) con el recurso generado antes de realizar la conciliación. Para saber en qué se diferencia una migración de clúster fragmentado de una migración de conjunto de réplicas, consulte Migrar un clúster fragmentado a Kubernetes.