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

Instala y usa Búsqueda con MongoDB Enterprise Edition

Puedes utilizar el Operador de Kubernetes para implementar recursos de MongoDB Search y búsqueda vectorial que funcionen con MongoDB enterprise v8.0.10 o una versión superior en un clúster de Kubernetes. Este procedimiento demuestra cómo implementar y configurar el proceso mongot para que se ejecute con un set de réplicas nuevo o existente en su clúster de Kubernetes.

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.

  • Ops Manager o un proyecto de MongoDB Cloud Manager y credenciales API.

1

Para configurar 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 cargue las variables de entorno:

1# set it to the context name of the k8s cluster
2export K8S_CTX="<local cluster context>"
3
4# the following namespace will be created if not exists
5export MDB_NS="mongodb"
6
7# name of the MongoDB Custom Resource.
8export MDB_RESOURCE_NAME="mdb-rs"
9
10# OM/CM's project name to be used to manage mongodb replica set
11export OPS_MANAGER_PROJECT_NAME="<arbitrary project name>"
12
13# URL to Cloud Manager or Ops Manager instance
14export OPS_MANAGER_API_URL="https://cloud-qa.mongodb.com"
15
16# The API key can be an Org Owner - the operator can create the project automatically then.
17# The API key can also be created in a particular project that was created manually with the Project Owner scope .
18export OPS_MANAGER_API_USER="abcdefg"
19export OPS_MANAGER_API_KEY="00000-abcd-efgh-1111-12345678"
20export OPS_MANAGER_ORG_ID="62a73abcdefgh12345678"
21
22# minimum required MongoDB version for running MongoDB Search is 8.0.10
23export MDB_VERSION="8.0.10"
24
25# root admin user for convenience, not used here at all in this guide
26export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"
27# regular user performing restore and search queries on sample mflix database
28export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"
29# user for MongoDB Search to connect to the replica set to synchronise data from
30export MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME"
31
32export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
33# comma-separated key=value pairs for additional parameters passed to the helm-chart installing the operator
34export OPERATOR_ADDITIONAL_HELM_VALUES=""
35
36export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local:27017/?replicaSet=${MDB_RESOURCE_NAME}"
2

Helm automatiza la implementación y gestión de instancias de MongoDB en Kubernetes. Si ya agregaste el repositorio de Helm que contiene la gráfica de Helm para instalar el operador Kubernetes Operator, 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 observa MongoDB, MongoDBOpsManager y MongoDBSearch recursos personalizados y gestiona el ciclo de vida de tus implementaciones de MongoDB. Si ya instalaste los controladores de MongoDB para Kubernetes operador, omite este paso. De lo contrario, instala los controladores de MongoDB para Kubernetes operador desde el repositorio de Helm que agregaste 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}"
4

Si ya ha implementado MongoDB Enterprise, pase al siguiente paso. De lo contrario, implemente el recurso MongoDB Enterprise.

Para implementar MongoDB Enterprise, complete los siguientes pasos:

  1. Crear un recurso personalizado MongoDB denominado mdb-rs.

    El recurso define los recursos de CPU y memoria para los contenedores mongod y mongodb-agent e instruye al Operador de Kubernetes para configurar un set de réplicas de MongoDB con 3 miembros:

    Para implementar MongoDB Enterprise, copia, pega y ejecuta lo siguiente en el namespace:

    1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
    2apiVersion: mongodb.com/v1
    3kind: MongoDB
    4metadata:
    5 name: ${MDB_RESOURCE_NAME}
    6spec:
    7 members: 3
    8 version: ${MDB_VERSION}-ent
    9 type: ReplicaSet
    10 opsManager:
    11 configMapRef:
    12 name: om-project
    13 credentials: om-credentials
    14 security:
    15 authentication:
    16 enabled: true
    17 ignoreUnknownUsers: true
    18 modes:
    19 - SCRAM
    20 agent:
    21 logLevel: DEBUG
    22 statefulSet:
    23 spec:
    24 template:
    25 spec:
    26 containers:
    27 - name: mongodb-enterprise-database
    28 resources:
    29 limits:
    30 cpu: "2"
    31 memory: 2Gi
    32 requests:
    33 cpu: "1"
    34 memory: 1Gi
    35EOF
  2. Espera a que se complete la implementación del recurso MongoDB.

    Cuando se aplica el recurso personalizado MongoDB, el operador de Kubernetes comienza a implementar los nodos de MongoDB (pods). Este paso pausa la ejecución hasta que la fase de estado del recurso mdbc-rs sea Running, lo que indica que el conjunto de réplicas MongoDB Community está operativo.

    1echo "Waiting for MongoDB resource to reach Running phase..."
    2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=jsonpath='{.status.phase}'=Running "mdb/${MDB_RESOURCE_NAME}" --timeout=400s
    3echo; echo "MongoDB resource"
    4kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get "mdb/${MDB_RESOURCE_NAME}"
    5echo; echo "Pods running in cluster ${K8S_CTX}"
    6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods
5

MongoDB requiere autenticación para un acceso seguro. En este paso, se crean tres 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 usado internamente por el proceso mongot para sincronizar datos y administrar í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 implementaste MongoDB Server y planeas implementar MongoDB Search y búsqueda vectorial:

1# admin user with root role
2kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
3 create secret generic mdb-admin-user-password \
4 --from-literal=password="${MDB_ADMIN_USER_PASSWORD}"
5
6kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
7apiVersion: mongodb.com/v1
8kind: MongoDBUser
9metadata:
10 name: mdb-admin
11spec:
12 username: mdb-admin
13 db: admin
14 mongodbResourceRef:
15 name: ${MDB_RESOURCE_NAME}
16 passwordSecretKeyRef:
17 name: mdb-admin-user-password
18 key: password
19 roles:
20 - name: root
21 db: admin
22EOF
23
24# user used by MongoDB Search to connect to MongoDB database to synchronize data from
25# For MongoDB <8.2, the operator will be creating the searchCoordinator custom role automatically
26# From MongoDB 8.2, searchCoordinator role will be a built-in role.
27kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
28 create secret generic mdb-rs-search-sync-source-password \
29 --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}"
30kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
31apiVersion: mongodb.com/v1
32kind: MongoDBUser
33metadata:
34 name: search-sync-source-user
35spec:
36 username: search-sync-source
37 db: admin
38 mongodbResourceRef:
39 name: ${MDB_RESOURCE_NAME}
40 passwordSecretKeyRef:
41 name: mdb-rs-search-sync-source-password
42 key: password
43 roles:
44 - name: searchCoordinator
45 db: admin
46EOF
47
48# user performing search queries
49kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \
50 create secret generic mdb-user-password \
51 --from-literal=password="${MDB_USER_PASSWORD}"
52kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
53apiVersion: mongodb.com/v1
54kind: MongoDBUser
55metadata:
56 name: mdb-user
57spec:
58 username: mdb-user
59 db: admin
60 mongodbResourceRef:
61 name: ${MDB_RESOURCE_NAME}
62 passwordSecretKeyRef:
63 name: mdb-user-password
64 key: password
65 roles:
66 - name: readWrite
67 db: sample_mflix
68EOF
6

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

  1. Crear un recurso personalizado MongoDBSearch denominado mdbc-rs.

    Este recurso especifica los requisitos de recursos de CPU y memoria para los nodos de búsqueda. Para obtener más información sobre la configuración de este recurso personalizado, consulte Configuración de 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_RESOURCE_NAME}
    6spec:
    7 # no need to specify source.mongodbResourceRef if MongoDBSearch CR has the same name as MongoDB CR
    8 # the operator infer it automatically
    9 resourceRequirements:
    10 limits:
    11 cpu: "3"
    12 memory: 5Gi
    13 requests:
    14 cpu: "2"
    15 memory: 3Gi
    16EOF
  2. Espera a que se complete la implementación del recurso MongoDBSearch.

    Cuando se aplica el recurso personalizado MongoDBSearch, el operador de Kubernetes empieza a implementar los nodos de búsqueda (pods). Este paso pausa la ejecución hasta que la fase de estado del recurso mdbc-rs sea Running, lo que indica que el set de réplicas de MongoDB Community está operativo.

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

Asegúrese de que la implementación de recursos de MongoDB con MongoDBSearch sea exitosa.

1echo "Waiting for MongoDB resource to reach Running phase..."
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=jsonpath='{.status.phase}'=Running "mdb/${MDB_RESOURCE_NAME}" --timeout=400s
8

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 "MongoDB resource"
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get "mdb/${MDB_RESOURCE_NAME}"
3echo; echo "MongoDBSearch resource"
4kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdb-rs
5echo; echo "Pods running in cluster ${K8S_CTX}"
6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

Ahora que has implementado con éxito MongoDB Search y búsqueda vectorial para su uso con MongoDB Enterprise Edition, puedes agregar datos en tu clúster de MongoDB, crear índices de MongoDB Search y búsqueda vectorial, y ejecutar queries en tus datos. Para obtener más información, consulta Configuración de MongoDB Search y búsqueda vectorial.