Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/

Configurar uma integração docert-manager

Nesta página

  • Procedimento
  • Crie um segredo deCA .
  • Adicione certificados adicionais aos certificados CA personalizados.
  • Configurar um emissor de CA do certificador
  • Criar um CA ConfigMap
  • Criar certificados para seus recursos MongoDB
  • Criar certificados para Ops Manager e AppDB com TLS
  • Renovando certificados

cert-manager simplifica e automatiza o gerenciamento de certificados de segurança para o Kubernetes. O procedimento seguinte descreve como configurar o cert-manager para gerar certificados para recursos do MongoDB Kubernetes Operator.

1

Observação

As etapas a seguir pressupõem que você já tenha criado uma CA personalizada junto com a chave privada tls.key correspondente e o certificado assinado tls.crt .

Crie um segredo para armazenar seus dados 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

Se o MongoDB Ops Manager certificado TLS for assinado por uma CA personalizada , o certificado CA também deverá conter certificados adicionais que permitam MongoDB Ops Manager ao Backup Daemon do baixar MongoDB binários do da Internet. Para criar o(s) certificado(s)TLS , crie um ConfigMap para manter o certificado CA :

Importante

O Kubernetes Operator exige que seu certificado do Ops Manager seja denominado mms-ca.crt no ConfigMap.

  1. Obtenha toda a cadeia de certificados TLS para o Ops Manager em downloads.mongodb.com. O comando openssl a seguir gera o certificado na cadeia para o seu diretório de trabalho atual, no 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 o arquivo de certificado da CA para o Ops Manager com toda a cadeia de certificados TLS da downloads.mongodb.com que você obteve na etapa anterior:

    cat cert1.crt cert2.crt cert3.crt cert4.crt >> mms-ca.crt
  3. Criar o ConfigMap para MongoDB Ops Manager:

    kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
3
  1. Crie um emissor de CA que faça referência ao seu segredo de CA :

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
    name: ca-issuer
    namespace: <namespace>
    spec:
    ca:
    secretName: ca-key-pair
  2. Verifique se o emissor está pronto:

    kubectl get issuer ca-issuer

    O campo READY na saída deve ter um valor de True.

4

Crie um ConfigMap contendo seu CA. Ele deve ter dois campos, ca-pem e mms-ca.crt, ambos apontando para o seu certificado CA. Substitua <CA-certificate> pelo caminho para o certificado da CA.

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

Para proteger um recurso do MongoDB com sua certificação gerada, você deve criar certificados para o próprio recurso e para o MongoDB Agent.

  1. Crie o certificado de recurso MongoDB. O exemplo a seguir pressupõe um nome do conjunto my-replica-set com três membros:

    Observação

    O parâmetro spec.issuerRef.name faz referência ao CA ConfigMap criado anteriormente.

    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 clusters fragmentados, você deve criar um certificado para cada StatefulSet. Para saber mais sobre configuração de cluster fragmentado, consulte Implementar um cluster fragmentado.

  2. Criar o certificado do MongoDB Agent:

    Observação

    O parâmetro spec.issuerRef.name faz referência ao CA ConfigMap criado anteriormente.

    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. Criar o recurso MongoDB:

    Observação

    Se você deixar o parâmetro spec.security.tls.ca não especificado, o padrão será {replica-set}-ca.

    apiVersion: mongodb.com/v1
    kind: MongoDB
    metadata:
    name: my-replica-set
    namespace: mongodb
    spec:
    type: ReplicaSet
    members: 3
    version: 4.0.4-ent
    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 um recurso do Ops Manager, você deve primeiro criar certificados para o Ops Manager e o AppDB e, em seguida, criar o recurso do Ops Manager.

  1. Criar o certificado do Ops Manager:

    Observação

    O parâmetro spec.issuerRef.name faz referência ao CA ConfigMap criado anteriormente.

    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. Criar o certificado AppDB:

    Observação

    O parâmetro spec.issuerRef.name faz referência ao CA ConfigMap criado anteriormente.

    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. Criar o recurso do 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: 6.0.0-ubi8
    replicas: 1
    security:
    certsSecretPrefix: mdb
    tls:
    ca: ca-issuer

o certifique-manager atualizará os certificados nas seguintes circunstâncias:

  • O certificado expira de acordo com seus campos spec.duration e spec.renewBefore .

  • Você exclui o segredo que contém um certificado. Nesse caso, o certificado-manager recria o segredo de acordo com a configuração em seu recurso personalizado de certificado.

  • Você altera a configuração do recurso personalizado do certificado. Nesse caso, o certificado-manager recria o segredo que contém o certificado quando detecta as alterações em sua configuração.

← Configure o armazenamento de backup do sistema de arquivos com