Docs Menu
Docs Home
/
Arquitecturas de Referencia
/

Certificados TLS

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 sus clústeres de Kubernetes para montar los certificados TLS de forma segura en los pods de Kubernetes adecuados.

El proceso que se describe a continuación utiliza Cert ManagerPara crear los certificados TLS. Sin embargo, tenga en cuenta que esta guía es orientativa y que CertManager no es compatible con MongoDB. Además, CertManager es solo una de las muchas maneras de agregar certificados TLS a sus clústeres de Kubernetes. Además, los certificados autofirmados podrían no ser adecuados para implementaciones de producción, según los requisitos de seguridad de su organización. Si necesita certificados de confianza pública, configure su emisor como corresponda o proporcione el certificado TLS directamente. Para obtener más información,consulte "Configurar una integración con cert-manager".

Antes de comenzar, realice las siguientes tareas:

  • Instalar kubectl.

  • Instalar Helm.

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

Puede encontrar todo el código fuente incluido en el repositorio del operador Kubernetes de MongoDB.

1
1helm repo add jetstack https://charts.jetstack.io --force-update
2
1helm install \
2 cert-manager jetstack/cert-manager \
3 --kube-context "${K8S_CLUSTER_0_CONTEXT_NAME}" \
4 --namespace cert-manager \
5 --create-namespace \
6 --set crds.enabled=true
3
1kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
2apiVersion: cert-manager.io/v1
3kind: ClusterIssuer
4metadata:
5 name: selfsigned-cluster-issuer
6spec:
7 selfSigned: {}
8EOF
9
10kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer selfsigned-cluster-issuer
11
12kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
13apiVersion: cert-manager.io/v1
14kind: Certificate
15metadata:
16 name: my-selfsigned-ca
17 namespace: cert-manager
18spec:
19 isCA: true
20 commonName: my-selfsigned-ca
21 secretName: root-secret
22 privateKey:
23 algorithm: ECDSA
24 size: 256
25 issuerRef:
26 name: selfsigned-cluster-issuer
27 kind: ClusterIssuer
28EOF
29
30kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready -n cert-manager certificate my-selfsigned-ca
31
32kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
33apiVersion: cert-manager.io/v1
34kind: ClusterIssuer
35metadata:
36 name: my-ca-issuer
37spec:
38 ca:
39 secretName: root-secret
40EOF
41
42kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer my-ca-issuer
4
1kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
2apiVersion: cert-manager.io/v1
3kind: Certificate
4metadata:
5 name: test-selfsigned-cert
6 namespace: cert-manager
7spec:
8 dnsNames:
9 - example.com
10 secretName: test-selfsigned-cert-tls
11 issuerRef:
12 name: my-ca-issuer
13 kind: ClusterIssuer
14EOF
15
16kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait -n cert-manager --for=condition=Ready certificate test-selfsigned-cert
17
18kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" delete -n cert-manager certificate test-selfsigned-cert
5
1mkdir -p certs
2
3kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" get secret root-secret -n cert-manager -o jsonpath="{.data['ca\.crt']}" | base64 --decode > certs/ca.crt
4kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${MDB_NAMESPACE}" --from-file=ca-pem=certs/ca.crt --from-file=mms-ca.crt=certs/ca.crt
5kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${OM_NAMESPACE}" --from-file=ca-pem=certs/ca.crt --from-file=mms-ca.crt=certs/ca.crt

En esta página