Você pode implementar o MongoDB Search e o Vector Search em seu cluster Kubernetes para criar experiências de pesquisa avançadas diretamente em seus aplicativos. Usando o MongoDB Search e o Vector Search , você pode criar recursos de pesquisa de texto tradicional e pesquisa vetorial baseados em IA que são sincronizados automaticamente com um banco de dados MongoDB local. Isso elimina a necessidade de manter sistemas separados sincronizados e, ao mesmo tempo, fornecer recursos avançados de pesquisa. Para saber mais, consulte:
Para habilitar os recursos de pesquisa, como pesquisa de texto completo e semântica em sistemas locais, você deve implantar o processo de Vector Search do MongoDB (mongot) e conectá-lo ao implantação de banco de dados MongoDB (mongod). A implantação do mongot é opcional e é necessária somente se você planeja aproveitar os recursos de pesquisa que ele oferece.
Os processos do Banco de Dados MongoDB (mongod) atuam como o proxy para todas as queries de pesquisa para mongot. O mongod encaminha a consulta para mongot, que processa a consulta. O mongot retorna os resultados da query para o mongod, que 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 para atualizar Ãndices do 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. Isso significa que um sistema de conjunto de réplicas tem seus próprios nós de pesquisa dedicados.
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.
Sistema de pesquisa Vector Search do MongoDB
Não há muitas diferenças entre a arquitetura de implantação de pesquisa com ou sem o Kubernetes Operator. O Operador Kubernetes simplifica as etapas necessárias para distribuir nós de pesquisa totalmente funcionais, especialmente quando o banco de dados também é gerenciado pelo Operador Kubernetes.
Para implantar, você aplica o MongoDBSearch Recurso Personalizado (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 Vector Search implementados usando o Kubernetes Operator podem direcionar o conjunto de réplicas do MongoDB distribuÃdo pelo Kubernetes Operator dentro do mesmo cluster do Kubernetes ou de um banco de dados MongoDB externo completamente independente. Para aprender como implantar e configurar o mongot para utilizar:
Um conjunto de réplicas do MongoDB no Kubernetes, consulte 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 aproveitar o MongoDB Search e o Vector Search em sua implantação do MongoDB Enterprise , você deve ter o seguinte:
MongoDB 8.0.14+ totalmente funcional conjunto de réplicas distribuÃdo 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 a Pesquisa do MongoDB e a Vector Search no Kubernetes e conectar-se a um conjunto de réplicas do MongoDB no Kubernetes ou a um conjunto de réplicas externo 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ê |
Implementar conjunto de réplicas do MongoDB | Kubernetes Operator | você |
Criar | você | você |
Fornecer string de conexão para o conjunto de réplicas 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ê |
Função polyfill | 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 externamente para conexão a partir de cada nó | Não necessário | você |
Expor pods mongod externamente para conexão a partir de nós | Não necessário | você |
Segurança
A imagem seguinte ilustra a configuração de segurança para o processo do mongot. Se o servidor MongoDB estiver dentro do cluster do Kubernetes, o operador Kubernetes configurará automaticamente a autenticação de arquivo de chave para MongoDB Search e Vector Search. Se o servidor MongoDB for externo, você deverá criar um Kubernetes Secret contendo a credencial de arquivo de chave do conjunto de réplica e referenciá-lo no MongoDBSearch CR.

Autenticação
Ao se conectar ao mongod, o mongot se autentica como um usuário de banco de dados. Ao implantar o MongoDB Search e o Vector Search, você deve criar o usuário de banco de dados. Você deve passar as credenciais de usuário armazenadas em um Kubernetes Secret para mongot preenchendo os campos spec.source.username e spec.source.passwordSecretRef no MongoDBSearch CR.
Ao aceitar uma conexão do mongod, o mongot autentica a solicitação remota usando autenticação interna com keyfiles, semelhante à autenticação interna do membro do conjunto de réplicas do MongoDB . Quando configurado para indexar um recurso MongoDB no mesmo cluster Kubernetes, o Operador Kubernetes configura automaticamente a autenticação de arquivo-chave para MongoDBSearch. Se o conjunto de réplicas do MongoDB for implantado fora do Kubernetes, você deverá criar um segredo de Kubernetes contendo a credencial de arquivo de chaves do conjunto de réplicas e referenciá-lo no campo MongoDBSearch.spec.source.external.keyfileSecretRef.
Segurança da camada de transporte
MongoDBSearch pode proteger dados e credenciais em trânsito usando TLS. Para comandos de gerenciamento de Ãndice e query de pesquisa, especifique (mesmo um objeto vazio, {}) o campo spec.security.tls e forneça um certificado TLS em um secret do Kubernetes no campo spec.security.tls.certificateKeySecretRef. Este 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 mongot e mongod subjacente é em grande parte manipulada pelo próprio Operador Kubernetes. Quando o conjunto de réplicas do MongoDB é implantado fora do Kubernetes, o campo .spec.source.external.tls deve ser preenchido com um segredo do Kubernetes contendo o mesmo certificado CA com o qual mongod está configurado, e a própria configuração mongod deve ter o parâmetro searchTLSMode definido como requireTLS.



