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 プロセスを配置して構成する方法を示します。

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

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

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

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

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

  • 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="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 は、 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 は、MongoDBMongoDBOpsManagerMongoDBSearch のカスタム リソースを監視し、 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. 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}-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. 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-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

負荷分散なしで、検索ノードの 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-rs --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-rs
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 とベクトル検索 の設定 を参照してください。

このページを評価