Kubernetes Operator 用のMongoDBドライバーを使用して、 MongoDB v8.0 以降と並行してMongoDB Search とベクトル検索を配置できます。
リソース仕様の例
次の例は、 MongoDB Search とベクトル検索 の配置の specオブジェクト内の設定を示しています。これらの設定の詳細については、「必要な設定」と「オプション設定」を参照してください。
例
1 spec: 2 source: 3 mongodbResourceRef: 4 name: mdb 5 external: 6 hostAndPorts: 7 - mdb-rs-external-0.example.com:27017 8 - mdb-rs-external-1.example.com:27017 9 - mdb-rs-external-2.example.com:27017 10 keyfileSecretRef: 11 name: mdbc-rs-keyfile 12 key: keyfile 13 tls: 14 ca: 15 name: mdbc-rs-ca 16 username: search-sync-source 17 passwordSecretRef: 18 name: mdbc-rs-search-sync-source-password 19 key: password 20 security: 21 tls: 22 certificateKeySecretRef: 23 name: mdbs-tls-secret 24 resourceRequirements: 25 limits: 26 cpu: "3" 27 memory: 5Gi 28 requests: 29 cpu: "2" 30 memory: 3Gi 31 logLevel: INFO
必要な設定
このセクションでは、 MongoDB Search およびベクトル検索リソースを配置するために必要な設定について説明します。カスタム リソース定義(CRD)で必要な設定のみを定義する場合、 Kubernetes演算子用のMongoDBドライバーはすべてのオプション設定のデフォルトを使用して MongoDBSearch を構成します。
apiVersion型: string
MongoDB Kubernetesリソーススキーマのバージョン。値を
mongodb.com/v1に設定します。
kind型: string
作成する MongoDB Kubernetes リソースの種類。 これを
MongoDBSearchに設定します。
metadata.namespace型: string
MongoDBSearchリソースを作成する名前空間。MongoDBSearchとMongoDBまたはMongoDBCommunityリソースの自動構成を活用するには、MongoDBSearchリソースをMongoDBまたはMongoDBCommunityリソースと同じ名前空間に作成する必要があります。
metadata.name型: string
MongoDBSearchリソースの一意の識別子。リソース名の長さは最大 44 文字です。
オプション設定
このセクションでは、 MongoDB Search およびベクトル検索リソースのオプション設定について説明します。オプション設定を省略し、CRD で必要な設定のみを定義する場合、 Kubernetes Operator 用のMongoDB Controls はすべてのオプション設定にデフォルトを使用して MongoDBSearch を構成します。
データソースを構成する設定
spec.source型: オブジェクト
mongotのMongoDBソースレプリカセットを記述する設定。これは、次の場合に必要です。MongoDBは外部ですMongoDBは とは異なる名前を持ちますMongoDBSearch
MongoDBSearchリソースは常にレプリカセットに接続されている必要があります。MongoDBまたはMongoDBCommunityCRD とともにKubernetes Operator を使用してレプリカセットを配置し、かつspec.sourceが空の場合、 Kubernetes Operator はmetadata.nameに基づいて次のコマンドを使用して、 Kubernetes内のデータベースを検索します。同じ名前空間で、
MongoDBSearchのmetadata.nameに設定した名前と同じ名前のMongoDBまたはMongoDBCommunityリソースを見つけます。<MongoDBSearch.metadata.name>-search-sync-source-passwordシークレットからmongotユーザーのパスワードシークレットを見つけます。
spec.source.mongodbResourceRef.name型: string
このMongoDB Search およびベクトル検索リソースに関連付ける
MongoDBまたはMongoDBCommunityリソースの名前。同じMongoDBまたはMongoDBCommunityリソースを参照する複数のMongoDBSearchリソースは存在できません。別の名前を指定する場合は、 MongoDB Search とベクトル検索を有効にするMongoDBまたはMongoDBCommunityを明示的に点必要があります。このフィールドは、
MongoDBまたはMongoDBCommunityリソースが同じKubernetesクラスターに配置され、かつMongoDBSearchリソースと同じ名前空間にある場合にのみ使用します。このフィールドを設定すると、 Kubernetes Operator は自動的に次の操作を実行できるようになります。データベースへの適切な接続文字列を設定します。
検索機能を有効にするために必要なパラメーターを設定し、検索ポッドのアドレスを構成して、 MongoDBデータベース配置を再構成します。
データベースがKubernetes外、または 別の名前空間にある場合は、
spec.externalを使用してデータベースへの接続を構成します。このフィールドはspec.externalと排他関係にあります。省略した場合、 Kubernetes Operator は、この
MongoDBSearchリソースと同じ名前を持つMongoDBまたはMongoDBCommunityリソースを検索します。
ユーザーを構成するための 設定mongot
spec.source.username型: string
mongotでmongodを認証するために使用するユーザー名。指定されたユーザーには ロールが必要です。省略した場合、searchCoordinatorKubernetes演算子はユーザー名がsearch-sync-sourceであると想定します。
spec.source.passwordSecretRef.name型: string
mongotがmongodで認証するために使用する必要があるパスワードを含むシークレットの名前。省略した場合、デフォルトは<MongoDBSearch.metadata.name>-search-sync-source-passwordになります。
spec.source.passwordSecretRef.key型: string
パスワード値がシークレットで保存されるキー。省略した場合、デフォルトは
passwordになります。
外部MongoDBへの接続設定
次の設定は、外部MongoDBレプリカセットへの接続を構成する場合にのみ必要です。
spec.source.external型: オブジェクト
外部データソースを説明する設定。このオブジェクトでは、 MongoDB Search およびベクトル検索リソースが外部のMongoDBに接続するための設定を記述します。これらの設定は、 Kubernetes演算子を使用して配置されなかった外部MongoDBに接続する場合にのみ指定する必要があります。指定すると、これらの設定は
spec.source.mongodbResourceRef.nameの 設定を上書きします。Kubernetes Operator を使用して同じクラスターにMongoDBをインストールした場合、これらの設定は任意です。
spec.source.external.hostAndPortsタイプ: 文字列の配列
外部レプリカセットのホスト名とポートのリスト。これは、 MongoDBレプリカセットへのホストシードリストです。
mongotはレプリカセットモードでデータベースに接続し、db.hello()を使用して他のすべてのノードのリストを取得します。例
hostAndPorts: - mdbc-rs-0.my-external-domain.example.com:27017 - mdbc-rs-1.my-external-domain.example.com:27017 - mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.keyfileSecretRef型: オブジェクト
内部クラスター認証用のキーファイルを含むKubernetesシークレットへの参照。
spec.source.external.keyfileSecretRef.name型: string
mongotに対してmongodを認証するために使用されるキーファイルの名前。指定されたシークレット名には、 MongoDBレプリカセットノードが内部通信に使用するのと同じキーファイルが含まれている必要があります。
spec.source.external.keyfileSecretRef.key型: string
string としてのキーファイルの内容。
Tip
キーファイルは、 Cloud ManagerまたはMongoDB Ops Managerインスタンスのオートメーション構成の
auth.keyフィールドにあります。
spec.source.external.tls型: オブジェクト
TLS 設定は、外部MongoDBデータベースに接続するときに
mongotが使用する必要があります。
spec.source.external.tls.ca.name型: string
mongodノードで使用される TLS 証明書を発行した証明機関の信頼できるチェーンを含む Secret の名前。例
spec: source: external: tls: ca: name: trusted-ca 証明書(または信頼できる CA 証明書のチェーンである場合は の証明書)は、このシークレット内の
ca.crtキーの下に指定する必要があります。例
name: Secret apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
セキュリティ設定
spec.security型: オブジェクト
mongotlistenサーバーのセキュリティ設定。
spec.security.tls型: オブジェクト
mongotの TLS 設定。省略した場合、mongotは受信接続に TLS を使用しません。
spec.security.tls.certificateKeySecretRef.name型: string
秘密キー(
tls.key)と証明書(tls.crt)を含む同じ名前空間内の TLS シークレットの名前。シークレットは、タイプkubernetes.io/tls(証明書マネージャーによって発行される)または手動で作成することができます。これは、mongotで TLS を有効にするために必要です。
リソースのプロビジョニングの設定
spec.resourceRequirementsタイプ: Core/v1/ResourceRequirements
mongodb-searchコンテナがリクエスト、制限する CPU とメモリ。spec.statefulSetで上書きするのではなく、このフィールドを使用してリソース割り当てをカスタマイズすることをおすすめします。省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。
requests: cpu: 2 memory: 2G
spec.resourceRequirements.limits型: オブジェクト
mongodb-searchコンテナが消費できるリソース、CPU、メモリの上限。デフォルトでは 、制限は設定されていません。省略した場合、ポッドは制限されないため、 はノード上のすべてのリソースを使用する可能性があります。ワークロードに基づいて制限を設定することをお勧めします。
spec.resourceRequirements.requests型: オブジェクト
mongodb-searchコンテナに要求される CPU とメモリの量。省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。requests: cpu: 2 memory: 2G
spec.persistence.single型: オブジェクト
MongoDB Search およびベクトル検索永続ボリュームのストレージ構成。MongoDB Search インデックスとベクトル検索インデックスが保存されます。各検索インスタンス(ポッド)には、インデックスを維持するための独自のストレージがあります。これはMongoDBデータベースとは共有されません。データベース自体には、インデックスメタデータ(定義)のみが保存されます。
スカラーデータ型説明labelSelectorstring
storagestring
マウントする永続ボリュームの最小サイズ。この値は、 JEDEC 表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 16Gi です。
例、レプリカセットに60 ギガバイトのストレージ容量が必要な場合は、この値を
60Giに設定します。storageClassstring
永続的なボリューム要求 で指定されるストレージのタイプ。このオブジェクト仕様で使用する前に、このストレージタイプを StorageClassオブジェクトとして作成できます。
StorageClass
reclaimPolicyを 保持 するように設定します。これにより、永続的なボリューム要求が削除されてもデータが保持されます。MongoDBSearchはsingle永続フィールドのみをサポートします。省略した場合、 Kubernetes演算子はspec.persistence.single.storageを10GBに設定します。
ログ記録の設定
spec.logLevel型: string
mongotログの冗長度。値は次のいずれかになります。TRACEDEBUGINFOWARNERROR
省略した場合、デフォルトは
INFOになります。
その他の設定
spec.version型: string
mongodb-searchDockerイメージのバージョン。 省略した場合、 Kubernetes Operator はMongoDBSearchの最新バージョンを自動的に選択します。Kubernetes Operator バージョンがアップグレードされるときに、自動アップグレードを防止するために明示的に設定することができます。
spec.statefulSetタイプ: apps/v1/StatefulSet
ポッドを配置するために作成された
mongotAtlas App Services の仕様で、 Kubernetes演算子 が適用する設定を上書きします。上書きは常に最後に適用されます。spec.statefulSet.specフィールドとspec.statefulSet.metadataフィールドの両方をサポートします。注意
spec.statefulSetを使用してリソース要件や永続性設定を設定しないでください。代わりに、それぞれspec.resourceRequirementsとspec.persistenceフィールドを使用してください。