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.
Docs Menu

Configura una integración de cert-manager

cert-manager simplifies and automates the management of security certificates for Kubernetes. The following procedure describes how to configure cert-manager to generate certificates for MongoDB Kubernetes Operator resources.

Para implementar un set de réplicas utilizando un objeto, debe:

Nota

Para evitar almacenar secretos en implementaciones de Kubernetes de un solo clúster, puedes migrar todos los secretos a una herramienta de almacenamiento de secretos. Las implementaciones en múltiples clústeres de Kubernetes no admiten el almacenamiento de secretos en herramientas de almacenamiento de secretos, como HashiCorp Vault.

  • Genera un certificado TLS para cada uno de los siguientes componentes:

    • Tu set de réplicas. Asegúrese de agregar SANs para cada pod de Kubernetes que aloje un nodo de su set de réplicas al certificado.

      En su certificado TLS, el SAN para cada pod debe utilizar el siguiente formato:

      <pod-name>.<metadata.name>-svc.<namespace>.svc.cluster.local

      Importante

      Si utilizan un proveedor de servicios basado en ACME como Let's Encrypt para emitir certificados TLS, el proveedor podría impedirles añadir los FQDN(*.svc.cluster.local) por defecto del Pod a los SANen el certificado.

      Para utilizar un certificado basado en ACME, debemos configurar el certificado para el recurso del set de réplicas. Para obtener más información, consulta el paso sobre certificados TLS basados en ACME en el procedimiento.

    • El MongoDB Agent de tu proyecto. Para el certificado del agente MongoDB, asegúrese de cumplir los siguientes requisitos:

      • El Nombre común en el certificado TLS no está vacío.

      • El conjunto de Organización y Unidad Organizacional en cada certificado TLS difiere del conjunto de Organización y Unidad Organizacional en el certificado TLS para los miembros del set de réplicas.

  • Debe tener el archivo de certificado CA y nombrarlo ca-pem.

  • Debes tener la clave que utilizaste para firmar tus certificados TLS.

Importante

El operador de Kubernetes utiliza kubernetes.io/tls secretos para almacenar certificados TLS y llaves privadas para MongoDB Ops Manager y recursos de MongoDB. A partir de la versión 1.17.0 del operador de Kubernetes, el operador de Kubernetes no admite archivos PEM concatenados almacenados como Opaque secrets.

Para implementar un set de réplicas utilizando un objeto, debe:

Nota

Para evitar almacenar secretos en implementaciones de Kubernetes de un solo clúster, puedes migrar todos los secretos a una herramienta de almacenamiento de secretos. Las implementaciones en múltiples clústeres de Kubernetes no admiten el almacenamiento de secretos en herramientas de almacenamiento de secretos, como HashiCorp Vault.

1

Nota

Los siguientes pasos asumen que ya ha creado una CA personalizada junto con la tls.key llave privada correspondiente y el tls.crt certificado firmado.

Crea un secreto para almacenar tus datos de AAC:

apiVersion: v1
kind: Secret
metadata:
name: ca-key-pair
namespace: <namespace>
data:
tls.crt: <your-CA-certificate>
tls.key: <your-CA-private-key>
2

If your Ops Manager TLS certificate is signed by a custom CA, the CA certificate must also contain additional certificates that allow Ops Manager Backup Daemon to download MongoDB binaries from the Internet. To create the TLS certificate(s), create a ConfigMap to hold the CA certificate:

Importante

El Operador de Kubernetes exige que el certificado de su Ops Manager se llame mms-ca.crt en el ConfigMap.

  1. Obtenga toda la cadena de certificados TLS para MongoDB Ops Manager de downloads.mongodb.com. El siguiente comando openssl genera el certificado en la cadena hacia el directorio actual de trabajo, en formato .crt:

    openssl s_client -showcerts -verify 2 \
    -connect downloads.mongodb.com:443 -servername downloads.mongodb.com < /dev/null \
    | awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".crt"; print >out}'
  2. Concatene el archivo de certificado de la CA para MongoDB Ops Manager con toda la cadena de certificados TLS de downloads.mongodb.com que obtuvo en el paso anterior:

    cat <custom_ca_cert.pem> cert2.crt cert3.crt cert4.crt >> mms-ca.crt

    Nota

    • Reemplace el marcador de posición <custom_ca_cert.pem> con su archivo PEM de certificado CA personalizado.

    • No incluyas tu archivo cert1.crt, ya que es tu certificado de servidor de MongoDB que no deberías incluir.

  3. Cree el ConfigMap para el Ops Manager:

    kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
3
  1. Cree un emisor CA que haga referencia a su secreto CA:

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
    name: ca-issuer
    namespace: <namespace>
    spec:
    ca:
    secretName: ca-key-pair
  2. Verifica que el emisor esté listo:

    kubectl get issuer ca-issuer

    El campo READY en la salida debe tener un valor de True.

4

Cree un ConfigMap que contenga su CA. Debe tener dos campos, ca-pem y mms-ca.crt, ambos apuntando a su certificado CA. Reemplace <CA-certificate> con la ruta a su certificado CA.

kubectl create cm ca-issuer --from-file=ca-pem=<CA-certificate> \
--from-file=mms-ca.crt=<CA-certificate>
5

Para proteger un recurso de MongoDB con su certificación generada, debe crear certificados tanto para el propio recurso como para el agente de MongoDB.

  1. Crea el certificado para el recurso MongoDB. El siguiente ejemplo asume un set de réplicas llamado my-replica-set con tres nodos:

    Nota

    El parámetro spec.issuerRef.name hace referencia al ConfigMap de CA creado previamente.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: my-replica-set-certificate
    namespace: mongodb
    spec:
    dnsNames:
    - my-replica-set-0
    - my-replica-set-0.my-replica-set-svc.mongodb.svc.cluster.local
    - my-replica-set-1
    - my-replica-set-1.my-replica-set-svc.mongodb.svc.cluster.local
    - my-replica-set-2
    - my-replica-set-2.my-replica-set-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-my-replica-set-cert
    usages:
    - server auth
    - client auth

    Para clústeres particionados, debes crear un certificado para cada StatefulSet. Para aprender más sobre la configuración de un clúster, consulta Implementar un clúster.

  2. Crea el certificado de MongoDB Agent:

    Nota

    El parámetro spec.issuerRef.name hace referencia al ConfigMap de CA creado previamente.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: agent-certs
    namespace: mongodb
    spec:
    commonName: automation
    dnsNames:
    - automation
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-my-replica-set-agent-certs
    usages:
    - digital signature
    - key encipherment
    - client auth
    subject:
    countries:
    - US
    localities:
    - NY
    organizationalUnits:
    - a-1635241837-m5yb81lfnrz
    organizations:
    - cluster.local-agent
    provinces:
    - NY
  3. Crea el recurso de MongoDB:

    Nota

    Si deja el parámetro spec.security.tls.ca sin especificar, se configura a {replica-set}-ca por defecto.

    apiVersion: mongodb.com/v1
    kind: MongoDB
    metadata:
    name: my-replica-set
    namespace: mongodb
    spec:
    type: ReplicaSet
    members: 3
    version: 8.0.0
    opsManager:
    configMapRef:
    name: my-project
    credentials: my-credentials
    security:
    certsSecretPrefix: mdb
    authentication:
    enabled: true
    modes:
    - X509
    tls:
    ca: ca-issuer
    enabled: true
6

Para asegurar un recurso de Ops Manager, primero debes crear certificados para Ops Manager y AppDB, luego crear el recurso de Ops Manager.

  1. Crear el certificado de Ops Manager:

    Nota

    El parámetro spec.issuerRef.name hace referencia al ConfigMap de CA creado previamente.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: cert-for-ops-manager
    namespace: mongodb
    spec:
    dnsNames:
    - om-with-https-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-om-with-https-cert
    usages:
    - server auth
    - client auth
  2. Crear el certificado de AppDB:

    Nota

    El parámetro spec.issuerRef.name hace referencia al ConfigMap de CA creado previamente.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: appdb-om-with-https-db-cert
    namespace: mongodb
    spec:
    dnsNames:
    - om-with-https-db-0
    - om-with-https-db-0.om-with-https-db-svc.mongodb.svc.cluster.local
    - om-with-https-db-1
    - om-with-https-db-1.om-with-https-db-svc.mongodb.svc.cluster.local
    - om-with-https-db-2
    - om-with-https-db-2.om-with-https-db-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: appdb-om-with-https-db-cert
    usages:
    - server auth
    - client auth
  3. Crear el recurso de Ops Manager:

    apiVersion: mongodb.com/v1
    kind: MongoDBOpsManager
    metadata:
    name: om-with-https
    namespace: mongodb
    spec:
    adminCredentials: ops-manager-admin-secret
    version: "8.0.0"
    applicationDatabase:
    members: 3
    security:
    certsSecretPrefix: appdb
    tls:
    ca: ca-issuer
    version: 8.0.0-ubi8
    replicas: 1
    security:
    certsSecretPrefix: mdb
    tls:
    ca: ca-issuer

cert-manager renovará los certificados bajo las siguientes circunstancias:

  • El certificado expira según sus campos spec.duration y spec.renewBefore.

  • Se borra el secreto que contiene un certificado. En este caso, cert-manager recrea el secreto de acuerdo con la configuración de tu recurso personalizado del certificado.

  • Se altera la configuración del recurso personalizado del certificado. En este caso, cert-manager recrea el secreto que contiene el certificado cuando detecta los cambios en su configuración.