Docs Menu
Docs Home
/ /
/ / /

Configurar una integración de cert-manager

cert-manager simplifica y automatiza la gestión de certificados de seguridad para Kubernetes. El siguiente procedimiento describe cómo configurar cert-manager para generar certificados para los recursos del operador Kubernetes de MongoDB.

1

Nota

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

Crea un secreto para almacenar tus datos de CA:

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

Si su certificado TLS de Ops Manager está firmado por una CA personalizada, este certificado también debe contener certificados adicionales que permitan al Daemon de Copia de Seguridad de Ops Manager descargar binarios de MongoDB de internet. Para crear los certificados TLS, cree un ConfigMap que contenga el certificado de la CA:

Importante

El operador de Kubernetes requiere que su certificado de Ops Manager se llame mms-ca.crt en ConfigMap.

  1. Obtenga la cadena completa de certificados TLS para Ops Manager downloads.mongodb.com desde. El siguiente openssl comando envía el certificado de la cadena a su directorio de trabajo actual, en .crt formato:

    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. Concatena el archivo de certificado de la CA para Ops Manager con toda la cadena de certificados TLS de downloads.mongodb.com que se 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 incluya su archivo cert1.crt, ya que es su certificado de servidor de MongoDB el que no debe incluirse.

  1. Cree el ConfigMap para Ops Manager:

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

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
    name: ca-issuer
    namespace: <namespace>
    spec:
    ca:
    secretName: ca-key-pair
  2. Verifique 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 que apunten a su certificado de CA. Reemplace <CA-certificate> con la ruta a su certificado de CA.

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

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

  1. Cree el certificado de recurso de MongoDB. El siguiente ejemplo supone un conjunto de réplicas llamado my-replica-set con tres miembros:

    Nota

    El spec.issuerRef.name parámetro hace referencia al CA ConfigMap 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 fragmentados, debe crear un certificado para cada StatefulSet. Para obtener más información sobre la configuración de clústeres fragmentados,consulte Implementar un clúster fragmentado.

  2. Cree el certificado del agente MongoDB:

    Nota

    El spec.issuerRef.name parámetro hace referencia al CA ConfigMap 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. Cree el recurso MongoDB:

    Nota

    Si deja el spec.security.tls.ca parámetro sin especificar, el valor predeterminado {replica-set}-ca será.

    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 proteger un recurso de Ops Manager, primero debe crear certificados para Ops Manager y AppDB y, luego, crear el recurso de Ops Manager.

  1. Cree el certificado de Ops Manager:

    Nota

    El spec.issuerRef.name parámetro hace referencia al CA ConfigMap 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. Cree el certificado AppDB:

    Nota

    El spec.issuerRef.name parámetro hace referencia al CA ConfigMap 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. Cree el recurso Ops Manager:

    apiVersion: mongodb.com/v1
    kind: MongoDBOpsManager
    metadata:
    name: om-with-https
    namespace: mongodb
    spec:
    adminCredentials: ops-manager-admin-secret
    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 en las siguientes circunstancias:

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

  • Elimina el secreto que contiene un certificado. En este caso, cert-manager recrea el secreto según la configuración de su recurso de certificado personalizado.

  • 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.

Volver

Configurar la copia de seguridad del sistema de archivos

En esta página