Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar uma integração docert-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 um conjunto de réplicas usando um objeto, você deve:

Observação

Para evitar o armazenamento de segredos em sistemas do Kubernetes de cluster único, você pode migrar todos os segredos para uma ferramenta de armazenamento de segredos. As implantações em vários clusters do Kubernetes não suportam o armazenamento de segredos no armazenamento de segredos FERRAMENTAS, como o HashiCorp Vault.

  • Gere um certificado TLS para cada um dos seguintes componentes:

    • Seu conjunto de réplicas. Certifique-se de adicionar SANspara cada pod Kubernetes que hospeda um membro do seu conjunto de réplicas no certificado.

      No certificado TLS , a SAN para cada pod deve usar o seguinte formato:

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

      Importante

      If you're using an ACME based service provider such as Let's Encrypt to issue TLS certificates, the provider might prohibit you from adding the Pod's default FQDNs (*.svc.cluster.local) to SANs in the certificate.

      Para usar um certificado baseado em ACME, você deve configurar o certificado para o recurso do conjunto de réplicas. Para saber mais, consulte a etapa sobre certificados TLS baseados em ACME no procedimento.

    • O MongoDB Agent do seu projeto. Para o certificado do MongoDB Agent, certifique-se de atender aos seguintes requisitos:

      • O nome comum no certificado TLS não está vazio.

      • A Organização e a Unidade Organizacional combinadas em cada certificado TLS diferem da Organização e da Unidade Organizacional no certificado TLS para os membros do conjunto de réplicas.

  • You must have the CA certificate file and name it ca-pem.

  • Você deve ter a chave usada para assinar seus certificados TLS .

Importante

O Operador do Kubernetes usa kubernetes.io/tls segredos para armazenar certificados TLS e chaves privadas para recursos do Ops Manager e MongoDB . A partir da versão do Kubernetes Operator 1.17.0, o Kubernetes Operator não permite arquivos PEM concatenados armazenados como segredos Opaco.

Para implementar um conjunto de réplicas usando um objeto, você deve:

Observação

Para evitar o armazenamento de segredos em sistemas do Kubernetes de cluster único, você pode migrar todos os segredos para uma ferramenta de armazenamento de segredos. As implantações em vários clusters do Kubernetes não suportam o armazenamento de segredos no armazenamento de segredos FERRAMENTAS, como o HashiCorp Vault.

1

Observação

The following steps assume that you have already created a custom CA along with the corresponding tls.key private key and tls.crt signed certificate.

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

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

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

  1. Obtain the entire TLS certificate chain for Ops Manager from downloads.mongodb.com. The following openssl command outputs the certificate in the chain to your current working directory, in .crt format:

    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. Concatenate your CA's certificate file for Ops Manager with the entire TLS certificate chain from downloads.mongodb.com that you obtained in the previous step:

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

    Observação

    • Substitua o espaço reservado <custom_ca_cert.pem> pelo seu arquivo PEM de certificado de CA personalizado.

    • Não inclua seu arquivo cert1.crt, pois é o certificado do servidor do MongoDB que não deve ser incluído.

  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

Create a ConfigMap containing your CA. It must have two fields, ca-pem and mms-ca.crt, both pointing to your CA certificate. Replace <CA-certificate> with the path to your CA certificate.

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: 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 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
    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

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.