Puede configurar el operador de Kubernetes para usar certificados X.509 para autenticar sus aplicaciones cliente en una implementación de MongoDB de un clúster de Kubernetes múltiple.
Para asegurar su implementación de MongoDB en múltiples clústeres de Kubernetes con certificados X.509, ejecute todas las acciones en el clúster de operadores. El operador de Kubernetes propaga la configuración X.509 a cada nodo clúster y actualiza la configuración del operador de Kubernetes en cada nodo clúster.
Requisitos previos
Antes de proteger su implementación de MongoDB en un clúster multi-Kubernetes mediante CifradoTLS, complete las siguientes tareas:
Siga los pasos que se indican en Requisitos previos de inicio rápido de varios clústeres.
Implementar un clúster múltiple cifrado con TLS.
Cree credenciales para el operador de Kubernetes para el operador de Kubernetes.
Al habilitar la autenticación X.509 en el nivel del proyecto, se configuran todos los agentes para usar la autenticación de cliente X.509 cuando se comunican con implementaciones de MongoDB.
La autenticación del cliente X.509 requiere uno de los siguientes:
Cloud Manager
La versión del Ops Manager es compatible con tu versión del Operador de Kubernetes.
Habilitar la autenticación X.509 para un recurso MongoDBMultiCluster
Cree el secreto para el certificado X.509 de su agente MongoDBMultiCluster resource.
Ejecute el comando kubectl para crear un nuevo secreto que almacene el certificado X.509 del agente:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key>
Actualice su MongoDBMultiCluster recurso para habilitar la509 autenticaciónX.
Actualice su recurso personalizado MongoDBMultiCluster con la configuración de seguridad de la especificación del recurso MongoDBMultiCluster del operador de Kubernetes. La configuración resultante podría ser similar a la del siguiente ejemplo:
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 8.0.0 type: ReplicaSet persistent: false duplicateServiceObjects: true credentials: my-credentials opsManager: configMapRef: name: my-project security: tls: ca: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" clusterSpecList: - clusterName: ${MDB_CLUSTER_1_FULL_NAME} members: 3 - clusterName: ${MDB_CLUSTER_2_FULL_NAME} members: 2 - clusterName: ${MDB_CLUSTER_3_FULL_NAME} members: 3 The |k8s-op-short| copies the ConfigMap with the |certauth| created in the operator cluster to each member cluster, generates a concatenated |pem| secret, and distributes it to the member clusters.
Verifique que los MongoDBMultiCluster recursos estén ejecutándose.
Para los clústeres de miembros, ejecute los siguientes comandos para verificar que los pods de MongoDB estén en estado de ejecución:
kubectl get pods \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb En el clúster del operador, ejecute el siguiente comando para verificar que el recurso
MongoDBMultiClusteresté en estado de ejecución:kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
Renovar certificados X.509 para un recurso MongoDBMultiCluster
Si ya se han creado certificados X.509, renovarlos 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 -
Renueve el secreto de los certificados X.509 de su agente.
Ejecute el comando kubectl para renovar un secreto existente que almacena los certificados del agente de recursos MongoDBMultiCluster:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -