Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

Administrar certificados TLS (arquitectura multi-clúster)

Esta sección proporciona orientación sobre la creación de certificados TLS para cada componente de MongoDB y la creación de secretos de Kubernetes en cada uno de los clústeres de Kubernetes para montar de forma segura los certificados TLS en los Pods de Kubernetes adecuados.

El proceso descrito a continuación utiliza Cert Manager para crear los certificados TLS. Sin embargo, ten en cuenta que esta es una guía partidista y CertManager no cuenta con el apoyo de MongoDB. Además, CertManager es sólo una de las muchas formas en las que puede añadir certificados TLS a sus clústeres de Kubernetes. Además, los certificados autofirmados pueden no ser adecuados para implementaciones en producción, dependiendo de los requisitos de seguridad de tu organización. Si requiere certificados confiables públicamente, configure su Emisor en consecuencia o proporcione directamente el certificado TLS. Para obtener más información, consulte Configurar una integración de cert-manager.

Antes de empezar, realiza las siguientes tareas:

  • Instale kubectl.

  • Instala Helm.

  • Establece las variables de entorno K8S_CLUSTER_*_CONTEXT_NAME como se explica en la Guía de clústeres GKE.

Se puede encontrar todo el código fuente incluido en el repositorio de MongoDB Kubernetes operador.

1
helm repo add jetstack https://charts.jetstack.io --force-update
2
helm upgrade --install \ cert-manager jetstack/cert-manager \ --kube-context "${K8S_CLUSTER_0_CONTEXT_NAME}" \ --namespace cert-manager \ --create-namespace \ --set crds.enabled=true
3
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOFapiVersion: cert-manager.io/v1kind: ClusterIssuermetadata: name: selfsigned-cluster-issuerspec: selfSigned: {}EOF kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer selfsigned-cluster-issuer kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOFapiVersion: cert-manager.io/v1kind: Certificatemetadata: name: my-selfsigned-ca namespace: cert-managerspec: isCA: true commonName: my-selfsigned-ca secretName: root-secret privateKey: algorithm: ECDSA size: 256 issuerRef: name: selfsigned-cluster-issuer kind: ClusterIssuerEOF kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready -n cert-manager certificate my-selfsigned-ca kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOFapiVersion: cert-manager.io/v1kind: ClusterIssuermetadata: name: my-ca-issuerspec: ca: secretName: root-secretEOF kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer my-ca-issuer
4
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOFapiVersion: cert-manager.io/v1kind: Certificatemetadata: name: test-selfsigned-cert namespace: cert-managerspec: dnsNames: - example.com secretName: test-selfsigned-cert-tls issuerRef: name: my-ca-issuer kind: ClusterIssuerEOF kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait -n cert-manager --for=condition=Ready certificate test-selfsigned-cert kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" delete -n cert-manager certificate test-selfsigned-cert

/includes/code-examples/outputs/test_gke_multi_cluster_snippets/ra-05_0221_verify_issuer.out

certificate.cert-manager.io/test-selfsigned-cert createdcertificate.cert-manager.io/test-selfsigned-cert condition metcertificate.cert-manager.io "test-selfsigned-cert" deleted from cert-manager namespace
5
mkdir -p certs openssl s_client -showcerts -verify 2 \-connect downloads.mongodb.com:443 -servername downloads.mongodb.com < /dev/null \| awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="certs/cert"a".crt"; print >out}' kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" get secret root-secret -n cert-manager -o jsonpath="{.data['ca\.crt']}" | base64 --decode > certs/ca.crtcat certs/ca.crt certs/cert2.crt certs/cert3.crt >> certs/mms-ca.crt kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${MDB_NAMESPACE}" --from-file=ca-pem=certs/mms-ca.crt --from-file=mms-ca.crt=certs/mms-ca.crtkubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${OM_NAMESPACE}" --from-file=ca-pem=certs/mms-ca.crt --from-file=mms-ca.crt=certs/mms-ca.crt