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

安装和使用 MongoDB Community Edition

您可以使用Kubernetes 操作符 并部署mongot进程资源,以在Kubernetes集群上与MongoDB Community Edition v8.2.0 或更高版本一起运行。mongot进程支持MongoDB Search搜索向量搜索。以下过程演示了如何部署和配置MongoDB Search 和 向量搜索,以便使用Kubernetes集群中的新副本集或现有副本集来运行。

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

  • 正在运行的 Kubernetes 集群。

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

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

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

1

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

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# minimum required MongoDB version for running MongoDB Search is 8.2.0
8export MDB_VERSION="8.2.0"
9
10# root admin user for convenience, not used here at all in this guide
11export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"
12# regular user performing restore and search queries on sample mflix database
13export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"
14# user for MongoDB Search to connect to the replica set to synchronise data from
15export MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME"
16
17export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
18# comma-separated key=value pairs for additional parameters passed to the helm-chart installing the operator
19export OPERATOR_ADDITIONAL_HELM_VALUES=""
20
21export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@mdbc-rs-0.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017/?replicaSet=mdbc-rs"
2

Helm 自动部署和管理 Kubernetes 上的 MongoDB 实例。如果您已经拥有包含用于安装 Kubernetes 操作符的 Helm 图表的 Helm 存储库,请跳过此步骤。否则,请添加 Helm存储库。

要添加 Helm存储库,请复制、粘贴并运行以下命令:

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

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

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

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

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

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

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

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

Kubernetes 操作符使用这些密钥中的密码在 MongoDB 数据库中自动创建用户。

要创建密钥,请复制、粘贴并运行以下命令:

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

如果您已经部署了MongoDB Community Edition,请跳过此步骤。否则,部署MongoDB Community Edition。

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

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

    该资源定义了 mongod 和 mongodb-agent 容器的 CPU 和内存资源,并设置了以下三个用户:

    mdb-user

    可以恢复数据库和运行搜索查询的用户。该用户使用 mdb-user-password 密钥来执行这些操作。

    search-sync-source

    MongoDB 搜索用于连接到 MongoDB 数据库以管理和构建索引的用户。此用户使用Kubernetes 操作符创建的 searchCoordinator角色。这会使用 mdbc-rs-search-sync-source-password 密钥将 mongot 连接到 mongod。

    admin-user

    数据库管理员用户。

    Kubernetes 操作符使用此资源配置具有 3 个成员的 MongoDB 副本集。

    要创建密钥,请复制、粘贴并运行以下命令:

    1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
    2apiVersion: mongodbcommunity.mongodb.com/v1
    3kind: MongoDBCommunity
    4metadata:
    5 name: mdbc-rs
    6spec:
    7 version: ${MDB_VERSION}
    8 type: ReplicaSet
    9 members: 3
    10 security:
    11 authentication:
    12 ignoreUnknownUsers: true
    13 modes:
    14 - SCRAM
    15 agent:
    16 logLevel: DEBUG
    17 statefulSet:
    18 spec:
    19 template:
    20 spec:
    21 containers:
    22 - name: mongod
    23 resources:
    24 limits:
    25 cpu: "2"
    26 memory: 2Gi
    27 requests:
    28 cpu: "1"
    29 memory: 1Gi
    30 - name: mongodb-agent
    31 resources:
    32 limits:
    33 cpu: "1"
    34 memory: 2Gi
    35 requests:
    36 cpu: "0.5"
    37 memory: 1Gi
    38 users:
    39 # admin user with root role
    40 - name: mdb-admin
    41 db: admin
    42 # a reference to the secret containing user password
    43 passwordSecretRef:
    44 name: mdb-admin-user-password
    45 scramCredentialsSecretName: mdb-admin-user
    46 roles:
    47 - name: root
    48 db: admin
    49 # user performing search queries
    50 - name: mdb-user
    51 db: admin
    52 # a reference to the secret containing user password
    53 passwordSecretRef:
    54 name: mdb-user-password
    55 scramCredentialsSecretName: mdb-user-scram
    56 roles:
    57 - name: restore
    58 db: sample_mflix
    59 - name: readWrite
    60 db: sample_mflix
    61 # user used by MongoDB Search to connect to MongoDB database to
    62 # synchronize data from.
    63 # For MongoDB <8.2, the operator will be creating the
    64 # searchCoordinator custom role automatically.
    65 # From MongoDB 8.2, searchCoordinator role will be a
    66 # built-in role.
    67 - name: search-sync-source
    68 db: admin
    69 # a reference to the secret that will be used to generate the user's password
    70 passwordSecretRef:
    71 name: mdbc-rs-search-sync-source-password
    72 scramCredentialsSecretName: mdbc-rs-search-sync-source
    73 roles:
    74 - name: searchCoordinator
    75 db: admin
    76EOF
  2. 等待 MongoDBCommunity资源部署完成。

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

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

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

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

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

    1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
    2apiVersion: mongodb.com/v1
    3kind: MongoDBSearch
    4metadata:
    5 name: mdbc-rs
    6spec:
    7 resourceRequirements:
    8 limits:
    9 cpu: "3"
    10 memory: 5Gi
    11 requests:
    12 cpu: "2"
    13 memory: 3Gi
    14EOF
  2. 等待 MongoDBSearch资源部署完成。

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

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

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

1echo "Waiting for MongoDBCommunity resource to reach Running phase..."
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait \
3 --for=jsonpath='{.status.phase}'=Running mdbc/mdbc-rs --timeout=400s
8

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

1echo; echo "MongoDBCommunity resource"
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbc/mdbc-rs
3echo; echo "MongoDBSearch resource"
4kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdbc-rs
5echo; echo "Pods running in cluster ${K8S_CTX}"
6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

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

给本页内容打分