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 operador Kubernetes para implantar o MongoDB pesquisa e o pesquisa vetorial em um cluster do Kubernetes para ser executar com um servidor MongoDB Enterprise Edition v8.2.0 externo ou superior. Este procedimento demonstra como implantar e configurar o processo mongot em seu cluster Kubernetes para usar uma implantação externa nova ou existente de conjunto de réplicas. Este tutorial demonstra como configurar uma implantação segura com TLS habilitado. Você deve fornecer os certificados TLS:

  • O certificado do servidor e a chave para o serviço MongoDBSearch.

  • O certificado de CA pública para o banco de dados MongoDB externo.

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.2 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 .

  • TLSde banco de dados externo

    Sua implantação externa do MongoDB Enterprise deve ser configurada para usar e exigir conexões TLS.

  • Arquivo CA do banco de dados externo

    Você deve ter o arquivo de certificado da Autoridade de Certificação (CA) pública (por exemplo, external-ca.crt) que foi usado para assinar os certificados de servidor da implantação MongoDB externa. Você precisará deste arquivo localmente.

  • Arquivos de certificado do serviço de pesquisa

    Você deve ter um certificado de servidor TLS válido e uma chave privada (por exemplo, search-service.crt, search-service.key) para o serviço MongoDBSearch. Este certificado deve ser válido para o nome de host que você utilizará para acessar o serviço (por exemplo, mdbs-search.example.com).

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.

    useGrpcForSearch

    true

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 8 versões.2 do MongoDB e posteriores, o é um role embutido. Você deve criar um usuário e atribuir o role ao searchCoordinator usuário.

To create the user and assign the user the built-in searchCoordinator role, complete the following steps by using either the Cloud Manager or Ops Manager UI or the mongosh:

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

In mongosh, run the following commands:

1
use admin;
2
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, em seguida, execute os comandos no seu terminal:

1export K8S_CTX="<your kubernetes context here>"
2
3export MDB_NS="mongodb"
4
5export MDB_VERSION="8.2.0"
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_TLS_CA_SECRET_NAME="ca"
12export MDB_SEARCH_TLS_SECRET_NAME="mdbs-search-tls"
13
14export MDB_SEARCH_SERVICE_NAME="mdbs-search"
15export MDB_SEARCH_HOSTNAME="mdbs-search.example.com"
16
17# External MongoDB replica set members - REPLACE THESE VALUES with your actual external MongoDB hosts
18# In production, replace with your actual external MongoDB replica set members
19export MDB_EXTERNAL_HOST_0="mdbc-rs-0.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
20export MDB_EXTERNAL_HOST_1="mdbc-rs-1.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
21export MDB_EXTERNAL_HOST_2="mdbc-rs-2.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
22
23# REPLACE with your actual external MongoDB replica set name
24export MDB_EXTERNAL_REPLICA_SET_NAME="mdbc-rs"
25
26export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
27export OPERATOR_ADDITIONAL_HELM_VALUES=""
28
29export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_EXTERNAL_HOST_0}/?replicaSet=${MDB_EXTERNAL_REPLICA_SET_NAME}&tls=true&tlsCAFile=/tls/ca.crt"

Observe que essas variáveis de ambiente só estão disponíveis na sessão atual do terminal e precisarão ser definidas novamente em qualquer nova sessão de terminal.

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 operador Kubernetes, pule esta etapa. Caso contrário, instale os controladores MongoDB para operador Kubernetes 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 operador no namespace mongodb, que é criado se ainda não existir. Após a instalação, o operador Kubernetes procura recursos personalizados do MongoDBSearch e gerencia o ciclo de vida de suas implantações de pesquisa MongoDB e pesquisa vetorial.

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:

1# Create admin user secret
2kubectl create secret generic mdb-admin-user-password \
3 --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" \
4 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
5
6# Create search sync source user secret
7kubectl create secret generic "${MDB_RESOURCE_NAME}-search-sync-source-password" \
8 --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}" \
9 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
10
11# Create regular user secret
12kubectl create secret generic mdb-user-password \
13 --from-literal=password="${MDB_USER_PASSWORD}" \
14 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
15
16echo "User secrets created."
2

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.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.source.external.tls.ca.name

    Configura os pods MongoDBSearch para confiar no banco de dados externo. Ele aponta para o secret do Kubernetes que contém o certificado de CA público para seu MongoDB externo.

    spec.security.tls.certificateKeySecretRef.name

    Protege o serviço MongoDBSearch. Ele aponta para o secret do Kubernetes que contém o certificado do servidor TLS e a chave privada que os pods do MongoDBSearch apresentarão aos clientes que entram.

    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: ${MDB_SEARCH_RESOURCE_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 tls:
    14 ca:
    15 name: ${MDB_TLS_CA_SECRET_NAME}
    16 username: search-sync-source
    17 passwordSecretRef:
    18 name: ${MDB_RESOURCE_NAME}-search-sync-source-password
    19 key: password
    20 security:
    21 tls:
    22 certificateKeySecretRef:
    23 name: ${MDB_SEARCH_TLS_SECRET_NAME}
    24 resourceRequirements:
    25 limits:
    26 cpu: "3"
    27 memory: 5Gi
    28 requests:
    29 cpu: "2"
    30 memory: 3Gi
    31EOF
  2. Aguarde a conclusão da implantação do recurso MongoDBSearch.

    Quando você aplica o recurso personalizado MongoDBSearch, o operador Kubernetes começa a implantar 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 pesquisa StatefulSet está operacional.

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

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.

Este seguinte serviço expõe o serviço MongoDBSearch na porta 27028 com 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_SERVICE_NAME}
6spec:
7 type: LoadBalancer
8 selector:
9 app: ${MDB_SEARCH_RESOURCE_NAME:-mdbs}-search-svc
10 ports:
11 - name: mongot
12 port: 27028
13 targetPort: 27028
14YAML
15
16echo "Waiting for external IP to be assigned to service ${MDB_SEARCH_SERVICE_NAME}..."
17TIMEOUT=120 # 2 minutes timeout
18ELAPSED=0
19while [ ${ELAPSED} -lt ${TIMEOUT} ]; do
20 EXTERNAL_IP=$(kubectl get service "${MDB_SEARCH_SERVICE_NAME}" --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
4

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.