Você pode implantar o MongoDB Search e a pesquisa vetorial em seu cluster Kubernetes para criar experiências de pesquisa poderosas diretamente em seus aplicativos. Usando o MongoDB Search e a pesquisa vetorial, você pode criar recursos de pesquisa de texto tradicionais e de pesquisa vetorial com tecnologia de IA que sincronizam automaticamente com um banco de dados MongoDB no local. Essa abordagem elimina a necessidade de manter sistemas separados em sincronização, ao mesmo tempo em que fornece recursos de pesquisa avançados. Para aprender mais, consulte:
Para habilitar as funcionalidades de pesquisa, como pesquisa de texto completo e pesquisa semântica em implantações locais, você deve implantar o processo MongoDB Search e pesquisa vetorial (mongot) e conectá-lo à sua implantação de banco de dados MongoDB (mongod). A implantação do mongot é opcional e é necessária somente se você planeja utilizar os recursos de pesquisa que ela oferece.
O processo do banco de dados MongoDB (mongod) atua como proxy para todas as query de pesquisa para mongot. O mongod encaminha a query para mongot, que a processa. O mongot retorna os resultados da query para o mongod, que então encaminha os resultados para você. Você nunca interage diretamente com o mongot.
Cada processo do mongot tem seu próprio volume persistente que não é compartilhado com o banco de dados ou outros nós de pesquisa. O armazenamento é usado para manter índices que são criados a partir dos dados obtidos continuamente do banco de dados. As definições do índice (metadados) são armazenadas no próprio banco de dados .
O mongot executa as seguintes ações:
Gerencia o índice.
O
mongoté responsável por atualizar as definições de índice no banco de dados.Obtém os dados do banco de dados.
Os nós do
mongotestabelecem conexões permanentes com o banco de dados em tempo real.Processa queries de pesquisa.
When
mongodreceives a$search,$searchMeta, or$vectorSearchquery, it directs the query to one of themongotnodes. Themongotthat receives the query processes the query, aggregates the data, and returns the results tomongod, which it forwards to the user.
Os componentes do mongot são fortemente associados a um único conjunto de réplicas MongoDB e não podem ser compartilhados entre vários bancos de dados ou conjuntos de réplicas. Para uma implantação de conjunto de réplicas, um grupo de nós de pesquisa dedicados atende ao conjunto de réplicas. Para um cluster fragmentado, cada fragmento mantém seu próprio grupo independente de mongot nós. Os fragmentos não compartilham instâncias mongot.
A conectividade de rede entre mongot e mongod vai em ambas as direções:
mongotestabelece conexão com o conjunto de réplicas para obter os dados usados para construir índices e executar query.mongodconecta-se aomongotpara encaminhar operações relacionadas à pesquisa, como gerenciamento de índice e consulta de dados.
O campo spec.clusters[].replicas controla quantas instâncias do mongot o Operador Kubernetes implanta. Para uma origem do conjunto de réplicas, o spec.clusters[].replicas define o número total de pods do mongot. Para uma origem de cluster fragmentado, spec.clusters[].replicas define o número de mongot pods por fragmento.
Se você definir spec.clusters[].replicas como um valor maior que 1, deverá colocar um balanceador de carga L7 entre mongod e os pods mongot. O processo mongod abre uma única conexão TCP de longa duração para mongot, portanto, um balanceador de carga L4 não pode distribuir queries em várias instâncias mongot — todo o tráfego flui por essa conexão. Um balanceador de carga L7 entende HTTP/2 e gRPC, o que lhe permite distribuir fluxos gRPC individuais em pods mongot enquanto fixa cada fluxo em um único mongot durante o cursor de query.
Sistema de pesquisa Vector Search do MongoDB
A arquitetura de implantação de pesquisa difere pouco com ou sem o Kubernetes Operator. O Kubernetes operador simplifica as etapas necessárias para implantar nós de pesquisa totalmente funcionais, especialmente quando o banco de dados também é gerenciado pelo Kubernetes operador.
Para implantar, você aplica o MongoDBSearch Custom recurso (CR), que o Operador do Kubernetes pega e começa a distribuir mongot pods e solicita armazenamento persistente especificado no spec. O MongoDB Search e a pesquisa vetorial implementados por meio do Kubernetes operador podem direcionar um conjunto de réplicas do MongoDB ou um cluster implantado pelo Kubernetes operador dentro do mesmo cluster do Kubernetes, ou uma implantação externa completamente independente do MongoDB (conjunto de réplicas ou cluster). Para aprender como implantar e configurar o mongot para usar:
Um conjunto de réplicas do MongoDB no Kubernetes, consulte Instalar e usar com o MongoDB Community Edition ou Instalar e usar a pesquisa com o MongoDB Enterprise Edition
Para definir um conjunto de réplicas do MongoDB externo, consulte Instalar e usar o MongoDB Search e o Vector Search com o MongoDB Enterprise Edition.
Pré-requisitos
Para usar o MongoDB Search e a pesquisa vetorial em seu:
A implantação da MongoDB Community , você deve ter um MongoDB 8.2 totalmente funcional ou posterior conjunto de réplicas ou cluster fragmentado implantado dentro de um cluster Kubernetes usando o Operador Kubernetes.
A implantação do MongoDB Enterprise , você deve ter um conjunto de réplicas totalmente funcional do MongoDB 8.2 ou posterior ou um cluster fragmentado implantado de uma das seguintes maneiras:
Dentro de um cluster Kubernetes usando o Operador Kubernetes
Fora de um cluster Kubernetes
Instância do Cloud Manager ou do Ops Manager
Antes de começar, considere o seguinte:
Tarefas de configuração
A tabela a seguir mostra as tarefas de configuração que o Kubernetes Operator executa automaticamente e as ações que você deve executar para implantar com êxito o MongoDB Search e a pesquisa vetorial no Kubernetes e conectar-se a um conjunto de réplicas do MongoDB ou cluster no Kubernetes ou a uma implantação externa do MongoDB.
Tarefa | (Dentro do Kubernetes) Executado por | (MongoDB externo) Realizado por |
|---|---|---|
Deploy Ops Manager inside Kubernetes | Kubernetes Operator | Kubernetes Operator |
Implemente o Cloud Manager ou o Ops Manager fora do Kubernetes | você | você |
Distribua o conjunto de réplicas do MongoDB ou o cluster fragmentado | Kubernetes Operator | você |
Criar recurso personalizado do MongoDBSearch | você | você |
Fornecer string de conexão para a implantação do MongoDB | Kubernetes Operator | você |
Criar YAMLde configuração | Kubernetes Operator | Kubernetes Operator |
Definir os parâmetros necessários do conjunto de réplicas em cada processo | Kubernetes Operator | você |
Criar usuário para | Kubernetes Operator e você aplicando o recurso MongoDBUser | você |
Configurar conjunto de réplicas do MongoDB com um usuário que tenha as permissões necessárias para consultar a pesquisa | você | você |
Criar índices de MongoDB Search e Vector Search | você | você |
Exponha pods de pesquisa ou balanceador de carga externamente para conectar a partir de cada nó | Não necessário | você |
Exponha | Não necessário | você |
Configurar balanceador de carga gerenciado (quando | Kubernetes Operator | Kubernetes Operator |
Configurar balanceador de carga não gerenciado (quando | você | você |
Provisionar certificados TLS por fragmento (clusters fragmentados com TLS) | você | você |
Expor o balanceador de carga externamente ( MongoDB externo + LS gerenciado) | Não necessário | você |
Segurança
A imagem a seguir ilustra a configuração de segurança para o processo mongot. Se a implantação do MongoDB estiver dentro do cluster Kubernetes, o operador Kubernetes configura automaticamente a autenticação de arquivo de chave para MongoDB Search e pesquisa vetorial. Se a implantação do MongoDB for externa, você deve criar um secret do Kubernetes contendo as credenciais do arquivo de chave do conjunto de réplicas e referenciá-lo no MongoDBSearch CR.

Autenticação
O processo mongot autentica as conexões mongod usando mTLS. Quando você habilita o TLS, o processo mongot usa o certificado TLS da implantação do MongoDB como o certificado do cliente para autenticação. Este certificado é verificado em relação ao certificado CA com o qual mongot está configurado. Para que a autenticação funcione corretamente, você deve configurar mongot e mongod com o TLS habilitado.
Quando configurado para indexar um recurso MongoDB no mesmo cluster do Kubernetes, o operador do Kubernetes propaga automaticamente o certificado CA do mongod para mongot e habilita o mTLS para conexões de query de pesquisa se os recursos do MongoDB e MongoDBSearch estiverem configurados para TLS. Se o conjunto de réplicas do MongoDB for implantado fora do Kubernetes, você deverá criar um segredo do Kubernetes contendo o certificado CA do conjunto de réplicas e referenciá-lo no campo MongoDBSearch.spec.source.external.tls.ca para habilitar a autenticação mTLS para solicitações de query de pesquisa.
Segurança da camada de transporte
O MongoDBSearch pode proteger dados e credenciais em trânsito usando TLS. Para comandos de gerenciamento de índice e query de pesquisa, defina o campo spec.security.tls e forneça um certificado TLS. Você pode definir este campo para um objeto vazio ({}) para habilitar TLS com as configurações padrão.
Descontinuado desde a versão 1.8.0: spec.security.tls.certificateKeySecretRef é descontinuado. Para implantações de conjunto de réplicas, o operador do Kubernetes ainda oferece suporte a certificateKeySecretRef, mas você deve migrar para spec.security.tls.certsSecretPrefix. Para implantações de cluster sharded, não é possível usar certificateKeySecretRef porque o operador Kubernetes lê um segredo de certificado de servidor mongot separado para cada shard.
spec.security.tls.certsSecretPrefix é um campo opcional. Quando você o especifica, o Kubernetes Operator acrescenta <certsSecretPrefix>- a todos os nomes secretos de certificado que lê. O Operador do Kubernetes lê os seguintes segredos de certificado:
mongot Certificados
Topologia de cluster | mongot Certificado |
|---|---|
réplicaSet |
|
cluster fragmentado |
|
Certificados de balanceador de carga
Se você definir spec.clusters[].loadBalancer.managed, o certificado do cliente do balanceador de carga será [<certsSecretPrefix>-]<name>-search-lb-0-client-cert. A tabela a seguir mostra os certificados de servidor do balanceador de carga:
Topologia de cluster | Certificado |
|---|---|
réplicaSet |
|
cluster fragmentado |
|
O certificado TLS deve ser emitido e assinado pela mesma CA que emitiu o certificado CA que o conjunto de réplicas MongoDB utiliza.
Quando MongoDBSearch e MongoDB são implantados pelo Operador Kubernetes, a configuração subjacente do mongot e mongod é em grande parte manipulada pelo próprio Operador Kubernetes. Se você implantar o conjunto de réplicas do MongoDB fora do cluster do Kubernetes:
.spec.source.external.tlso campo deve ser preenchido com um secret do Kubernetes contendo o mesmo certificado CA que você usou para configurar omongod.searchTLSModeO parâmetro deve ser definido comorequireTLSna configuraçãomongod.
Balanceador de carga mTLS
Sem um balanceador de carga, o mongod conecta diretamente ao mongot utilizando mTLS. O mongod apresenta seu próprio certificado de cliente e o mongot o valida em relação a uma CA confiável.
Se você configurar um balanceador de carga gerenciado (spec.clusters[].loadBalancer.managed), o proxy Envoy encerra a conexão mTLS do mongod e estabelece uma nova conexão mTLS para o mongot. Como o balanceador de carga encerra e restabelece a conexão, ele usa seu próprio certificado de cliente ao se conectar ao mongot, não ao certificado mongod original. A CA mongot deve confiar na autoridade de certificação que emitiu o certificado de cliente do balanceador de carga. O Kubernetes Operator gerencia a configuração do Envoy TLS automaticamente. Exige os seguintes certificados:
Certificado de servidor para o proxy Envoy, ao qual o
mongodse conecta. O balanceador de carga usa esse certificado para encerrar a conexão mTLS de entrada.Certificado do cliente para o proxy Envoy, que o balanceador de carga apresenta ao
mongotao estabelecer a conexão mTLS upstream.
Provisione estes certificados como Segredos Kubernetes seguindo a convenção de nomenclatura que o spec.security.tls.certsSecretPrefix define. Consulte Configurações de pesquisa do MongoDB e pesquisa vetorial para obter o padrão de nomenclatura completo.
Dados de diagnóstico
Cada pod mongot grava continuamente arquivos FTDC em /mongot/data/diagnostic.data/ dentro do pod. FTDC é um fluxo de diagnóstico binário que captura o estado interno detalhado do mongot e é o artefato primário que o Suporte do MongoDB usa para diagnosticar problemas de pesquisa. O FTDC está habilitado por padrão. Para aprender a copiar arquivos FTDC para um caso de suporte, consulte Solucionar problemas de implantação mongot.
O operador Kubernetes monta um PersistentVolumeClaim em cada pod mongot em /mongot/data usando um volumeClaimTemplate no StatefulSet de pesquisa, e mongot grava seus arquivos FTDC em /mongot/data/diagnostic.data/ nesse volume. Como os dados residem em um PersistentVolumeClaim, eles sobrevivem a reinicializações e reagendamentos de pods: quando o StatefulSet substitui um pod, ele anexa o mesmo PersistentVolumeClaim. Você configura este volume com a especificação.clusters[].persistence configuração no recurso MongoDBSearch.



