Kubernetes 演算子 用のMongoDB Controllers を使用して、 MongoDB 8.2 以降と並行してMongoDB Search とベクトル検索を配置できます。
リソース仕様の例
次の例は、 MongoDB Search とベクトル検索 の配置の specオブジェクト内の設定を示しています。これらの設定の詳細については、「必要な設定」と「オプション設定」を参照してください。
注意
この例は動作する構成ではありません。参照のサンプル値が入力されているすべての利用可能なフィールドが含まれています。一部のフィールドは相互に排他的です(例: 、source.mongodbResourceRef、source.external)。有効な組み合わせについては、以下のフィールドの説明を参照してください。
例
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 shardedCluster: 11 router: 12 hosts: 13 - mongos1.example.com:27017 14 - mongos2.example.com:27017 15 shards: 16 - shardName: shard-0 17 hosts: 18 - shard0-node1.example.com:27018 19 - shard0-node2.example.com:27018 20 - shardName: shard-1 21 hosts: 22 - shard1-node1.example.com:27018 23 - shard1-node2.example.com:27018 24 tls: 25 ca: 26 name: mdbc-rs-ca 27 username: search-sync-source 28 passwordSecretRef: 29 name: mdbc-rs-search-sync-source-password 30 key: password 31 # x509 authentication (mutually exclusive with 32 # username/passwordSecretRef) 33 x509: 34 clientCertificateSecretRef: 35 name: mongot-x509-client-cert 36 replicas: 2 37 loadBalancer: 38 # Option 1: Operator-managed Envoy load balancer 39 managed: 40 externalHostname: "search.apps.example.com" 41 resourceRequirements: 42 requests: 43 cpu: "100m" 44 memory: 128Mi 45 limits: 46 cpu: "500m" 47 memory: 512Mi 48 deployment: 49 spec: 50 template: 51 spec: 52 nodeSelector: 53 kubernetes.io/os: linux 54 # Option 2: User-provided (BYO) load balancer 55 # (mutually exclusive with managed) 56 unmanaged: 57 endpoint: "search-lb.corp.example.com:443" 58 security: 59 tls: 60 certificateKeySecretRef: 61 name: mdbs-tls-secret 62 certsSecretPrefix: my-prefix 63 resourceRequirements: 64 limits: 65 cpu: "3" 66 memory: 5Gi 67 requests: 68 cpu: "2" 69 memory: 3Gi 70 persistence: 71 single: 72 storage: 16Gi 73 storageClass: standard 74 version: "0.64.0" 75 statefulSet: 76 spec: 77 template: 78 spec: 79 nodeSelector: 80 kubernetes.io/os: linux 81 jvmFlags: 82 - -Xms2g 83 - -Xmx2g 84 autoEmbedding: 85 embeddingModelAPIKeySecret: 86 name: embedding-model-api-query-key 87 providerEndpoint: https://ai.mongodb.com/v1/embeddings 88 logLevel: INFO 89 prometheus: {}
必要な設定
このセクションでは、MongoDB 検索するおよびベクトル検索リソースを配置するために必要な設定について説明します。カスタム リソース定義(CRD)で必要な設定のみを定義する場合、 MongoDB Controllers for Kubernetes Operator はすべての任意設定のデフォルトを使用して 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 で必要な設定のみを定義すると、MongoDB Controls for Kubernetes 演算子はすべての任意設定にデフォルトを使用して MongoDBSearch を構成します。
データソースを構成する設定
spec.source型: オブジェクト
mongotのMongoDBソースを記述する設定。ソースはレプリカセットとシャーディングされたクラスターにすることができます。この設定は、次の場合に必要です。MongoDBは外部ですMongoDBMongoDBSearch とは名前が異なります
MongoDBSearchリソースは常にMongoDB配置に接続されている必要があります。
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リソースの名前。Kubernetes演算子は、レプリカセットとシャーディングされたクラスターの両方をサポートします。同じMongoDBまたはMongoDBCommunityリソースを参照する複数の MongoDBSearchリソースは存在できません。別の名前を指定する場合は、 MongoDB Search とベクトル検索を有効にするMongoDBまたはMongoDBCommunityを明示的に点必要があります。シャーディングされたクラスターの
MongoDBリソースを参照と、 Kubernetes Operator はシャードトポロジー(シャード名、レプリカセット、mongosルーター)を自動検出し、シャードごとのmongotステートメントを自動的に作成します。追加の外部設定を実行する必要はありません。このフィールドは、
MongoDBまたはMongoDBCommunityリソースが同じKubernetesクラスターに配置され、 MongoDBSearchリソースと同じ名前空間にある場合にのみ使用します。このフィールドを に設定すると、 Kubernetes 演算子 は自動的に次のことを行います。データベースへの適切な接続文字列を設定します。
検索機能を有効にするために必要なパラメーターを設定してMongoDBデータベース配置を再構成し、検索ポッドのアドレスを構成します。
データベースがKubernetes外、または 別の名前空間にある場合は、
spec.externalを使用してデータベースへの接続を構成します。このフィールドはspec.externalと排他関係にあります。省略した場合、 Kubernetes 演算子 は、この MongoDBSearchリソースと同じ名前を持つ
MongoDBまたはMongoDBCommunityリソースを検索します。
mongot ユーザーを構成するための 設定
spec.source.username型: string
mongodでmongotを認証するために使用するユーザー名。指定されたユーザーにはsearchCoordinatorロールが必要です。省略した場合、Kubernetes演算子はユーザー名がsearch-sync-sourceであると想定します。
spec.source.passwordSecretRef.name型: string
mongotがmongodで認証するために使用する必要があるパスワードを含むシークレットの名前。省略した場合、デフォルトは<MongoDBSearch.metadata.name>-search-sync-source-passwordになります。
spec.source.passwordSecretRef.key型: string
パスワード値がシークレットで保存されるキー。省略した場合、デフォルトは
passwordになります。
x509 認証の設定
spec.source.x509型: オブジェクト
mongot同期ソース接続の x509クライアント証明書認証を構成します。このフィールドを に設定すると、mongotはユーザー名とパスワードの代わりに x509 を使用してMongoDBに認証します。このフィールドは、
spec.source.passwordSecretRef、spec.source.usernameと相互に排他的です。x509 と パスワード認証 の両方を指定すると、 Kubernetes演算子は構成を拒否します。
spec.source.x509.clientCertificateSecretRef型: オブジェクト
MongoDB同期ソースに認証するための x509クライアント証明書とキーを含むシークレット。シークレット には次のキーが含まれている必要があります。
tls.crt— クライアント証明書(必須)tls.key— 秘密キー(必須)tls.keyFilePassword—秘密キーのパスワード(任意)
spec.source.x509を設定する場合は、このフィールドを指定する必要があります。例
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
外部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()を使用して他のすべてのノードのリストを取得します。このフィールドは
spec.source.external.shardedClusterと排他関係にあります。レプリカセットソースにはhostAndPortsを使用し、シャーディングされたクラスターソースにはshardedClusterを使用します。例
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.tls型: オブジェクト
TLS 設定は、外部MongoDBデータベースに接続するときに
mongotが使用する必要があります。
spec.source.external.tls.ca.name型: string
mongodノードで使用される TLS 証明書を発行した証明機関の信頼できるチェーンを含む Secret の名前。例
spec: source: external: tls: ca: name: trusted-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-----
外部クラスターに接続するための設定
次の設定は、外部MongoDBシャーディングされたクラスターへの接続を構成する場合にのみ必要です。既存の spec.source.external 設定を拡張します。
注意
spec.source.external.hostAndPorts (レプリカセットの場合)と spec.source.external.shardedCluster は相互に排他的です。それらの 1 つだけを指定します。
spec.source.external.shardedCluster型: オブジェクト
外部のシャーディングされたMongoDBクラスターを
mongotのデータソースとして宣言します。mongosルーターとシャードごとのレプリカセットの構成が含まれます。MongoDB クラスターがKubernetesの外部に配置され、 Kubernetes 演算子 によってマネージドではない場合にのみ、これを使用してください。
MongoDBCRD を使用して配置されたオペレーターマネージドのシャーディングされたクラスターの場合は、代わりにspec.source.mongodbResourceRefを使用します。Kubernetes 演算子は シャードトポロジーを自動検出します。例
spec: source: external: shardedCluster: router: hosts: - "mongos1.external:27017" - "mongos2.external:27017" shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - shardName: "shard-1" hosts: - "shard1-node1.external:27018" - "shard1-node2.external:27018"
spec.source.external.shardedCluster.router型: オブジェクト
外部シャーディングされたクラスターの
mongos(ルーター)インスタンスの構成。
spec.source.external.shardedCluster.router.hostsタイプ: 文字列の配列
host:port形式のmongosルーター インスタンスのエンドポイントとなる接続されたデバイスのリスト。すべてのmongotインスタンスがこれらのルーターに接続します。少なくとも 1 つのエントリを指定します。例
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsタイプ: オブジェクトの配列
外部MongoDBクラスター内のすべてのシャードのリスト。各エントリは、1 つのシャードのレプリカセットについて説明します。Kubernetes 演算子は、シャードごとに 1 つの
mongotStatefulSet を作成します。各StatefulSetには、spec.replicasで指定されたポッドの数が含まれます。少なくとも 1 つのシャード エントリを指定します。
spec.source.external.shardedCluster.shards[*].shardName型: string
シャードの論理名。Kubernetes 演算子 は、 Kubernetesリソースの名前付け(StateulSets、 Services、 Secrets)にこの名前を使用します。値はMongoDBシャード名とは異なる場合があります。
命名制約:
すべてのシャードで一意である必要があります。
Must conform to Kubernetes DNS サブドメイン名ルール(RFC 1123)に準拠する必要があります。このルールでは、小文字の英数字、ハイフン(
-)、ピリオド(.)が使用でき、名前が英数字で始まり、末尾に次が含まれる必要があります:文字列。アンダースコア(_)は許可されていません。metadata.nameとshardNameの合計の長さは、50 文字未満である必要があります。
例
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsタイプ: 文字列の配列
このシャードの
mongodレプリカセットのエンドポイントのリスト(host:port形式 )。mongotインスタンスは、これらのホストからデータを複製します。少なくとも 1 つのエントリを指定します。各レプリカセット(シャード)には独自の
mongotインスタンスのグループがあり、そのレプリカセットからのみデータをソースとします。異なるシャードで同じmongotインスタンスが共有されることはありません。例
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
セキュリティ設定
spec.security型: オブジェクト
mongotlistenサーバーのセキュリティ設定。
spec.security.tls型: オブジェクト
mongotの TLS 設定。省略した場合、mongotは受信接続に TLS を使用しません。
spec.security.tls.certificateKeySecretRef.name型: string
バージョン 1.8.0 から非推奨 :代わりに
spec.security.tls.certsSecretPrefixを使用してください。秘密キー(
tls.key)と証明書(tls.crt)を含む同じ名前空間内の TLS シークレットの名前。シークレットは、タイプkubernetes.io/tls(証明書マネージャーによって発行される)または手動で作成することができます。Kubernetes 演算子 は、下位互換性のためにレプリカセットの配置でこのフィールドを引き続きサポートします。ただし、
シャーディングされたクラスターの配置の場合、 Kubernetes 演算子は検証中にこのフィールドを拒否します。代わりに
spec.security.tls.certsSecretPrefixを使用してください。これは、単一のシークレット参照ではシャードごとの証明書をカバーできないためです。certificateKeySecretRefとcertsSecretPrefixの両方を指定した場合、レプリカセットの配置ではcertificateKeySecretRefが優先されます。
新しい配置では、レプリカセットでも
spec.security.tls.certsSecretPrefixを使用します。
spec.security.tls.certsSecretPrefix型: string
Kubernetes 演算子が命名規則によって TLS シークレット名を生成するために使用するプレフィックス。このフィールドを に設定すると、各コンポーネントに対して明示的なシークレット参照が必要になるのではなく、 Kubernetes 演算子 はこれらのパターンに従ってシークレットを検索します。
コンポーネントシークレット名パターンレプリカセットの
mongotサーバー証明書{certsSecretPrefix}-{name}-search-certシャーディングされた
mongot証明書(シャードあたり){certsSecretPrefix}-{name}-search-0-{shardName}-certマネージド ロードバランサーサーバー証明書
{certsSecretPrefix}-{name}-search-lb-0-certマネージド ロードバランサークライアント証明書
{certsSecretPrefix}-{name}-search-lb-0-client-cert以下の条件に一致するもの。
{name}は、MongoDBSearchリソースのmetadata.nameです{shardName}は、次の値です:spec.source.external.shardedCluster.shards[*].shardName
省略した場合、このフィールドはデフォルトで空の文字列になり、 Kubernetes演算子は代わりに
spec.security.tls.certificateKeySecretRefを使用します。注意
シャーディングされたクラスター配置の場合は、
certificateKeySecretRefではなくcertsSecretPrefixを使用する必要があります。Kubernetes演算子は、単一のシークレット参照ではシャードごとの証明書をカバーできないため、シャーディングされたトポロジーのcertificateKeySecretRefを拒否します。例
spec: security: tls: certsSecretPrefix: my-prefix
複数の Mongo インスタンスの設定
spec.replicasタイプ: 整数
配置する
mongotポッドの数。レプリカセットソースの場合、これはmongotポッドの合計数です。シャーディングされたクラスターソースの場合、これはシャードあたりのmongotポッドの数です。spec.replicasが1より大きい場合は、mongodと複数のmongotインスタンス間でトラフィックをルーティングするようにspec.loadBalancerも構成する必要があります。省略した場合、デフォルトは
1になります。例
spec: replicas: 2
ロードバランシングの設定
spec.loadBalancer型: オブジェクト
mongod(またはmongos)とmongotの間の L7 負荷分散の構成。このフィールドは、spec.replicasが1より大きい場合に必要です。spec.replicasが1の場合、このフィールドは任意です。後でスケールアップするために、単一のmongotインスタンスに対してもロードバランサーを構成できます。正確に
managedまたはunmanagedの 1 つを設定する必要があります。ロードバランサーは、
mongodクライアントが表示する TLS 証明書と、それらの証明書に含める必要があるホスト名に影響します。ロードバランサーがない場合、
mongodはmongotに直接接続します。mongodに提示される TLS 証明書はmongotの証明書です。MongoDBクラスターがKubernetesの外部にある場合、mongotサービスは外部ドメインに公開されます。その外部ドメインは、mongotTLS 証明書の SAN(サブジェクト代替名)フィールドに含める必要があります。マネージド ロードバランサー(
spec.loadBalancer.managed)では、Envy プロキシはmongotに直接接続する唯一のコンポーネントです。Envy は、内部ヘッドレス サービス FQDN を使用してmongotポッドに到達します。レプリカセット:
<pod>.<name>-search-svc.<ns>.svc.cluster.localシャーディングされたクラスター:
<pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local
SANフィールドにこれらのクラスター ローカル ドメインを使用して
mongotTLS 証明書を発行します。ワイルドカード証明書を使用すると、mongotポッドの数が変更されたときに証明書が再発行されないようにできます。外部のmongodプロセスは Envy プロキシの TLS 証明書を参照するため、mongot証明書ではなく Envy 証明書の SAN に外部ドメインを含めます。
Tip
最初に単一の
mongotポッドを配置する場合でも、マネージド ロードバランサーを有効にします。ロードバランサーが設定されている状態で、後でspec.replicasを増やすアップしても、TLS 証明書内のドメインは安定したままになります。これは、ロードバランサーがmongodとmongotの間にすでに存在するためです。
spec.loadBalancer.managed型: オブジェクト
演算子がEnvoyロードバランサーをマネージド構成します。Kubernetes 演算子は、正しいルーティング、mTLS、 HTTP/2+gRPC ストリームの固定を使用して Envy プロキシ を配置しますおよび管理します。デフォルトを使用するには、このフィールドを空のオブジェクト(
{})に設定します。このフィールドは
spec.loadBalancer.unmanagedと排他関係にあります。例
spec: loadBalancer: managed: {}
spec.loadBalancer.managed.externalHostname型: string
Envy プロキシが受信リクエストの SNI 一致を要求するホスト名。Kubernetes 演算子 はこの値を使用して、受信
mongod接続からの TLS SNIフィールドに一致するルーティング ルールを構成します。Envy TLSサーバー証明書の SAN(サブジェクト代替名)フィールドにこのホスト名を含める必要があります。クラスターの場合、 値にはKubernetes 演算子がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があります。各シャードには一意のホスト名が付けられます。Envy TLSサーバー証明書には SAN 内のすべての展開されたシャード ホスト名を含める必要があります。ワイルドカード証明書 を使用すると、すべてのシャードを単一の証明書でカバーし、シャードが追加されたときに再発行を回避できます。このフィールドは、 MongoDBが外部マネージドされている場合( Kubernetes 演算子 によって配置されていない場合)に必要です。MongoDB が同じクラスターで演算子によって管理されている場合は、 Kubernetes Operator がルーティングを自動構成するため、このフィールドを省略します。
例
# Replica set with external MongoDB spec: loadBalancer: managed: externalHostname: "search.apps.example.com" # Sharded cluster with external MongoDB spec: loadBalancer: managed: externalHostname: "{shardName}.search.example.com"
spec.loadBalancer.managed.resourceRequirementsタイプ: Core/v1/ResourceRequirements
Envyコンテナがリクエスト、制限することができる CPU とメモリ。この設定を指定すると、 Kubernetes Operator はデフォルトを完全に置き換えます。
省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi 例
spec: loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.loadBalancer.managed.deployment型: オブジェクト
Kubernetes演算子が 演算子が作成した 環境への配置 にマージする上書き。MongoDBリソースで
spec.statefulSetと同じ規則に従います。省略した場合、 Kubernetes演算子は環境配置にデフォルトを使用します。このオブジェクトには 2 つのフィールドが含まれています。
metadataには、 Kubernetes演算子が 環境配置メタデータにマージするlabelsフィールドとannotationsフィールドが含まれています。spec— apps/v1/DeploymentSpecオブジェクト。Kubernetes 演算子はこれらのオーバーライドを Envy 配置 仕様にマージします。
例
spec: loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.loadBalancer.unmanaged型: オブジェクト
ユーザー提供の(独自の) L7 ロードバランサーを構成します。ロードバランサーの外部での配置と構成は、ユーザーの責任となります。
このフィールドは
spec.loadBalancer.managedと排他関係にあります。
spec.loadBalancer.unmanaged.endpoint型: string
host:port形式の BIO ロードバランサーの エンドポイントとなる接続されたデバイス。Kubernetes 演算子は、この値をmongotHostとsearchIndexManagementHostAndPortとしてmongod構成に書込みます。このフィールドは、 Kubernetes Operator がMongoDBの配置をマネージドしている場合にのみ必要です(
spec.source.mongodbResourceRefを使用)。Kubernetes Operatorはmongodパラメータを構成するためにエンドポイントが必要であるためです。ロードバランサーとMongoDB の両方が外部( Kubernetes 演算子 によって管理されていない)の場合、mongodパラメータを自分で構成するため、このフィールドは必須ではありません。シャーディングされたクラスターの場合、 値にはKubernetes Operator がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があります。例
# Replica set example spec: loadBalancer: unmanaged: endpoint: "search-lb.corp.example.com:443" # Sharded cluster example spec: loadBalancer: unmanaged: endpoint: "{shardName}-lb.corp.example.com:443"
リソースのプロビジョニングの設定
spec.resourceRequirementsタイプ: Core/v1/ResourceRequirements
mongodb-searchコンテナがリクエスト、制限する CPU とメモリ。spec.statefulSetで上書きするのではなく、このフィールドを使用してリソース割り当てをカスタマイズすることをおすすめします。spec.jvmFlagsでJVMヒープ サイズをオーバーライドしない場合、 Kubernetes Operator はデフォルトのヒープサイズ(-Xmx)をmongotポッドで使用可能なメモリの 50% に設定します。ポッド リソースとJVMヒープ サイズの両方を制御するには、それに応じてspec.resourceRequirementsを調整します。省略した場合、 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.prometheus型: オブジェクト
これは、v1.6 以降でのみ使用できます。
Prometheus メトリクス エンドポイントとなる接続されたデバイスを有効にする構成。省略した場合、
mongotのメトリクス エンドポイントとなる接続されたデバイスは無効になります。デフォルトポート(9946)で Prometheus メトリクス エンドポイントとなる接続されたデバイスを有効にするには、spec.prometheusフィールドに空の{}オブジェクトを指定します。ポートを変更するには、spec.prometheus.portフィールドに設定します。
spec.prometheus.port型: string
Prometheus メトリクス エンドポイントとなる接続されたデバイスを有効にするポート。デフォルトでは、Prometheus メトリクス エンドポイントとなる接続されたデバイスはポート
9946で有効になっています。
自動埋め込みの設定
重要
自動埋め込みは、 MongoDB Community Edition 配置でのみプレビュー機能として利用できます。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。「プレビュー機能」を参照してください。
spec.autoEmbedding型: オブジェクト
spec.autoEmbedding.embeddingModelAPIKeySecret型: オブジェクト
埋め込みモデルプロバイダーAPIキーの構成。自動埋め込みを有効にするには、2 つのキーを作成する必要があります。1 つはコレクション内のデータのインデックス時に埋め込みを生成するため、もう 1 つはクエリテキストのクエリ時に埋め込みを生成するためです。キーをまだ持っていない場合は、Atlas の 2 つのプロジェクトからキーを作成することをお勧めします。Atlas UIから Atlas プロジェクトのキーを作成する方法について詳しくは、 APIキーの管理 を参照してください。
spec.autoEmbedding.embeddingModelAPIKeySecret.name型: string
mongotがインデックス時とクエリ時に埋め込みを生成するために使用する必要がある埋め込みモデルAPIキーを含むシークレットの名前。
spec.autoEmbedding.providerEndpoint型: string
埋め込みを生成するための埋め込みモデルエンドポイントURL。値は、Atlas UIからキーを作成するか(推奨)、埋め込みサービスから直接キーを作成するか(Voyage AI)によって異なります。次から作成されたキーの場合。
Atlas UI、値は
https://ai.mongodb.com/v1/embeddings(デフォルト)Voyage AI、値は
https://api.voyageai.com/v1/embeddings
JVM構成の設定
spec.jvmFlagsタイプ: 文字列の配列
mongotプロセスに渡されるJVMフラグ。Kubernetes演算子は、--jvm-flags "<all flags space-separated>"を使用するmongotスタートアップコマンドに変更せずに フラグを含めます。このフィールドに
-Xmsまたは-Xmxを指定しない場合、 Kubernetes Operator は両方をspec.resourceRequirements.requests.memoryの半分に設定して、ヒープサイズを自動計算します。リソース要件を指定しない場合、 Kubernetes 演算子はデフォルトの 4Gi メモリリクエストを使用し、約-Xmx2048m -Xms2048mを生成します。独自の
-Xmsまたは-Xmx値を指定すると、 Kubernetes 演算子 はそれらを使用し、値を上書きしません。Kubernetes Operator は、演算子によって計算されたフラグの後に、指定したフラグを常に追加します。「mongot のハードウェア サイズ」を参照してください。
例
spec: jvmFlags: - -Xms2g - -Xmx2g
その他の設定
spec.version型: string
mongodb-searchdocker イメージのバージョン。省略した場合、 Kubernetes 演算子は MongoDBSearch の最新バージョンを自動的に選択します。Kubernetes 演算子のバージョンがアップグレードされるときに、自動アップグレードを防止するために明示的に設定することができます。
spec.statefulSetタイプ: apps/v1/StatefulSet
ポッドを配置するために作成された
mongotAtlas App Services の仕様で、 Kubernetes演算子 が適用する設定を上書きします。上書きは常に最後に適用されます。spec.statefulSet.specフィールドとspec.statefulSet.metadataフィールドの両方をサポートします。注意
spec.statefulSetを使用してリソース要件や永続性設定を設定しないでください。代わりに、それぞれspec.resourceRequirementsとspec.persistenceフィールドを使用してください。
ステータス フィールド
Kubernetes 演算子 は、 MongoDBSearchリソースの statusフィールドにステータス情報を報告します。
status.loadBalancer型: オブジェクト
演算子が管理するロードバランサー(Env)のステータス。このフィールドは、
spec.loadBalancer.managedが設定されている場合にのみ存在します。
status.loadBalancer.phase型: string
マネージド ロードバランサーの現在のフェーズ。指定できる値は、
Pending、Running、Failedなどです。Kubernetes 演算子は、メインのstatus.phaseとは独立してこのフェーズを報告するため、Env の配置を個別にモニターできます。このフィールドは、
LOADBALANCER列の下のkubectl get出力にも表示されます。例
kubectl get mdbs NAME PHASE VERSION LOADBALANCER AGE mdb-rs-ext-lb-search Running 0.64.0 Running 14m