Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Instalar y usar MongoDB Search y búsqueda vectorial con una instancia externa de MongoDB Enterprise Edition

Puedes utilizar el operador Kubernetes para implementar la búsqueda de MongoDB y la búsqueda vectorial en un clúster de Kubernetes para ejecutarlo con un MongoDB Enterprise Edition v8.2.0 o superior servidor. Este procedimiento demuestra cómo implementar y configurar el proceso mongot en tu clúster de Kubernetes para utilizar una nueva implementación de set de réplicas externo o una ya existente. Este tutorial demuestra cómo configurar una implementación segura con TLS habilitado. Debe proporcionar los certificados TLS:

  • El certificado del servidor y la clave para el servicio MongoDBSearch.

  • El certificado CA público para la base de datos externa de MongoDB.

Para implementar MongoDB Search y búsqueda vectorial, se debe contar con lo siguiente:

  • Un clúster de Kubernetes en ejecución con kubeconfig disponible localmente.

  • Herramienta de línea de comandos de Kubernetes, kubectl, configurada para comunicarse con su clúster.

  • Helm, el gestor de paquetes para Kubernetes, para instalar el Operador de Kubernetes.

  • Bash v5.1 o superior para ejecutar los comandos en este tutorial.

  • Un conjunto de réplicas de MongoDB Enterprise Edition que ejecuta la versión 8.2 o superior para almacenar datos.

    Para obtener más información sobre la implementación de MongoDB Enterprise, consulte Implementación y configuración de recursos de bases de datos MongoDB.

  • Un MongoDB Cloud Manager o Ops Manager en ejecución para gestionar tareas de MongoDB.

  • Base de datos externa TLS

    Tu implementación externa de MongoDB Enterprise debe estar configurada para usar y requerir conexiones TLS.

  • Archivo de CA de BD externa

    Debe tener el archivo del certificado de la Autoridad de Certificación (CA) pública (por ejemplo, external-ca.crt) que se utilizó para firmar los certificados del servidor de su implementación externa de MongoDB. Necesitará este archivo localmente.

  • Archivos de certificados del servicio de búsqueda

    Debe tener un certificado de servidor TLS válido y una llave privada (por ejemplo, search-service.crt, search-service.key) para el servicio MongoDBSearch. Este certificado debe ser válido para el nombre de host que utilizará para acceder al servicio (por ejemplo, mdbs-search.example.com).

Antes de instalar MongoDB Search y búsqueda vectorial usando el Operador de Kubernetes, debes hacer lo siguiente:

Iniciar sesión en el Cloud Manager o en la interfaz de usuario del Ops Manager y realiza los siguientes pasos para configurar el Cloud Manager o el Ops Manager para la búsqueda de MongoDB y la búsqueda vectorial.

1
  1. Inicia sesión en MongoDB Cloud Manager u Ops Manager.

  2. Haz clic en la pestaña Deployment.

  3. Seleccione el clúster que desea modificar.

2
  1. Haz clic en el botón Modify para abrir el editor de configuración de implementación.

  2. Haz clic en Advanced Configuration Options en la sección Process Configuration.

  3. Haz clic en el botón Add Option y selecciona setParameter Startup Option del menú desplegable.

  4. Agrega los siguientes parámetros en los campos, uno por uno, haciendo clic en Add después de agregar el nombre y el valor:

    Parameter
    Valor

    mongotHost

    El hostname y puerto de búsqueda. Por ejemplo: search-node1.example.com:27017.

    searchIndexManagementHostAndPort

    El hostname y puerto de búsqueda. Por ejemplo: search-node1.example.com:27017.

    skipAuthenticationToSearchIndexManagementServer

    false

    searchTLSMode

    Tu modo de TLS configurado. Por ejemplo, preferTLS, si el proceso mongot está configurado para aceptar conexiones TLS.

    useGrpcForSearch

    true

3
  1. Haga clic en el botón Review & Deploy.

  2. Revise y confirme para aplicar los cambios.

    Cloud Manager u Ops Manager realiza un reinicio en secuencia de tu set de réplicas para aplicar la nueva configuración.

Debes crear un usuario con el rol. En searchCoordinator las 8 versiones,2 y posteriores de MongoDB, el rol es un rol integrado. Debes crear un usuario y asignarle el searchCoordinator rol.

Para crear el usuario y asignarle el searchCoordinator rol integrado, complete los siguientes pasos utilizando la interfaz de usuario de Cloud Manager o Ops Manager o mongosh el:

1
  1. Inicia sesión en Cloud Manager o en la Interfaz de Usuario de Ops Manager.

  2. Vaya a la pestaña Security y haga clic en Users.

2
3
Username

Introduce search-sync-source.

Password

Establece una contraseña fuerte y segura.

Authentication Database

Elija la base de datos admin.

4

En la sección Assign Roles, seleccione el rol integrado searchCoordinator del menú desplegable para la base de datos admin.

5

mongoshEn, ejecute los siguientes comandos:

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

Prepara tu entorno para ejecutar el código de muestra de este tutorial en una terminal.

1

Para establecer las variables de entorno para su uso en los pasos posteriores de este procedimiento, copie lo siguiente, establezca los valores de las variables de entorno y luego ejecute los comandos en su 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"

Tenga en cuenta que estas variables de entorno solo están disponibles en la sesión de terminal actual y deberán configurarse nuevamente en cualquier nueva sesión de terminal.

2

Helm automatiza la implementación y la gestión de instancias de MongoDB en Kubernetes. Si ya has agregado el Helm repositorio que contiene la Helm gráfica para instalar el operador de Kubernetes, omite este paso. De lo contrario, añade el repositorio Helm.

Para añadir, copiar, pegar y ejecutar el siguiente comando:

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

El Operador de Kubernetes supervisa los recursos personalizados MongoDB, MongoDBOpsManager y MongoDBSearch, y gestiona el ciclo de vida de sus implementaciones de MongoDB. Si ya has instalado los Controladores de MongoDB para el operador de Kubernetes, omita este paso. De lo contrario, instale los controladores de MongoDB para Kubernetes Operator desde el Helm repositorio que agregó en el paso anterior.

Para instalar los controladores de MongoDB para Kubernetes operador en el namespace mongodb, copie, pegue y ejecute lo siguiente:

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}"

El comando precedente instala el Kubernetes operador en el namespace mongodb, el cual se crea si aún no existe. Después de la instalación, el Operador de Kubernetes supervisa los recursos personalizados de MongoDBSearch y gestiona el ciclo de vida de sus implementaciones de MongoDB Search y búsqueda vectorial.

1

El proceso mongot requiere credenciales de autenticación para conectarse a tu implementación externa de MongoDB para crear índices de búsqueda y ejecutar consultas de búsqueda. Este paso crea los siguientes secretos de Kubernetes:

  • mdb-admin-user-password - credenciales para el administrador de MongoDB.

  • mdb-user-password - credenciales para el usuario autorizado a realizar consultas de búsqueda.

  • mdbc-rs-search-sync-source-password - credenciales para un usuario de búsqueda dedicado utilizado internamente por el proceso mongot para sincronizar los datos y gestionar los índices.

El operador de Kubernetes monta estos secretos en los pods de MongoDB.

Para crear los secretos, copia, pega y ejecuta lo siguiente en el namespace donde planeas implementar MongoDB Search y búsqueda vectorial:

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

Puedes implementar una instancia del nodo de búsqueda sin balanceo de carga. Para implementar, completa los siguientes pasos:

  1. Crea un recurso personalizado MongoDBSearch llamado mdbs.

    Este recurso contiene lo siguiente:

    spec.source.external.hostAndPorts

    Lista de miembros externos del set de réplicas de MongoDB.

    spec.source.username

    Usuario de sincronización de búsqueda nombre de usuario.

    spec.source.passwordSecretRef

    Contraseña de usuario de sincronización de búsqueda.

    spec.source.external.tls.ca.name

    Configura los pods de MongoDBSearch para confiar en la base de datos externa. Señala el secreto de Kubernetes que contiene el certificado de CA público para tu MongoDB externo.

    spec.security.tls.certificateKeySecretRef.name

    Asegura el servicio MongoDBSearch. Apunta al secreto de Kubernetes que contiene el certificado de servidor TLS y la llave privada que los pods de MongoDBSearch presentarán a los clientes entrantes.

    spec.resourceRequirements

    Requisitos de recursos de CPU y memoria para el contenedor de búsqueda.

    Para aprender más sobre la configuración de este recurso personalizado, consulta MongoDB Search y búsqueda vectorial.

    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. Espere a que se complete la implementación del recurso MongoDBSearch.

    Cuando aplica el recurso personalizado MongoDBSearch, el operador de Kubernetes comienza a implementar los nodos de búsqueda (pods). Este paso pausa la ejecución hasta que la fase de estado del recurso mdbs sea Running, lo que indica que el StatefulSet de MongoDB Search está operativo.

    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 tus instancias externas de MongoDB se conecten al servicio de búsqueda, debes configurar el acceso externo tanto para MongoDB Search como para búsqueda vectorial. Puedes crear un Servicio LoadBalancer que exponga los pods de búsqueda fuera del clúster de Kubernetes.

Este servicio expone el servicio MongoDBSearch en el puerto 27028 con una dirección IP externa o un nombre de host accesible desde fuera del clúster de 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

Visualiza todos los pods en ejecución en los pods de tu namespace para los miembros del set de réplicas MongoDB, los Controladores MongoDB para Kubernetes operador y los nodos de búsqueda.

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

Ahora que has implementado satisfactoriamente MongoDB Search y búsqueda vectorial para usar con MongoDB Enterprise Edition externa, puedes añadir datos en tu clúster de MongoDB, crear índices de búsqueda y búsqueda vectorial, y ejecutar queries sobre tus datos. Para obtener más información, consulta la Configuración de MongoDB Search y búsqueda vectorial.