KubernetesクラスターにMongoDB Search とベクトル検索を配置すると、アプリケーション内で強力な検索エクスペリエンスを直接構築できます。MongoDB Search とベクトル検索を使用すると、オンプレミスのMongoDBデータベースと自動的に同期する従来のテキスト検索とAIを使用したベクトル検索機能の両方を構築できます。これにより、高度な検索機能を提供しながら個別のシステムを同期して維持する必要がなくなります。詳しくは、以下を参照してください。
オンプレミス配置で全文検索やセマンティック検索などの検索機能を有効にするには、 MongoDB Search およびベクトル検索プロセス(mongot)を配置し、それをMongoDBデータベース配置(mongod)に接続する必要があります。mongot の配置は任意であり、提供する検索機能を活用する予定の場合にのみ必要です。
MongoDB Database プロセス(mongod)は、mongot のすべての検索クエリのプロキシとして機能します。mongod はクエリを mongot に転送し、クエリを処理します。mongot はクエリ結果を mongod に返し、ノードはその結果を に転送します。mongot と直接やり取りすることはありません。
各 mongot プロセスには、データベースや他の検索ノードと共有されていない独自の永続ボリュームがあります。ストレージ は、データベースから継続的に提供されるデータから構築されたインデックスを維持するために使用されます。インデックス定義(メタデータ)はデータベース自体に保存されます。
mongot は、次のアクションを実行します。
インデックスを管理します。
mongotは、データベース内のインデックス定義を更新します。データベースからデータを取得します。
mongotノードは、データベースへの永続的な接続を確立し、データベースからインデックスをリアルタイムで更新します。検索クエリを処理します。
When
mongodreceives a$search,$searchMeta, or$vectorSearchquery, it directs the query to one of themongotnodes. Themongotthat receives the query processes the query, aggregates the data, and returns the results tomongod, which it forwards to the user.
mongot コンポーネントは 1 つのMongoDBレプリカセットと厳密に結合されているため、複数のデータベースやレプリカセットで共有することはできません。つまり、レプリカセット配置には専用の検索ノードがあります。
mongot と mongod の間のネットワーク接続は両方向で行われます。
mongotは、インデックスの構築とクエリの実行に使用されるデータを取得するためにレプリカセットへの接続を確立します。mongodはmongotに接続して、インデックス管理やデータのクエリなどの検索関連の操作を転送します。
MongoDB Search とベクトル検索の配置
Kubernetes演算子 の有無にかかわらず、検索配置アーキテクチャに大きな違いはありません。Kubernetes Operator は、特にデータベースもKubernetes Operator によって管理されている場合に、完全に機能する検索ノードを配置するために必要な手順を簡素化します。
配置するには、MongoDBSearch カスタム リソース(CR)を適用します。これをKubernetes Operator が取得して mongot ポッドの配置を開始し、spec で指定された永続ストレージをリクエストします。Kubernetes Operator を使用して配置されたMongoDB Search とベクトル検索 は、同じKubernetesクラスター内または完全に独立した外部MongoDBデータベース内にKubernetes Operator によって配置されたMongoDBレプリカセットを対象とできます。mongot が使用するように配置して構成する方法については、以下をご覧ください。
KubernetesのMongoDBレプリカセットは、 MongoDB Enterprise Edition での検索のインストールと使用 を参照してください。
外部MongoDBレプリカセットは、外部MongoDB Enterprise Edition を使用してMongoDB Search およびベクトル検索をインストールして使用する を参照してください。
前提条件
MongoDB Enterprise配置でMongoDB Search とベクトル検索を活用するには、次のものが必要です。
完全に機能するMongoDB 8.0.14+次のいずれかの方法で配置されたレプリカセット。
Kubernetes演算子を使用するKubernetesクラスター内
Kubernetesクラスターの外部
Cloud ManagerまたはMongoDB Ops Manager のインスタンス
始める前に、以下の点を考慮してください。
設定タスク
次の表は、 Kubernetes Operator が自動的に実行する構成タスクと、 KubernetesにMongoDB Search とベクトル検索を正常に配置し、 KubernetesのMongoDBレプリカセットまたは外部MongoDBレプリカセットに接続するために実行する必要があるアクションを示しています。
タスク | (Kubernetes 内) 実行者 | (外部 MongoDB) 実行者 |
|---|---|---|
Deploy Ops Manager inside Kubernetes | Kubernetes 演算子 | Kubernetes 演算子 |
Kubernetes の外部でのCloud ManagerまたはMongoDB Ops Managerの配置 | あなたの | あなたの |
MongoDBレプリカセットの配置 | Kubernetes 演算子 | あなたの |
| あなたの | あなたの |
MongoDBレプリカセットへの接続文字列の指定 | Kubernetes 演算子 | あなたの |
| Kubernetes 演算子 | Kubernetes 演算子 |
各 | Kubernetes 演算子 | あなたの |
MongoDBバージョン 8.2 未満の多角形 | Kubernetes 演算子 | あなたの |
| Kubernetes Operator と MongoDBUserリソースを適用することで | あなたの |
クエリ検索に必要な権限を持つユーザーでMongoDBレプリカセットを構成する | あなたの | あなたの |
MongoDB Search およびベクトル検索インデックスの作成 | あなたの | あなたの |
各 | 不要 | あなたの |
| 不要 | あなたの |
セキュリティ
次の画像は、mongot プロセスのセキュリティ構成を示しています。MongoDBサーバーがKubernetesクラスター内にある場合、 Kubernetes Operator はMongoDB Search とベクトル検索の キーファイル認証 を自動的に設定します。MongoDBサーバーが外部の場合は、レプリカセットのキーファイル認証情報を含むKubernetes Secret を作成し、MongoDBSearch CR で参照必要があります。

認証
mongod に接続する際、mongot は自分自身をデータベースユーザーとして認証します。MongoDB Search とベクトル検索を配置する場合は、データベースユーザーを作成する必要があります。Kubernetes Secret に保存されているユーザー認証情報を mongot に渡すには、MongoDBSearch CR の spec.source.username フィールドと spec.source.passwordSecretRef フィールドに入力します。
mongodからの接続を受け入れる場合、mongot はMongoDBレプリカセットの内部認証と同様に、キーファイルを使用した内部認証を使用してリモートリクエストを認証します。同じKubernetesクラスターでMongoDBリソースをインデックスように構成すると、 Kubernetes Operator は MongoDBSearch のキーファイル認証を自動的に設定します。MongoDBレプリカセットがKubernetes の外部に配置されている場合は、レプリカセットのキーファイル認証情報を含むKubernetes Secret を作成し、MongoDBSearch.spec.source.external.keyfileSecretRefフィールドで参照必要があります。
トランスポート層のセキュリティ
MongoDBSearch TLS を使用した転送中のデータと認証情報を保護できます。インデックスマネジメントコマンドと検索クエリの場合は、({} のような空のオブジェクトでも) spec.security.tls フィールドを指定し、spec.security.tls.certificateKeySecretRef フィールドの kubernetes secret に TLS 証明書を提供します。この TLS 証明書は、MongoDBレプリカセットが使用する CA 証明書を発行したのと同じ CA によって発行され、署名されている必要があります。
MongoDBSearch と MongoDB の両方がKubernetes Operator によって配置される場合、基礎の mongot と mongod の構成は大部分がKubernetes Operator 自体によって処理されます。MongoDBレプリカセットがKubernetesの外部に配置される場合、.spec.source.external.tlsフィールドには、mongod が構成されているのと同じ CA 証明書を含むKubernetes Secret が入力され、mongod 構成自体で searchTLSMode パラメータが に設定されている必要があります。 requireTLS。



