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

Instalar e usar o MongoDB Search e o Vector Search com edição externa do MongoDB Enterprise

Você pode usar o Kubernetes Operator para implantar o MongoDB Search e o Vector Search em um cluster do Kubernetes para ser executado com um servidor MongoDB Enterprise Edition v8.0.10 externo ou superior. Este procedimento demonstra como implantar e configurar o processo mongot em seu cluster Kubernetes para usar um sistema externo novo ou existente de conjunto de réplicas.

Para implantar o MongoDB Search e o Vector Search, você deve ter o seguinte:

  • Um cluster Kubernetes em execução com kubeconfig disponível localmente.

  • A ferramenta de linha de comando do Kubernetes, kubectl, configurada para se comunicar com seu cluster.

  • Helm, o gerenciador de pacote do Kubernetes, para instalar o Operador Kubernetes.

  • Bash v5.1 ou superior para executar os comandos neste tutorial.

  • Um conjunto de réplicas do MongoDB Enterprise Edition executando a versão 8.0.10 ou superior para armazenar dados.

    Para saber mais sobre a implantação do MongoDB Enterprise, consulte Implantar e configurar recursos do banco de dados MongoDB.

  • Um MongoDB Cloud Manager ou Ops Manager em execução para gerenciar tarefas do MongoDB .

Antes de instalar o MongoDB Search e o Vector Search usando o Kubernetes Operator, você deve fazer o seguinte:

Faça login na interface do usuário do Cloud Manager ou do Ops Manager e execute as etapas a seguir para configurar o Cloud Manager ou o Ops Manager para o MongoDB Search e o Vector Search.

1
  1. Faça login no MongoDB Cloud Manager ou no Ops Manager.

  2. Clique na aba Deployment.

  3. Selecione o cluster que deseja modificar.

2
  1. Clique no botão Modify para abrir o editor de configuração de implantação.

  2. Clique em Advanced Configuration Options na seção Process Configuration.

  3. Clique no botão Add Option e selecione setParameter Startup Option no menu suspenso.

  4. Adicione os seguintes parâmetros nos campos, um a um, clicando em Add após adicionar o nome e o valor:

    Parâmetro
    Valor

    mongotHost

    Seu nome de host e porta de pesquisa. Por exemplo: search-node1.example.com:27017.

    searchIndexManagementHostAndPort

    Seu nome de host e porta de pesquisa. Por exemplo: search-node1.example.com:27017.

    skipAuthenticationToSearchIndexManagementServer

    false

    searchTLSMode

    Seu modo TLS configurado. Por exemplo, preferTLS, se o processo mongot estiver configurado para aceitar conexões TLS.

3
  1. Clique no botão Review & Deploy.

  2. Revise e confirme para aplicar as alterações.

    O Cloud Manager ou o Ops Manager executa uma reinicialização contínua do seu conjunto de réplicas para aplicar a nova configuração.

Você deve criar um usuário com a função searchCoordinator. Nas versões 8.2 e posterior do MongoDB , o searchCoordinator é um role embutido. Você deve criar um usuário e atribuir o role ao usuário. Para versões do MongoDB anteriores a 8.2 e 8.0.10 ou posteriores, você deve criar manualmente a função e atribuir os privilégios antes de criar o usuário. Selecione a guia que corresponde à versão MongoDB que você está executando para criar um usuário com a função searchCoordinator.

Conclua as etapas desta seção se você utilizar o MongoDB versoins 8.2 ou posterior.

Para criar o usuário e atribuir ao usuário a searchCoordinator função integrada, conclua as etapas a seguir usando a interface do usuário do Cloud Manager , do Ops Manager ou mongosh o:

1
  1. Faça login na interface do usuário do Cloud Manager ou do Ops Manager.

  2. Vá para a aba Security e clique em Users.

2
3
Username

Insira search-sync-source.

Password

Defina uma senha forte e segura.

Authentication Database

Escolha o banco de dados do admin.

4

Na seção Assign Roles, selecione a função searchCoordinator incorporada no menu suspenso do banco de dados admin.

5

mongoshEm, execute os seguintes comandos:

1
use admin;
2
db.createUser({
user: "search-sync-source",
pwd: "<PASSWORD>", // Replace with your actual password
roles: [
{ role: "searchCoordinator", db: "admin" }
]
});

Conclua a etapa nesta seção se você usar versões do MongoDB anteriores a 8.2.

Para criar o usuário e atribuir ao usuário a searchCoordinator função integrada, conclua as etapas a seguir usando a interface do usuário do Cloud Manager , do Ops Manager ou mongosh o:

Para criar a função searchCoordinator com os privilégios e, em seguida, adicionar um usuário com a função searchCoordinator, conclua as seguintes etapas na IU do Cloud Manager ou do Ops Manager:

1
  1. Faça login na interface do usuário do Cloud Manager ou do Ops Manager.

  2. Na aba Security, vá para a subaba Roles.

  3. Clique em Add New Custom Role.

2
3

Na seção Role Inheritance, adicione as três roles a seguir do banco de dados admin :

  • clusterMonitor

  • directShardOperations

  • readAnyDatabase

4
  1. Na seção Privileges, clique em Add Privilege.

  2. Para Resource, insira __mdb_internal_search para o banco de dados.

    Não insira nada no campo collection .

  3. Em Actions, adicione as seguintes ações.

    • changeStream

    • cleanupStructuredEncryptionData, compactStructuredEncryptionData

    • collStats

    • convertToCapped

    • createCollection, dropCollection, listCollections, renameCollectionSameDB

    • createIndex, dropIndex , listIndexes

    • createSearchIndexes, dropSearchIndex, listSearchIndexes, updateSearchIndex

    • dbHash, dbStats

    • find, insert, remove, update

    • killCursors

    • planCacheRead

5
  1. Clique em Add Privilege.

  2. Para Resource, alterne o tipo de recurso para cluster.

  3. Para Action, selecione bypassDefaultMaxTimeMS.

6
7

Vá para a aba Security e clique em Users.

8
9
Username

Insira search-sync-source.

Password

Defina uma senha forte e segura.

Authentication Database

Escolha o banco de dados do admin.

10

Na seção Assign Roles, selecione a função searchCoordinator incorporada no menu suspenso do banco de dados admin.

mongoshEm, execute os seguintes comandos:

1
use admin;
2
db.createRole({
role: "searchCoordinator",
privileges: [
{
resource: { db: "__mdb_internal_search", collection: "" },
actions: [
"changeStream", "cleanupStructuredEncryptionData", "collStats",
"compactStructuredEncryptionData", "convertToCapped", "createCollection",
"createIndex", "createSearchIndexes", "dbHash", "dbStats",
"dropCollection", "dropIndex", "dropSearchIndex", "find", "insert",
"killCursors", "listCollections", "listIndexes", "listSearchIndexes",
"planCacheRead", "remove", "renameCollectionSameDB", "update", "updateSearchIndex"
]
},
{
resource: { cluster: true },
actions: [ "bypassDefaultMaxTimeMS" ]
}
],
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "directShardOperations", db: "admin" },
{ role: "readAnyDatabase", db: "admin" }
]
});
3
db.createUser({
user: "search-sync-source",
pwd: "<PASSWORD>", // Replace with your actual password
roles: [
{ role: "searchCoordinator", db: "admin" }
]
});

Prepare seu ambiente para executar o código de amostra deste tutorial em um terminal.

1

Para definir as variáveis de ambiente para uso nas etapas subsequentes deste procedimento, copie o seguinte, defina os valores para as variáveis de ambiente e carregue as variáveis de ambiente:

1export K8S_CTX="<your kubernetes context here>"
2
3export MDB_NS="mongodb"
4
5export MDB_VERSION="8.0.10"
6
7export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"
8export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"
9export MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME"
10
11export MDB_SEARCH_HOSTNAME="mdbs-search"
12
13# External MongoDB replica set members - REPLACE THESE VALUES with your actual external MongoDB hosts
14# In production, replace with your actual external MongoDB replica set members
15export MDB_EXTERNAL_HOST_0="mdbc-rs-0.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
16export MDB_EXTERNAL_HOST_1="mdbc-rs-1.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
17export MDB_EXTERNAL_HOST_2="mdbc-rs-2.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
18
19# REPLACE with your external MongoDB keyfile secret name
20export MDB_EXTERNAL_KEYFILE_SECRET_NAME="mdbc-rs-keyfile"
21
22# REPLACE with the actual keyfile content from your external MongoDB replica set
23# For testing, this will be automatically generated by the MongoDB Community resource
24export MDB_EXTERNAL_KEYFILE_CONTENT="your-mongodb-keyfile-content-CHANGE-ME"
25
26# REPLACE with your actual external MongoDB replica set name
27export MDB_EXTERNAL_REPLICA_SET_NAME="mdbc-rs"
28
29export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
30export OPERATOR_ADDITIONAL_HELM_VALUES=""
31
32export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_EXTERNAL_HOST_0}/?replicaSet=${MDB_EXTERNAL_REPLICA_SET_NAME}"
2

O Helm automatiza a implantação e o gerenciamento de instâncias do MongoDB no Kubernetes. Se você já adicionou o repositório Helm que contém o gráfico Helm para instalar o operador Kubernetes Operator, pule esta etapa. Caso contrário, adicione o repositório Helm.

Para adicionar, copie, cole e execute o seguinte comando:

1helm repo add mongodb https://mongodb.github.io/helm-charts
2helm repo update mongodb
3helm search repo mongodb/mongodb-kubernetes
3

O Operador Kubernetes observa MongoDB, MongoDBOpsManager e MongoDBSearch recursos personalizados e gerencia o ciclo de vida de suas implantações do MongoDB . Se você já instalou os Controladores MongoDB para Kubernetes Operator, pule esta etapa. Caso contrário, instale os Controladores MongoDB para Kubernetes Operator a partir do repositório Helm que você adicionou na etapa anterior.

Para instalar os Controladores MongoDB para o Operador Kubernetes no namespace do mongodb, copie, cole e execute o seguinte:

1helm upgrade --install --debug --kube-context "${K8S_CTX}" \
2 --create-namespace \
3 --namespace="${MDB_NS}" \
4 mongodb-kubernetes \
5 ${OPERATOR_ADDITIONAL_HELM_VALUES:+--set ${OPERATOR_ADDITIONAL_HELM_VALUES}} \
6 "${OPERATOR_HELM_CHART}"

O comando anterior instala o Kubernetes Operator no namespace mongodb , que é criado se ainda não existir. Após a instalação, o Kubernetes Operator observa os recursos personalizados MongoDBSearch e gerencia o ciclo de vida de seus sistemas do MongoDB Search e Vector Search .

1

O processo do mongot exige credenciais de autenticação para conectar ao seu sistema MongoDB externo para criar índices de pesquisa e executar consultas de pesquisa. Esta etapa cria os seguintes segredos do Kubernetes:

  • mdb-admin-user-password - credenciais do administrador do MongoDB .

  • mdb-user-password - credenciais do usuário autorizado a realizar queries de pesquisa.

  • mdbc-rs-search-sync-source-password - credenciais de um usuário de pesquisa dedicado usado internamente pelo processo mongot para sincronizar dados e gerenciar índices.

O Kubernetes Operator monta esses segredos nos pods do MongoDB .

Para criar os segredos, copie, cole e execute o seguinte no namespace onde você planeja implantar a Pesquisa MongoDB e a Vector Search:

1kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
2 create secret generic mdb-admin-user-password \
3 --from-literal=password="${MDB_ADMIN_USER_PASSWORD}"
4
5kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
6 create secret generic mdbc-rs-search-sync-source-password \
7 --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}"
8
9kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
10 create secret generic mdb-user-password \
11 --from-literal=password="${MDB_USER_PASSWORD}"
2

Para autenticar conexões do MongoDB externo, o processo mongot usa o mesmo arquivo de chave que os membros externos do conjunto de réplicas do MongoDB usam para autenticação interna entre os membros do conjunto de réplicas.

Para criar um segredo do Kubernetes contendo o conteúdo do arquivo-chave a partir do seu MongoDB externo, copie, cole e execute o seguinte comando:

1kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
2 create secret generic "${MDB_EXTERNAL_KEYFILE_SECRET_NAME}" \
3 --from-literal=keyfile="${MDB_EXTERNAL_KEYFILE_CONTENT}"
3

Você pode implementar uma instância do nó de pesquisa sem nenhum balanceamento de carga. Para implantar, conclua as seguintes etapas:

  1. Crie um recurso personalizado do MongoDBSearch denominado mdbs.

    Este recurso contém o seguinte:

    spec.source.external.hostAndPorts

    Lista de nós externos do conjunto de réplicas do MongoDB .

    spec.source.external.keyfileSecretRef

    Segredo do arquivo-chave usado pelos membros do conjunto de réplicas externas.

    spec.source.username

    Nome de usuário do usuário de sincronização de pesquisa.

    spec.source.passwordSecretRef

    Pesquise a senha do usuário de sincronização.

    spec.resourceRequirements

    Requisitos de recursos de CPU e memória para o container de pesquisa.

    Para saber mais sobre as configurações neste recurso personalizado, consulte Configurações de pesquisa do MongoDB e Vector Search.

    1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
    2apiVersion: mongodb.com/v1
    3kind: MongoDBSearch
    4metadata:
    5 name: mdbs
    6spec:
    7 source:
    8 external:
    9 hostAndPorts:
    10 - ${MDB_EXTERNAL_HOST_0}
    11 - ${MDB_EXTERNAL_HOST_1}
    12 - ${MDB_EXTERNAL_HOST_2}
    13 keyfileSecretRef:
    14 name: ${MDB_EXTERNAL_KEYFILE_SECRET_NAME}
    15 key: keyfile
    16 username: search-sync-source
    17 passwordSecretRef:
    18 name: mdbc-rs-search-sync-source-password
    19 key: password
    20 resourceRequirements:
    21 limits:
    22 cpu: "3"
    23 memory: 5Gi
    24 requests:
    25 cpu: "2"
    26 memory: 3Gi
    27EOF
  2. Aguarde a conclusão do sistema de recursos MongoDBSearch.

    Quando você aplica o recurso personalizado do MongoDBSearch, o operador do Kubernetes começa a distribuir os nós de pesquisa (Pods). Esta etapa pausa a execução até que a fase de status do recurso mdbs seja Running, o que indica que o MongoDB Search StatefulSet está operacional.

    1echo "Waiting for MongoDBSearch resource to reach Running phase..."
    2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait \
    3 --for=jsonpath='{.status.phase}'=Running mdbs/mdbs --timeout=300s
4

Para permitir que suas instâncias externas do MongoDB se conectem ao serviço de pesquisa, você deve configurar o acesso externo para MongoDB Search e Vector Search. Você pode criar um serviço LoadBalancer que exponha os pods de pesquisa fora do cluster do Kubernetes.

O serviço a seguir expõe o serviço MongoDBSearch na porta 27027 a um endereço IP externo ou nome de host que pode ser acessado de fora do cluster Kubernetes.

1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<YAML
2apiVersion: v1
3kind: Service
4metadata:
5 name: ${MDB_SEARCH_HOSTNAME}
6spec:
7 type: LoadBalancer
8 selector:
9 app: mdbs-search-svc
10 ports:
11 - name: mongot
12 port: 27027
13 targetPort: 27027
14YAML
15
16echo "Waiting for external IP to be assigned to service ${MDB_SEARCH_HOSTNAME}..."
17TIMEOUT=120 # 2 minutes timeout
18ELAPSED=0
19while [ ${ELAPSED} -lt ${TIMEOUT} ]; do
20 EXTERNAL_IP=$(kubectl get service "${MDB_SEARCH_HOSTNAME}" --context "${K8S_CTX}" -n "${MDB_NS}" -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 2>/dev/null)
21 if [ -n "${EXTERNAL_IP}" ] && [ "${EXTERNAL_IP}" != "null" ]; then
22 echo "External IP assigned: ${EXTERNAL_IP}"
23 break
24 fi
25 echo "Still waiting for external IP assignment... (${ELAPSED}s/${TIMEOUT}s)"
26 sleep 5
27 ELAPSED=$((ELAPSED + 5))
28done
29
30if [ ${ELAPSED} -ge ${TIMEOUT} ]; then
31 echo "ERROR: Timeout reached (${TIMEOUT}s) while waiting for external IP assignment"
32 echo "LoadBalancer service may take longer to provision or there may be an issue"
33 exit 1
34fi
5

Visualize todos os pods em execução nos pods do seu namespace para os nós do conjunto de réplicas do MongoDB , o operador do MongoDB Controladores for Kubernetes e os nós de pesquisa.

1echo; echo "MongoDBSearch resource"
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdbs
3echo; echo "Search pods running in cluster ${K8S_CTX}"
4kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods -l app=mdbs-search-svc
5echo; echo "All pods in namespace ${MDB_NS}"
6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

Agora que você implementou com sucesso o MongoDB Search e o Vector Search para uso com o MongoDB Enterprise Edition externo, você pode adicionar dados ao cluster MongoDB , criar índices do MongoDB Search e Vector Search e executar queries em seus dados. Para saber mais, consulte Configurações do MongoDB Search e Vector Search.