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.
Procedimiento
Crea un secreto CA.
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>
Agregue certificados adicionales a los certificados personalizados de CA.
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.
Obtenga toda la cadena de certificados TLS para MongoDB Ops Manager de
downloads.mongodb.com. El siguiente comandoopensslgenera 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}' Concatene el archivo de certificado de la CA para MongoDB Ops Manager con toda la cadena de certificados TLS de
downloads.mongodb.comque 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.
Cree el ConfigMap para el Ops Manager:
kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
Configure un emisor CA de cert-manager CA
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 Verifica que el emisor esté listo:
kubectl get issuer ca-issuer El campo
READYen la salida debe tener un valor deTrue.
Crea un CA ConfigMap
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>
Crear certificados para tus recursos de MongoDB
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.
Crea el certificado para el recurso MongoDB. El siguiente ejemplo asume un set de réplicas llamado
my-replica-setcon tres nodos:Nota
El parámetro
spec.issuerRef.namehace 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.
Crea el certificado de MongoDB Agent:
Nota
El parámetro
spec.issuerRef.namehace 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 Crea el recurso de MongoDB:
Nota
Si deja el parámetro
spec.security.tls.casin especificar, se configura a{replica-set}-capor 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
Crea certificados para Ops Manager y AppDB con TLS
Para asegurar un recurso de Ops Manager, primero debes crear certificados para Ops Manager y AppDB, luego crear el recurso de Ops Manager.
Crear el certificado de Ops Manager:
Nota
El parámetro
spec.issuerRef.namehace 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 Crear el certificado de AppDB:
Nota
El parámetro
spec.issuerRef.namehace 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 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 applicationDatabase: members: 3 security: certsSecretPrefix: appdb tls: ca: ca-issuer version: 8.0.0-ubi8 replicas: 1 security: certsSecretPrefix: mdb tls: ca: ca-issuer
Renovación de certificados
cert-manager renovará los certificados bajo las siguientes circunstancias:
El certificado expira según sus campos
spec.durationyspec.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.