对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

安装和使用MongoDB Enterprise Edition 搜索

您可以使用Kubernetes Operator部署MongoDB Search 和 Vector Search 资源,以便在Kubernetes集群上与MongoDB Enterprise v8.0.10 或更高版本一起运行。 此过程演示如何部署和配置 mongot进程,使其与Kubernetes集群中的新副本集或现有副本集一起运行。

要部署MongoDB Search 和 Vector Search,您必须具备以下条件:

  • 一个运行的Kubernetes集群,且本地可用 kubeconfig。

  • Kubernetes命令行工具 kubectl,配置为与集群通信。

  • Helm( Kubernetes的包管理器),用于安装Kubernetes Operator。

  • Bash v5.1 或更高版本,用于运行本教程中的命令。

  • Ops Manager或MongoDB Cloud Manager项目和API凭证。

1

要设立用于此过程后续步骤的环境变量,请复制以下内容,设立环境变量的值,然后加载环境变量:

# set it to the context name of the k8s clusterexport K8S_CTX="<local cluster context>" # the following namespace will be created if not existsexport MDB_NS="mongodb" # name of the MongoDB Custom Resource.export MDB_RESOURCE_NAME="mdb-rs" # OM/CM's project name to be used to manage mongodb replica setexport OPS_MANAGER_PROJECT_NAME="<arbitrary project name>" # URL to Cloud Manager or Ops Manager instanceexport OPS_MANAGER_API_URL="https://cloud-qa.mongodb.com" # The API key can be an Org Owner - the operator can create the project automatically then.# The API key can also be created in a particular project that was created manually with the Project Owner scope .export OPS_MANAGER_API_USER="abcdefg"export OPS_MANAGER_API_KEY="00000-abcd-efgh-1111-12345678"export OPS_MANAGER_ORG_ID="62a73abcdefgh12345678" # minimum required MongoDB version for running MongoDB Search is 8.0.10export MDB_VERSION="8.0.10" # root admin user for convenience, not used here at all in this guideexport MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"# regular user performing restore and search queries on sample mflix databaseexport MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"# user for MongoDB Search to connect to the replica set to synchronise data fromexport MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME" export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"# comma-separated key=value pairs for additional parameters passed to the helm-chart installing the operatorexport OPERATOR_ADDITIONAL_HELM_VALUES="" export 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 可自动部署和管理Kubernetes上的MongoDB实例。如果您已经添加了包含用于安装Kubernetes Operator 操作符 的Helm 图表的 Helm存储库,请跳过此步骤。否则,请添加 Helm存储库。

要添加、复制、粘贴并运行以下命令:

helm repo add mongodb https://mongodb.github.io/helm-chartshelm repo update mongodbhelm search repo mongodb/mongodb-kubernetes
3

Kubernetes Operator 监视 MongoDB、MongoDBOpsManager 和 MongoDBSearch 自定义资源,并管理MongoDB部署的生命周期。如果您已经安装了MongoDB Controllers for Kubernetes Operator,请跳过此步骤。否则,请从您在上一步中添加的 Helm存储库安装MongoDB Controllers for Kubernetes Operator。

要在 mongodb命名空间中安装MongoDB Controllers for Kubernetes Operator,请复制、粘贴并运行以下命令:

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

如果您已部署MongoDB Enterprise,请跳至下一步。否则,部署MongoDB Enterprise资源。

要部署MongoDB Enterprise,请完成以下步骤:

  1. 创建名为 mdb-rs 的 MongoDB 自定义资源。

    该资源定义了 mongod 和 mongodb-agent 容器的 CPU 和内存资源,并指示Kubernetes Operator 配置具有 3 成员的MongoDB副本集:

    要部署MongoDB Enterprise ,请在命名空间中复制、粘贴并运行以下命令:

    kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBmetadata: name: ${MDB_RESOURCE_NAME}spec: members: 3 version: ${MDB_VERSION}-ent type: ReplicaSet opsManager: configMapRef: name: om-project credentials: om-credentials security: authentication: enabled: true ignoreUnknownUsers: true modes: - SCRAM agent: logLevel: DEBUG statefulSet: spec: template: spec: containers: - name: mongodb-enterprise-database resources: limits: cpu: "2" memory: 2Gi requests: cpu: "1" memory: 1GiEOF
  2. 等待 MongoDB资源部署完成。

    当您应用MongoDB 自定义资源时, Kubernetes 操作符开始部署MongoDB节点 (Pod)。此步骤会暂停执行,直到 mdbc-rs 资源的状态阶段为 Running,这表示MongoDB Community副本集可操作。

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

MongoDB需要身份验证才能安全访问权限。在此步骤中,您将创建三个Kubernetes密钥:

  • mdb-admin-user-password: MongoDB管理员的档案。

  • mdb-user-password:授权执行搜索查询的用户的档案。

  • mdbc-rs-search-sync-source-password:专用搜索用户的档案,由 mongot进程在内部用于同步数据和管理索引。

Kubernetes Operator 将这些密钥挂载到MongoDB Pod 中。

要创建密钥,请在部署MongoDB Server并计划部署MongoDB Search 和 Vector Search 的命名空间中复制、粘贴并运行以下命令:

# admin user with root rolekubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-admin-user-password \ --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: mdb-adminspec: username: mdb-admin db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-admin-user-password key: password roles: - name: root db: adminEOF # user used by MongoDB Search to connect to MongoDB database to synchronize data from# For MongoDB <8.2, the operator will be creating the searchCoordinator custom role automatically# From MongoDB 8.2, searchCoordinator role will be a built-in role.kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-rs-search-sync-source-password \ --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}"kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: search-sync-source-userspec: username: search-sync-source db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-rs-search-sync-source-password key: password roles: - name: searchCoordinator db: adminEOF # user performing search querieskubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-user-password \ --from-literal=password="${MDB_USER_PASSWORD}"kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: mdb-userspec: username: mdb-user db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-user-password key: password roles: - name: readWrite db: sample_mflixEOF
6

您可以部署一个搜索节点实例,而无需任何负载均衡。要部署,请完成以下步骤:

  1. 创建名为 mdbc-rs 的 MongoDBSearch 自定义资源。

    此资源指定搜索节点的 CPU 和内存资源要求。要学习;了解有关此自定义资源中设置的更多信息,请参阅MongoDB搜索和向量搜索设置。

    kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBSearchmetadata: name: ${MDB_RESOURCE_NAME}spec: # no need to specify source.mongodbResourceRef if MongoDBSearch CR has the same name as MongoDB CR # the operator infer it automatically resourceRequirements: limits: cpu: "3" memory: 5Gi requests: cpu: "2" memory: 3GiEOF
  2. 等待 MongoDBSearch资源部署完成。

    当您应用MongoDBSearch 自定义资源时, Kubernetes 操作符开始部署搜索节点 (pod)。此步骤会暂停执行,直到 mdbc-rs 资源的状态阶段为 Running,这表示MongoDB Community副本集可操作。

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

确保使用 MongoDBSearch成功部署MongoDB资源。

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

查看MongoDB副本集成员、 Kubernetes Operator 的MongoDB控制器以及搜索节点的命名空间Pod 中运行的所有 Pod。

echo; echo "MongoDB resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get "mdb/${MDB_RESOURCE_NAME}"echo; echo "MongoDBSearch resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdb-rsecho; echo "Pods running in cluster ${K8S_CTX}"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

现在,您已成功部署MongoDB Search 和 Vector Search 以便与MongoDB Enterprise Edition 一起使用,接下来您可以在MongoDB 集群中添加数据、创建MongoDB Search 和 Vector Search 索引,并对数据运行查询。要学习;了解更多信息,请参阅MongoDB搜索和向量搜索设置。

给本页内容打分