MongoDBSearch カスタム リソースを使用すると、Kubernetes で MongoDB データベース配置と一緒に MongoDB Search とベクトル検索ノードを配置できます。MongoDBSearch リソースは、MongoDB 配置からデータを同期することで、全文検索機能とセマンティック検索機能を提供する mongot プロセスを配置します。
MongoDB Search とベクトル検索の配置について詳しくは、「MongoDB Search とベクトル検索を配置する」を参照してください。
例
次の例は、 MongoDBSearchカスタム リソースのリソース仕様を示しています。
注意
この例は機能する構成ではありません。参照のために、すべての使用可能なフィールドにサンプル値が入力されています。一部のフィールドは互いに排除され、一部のフィールドは他のフィールドより優先されます(例えば、source.externalはsource.mongodbResourceRefより優先されます)。有効な組み合わせについては、以下のフィールドの説明を参照してください。
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
必要なMongoDBSearch リソース設定
このセクションでは、すべての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リソースの一意の識別子。名前は有効な Kubernetes DNS サブドメイン名である必要があります。名前は短くしてください。Kubernetes Operator は、作成する Kubernetes リソースの名前をそれから引き出します。例えば、{name}-search-{clusterIndex}-{shardName}です。Kubernetes Operator は、生成されたすべての名前がラベルの Kubernetes DNS 制限である 63 文字、サブドメイン名の 253 文字に収まることを検証します。spec.clustersタイプ: オブジェクトの配列
MongoDBSearchリソースの Kubernetes クラスターごとの配置構成。このフィールドは必須であり、少なくとも 1 つのエントリと多くとも 50 つのエントリを含む必要があります。単一クラスター配置の場合は 1 つのエントリ、またはマルチクラスター配置でmongotポッドを実行する各 Kubernetes クラスターに 1 つのエントリを指定します。nameおよびindexを含む全フィールドの参照については、クラスター配置設定 を参照してください。
任意のMongoDBSearch リソース設定
MongoDBSearchカスタム リソースは、次の設定を使用できます。
データソース設定
spec.source型: オブジェクト
mongotのMongoDBソースを記述する設定。ソースはレプリカセットとシャーディングされたクラスターにすることができます。この設定は、次の場合に必要です。MongoDBは外部ですMongoDBは とは異なる名前を持ちますMongoDBSearch
MongoDBSearchリソースは常に MongoDB 配置に接続されている必要があります。MongoDBまたはMongoDBCommunityCRD とともに Kubernetes Operator を使用して配置し、かつspec.sourceが空の場合、Kubernetes Operator はmetadata.nameに基づいて次のコマンドを使用して Kubernetes 内のデータベースを検索します。同じ名前空間で、
MongoDBSearchのmetadata.nameに設定した名前と同じ名前のMongoDBまたはMongoDBCommunityリソースを見つけます。<MongoDBSearch.metadata.name>-<username>-passwordシークレットからmongotユーザーのパスワード シークレットを見つけます。デフォルトのユーザー名の場合は<MongoDBSearch.metadata.name>-search-sync-source-passwordになります。
spec.source.mongodbResourceRef.name型: string
この MongoDB Search およびベクトル検索リソースに関連付ける
MongoDBまたはMongoDBCommunityリソースの名前。Kubernetes Operator は、レプリカセットとシャーディングされたクラスターの両方をサポートしています。同じMongoDBまたはMongoDBCommunityリソースを参照するMongoDBSearchリソースを複数持つことはできません。このフィールドは、
MongoDBまたはMongoDBCommunityリソースが同じ Kubernetes クラスターに配置され、かつMongoDBSearchリソースと同じ名前空間にある場合にのみ使用します。データベースが Kubernetes 外に配置されている場合、または別の名前空間にある場合は、spec.source.externalを使用してデータベースへの接続を構成します。両方のフィールドを設定すると、spec.source.externalが優先されます。省略した場合、Kubernetes 演算子は、この
MongoDBSearchリソースと同じ名前を持つMongoDBまたはMongoDBCommunityリソースを検索します。spec.source.mongodbResourceRef.namespace型: string
spec.source.mongodbResourceRef.nameが参照するMongoDBまたはMongoDBCommunityリソースの名前空間。Kubernetes 演算子は現在このフィールドを無視し、常にMongoDBSearchリソースの名前空間を使用します。クロス名前空間参照はサポートされていません。データベースが別の名前空間にある場合は、spec.source.externalを使用します。spec.source.username型: string
mongodでmongotを認証するために使用するユーザー名。指定されたユーザーにはsearchCoordinatorロールが必要です。省略した場合、Kubernetes演算子はユーザー名がsearch-sync-sourceであると想定します。spec.source.passwordSecretRef.name型: string
mongotがmongodで認証するために使用する必要があるパスワードを含むシークレットの名前。省略した場合、デフォルトは<MongoDBSearch.metadata.name>-<username>-passwordになります。ここで<username>はspec.source.usernameの値です。デフォルトのユーザー名search-sync-sourceの場合、これは<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、spec.source.tlsと相互に排他的です。x509 とパスワード認証の両方を指定すると、Kubernetes 演算子は構成を拒否します。spec.source.x509.clientCertificateSecretRef型: オブジェクト
MongoDB同期ソースに認証するための x509クライアント証明書とキーを含むシークレット。シークレット には次のキーが含まれている必要があります。
tls.crt— クライアント証明書tls.key— 秘密キー
秘密キーがパスワードで暗号化されている場合は、パスワードを別の Secret に保存し、
spec.source.x509.keyFilePasswordSecretRefで参照します。spec.source.x509を設定する場合は、このフィールドを指定する必要があります。spec.source.x509.keyFilePasswordSecretRef型: オブジェクト
spec.source.x509.clientCertificateSecretRef内のパスワード暗号化された秘密キーを複号化するパスワードを含むシークレット。シークレットにはkeyFilePasswordキーの下にパスワードを含める必要があります。秘密キーが暗号化されていない場合は、このフィールドを省略します。
SCRAM TLS クライアント証明書設定
spec.source.tls型: オブジェクト
SCRAM(ユーザー名とパスワード)認証を使用する場合、
mongot同期ソース接続の TLS クライアント証明書を構成します。このフィールドを設定すると、mongotはソース MongoDB 配置との TLS ハンドシェイク中にクライアント証明書を提示します(相互 TLS トランスポート)。mongotは、ユーザー名とパスワードを使用して引き続き認証します。このフィールドは SCRAM 認証 (
spec.source.passwordSecretRef) のみで使用します。このフィールドはspec.source.x509と排他関係にあります。クライアント証明書自体を認証資格情報として使用する場合は、代わりにspec.source.x509を使用します。spec.source.tls.clientCertificateSecretRef型: オブジェクト
ソース MongoDB 配置との TLS ハンドシェイク中に
mongotが提示する TLS クライアント証明書とキーを含むシークレット。シークレットには、次のキーが含まれている必要があります。tls.crt— クライアント証明書tls.key— 秘密キー
spec.source.tlsを設定する場合は、このフィールドを指定する必要があります。spec.source.tls.keyFilePasswordSecretRef型: オブジェクト
spec.source.tls.clientCertificateSecretRef内のパスワード暗号化された秘密キーを複号化するパスワードを含むシークレット。シークレットにはkeyFilePasswordキーの下にパスワードを含める必要があります。秘密キーが暗号化されていない場合は、このフィールドを省略します。
外部MongoDB 設定
spec.source.external型: オブジェクト
外部データソースを説明する設定。Kubernetes 演算子を使用して配置されていない外部 MongoDB に接続したい場合のみ、これらの設定を指定します。これらの設定を指定すると、
spec.source.mongodbResourceRefより優先されます。spec.source.external.hostAndPortsタイプ: 文字列の配列
外部レプリカセットのホスト名とポートのリスト。このフィールドは
spec.source.external.shardedClusterと排他関係にあります。レプリカセットソースにはhostAndPortsを使用し、シャーディングされたクラスターソースにはshardedClusterを使用します。spec.source.external.shardedCluster型: オブジェクト
外部のシャーディングされたMongoDBクラスターを
mongotのデータソースとして宣言します。mongosルーターとシャードごとのレプリカセットの構成が含まれます。spec.source.external.shardedCluster.router.hostsタイプ: 文字列の配列
host:port形式のmongosルーター インスタンスのエンドポイントとなる接続されたデバイスのリスト。すべてのmongotインスタンスがこれらのルーターに接続します。少なくとも 1 つのエントリを指定します。spec.source.external.shardedCluster.shardsタイプ: オブジェクトの配列
外部 MongoDB クラスター内のすべてのシャードのリスト。各エントリには、1 つのシャードのレプリカセットが記述されています。Kubernetes 演算子 は、各シャードに 1 つの
mongotStatefulSet を作成します。少なくとも 1 つのシャードエントリを指定します。spec.source.external.shardedCluster.shards[*].shardName型: string
シャードの論理名。名前はすべてのシャードで一意である必要があり、Kubernetes DNS ラベル名のルール (RFC 1123) に準拠している必要があります。小文字の英数字とハイフン (
-) を使用し、英数字で始まり、英数字で終わり、最大長は 63 文字です。ピリオド (.) とアンダースコア (_) は使用できません。Kubernetes 演算子は、
metadata.name、クラスター インデックス、およびshardNameを組み合わせて、作成するKubernetesリソースの名前にします。また、生成されたすべての名前がラベルのKubernetes DNS制限の63文字、サブドメイン名の253文字の範囲内に収まっていることを検証します。shardNameをこれらの制限に収まる程度に短くします。spec.source.external.shardedCluster.shards[*].hostsタイプ: 文字列の配列
このシャードの
mongodレプリカセットのノードのエンドポイントとなる接続されたデバイスのリスト(host:port形式 )。少なくとも 1 つのエントリを指定します。各シャードには独自のmongotインスタンスのグループがあり、そのシャードのレプリカセットからのみデータをソースとします。spec.source.external.keyfileSecretRef型: オブジェクト
mongotが外部 MongoDB 配置に接続するために使用するmongodキーファイルを含むシークレット。nameフィールドは必須です。keyフィールドは任意です。spec.source.external.tls.ca.name型: string
mongodノードで使用される TLS 証明書を発行した証明機関の信頼できるチェーンを含む ConfigMap の名前。この ConfigMap 内のca.crtキーの下に証明書(または証明書チェーン)を指定する必要があります。
クラスター配置設定
次の設定は、必要な spec.clusters 配列の各エントリを説明します。
spec.clustersタイプ: オブジェクトの配列
MongoDBSearchリソースの Kubernetes クラスターごとの配置。このフィールドは必須であり、少なくとも 1 つ、多くても 50 つのエントリが含まれている必要があります。replicas、loadBalancer、resourceRequirements、persistence、jvmFlags、statefulSetなどのすべてのサイズ設定と配置設定は、clustersエントリ内に存在します。これらの設定には、トップレベルの同等のものはありません。単一クラスター配置の場合は、1 つのエントリを指定します。
nameとindexは省略できます。マルチクラスター配置の場合は、
mongotポッドを実行する各 Kubernetes クラスターについて 1 つのエントリを指定します。複数のエントリを指定する場合は、次のルールが適用されます。nameすべてのエントリで必要であり、一意である必要があります。indexすべてのエントリで必要であり、一意である必要があります。MongoDB ソースは外部である必要があります (
spec.source.external)。複数のクラスター配置では、演算子マネージドの MongoDB ソースはサポートされません。すべてのエントリで、演算子によってマネージドされるロード バランサー (
loadBalancer.managed) を構成する必要があります。マルチクラスター配置は、管理されていないロード バランサーをサポートしていません。
Kubernetes 演算子は、CRD 検証ルールと調合時の検証を通じてこれらのルールを強制します。
spec.clusters[].name型: string
このエントリの Kubernetes クラスター名。最大長さは 253 文字です。単一クラスター配置の場合、このフィールドは省略できます。
spec.clustersに複数のエントリが含まれる場合、nameが必要であり、エントリ間で一意である必要があります。リソースの作成後は変更できません。spec.clusters[].indexタイプ: 整数
このエントリの Kubernetes クラスターの安定した整数識別子。値は
0から999の間であり、エントリ間で一意である必要があります。spec.clustersに複数のエントリが含まれる場合、すべてのエントリでindexが必要です。Kubernetes 演算子には、このクラスターエントリのために作成される Kubernetes リソースの名前にインデックスが含まれます。例えば、StatefulSets の場合は
{name}-search-{index}、Services の場合は{name}-search-{index}-svc、ConfigMaps の場合は{name}-search-{index}-configです。シャーディングされたクラスターソースの場合、名前にはシャード名も含まれます。例{name}-search-{index}-{shardName}と{name}-search-{index}-{shardName}-svcです。警告
既存のエントリの
indexを変更しないでください。インデックスはリソース名の一部であるため、変更すると Kubernetes 演算子は新しいインデックスの下に新しいリソースを作成し、古いインデックスのリソースを孤立させます。これは、プロキシサービス ({name}-search-{index}[-{shardName}]-proxy-svc)、Envoy 配置と ConfigMap ({name}-search-lb-{index})、ロードバランサー証明書シークレット、およびメトリクスフォワーダーリソース ({name}-search-metrics-forwarder-{index})を含む、インデックスを持つすべてのリソースに適用されます。単一クラスター配置の場合は、このフィールドを省略できます。この場合、デフォルトは
0になります。ただし、各ノード Kubernetes クラスターで固有の Kubernetes 演算子インスタンスを実行する場合は、各クラスターのMongoDBSearchリソースでindexを明示的に個別の値に設定します。個別のインデックスにより、生成されたホスト名とリソース名がクラスター間で衝突することがなくなります。
サイズ設定とストレージ
spec.clusters[].replicasタイプ: 整数
この Kubernetes クラスターに配置する
mongotポッドの数。レプリカセットの場合、これはmongotポッドの合計数です。シャーディングされたクラスターの場合、これはシャードごとのmongotポッドの数です。spec.clusters[].replicasが1より大きい場合は、mongodと複数のmongotインスタンス間でトラフィックをルーティングするようにspec.clusters[].loadBalancerも構成する必要があります。spec.clusters[].replicasを0に設定すると、Kubernetes 演算子 はこのクラスターのmongot配置をオフラインにします。Kubernetes 演算子 は StatefulSet をゼロポッドに増やし、MongoDBSearchリソースとその他の Kubernetes リソースを所定の場所に保持します。省略した場合、デフォルトは
1になります。spec.clusters[].resourceRequirementsタイプ: Core/v1/ResourceRequirements
mongodb-searchコンテナがリクエストできる CPU とメモリ、および制限される CPU とメモリ。省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。
requests: cpu: 2 memory: 4Gi spec.clusters[].resourceRequirements.limits型: オブジェクト
mongodb-searchコンテナが消費できるリソース、CPU 、メモリの上限。デフォルトでは、制限は設定されていません。spec.clusters[].resourceRequirements.requests型: オブジェクト
mongodb-searchコンテナに要求される CPU とメモリの量。cpuまたはmemoryのいずれか一方のみを指定した場合、Kubernetes 演算子は他方にデフォルト値を適用します。spec.clusters[].persistence.single型: オブジェクト
MongoDB Search とベクトル検索のインデックスが保存される永続化ボリュームのストレージ構成。各検索インスタンス (pod) は独自の独立したストレージを持っています。
スカラーデータ型説明labelSelectorstring
storagestring
マウントする必要がある永続ボリュームの最小サイズ。デフォルト値は
16Gです。storageClassstring
Persistent Volume Claim で指定されたストレージの種類。
MongoDBSearchすべてのデータに1つのボリュームを使用するsingle持続モードのみをサポートします。CRD スキーマにはspec.clusters[].persistence.multipleフィールドも含まれていますが、Kubernetes Operator はこれを適用しません。persistenceを省略すると、Kubernetes Operator はspec.clusters[].persistence.single.storageを16Gに設定します。
ロード バランシング
spec.clusters[].loadBalancer型: オブジェクト
mongod(またはmongos) とmongotの間の L7 ロード バランシングの構成。spec.clusters[].replicasが1より大きい場合、このフィールドは必須です。正確に
managedまたはunmanagedの 1 つを設定する必要があります。spec.clusters内のすべてのエントリは、ロード バランサー モードに同意する必要があります。すべてのエントリでloadBalancer.managedを設定するか、すべてのエントリでloadBalancer.unmanagedを設定するか、またはどのエントリもloadBalancerを設定しないかのいずれかです。Kubernetes Operator はミックス モードを拒否します。マルチクラスター配置はマネージド モードのみをサポートします。spec.clusters[].loadBalancer.managed型: オブジェクト
演算子マネージド型のEnvoy ロード バランサーを構成します。このフィールドは
spec.clusters[].loadBalancer.unmanagedと排他的です。シャーディングされたクラスターソースの場合は、マネージドロードバランサーを使用する場合は
spec.security.tlsも構成する必要があります。Envoy プロキシは、TLS を必要とする SNI を使用して正しいシャードにトラフィックをルーティングします。spec.clusters[].loadBalancer.managed.externalHostname型: string
受信リクエストの SNI マッチングに Envoy プロキシが期待するホスト名。Envoy TLS サーバー証明書には、このホスト名を SAN (サブジェクト代替名)フィールドに含める必要があります。
シャーディングされたクラスターソースの場合、値には Kubernetes Operator がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があります。各シャードには固有のホスト名があり、Envoy TLS サーバー証明書には、展開されたすべてのシャードホスト名が SAN に含まれている必要があります。レプリカセットソースの場合、{shardName}プレースホルダーは使用しないでください。このフィールドは、 MongoDBが外部マネージドされている場合( Kubernetes 演算子 によって配置されていない場合)に必要です。MongoDB が同じクラスターで演算子によって管理されている場合は、 Kubernetes Operator がルーティングを自動構成するため、このフィールドを省略します。
複数のクラスター配置では、各クラスターエントリは通常、独自のホスト名を使用します。ただし、Kubernetes Operator は、複数のクラスターで 1 つのホスト名の共有を許可します。例えば、複数のクラスターの Envoy プロキシの前面にアベイラビリティーゾーンにまたがるフェイルオーバープロキシがある場合です。
spec.clusters[].loadBalancer.managed.routerHostname型: string
mongosルーターがマネージド Envoy ロードバランサーを介してこのクラスターのmongotインスタンスにアクセスするためのエンドポイントで、host:port形式です。Kubernetes Operator は、クラスター レベルのルーティング チェーンでの SNI マッチングにホスト名を使用するため、Envoy TLS サーバー証明書にはこのホスト名を SAN に含める必要があります。外部のシャーディングされた MongoDB ソース (
spec.source.external.shardedCluster)でマネージドロード バランサーを使用する場合、このフィールドが必要になります。Kubernetes 演算子は、レプリカセット ソースおよび演算子マネージド MongoDB についてはこのフィールドを無視します。externalHostnameとは異なり、Kubernetes 演算子はこの値をそのまま使用します。したがって、値に{shardName}プレースホルダーを含めることはできません。このエンドポイントは、mongosのシャードに依存しないエントリポイントです。spec.clusters[].loadBalancer.managed.replicasタイプ: 整数
この Kubernetes クラスターに配置する Envoy プロキシのポッド数。値は
1以上である必要があります。省略された場合、デフォルトは1になります。spec.clusters[].loadBalancer.managed.resourceRequirementsタイプ: Core/v1/ResourceRequirements
Envyコンテナがリクエスト、制限することができる CPU とメモリ。この設定を指定すると、 Kubernetes Operator はデフォルトを完全に置き換えます。
省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi spec.clusters[].loadBalancer.managed.deployment型: オブジェクト
Kubernetes 演算子が演算子によって作成されたEnvoy 配置にマージする上書き。このオブジェクトには、
labelsとannotationsを含むmetadataフィールドと、apps/v1/DeploymentSpec オブジェクトを含むspecフィールドが含まれています。spec.clusters[].loadBalancer.managed.retryPolicy型: オブジェクト
Envoy プロキシがアップストリーム
mongotインスタンスへの個別の gRPC ストリームに適用する再試行動。Envoy プロキシは、失敗した試行とは異なるmongotホストに各再試行を送信します。このフィールドを省略すると、Envoy プロキシはデフォルト値で再試行します。デフォルト値は、トライごとのタイムアウトが
60sの場合に2回再試行するというものです。spec.clusters[].loadBalancer.managed.retryPolicy.numRetriesタイプ: 整数
リクエストごとの最大再試行回数。値は
1以上である必要があります。省略すると、リクエストごとに合計 3 回の試行が許可される2がデフォルトに設定されます。spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeout型: string
元のリクエストを含む各個の試行のタイムアウトを期間 string として表示します(例:
"30s")。省略された場合、デフォルトは"60s"になります。spec.clusters[].loadBalancer.managed.minMongotReadyReplicasタイプ: 整数
mongotグループ (例えば、1 シャードのmongotインスタンス)が Envoy プロキシがトラフィックをルーティングする前に持つ必要がある、準備できているmongotレプリカの最小数。グループがこのスレッショルを下回っている間、Envoy プロキシはそのグループ宛てのトラフィックを正常なmongotグループに転送し、リクエストをrouted_from_another_shardヘッダーでマークします。これらのリクエストはエラーではなく、空の結果を返します。値は
1以上である必要があります。省略された場合、デフォルトは1になります。spec.clusters[].loadBalancer.unmanaged型: オブジェクト
ユーザー提供の (Bring Your Own) L7 ロードバランサーを構成します。このフィールドは
spec.clusters[].loadBalancer.managedと排他関係にあります。マルチクラスター配置は、管理外のロードバランサーをサポートしません。spec.clusters[].loadBalancer.unmanaged.endpoint型: string
host:port形式の BYO ロード バランサーのエンドポイントとなる接続されたデバイス。spec.clusters[].loadBalancer.unmanagedを構成する場合は、このフィールドを指定する必要があります。Kubernetes Operator が MongoDB 配置を管理する場合(
spec.source.mongodbResourceRefを使用)、Kubernetes Operator はこの値をmongod構成にmongotHostとsearchIndexManagementHostAndPortとして書き込みます。外部のシャーディングされたクラスターソースの場合、値には Kubernetes Operator がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があり、プレースホルダー以外の内容も含まれている必要があります。外部のレプリカセットソースの場合、値に{shardName}プレースホルダーを含めることはできません。
シャードごとの上書き
spec.clusters[].shardOverridesタイプ: オブジェクトの配列
クラスターのデフォルトとは異なり、このクラスターエントリ内の特定のシャードのサイズを変更するオーバーライド。
このフィールドは、外部のシャーディングされたクラスターソース (
spec.source.external.shardedCluster) のみで使用できます。参照する各シャード名はspec.source.external.shardedCluster.shards[*].shardNameに存在する必要があり、各シャードはクラスターエントリーごとに最大 1 回だけ上書きできます。各オーバーライドには必須の
shardNamesリスト (少なくとも 1 つのエントリ)と任意のreplicas、resourceRequirements、persistence、jvmFlags、statefulSetフィールドが含まれます。オーバーライドでreplicas、resourceRequirements、persistence、jvmFlagsを設定すると、名前付きシャードのクラスター値が置き換えられます。jvmFlagsは、空でないリストに設定した場合にのみクラスター値を置き換えます。Kubernetes Operator は、statefulSetをクラスター値にディープマージします。設定されていないフィールドはクラスター値を継承します。
同期ソースの選択
spec.clusters[].syncSourceSelector.matchTagSetsタイプ: オブジェクトの配列
レプリカセットタグにより同期ソース
mongodノードを選択するレプリカセットタグセットの順序付きリスト。Kubernetes Operator は、リストをmongot構成に渡します。mongotは、最初に一致するタグセットが選択したノードから同期し、セカンダリノードを優先します。各エントリは、タグ名とタグ値のマップです。空のドキュメント (
{})はどのノードにもマッチするため、前のタグセットがマッチしない場合のマッチオールのフォールバックとして末尾の{}エントリを追加できます。最大50エントリを指定できます。
JVM Flags
spec.clusters[].jvmFlagsタイプ: 文字列の配列
mongotプロセスに渡される JVM フラグ。各フラグは-X、-XX:、または-Dで始まる必要があり、空白を含むことはできません。使用できるのは英数字と.、_、+、:、-、=の文字のみです。Kubernetes 演算子は、これらのルールに一致しないフラグを拒否します。このフィールドに
-Xmsまたは-Xmxを指定しない場合、Kubernetes 演算子は両方をspec.clusters[].resourceRequirements.requests.memoryの半分に設定することでヒープサイズを自動計算します。リソース要件を指定しない場合、Kubernetes Operator はデフォルトの 4Gi メモリリクエストを使用し、約-Xmx2048m -Xms2048mを生成します。Kubernetes Operator は、常に演算子によって計算されたフラグの後に提供されたフラグを追加します。
StatefulSet の上書き
spec.clusters[].statefulSet型: オブジェクト
Kubernetes 演算子が
mongotポッドを配置するために作成する StatefulSet の上書き。このオブジェクトには、labelsおよびannotationsを含むmetadataフィールドと、apps/v1/StatefulSetSpec オブジェクトを含むspecフィールドが含まれます。Kubernetes 演算子は常に上書きを最後に適用するため、Kubernetes 演算子が計算する設定が上書きされます。注意
spec.clusters[].statefulSetを使用してリソース要件や永続性設定を設定しないでください。代わりに、それぞれspec.clusters[].resourceRequirementsとspec.clusters[].persistenceフィールドを使用してください。
mongot詳細設定
spec.clusters[].advancedMongotConfigs型: オブジェクト
このクラスターエントリの高度な
mongot設定。Kubernetes 演算子は、mongot構成ファイルのadvancedConfigsキーの下の値を、読み取りまたは変更せずにそのままレンダーします。このフィールドは、MongoDBSearchリソースがファーストクラスフィールドとして公開していないmongot設定にのみ使用します。
セキュリティ設定
spec.security型: オブジェクト
mongotlistenサーバーのセキュリティ設定。spec.security.tls型: オブジェクト
mongotの TLS 設定。省略した場合、mongotは受信接続に TLS を使用しません。シャーディングされたクラスターソースでマネージドロードバランサーを使用する場合、このフィールドは必須です。Envoy プロキシは、TLS ClientHello に依存する SNI を使用して正しいシャードにトラフィックをルーティングします。この構成で
spec.security.tlsを省略すると、Kubernetes 演算子は調和に失敗します。spec.security.tls.certificateKeySecretRef.name型: string
バージョン 1.8.0 から非推奨になりました。 : 代わりに
spec.security.tls.certsSecretPrefixを使用してください。秘密キー(
tls.key)と証明書(tls.crt)を含む同じ名前空間内の TLS シークレットの名前。Kubernetes 演算子は、下位互換性のためにレプリカセットの配置でこのフィールドを引き続きサポートします。シャーディングされたクラスターの配置の場合、Kubernetes 演算子は、単一のシークレット参照ではシャードごとの証明書をカバーできないため、検証中にこのフィールドを拒否します。spec.security.tls.certsSecretPrefix型: string
Kubernetes Operator が命名規約により TLS シークレット名を導出するために使用する接頭辞。このフィールドを設定すると、Kubernetes Operator は次のパターンに従ってシークレットを検索します。
コンポーネントシークレット名パターンレプリカセットの
mongotサーバー証明書{certsSecretPrefix}-{name}-search-certシャーディングされた
mongot証明書(クラスターおよびシャードごと){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certマネージド ロードバランサーサーバー証明書(クラスターごと、すべてのトポロジ)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certマネージド ロードバランサークライアント証明書
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certKubernetes Operatorは、すべてのトポロジーについて、クラスターごとに1つのマネージド ロード バランサー サーバー サーティフィケートを使用します。シャーディングされたクラスターの場合、このサーティフィケートのSANには、
externalHostnameとrouterHostnameからの拡張されたすべてのシャード ホスト名が含まれている必要があります。Kubernetes Operator は、次の順序で
mongotサーバー証明書の秘密名を解決します。spec.security.tls.certificateKeySecretRef.nameを設定すると、Kubernetes 演算子はその名前を使用します。certsSecretPrefixを設定すると、Kubernetes 演算子は前の表の命名パスワードなしを使用します。いずれのフィールドも設定しない場合、Kubernetes Operator はレプリカセット配置にデフォルト名
{name}-search-cert、シャーディング配置にシャードごとのデフォルトパスワードなし{name}-search-{clusterIndex}-{shardName}-certを使用します。
certsSecretPrefixを設定しない場合、マネージド ロード バランサー証明書にもデフォルト名が使用されます。Kubernetes Operator は、サーバー証明書に{name}-search-lb-{clusterIndex}-cert、クライアント証明書に{name}-search-lb-{clusterIndex}-client-certをマウントします。spec.security.tls.keyFilePasswordSecretRef型: オブジェクト
TLS 証明書シークレットのパスワードで暗号化されたサーバーの秘密キーを複号化するパスワードを含むシークレット。シークレットには、
keyFilePasswordキーの下にパスワードが含まれている必要があります。サーバーの秘密キーが暗号化されていない場合は、このフィールドを省略します。
LoggingSettings
spec.logLevel型: string
mongotログの冗長度。値は次のいずれかになります。TRACEDEBUGINFOWARNERROR
省略した場合、デフォルトは
INFOになります。
メトリクス設定
spec.observability.prometheus型: オブジェクト
mongotの Prometheus メトリクスエンドポイントの構成。このフィールドを省略すると、Kubernetes Operator はデフォルトポート9946でメトリクスエンドポイントを有効にします。spec.observability.prometheus.mode型: string
mongotで Prometheus メトリクスエンドポイントを有効または無効にします。値はenabledまたはdisabledになります。省略した場合、デフォルトはenabledになります。spec.observability.prometheus.portタイプ: 整数
Prometheus メトリクス エンドポイントとなる接続されたデバイスを有効にするポート。デフォルトでは、Prometheus メトリクス エンドポイントとなる接続されたデバイスはポート
9946で有効になっています。spec.observability.metricsForwarder型: オブジェクト
Kubernetes Operator が作成して
mongotPrometheus メトリクスをスクレイピングし、MongoDB Ops Manager に転送する配置であるメトリクスフォワーダーの配置。spec.observability.metricsForwarder.mode型: string
Kubernetes Operator がメトリクス フォワーダーを作成するかどうか。値は次のいずれかになります。
auto— Kubernetes Operator は演算子マネージドMongoDB(Ops Manager バックアップ)ソースのフォワーダーを作成します。外部ソースの場合は、spec.observability.metricsForwarder.opsManagerを設定した場合にのみ作成します。MongoDBCommunityソースの場合、Kubernetes Operator はフォワーダーを作成しません。enabled— Kubernetes Operator は常にフォワーダーを作成します。ソースがMongoDBCommunityリソースの場合、Kubernetes Operator はフォワーダーがMongoDBCommunityソースでサポートされていないためエラーを報告します。disabled— Kubernetes 演算子はフォワーダーを作成しません。
省略した場合、デフォルトは
autoになります。enabledモードとautoモードでは、Prometheus エンドポイント (spec.observability.prometheus) を有効にする必要があります。エンドポイントを無効にすると、Kubernetes Operator はInvalidメトリクス フォワーダー ステータスを報告します。spec.observability.metricsForwarder.resourceRequirementsタイプ: Core/v1/ResourceRequirements
メトリクスフォワーダーコンテナがリクエストできる CPU とメモリ、および制限できる CPU とメモリ。省略すると、Kubernetes Operator は
cpu: 100mとmemory: 128Miのリクエスト、cpu: 250mとmemory: 256Miの制限を使用します。spec.observability.metricsForwarder.deployment型: オブジェクト
Kubernetes 演算子が演算子作成のメトリクスフォワーダー配置に統合する上書き設定。このオブジェクトには、
labelsとannotationsを含むmetadataフィールドと、apps/v1/DeploymentSpec オブジェクトを含むspecフィールドが含まれています。spec.observability.metricsForwarder.opsManager型: オブジェクト
メトリクスフォワーダーがメトリクスを送信する対象の MongoDB Ops Manager プロジェクトと認証情報。省略すると、Kubernetes 演算子はソース MongoDB リソースの接続構成からプロジェクトと認証情報を導出します。ソース MongoDB リソースが存在しない外部 MongoDB ソースの場合は、このフィールドを設定します。
このフィールドを設定する場合は、
agentCredentials.name(モンゴDB Ops Manager エージェント API キーを含む Secret) とprojectConfigMapRef.name(モンゴDB Ops Manager プロジェクト構成を含む ConfigMap) の両方を設定する必要があります。
自動埋め込み設定
重要
自動埋め込みは、 MongoDB Community Edition 配置でのみプレビュー機能として利用できます。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。「プレビュー機能」を参照してください。
spec.autoEmbedding型: オブジェクト
コレクション内のテキスト データ用の自動埋め込みの構成。
spec.autoEmbedding.embeddingModelAPIKeySecret.name型: string
mongotがインデックス時とクエリ時に埋め込みを生成するために使用する必要がある埋め込みモデルAPIキーを含むシークレットの名前。シークレットには、indexing-keyキーの下にインデックス時キー、query-keyキーの下にクエリ時キーを含める必要があります。embeddingModelAPIKeySecretは、spec.autoEmbedding.providerEndpointが演算子管理のセルフホスト型 Voyage AI 埋め込みサービスを指す場合にのみ省略できます。そうでない場合、Kubernetes Operator には必要です。spec.autoEmbedding.providerEndpoint型: string
埋め込みを生成するための埋め込みモデルエンドポイント URL。
機能フラグ設定
spec.featureFlags型: オブジェクト
mongotの機能フラッグ。フラッグをtrueに設定すると、Kubernetes 演算子はそれをmongot構成にレンダーします。featureFlagsオブジェクトまたは個別のフラッグを省略すると、そのフラッグのスキーマデフォルトが適用されます(enableOverloadRetrySignalの場合はtrue)。spec.featureFlags.enableOverloadRetrySignalタイプ: ブール値
mongotオーバーロード再試行シグナルを有効にします。このフラッグを有効にすると、mongotは gRPCRESOURCE_EXHAUSTED応答を介してアップストリームプロキシにロードシェッディングをシグナル送信します(演算子マネージド Envoy ロードバランサーなど)。その後、プロキシは別のmongotインスタンスでリクエストを再試行します。省略した場合、デフォルトは
trueになります。
その他の設定
spec.version型: string
mongodb-searchDocker イメージのバージョン。省略すると、Kubernetes Operator は、バンドルされているデフォルトの MongoDB Search バージョンを使用します。Kubernetes Operator をアップグレードする際の自動アップグレードを防止するため、バージョンを明示的に設定できます。
ステータス フィールド
Kubernetes 演算子は、MongoDBSearchリソースの statusフィールドにステータス情報を報告します。
status.phase型: string
MongoDBSearchリソースの現在のフェーズ。可能な値にはPending、Running、Failed、Disabled、Updated、およびUnsupportedが含まれます。status.message型: string
現在のステータスに関する詳細が記述された人間が読み取りやすいメッセージ。
status.lastTransition型: string
status.phaseの最後の遷移のタイムスタンプ。status.observedGenerationタイプ: 整数
Kubernetes 演算子が最後に処理した
MongoDBSearchリソースの生成。status.warningsタイプ: 文字列の配列
Kubernetes 演算子がリソースに報告する警告。
status.version型: string
Kubernetes 演算子が調整した MongoDB Search のバージョン (
mongot)。status.resourcesNotReadyタイプ: オブジェクトの配列
まだ準備できていない依存する Kubernetes リソース。各エントリには、リソースの
kindとname、任意のmessage、errorsのリストが報告されます。status.pvcタイプ: オブジェクトの配列
mongotStatefulSets の永続ボリューム要求の状態。各エントリには、要求が属するphaseとstatefulsetNameが報告されます。status.loadBalancer型: オブジェクト
演算子が管理するロードバランサー(Envoy)のステータス。このフィールドは、
spec.clusters[].loadBalancer.managedが設定されている場合にのみ存在します。マルチクラスター配置の場合、Kubernetes 演算子はすべてのクラスターの Envoy 配置で最悪のフェーズを報告します。status.loadBalancer.phase型: string
マネージドロードバランサーの現在のフェーズ。指定できる値は、
Pending、Running、Failedです。このフィールドは、LOADBALANCER列の下のkubectl get出力に表示されます。status.loadBalancer.message型: string
マネージドロードバランサーのステータスに関する詳細を含む人間が読み取り可能なメッセージ。
status.metricsForwarder型: オブジェクト
メトリクスフォワーダーのステータス。
status.metricsForwarder.phase型: string
メトリクスフォワーダーの現在のフェーズ。指定できる値は、
Pending、Running、Failedです。spec.observability.metricsForwarder.modeをdisabledに設定すると、フェーズはDisabledを報告します。このフィールドは、METRICSFORWARDER列の下のkubectl get出力に表示されます。status.metricsForwarder.message型: string
メトリクスフォワーダーの状態に関する詳細な人間が読み取り可能なメッセージ。