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 os sistemas de banco de dados que o operador Kubernetes gerencia. Suas especificações de recursos personalizados definem esses recursos e o Kubernetes Operator os monitora. Quando você atualiza a especificação de um recurso, o Operador Kubernetes envia as alterações para o Ops Manager, que modifica a configuração da implantação do MongoDB .

O CRD do MongoDB suporta três tipos de sistema. 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 distribuir um recurso Standalone, recomendamos que você implemente um recurso ReplicaSet com um membro, pois um conjunto de réplicas permite que você adicione membros no futuro. Em Kubernetes, um recurso do Standalone é equivalente a um recurso do ReplicaSet com somente um membro.

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

Para um ReplicaSet recurso, o Operador Kubernetes implementa um conjunto de réplicas como um StatefulSet, com vários membros iguais ao valor de. O Operador Kubernetes depende do Controlador StatefulSet do Kubernetes para criar um Pod por membro. Cada Pod executa uma instância de MongoDB Agent que gerencia spec.members o mongod processo do nesse Pod.

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

  • 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 fragmentado com 2 shards, isso significa 4 total do StatefulSets (1 para servidores de configuração + 1 para mongos + 2 para shards).

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ó do shard ou nó do servidor de configuração

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

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

  2. Lê credenciais API a partir do segredo especificado no spec.credentials ou de sua ferramenta de armazenamento secreto.

  3. Conecta-se ao 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 cria com chaves API do Ops Manager .

    • Registra o Operador Kubernetes como um observador do ConfigMap e segredos de credenciais.

  4. Verifica os certificados TLS e X.,509 se habilitados:

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

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

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

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

    • Em contêineres não estáticos, o MongoDB Agent baixa binários MongoDB com a versão especificada no spec.version.

    • Após receber a configuração, o MongoDB Agent inicia o mongod.

    • O Operador 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 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 contínua do StatefulSets.

  7. Cria ou atualiza Serviços Kubernetes:

    • Para ReplicaSet ou Standalone: um serviço ClusterIP headless denominado <resource-name>-svc.

    • Para ShardedCluster:

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

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

      • Cada fragmento: <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 fragmentados:

Diagrama mostrando o fluxo de reconciliação de cluster fragmentado
clique para ampliar

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

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

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

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

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

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