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

Arquitetura de recursos do banco de dados MongoDB

O recurso personalizado do MongoDB define implantações de banco de dados que o Kubernetes Operator gerencia. Suas especificações de recurso personalizado definem esses recursos, e o Kubernetes Operator os monitora. Quando você atualiza a especificação de um recurso, o Kubernetes operador envia as alterações para o MongoDB Ops Manager, que modifica a configuração da implantação do MongoDB.

O CRD MongoDB oferece suporte a três tipos de implantação. O diagrama a seguir ilustra a composição de cada um:

Diagrama mostrando a arquitetura de alto nível dos recursos do MongoDB nos Controladores do MongoDB para o Operador Kubernetes
clique para ampliar

Aviso

O Kubernetes Operator não oferece suporte a nós arbiter.

Embora você possa implantar um recurso Standalone, recomendamos que você implante um recurso ReplicaSet com um nó em vez disso, porque um conjunto de réplicas permite que você adicione nós no futuro. Em Kubernetes, um recurso Standalone é equivalente a um recurso ReplicaSet com somente um nó.

Para um recurso Standalone, o Operador Kubernetes implanta um conjunto de réplicas com um único nó como um StatefulSet. O Operador Kubernetes cria o StatefulSet, que contém a especificação Pod, e depende do Controlador StatefulSet do Kubernetes para criar o Pod para esta única instância mongod.

Para um recurso ReplicaSet, o Operador Kubernetes implanta um conjunto de réplicas como um StatefulSet, com um número de nós igual ao valor de spec.members. O Operador Kubernetes depende do Controlador StatefulSet Kubernetes para criar um Pod por nó. Cada Pod executa uma instância de MongoDB Agent que gerencia o processo mongod nesse Pod.

Um recurso ShardedCluster consiste em servidores de configuração, instâncias mongos e nós do shard. O operador Kubernetes implanta:

  • Um StatefulSet para todos os servidores de configuração

  • Um StatefulSet para todas as instâncias do mongos

  • Um StatefulSet para cada shard

O Operador Kubernetes depende do Controlador StatefulSet Kubernetes para criar um Pod em cada StatefulSet. Para um cluster sharded com 2 shard, isso significa 4 StatefulSets no total (1 para servidor de configuração + 1 para mongos + 2 para shard).

Tipo de implementação
StatefulSets
Tamanho do StatefulSet

Autônomo

1

1 Pod

Conjunto de réplicas

1

1 Pod por membro

Cluster fragmentado

<numberOfShards> + 2

1 Pod por mongos, nó de shard ou nó de servidor de configuração

Quando você aplica uma especificação de recurso personalizada do MongoDB, o Kubernetes Operator implanta cada recurso como um StatefulSet. O Kubernetes Operator entra em um loop de reconciliação contínuo:

  1. Lê a configuração do projeto do ConfigMap especificado em spec.opsManager.configMapRef.name.

  2. Lê as credenciais da API do Secret especificado em spec.credentials ou de sua ferramenta de armazenamento secreto.

  3. Conecta-se ao MongoDB Ops Manager e executa o seguinte:

    • Lê a organização do orgId no ConfigMap.

    • Lê ou cria o projeto especificado em projectName.

    • Verifica se o <project-id>-group-secret existe ou o cria com as chaves da API do MongoDB Ops Manager.

    • Registra o operador Kubernetes como um observador do ConfigMap e dos secrets de credenciais.

  4. Verifica certificados TLS e X.509 , se ativado:

    • Para conjuntos de réplicas: procura certificados em <prefix>-<resource-name>-cert.

    • Para clusters sharded: procura certificados em <prefix>-<resource-name>-x-cert (por shard), <prefix>-<resource-name>-config-cert (servidor de configuração) e <prefix>-<resource-name>-mongos-cert (instância mongos).

  5. Cria ou atualiza StatefulSets. O número depende do tipo de implantação. Neste ponto, cada Pod executa um MongoDB Agent, mas ainda não contém mongod instâncias.

    • Cada MongoDB Agent pesquisa o MongoDB Ops Manager para a configuração de automação.

    • Em contêineres não estáticos, o MongoDB Agent faz o download dos binários do MongoDB com a versão especificada em spec.version.

    • Depois de receber a configuração, o MongoDB Agent inicia mongod.

    • O operador do Kubernetes gera PersistentVolumeClaims para cada Pod (exceto mongos Pods), a menos que spec.persistent seja false.

  6. Envia atualizações de configuração de automação para o MongoDB Ops Manager. Cada MongoDB Agent pesquisa a configuração atualizada e a aplica. Se você alterar qualquer campo, o Operador Kubernetes executará uma atualização de rolagem do StatefulSets.

  7. Cria ou atualiza serviços do Kubernetes:

    • Para ReplicaSet ou Standalone: um serviço ClusterIP sem cabeça chamado <resource-name>-svc.

    • Para ShardedCluster:

      • mongos: usa o nome em spec.service ou <resource-name>-svc.

      • Config servers: <resource-name>-cs.

      • Cada shard: <resource-name>-sh.

O diagrama a seguir ilustra o fluxo de reconciliação para conjuntos de réplicas:

Diagrama mostrando o fluxo de reconciliação do conjunto de réplicas
clique para ampliar

O diagrama a seguir ilustra o fluxo de reconciliação para clusters:

Diagrama mostrando o fluxo de conciliação do cluster sharded
clique para ampliar

Se o método de autenticação do usuário for SCRAM, o recurso MongoDBUser dependerá de um segredo que armazena as credenciais do usuário. O Operador Kubernetes observa o segredo em busca de mudanças e reconcilia da seguinte forma:

  1. Determina o recurso do usuário do MongoDB a partir do spec.MongoDBResourceRef.name.

  2. Conecta-se ao MongoDB Ops Manager, lê a organização e o projeto e verifica o segredo do agente.

  3. Atualiza as credenciais do usuário no MongoDB Ops Manager ou cria um novo usuário se não existir. Se o nome de usuário tiver sido alterado, o operador do Kubernetes removerá o nome antigo e adicionará um novo.

O diagrama a seguir ilustra o fluxo de reconciliação MongoDBUser:

Diagrama mostrando o fluxo de reconciliação do MongoDBUser
clique para ampliar