Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Operador de Kubernetes empresarial
/

Configurar uma integração docert-manager

Ocert-manager simplifica e automatiza o gerenciamento de certificados de segurança para o Kubernetes. O procedimento a seguir descreve como configurar cert-manager o 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 certificado TLS do Ops Manager for assinado por uma CA personalizada , o certificado CA também deverá conter certificados adicionais que permitam ao Backup Daemon do Ops Manager baixar binários do MongoDB 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 cert2.crt cert3.crt cert4.crt >> mms-ca.crt
  3. Crie o ConfigMap para o 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.

Voltar

Configurar backup do sistema de arquivos

Nesta página