Los controladores de MongoDB para Kubernetes Operator pueden usar certificados X.509 para autenticar sus aplicaciones cliente en sus implementaciones de MongoDB.
Esta guía te explica cómo configurar la autenticación X.509 de clientes a tus instancias de MongoDB.
Nota
No puedes asegurar una instancia autónoma de MongoDB en un clúster de Kubernetes.
Requisitos generales previos
Antes de proteger su implementación de MongoDB usando el cifrado TLS, complete lo siguiente:
Habilitar la autenticación X.509 a nivel de Proyecto configura a todos los agentes para que utilicen autenticación de cliente X.509 cuando se comuniquen con implementaciones de MongoDB.
Configurar la autenticación de cliente X.509 para un set de réplicas
Requisitos previos
Antes de proteger tu set de réplicas con X.509, implementa un set de réplicas cifrado con TLS.
Habilitar la autenticación de cliente X.509
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 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 authentication: 21 enabled: true 22 modes: ["X509"] 23 ...
Pega la sección del ejemplo copiado en tu recurso existente del set de réplicas.
Open your preferred text editor and paste the object specification at the end of your resource file in the spec section.
Configure los ajustes generales de X.509 para su recurso conjunto de réplicas.
Para habilitar TLS y X.509 en su implementación, configure los siguientes ajustes en su objeto de Kubernetes:
Guarda tu set de réplicas config archivo.
Aplica tus cambios a tu set de réplicas implementación.
Invoca el siguiente comando de Kubernetes para actualizar tu set de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastrea el estado de tu implementación.
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.
Renovar certificados X.509 para un set de réplicas
Si ya creaste los certificados, te recomendamos que los renueves periódicamente utilizando el siguiente procedimiento.
Nota
Para automatizar la renovación de certificados para las implementaciones de Ops Manager, considera configurar la integración cert-manager.
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 -
Renueve el secreto para los certificados X.509 de sus agentes.
Run this kubectl command to renew an existing secret that stores the agents' X.509 certificates:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Configurar la autenticación de clientes X.509 para un clúster fragmentado
Requisitos previos
Antes de asegurar tu clúster particionado usando X.509, por favor implementa un clúster particionado cifrado con TLS.
Habilitar la autenticación de cliente X.509
Copia el recurso de clúster de muestra.
Cambie la configuración de este archivo YAML para que coincida con la configuración de su clúster.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "8.0.0" 12 opsManager: 13 configMapRef: 14 name: <configMap.metadata.name> 15 # Must match metadata.name in ConfigMap file 16 credentials: <mycredentials> 17 type: ShardedCluster 18 persistent: true
19 security: 20 tls: 21 ca: <custom-ca> 22 certsSecretPrefix: <prefix> 23 authentication: 24 enabled: true 25 modes: ["X509"] 26 ...
Configura la configuración general de X.509 para tu recurso de cluster segmentado.
Para habilitar TLS y X.509 en su implementación, configure los siguientes ajustes en su objeto de Kubernetes:
Guarde su archivo de configuración de clúster fragmentado.
Actualizar y reiniciar la implementación de su clúster fragmentado.
En cualquier directorio, ejecute el siguiente comando de Kubernetes para actualizar y reiniciar su clúster:
kubectl apply -f <sharded-cluster-conf>.yaml
Rastrea el estado de tu implementación.
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.
Renovar certificados X.509 para un clúster particionado
Si ya creaste los certificados, te recomendamos que los renueves periódicamente utilizando el siguiente procedimiento.
Nota
Para automatizar la renovación de certificados para las implementaciones de Ops Manager, considera configurar la integración cert-manager.
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 para los certificados TLS de tus particiones.
Ejecute este comando kubectl para renovar un secreto existente que almacena los certificados de las particiones del clúster fragmentado:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-cert \ --cert=<shard-0-tls-cert> \ --key=<shard-0-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-cert \ --cert=<shard-1-tls-cert> \ --key=<shard-1-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Renueven el secret para los certificados TLS del servidor de configuración.
Ejecute este comando kubectl para renovar una secreto existente que almacena los certificados del servidor de configuración del clúster sharded:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-cert \ --cert=<config-tls-cert> \ --key=<config-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Renueva la clave para los certificados TLS del servidor mongos.
Run this kubectl command to renew an existing secret that stores the sharded cluster mongos certificates:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-cert \ --cert=<mongos-tls-cert> \ --key=<mongos-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Renueve el secreto para los certificados X.509 de sus agentes.
Run this kubectl command to renew an existing secret that stores the agents' X.509 certificates:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -