AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Enterprise Edition で検索をインストールと使用

Kubernetes演算子 を使用して、 MongoDB Search とベクトル検索リソースを配置して、 Kubernetesクラスター上のMongoDB Enterprise v8.0.10 以上で実行できます。この手順では、 Kubernetesクラスターで新規または既存のレプリカセットを使用して実行するように mongot プロセスを配置して構成する方法を示します。

重要

8.2 未満のMongoDBバージョンのサポートは非推奨になりました。MongoDB v8.2 以降にアップグレードします。

MongoDB Search とベクトル検索を配置するには、次のものが必要です。

  • ローカルで使用可能な kubeconfig を含む実行中のKubernetesクラスター。

  • Kubernetesコマンドライン ツール(kubectl)は、クラスターと通信するように構成されています。

  • Helm、Kubernetesのパッケージマネージャーである Helm は、 Kubernetes演算子をインストールします。

  • このチュートリアルのコマンドを実行中には、Batch v5.1 以上が必要です。

  • MongoDB Ops Manager または MongoDB Cloud Manager のプロジェクトと API 認証情報。

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# 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="<SET API USER>"
19export OPS_MANAGER_API_KEY="<SET API KEY>"
20export OPS_MANAGER_ORG_ID="<SET ORG ID>"
21
22# minimum required MongoDB version for running MongoDB Search is 8.2.0
23export MDB_VERSION="8.2.0-ent"
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 は、 Kubernetes上のMongoDBインスタンスの配置と管理を自動化します。Kubernetes Operator 演算子をインストールするための 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 Operator は、MongoDB、MongoDBOpsManager、MongoDBSearch のカスタム リソースを監視し、 MongoDB配置のライフサイクルを管理します。MongoDB Controls for Kubernetes Operator をすでにインストールしている場合は、この手順をスキップします。それ以外の場合は、前の手順で追加した HelmリポジトリからMongoDB Controls for Kubernetes Operator をインストールします。

MongoDB Controls for Kubernetes Operator を mongodb名前空間にインストールするには、次のコマンドをコピー、貼り付け、実行します。

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 Enterpriseをすでに配置している場合は、次の手順に進みます。それ以外の場合は、 MongoDB Enterpriseリソースを配置します。

MongoDB Enterpriseを配置するには、次の手順を実行します。

  1. MongoDB Ops Managerを使用している場合は、MongoDB Ops ManagerプロジェクトのConfigMapとシークレットを作成します。

    To store the configuration and credentials for integration with MongoDB Ops Manager, copy, paste, and run the following commands:

    1kubectl --context "${K8S_CTX}" -n "${MDB_NS}" create configmap om-project \
    2 --from-literal=projectName="${OPS_MANAGER_PROJECT_NAME}" --from-literal=baseUrl="${OPS_MANAGER_API_URL}" \
    3 --from-literal=orgId="${OPS_MANAGER_ORG_ID:-}"
    4
    5kubectl --context "${K8S_CTX}" -n "${MDB_NS}" create secret generic om-credentials \
    6 --from-literal=publicKey="${OPS_MANAGER_API_USER}" \
    7 --from-literal=privateKey="${OPS_MANAGER_API_KEY}"
  2. mdb-rs という名前の MongoDB カスタムリソースを作成します。

    リソースは、mongod コンテナと mongodb-agent コンテナの CPU とメモリ リソースを定義し、 Kubernetes Operator に 3 ノードでMongoDBレプリカセットを構成するように指示します。

    MongoDB Enterpriseを配置するには、以下をコピーして貼り付け、名前空間で実行します。

    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}
    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: INFO
    22 podSpec:
    23 podTemplate:
    24 spec:
    25 containers:
    26 - name: mongodb-enterprise-database
    27 resources:
    28 limits:
    29 cpu: "2"
    30 memory: 2Gi
    31 requests:
    32 cpu: "1"
    33 memory: 1Gi
    34EOF
  3. MongoDBリソースの配置が完了するまで待ちます。

    MongoDB カスタムリソースを適用すると、 Kubernetes演算子によってMongoDBノード(ポッド)の配置が開始されます。このステップでは、mdbc-rs リソースのステータス フェーズが Running になるまで実行を一時停止します。これはMongoDB Communityレプリカセットが操作可能であることを示します。

    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、安全なアクセスのために認証が必要です。この手順では、3 つのKubernetesシークレットを作成します。

  • mdb-admin-user-password: MongoDB管理者の認証情報。

  • mdb-user-password: 検索クエリを実行する権限を持つユーザーの認証情報。

  • mdbc-rs-search-sync-source-password: データを同期し、インデックスを管理するために mongot プロセスによって内部的に使用される専用検索ユーザーの認証情報。

Kubernetes Operator はこれらのシークレットをMongoDBポッドにマウントします。

シークレットを作成するには、 MongoDB Serverを配置し、 MongoDB Search とベクトル検索を配置する予定の名前空間で、以下をコピーして貼り付け、実行します。

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

負荷分散なしで、検索ノードの 1 つのインスタンスを配置できます。配置するには、次の手順を実行します。

  1. mdbc-rs という名前の MongoDBSearch カスタムリソースを作成します。

    このリソースは、検索ノードの CPU とメモリのリソース要件を指定します。このカスタムリソースの設定の詳細については、MongoDB Search とベクトル検索の設定を参照してください。

    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. MongoDBSearchリソースの配置が完了するまで待ちます。

    MongoDBSearch カスタムリソースを適用すると、 Kubernetes演算子による検索ノード(ポッド)の配置が開始されます。このステップでは、mdbc-rs リソースのステータス フェーズが Running になるまで実行を一時停止します。これはMongoDB Communityレプリカセットが操作可能であることを示します。

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

MongoDBSearch を使用した MongoDBリソースの配置が成功したことを確認します。

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

MongoDBレプリカセットノード、 Kubernetes演算子用のMongoDBコントロール、および検索ノードの名前空間ポッド内のすべての実行中中のポッドを表示します。

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_RESOURCE_NAME}"
5echo; echo "Pods running in cluster ${K8S_CTX}"
6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

MongoDB Enterprise Edition で使用するMongoDB Search とベクトル検索を正常に配置したので、 MongoDBクラスターにデータを追加し、 MongoDB Search およびベクトル検索インデックスを作成し、データに対してクエリを実行できます。詳細については、 MongoDB Search とベクトル検索 の設定 を参照してください。

このページを評価