Kubernetes 演算子 用のMongoDB Controllers を使用して、 MongoDB 8.2 以降と並行してMongoDB Search とベクトル検索を配置できます。
リソース仕様の例
次の例は、 MongoDB Search とベクトル検索 の配置の specオブジェクト内の設定を示しています。これらの設定の詳細については、必要な設定 と オプション設定 を参照してください。
注意
この例は機能する構成ではありません。参照のために、すべての使用可能なフィールドにサンプル値が入力されています。一部のフィールドは互いに排除され、一部のフィールドは他のフィールドより優先されます(例えば、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
必要な設定
このセクションでは、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 リソースの一意の識別子。名前は有効な Kubernetes DNS サブドメイン名である必要があります。名前は短くしてください。Kubernetes 演算子は、例えば
{name}-search-{clusterIndex}-{shardName}のように、作成する Kubernetes リソースの名前をそれから取得します。Kubernetes 演算子は、生成されたすべての名前がラベルの Kubernetes DNS 制限 63 文字、サブドメイン名の 253 文字に収まることを検証します。spec.clustersタイプ: オブジェクトの配列
MongoDBSearch の Kubernetes クラスターごとの配置設定。このフィールドは必須であり、少なくとも 1 つ、多くとも 50 つのエントリを含む必要があります。単一クラスタ配置の場合は 1 つのエントリ、またはマルチクラスタ配置で
mongotポッドを実行する各 Kubernetes クラスターに 1 つのエントリを含む必要があります。nameおよびindexを含むフィールドの全体の参照については、spec.clusters. を参照してください。
オプション設定
このセクションでは、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>-<username>-passwordシークレットからmongotユーザーのパスワード シークレットを見つけます。デフォルトのユーザー名の場合は<MongoDBSearch.metadata.name>-search-sync-source-passwordになります。
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.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を使用します。
ユーザーを構成するための 設定mongot
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: clientCertificateSecretRef: name: mongot-x509-client-cert
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への接続設定
次の設定は、 MongoDB配置への接続を構成する場合にのみ必要です。
spec.source.external型: オブジェクト
外部データソースを説明する設定。このオブジェクトは、外部 MongoDB に接続する MongoDB Search およびベクトル検索リソースの設定を説明します。Kubernetes 演算子を使用して配置されていない外部 MongoDB に接続する場合にのみ、これらの設定を指定します。これらの設定を指定すると、
spec.source.mongodbResourceRefより優先されます。Kubernetes 演算子を使用して同じクラスターに MongoDB をインストールした場合、これらの設定は任意です。
spec.source.external.keyfileSecretRef型: オブジェクト
mongotが外部 MongoDB 配置に接続するために使用するmongodキーファイルを含むシークレット。
spec.source.external.keyfileSecretRef.name型: string
キーファイルを含む Secret の名前。
spec.source.external.keyfileSecretRefを設定する場合は、このフィールドを指定する必要があります。
spec.source.external.keyfileSecretRef.key型: string
キーファイルがシークレットに保存されるキー。このフィールドは任意です。
外部レプリカセットへの接続設定
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 証明書を発行した証明機関の信頼できるチェーンを含む ConfigMap の名前。例
spec: source: external: tls: ca: name: trusted-ca この ConfigMap 内の
ca.crtキーの下に証明書(または証明書チェーン)を指定する必要があります。例
kind: ConfigMap 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.clusters[].replicasで指定されたポッドの数が含まれます。少なくとも 1 つのシャード エントリを指定します。
spec.source.external.shardedCluster.shards[*].shardName型: string
シャードの論理名。Kubernetes 演算子 は、 Kubernetesリソースの名前付け(StateulSets、 Services、 Secrets)にこの名前を使用します。値はMongoDBシャード名とは異なる場合があります。
命名制約:
すべてのシャードで一意である必要があります。
Kubernetes DNS ラベル名のルール(RFC 1123)に準拠する必要があります。このルールでは、小文字の英数字とハイフン(
-)が使用でき、名前は英数字で始まり、末尾も英数字で終わる必要があります。ピリオド(.)とアンダースコア(_)は許可されていません。最大長さは63文字です。Kubernetes Operator は、
metadata.name、クラスター インデックス、およびshardNameを結合して作成する Kubernetes リソースの名前にし、生成されたすべての名前がラベルの Kubernetes DNS 制限 63 文字、サブドメイン名の 253 文字に収まることを検証します(例:{name}-search-{clusterIndex}-{shardName})。これらの制限に収まるよう、shardNameを十分に短くしてください。
例
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.clusters 配列の各エントリを説明します。
spec.clustersタイプ: オブジェクトの配列
MongoDBSearch の Kubernetes クラスターごとの配置設定。このフィールドは必須であり、1 つ以上 50 つ以下のエントリを含める必要があります。
replicas、loadBalancer、resourceRequirements、persistence、jvmFlags、statefulSetなどのすべてのサイジングと配置の設定は、clustersエントリ内にあります。これらの設定には、トップレベルの同等のものはありません。単一クラスター配置の場合は、1 つのエントリを指定します。
nameとindexは省略できます。例
spec: clusters: - {} マルチクラスター配置の場合は、
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: - replicas: 2
spec.clusters[].resourceRequirementsタイプ: Core/v1/ResourceRequirements
mongodb-searchコンテナがリクエスト、制限する CPU とメモリ。spec.clusters[].statefulSetで上書きするのではなく、このフィールドを使用してリソース割り当てをカスタマイズすることをおすすめします。spec.clusters[].jvmFlagsでJVMヒープ サイズをオーバーライドしない場合、Kubernetes Operator はデフォルトのヒープ サイズ(-Xmx)をmongotコンテナのメモリ リクエストの 50% に設定します。ポッド リソースとJVMヒープ サイズの両方を制御するには、それに応じてspec.clusters[].resourceRequirementsを調整します。省略した場合、 Kubernetes演算子は次のデフォルト値を使用します。
requests: cpu: 2 memory: 4Gi
spec.clusters[].resourceRequirements.limits型: オブジェクト
mongodb-searchコンテナが消費できるリソース(CPUとメモリ)の上限。デフォルトでは、制限は設定されていません。省略すると、ポッドは制限されないため、ノード上のすべてのリソースを使用する可能性があります。ワークロードに基づいて制限を設定することをお勧めします。
spec.clusters[].resourceRequirements.requests型: オブジェクト
mongodb-searchコンテナに要求される CPU とメモリの量。cpuまたはmemoryのいずれか 1 つだけを指定した場合、Kubernetes 演算子は他方にデフォルト値を適用します。省略した場合、Kubernetes 演算子は次のデフォルト値を使用します。requests: cpu: 2 memory: 4Gi
spec.clusters[].persistence.single型: オブジェクト
MongoDB Search およびベクトル検索永続ボリュームのストレージ構成。MongoDB Search インデックスとベクトル検索インデックスが保存されます。各検索インスタンス(ポッド)には、インデックスを維持するための独自のストレージがあります。これはMongoDBデータベースとは共有されません。データベース自体には、インデックスメタデータ(定義)のみが保存されます。
スカラーデータ型説明labelSelectorstring
storagestring
storageClassstring
永続ボリューム要求 で指定されたストレージのタイプ。このオブジェクト仕様で使用する前に、このストレージ タイプを StorageClass オブジェクトとして作成できます。
StorageClass
reclaimPolicyを 保持 するように設定します。これにより、永続的なボリューム要求が削除されてもデータが保持されます。MongoDBSearch は、
single持続モードのみをサポートします。これは、すべてのデータに 1 つのボリュームを使用します。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より大きい場合に必要です。spec.clusters[].replicasが1の場合、このフィールドは任意です。後でスケールアップするために、単一のmongotインスタンスに対してもロードバランサーを構成できます。正確に
managedまたはunmanagedの 1 つを設定する必要があります。spec.clusters内のすべてのエントリは、ロード バランサー モードに同意する必要があります。すべてのエントリでloadBalancer.managedを設定するか、すべてのエントリでloadBalancer.unmanagedを設定するか、またはどのエントリもloadBalancerを設定しないかのいずれかです。Kubernetes Operator はミックス モードを拒否します。マルチクラスター配置はマネージド モードのみをサポートします。ロードバランサーは、
mongodクライアントが表示する TLS 証明書と、それらの証明書に含める必要があるホスト名に影響します。ロードバランサーがない場合、
mongodはmongotに直接接続します。mongodに提示される TLS 証明書はmongotの証明書です。MongoDBクラスターがKubernetesの外部にある場合、mongotサービスは外部ドメインに公開されます。その外部ドメインは、mongotTLS 証明書の SAN(サブジェクト代替名)フィールドに含める必要があります。マネージド ロードバランサー(
spec.clusters[].loadBalancer.managed)では、Envoy プロキシはmongotに直接接続する唯一のコンポーネントです。Envoy プロキシは内部サービス FQDN を使用してmongotにアクセスします。レプリカセット:
<name>-search-<clusterIndex>-svc.<ns>.svc.cluster.localシャーディングされたクラスター:
<name>-search-<clusterIndex>-<shard>-svc.<ns>.svc.cluster.local
mongotTLS 証明書の SAN フィールドにこれらのサービス FQDN を含めることをお勧めします。演算子マネージド Envoy プロキシは現在、認証機関に対してのみmongot証明書を検証し、SAN ホスト名と一致しません。外部のmongodプロセスは Envoy プロキシの TLS 証明書を参照するため、外部ドメインをmongot証明書ではなく Envoy 証明書の SAN に含めます。
Tip
最初に単一の
mongotポッドを配置する場合でも、マネージド ロードバランサーを有効にします。ロードバランサーが設定されている状態で、後でspec.clusters[].replicasを増やすアップしても、TLS 証明書内のドメインは安定したままになります。これは、ロードバランサーがmongodとmongotの間にすでに存在するためです。
spec.clusters[].loadBalancer.managed型: オブジェクト
演算子がEnvoyロードバランサーをマネージド構成します。Kubernetes 演算子は、正しいルーティング、mTLS、 HTTP/2+gRPC ストリームの固定を使用して Envy プロキシ を配置しますおよび管理します。デフォルトを使用するには、このフィールドを空のオブジェクト(
{})に設定します。このフィールドは
spec.clusters[].loadBalancer.unmanagedと排他関係にあります。シャーディングされたクラスターソースの場合は、マネージドロードバランサーを使用する場合は
spec.security.tlsも構成する必要があります。Envoy プロキシは、TLS を必要とする SNI を使用して正しいシャードにトラフィックをルーティングします。例
spec: clusters: - loadBalancer: managed: {}
spec.clusters[].loadBalancer.managed.externalHostname型: string
Envy プロキシが受信リクエストの SNI 一致を要求するホスト名。Kubernetes 演算子 はこの値を使用して、受信
mongod接続からの TLS SNIフィールドに一致するルーティング ルールを構成します。Envy TLSサーバー証明書の SAN(サブジェクト代替名)フィールドにこのホスト名を含める必要があります。シャーディングされたクラスターソースの場合、値には Kubernetes Operator がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があります。各シャードには固有のホスト名があり、Envoy TLS サーバー証明書には、展開されたすべてのシャードホスト名が SAN に含まれている必要があります。ワイルドカード証明書を使用すると、単一の証明書ですべてのシャードをカバーでき、シャードの追加時の再発行を回避できます。レプリカセットソースの場合、{shardName}プレースホルダーは使用しないでください。このフィールドは、 MongoDBが外部マネージドされている場合( Kubernetes 演算子 によって配置されていない場合)に必要です。MongoDB が同じクラスターで演算子によって管理されている場合は、 Kubernetes Operator がルーティングを自動構成するため、このフィールドを省略します。
複数のクラスター配置では、各クラスターエントリは通常、独自のホスト名を使用します。ただし、Kubernetes Operator は、複数のクラスターで 1 つのホスト名の共有を許可します。例えば、複数のクラスターの Envoy プロキシの前面にアベイラビリティーゾーンにまたがるフェイルオーバープロキシがある場合です。
例
# Replica set with external MongoDB spec: clusters: - loadBalancer: managed: externalHostname: "search.apps.example.com" # Sharded cluster with external MongoDB spec: clusters: - loadBalancer: managed: externalHostname: "{shardName}.search.example.com"
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のシャードに依存しないエントリポイントです。マルチクラスター配置では、各クラスターエントリは通常、個別の値を使用します。ただし、Kubernetes 演算子では、複数のクラスターの Envoy プロキシの前面にアベイラビリティーゾーンにまたがるフェイルオーバー プロキシがある場合など、クラスター間で 1 つの値を共有できます。
例
spec: clusters: - loadBalancer: managed: externalHostname: "{shardName}.search.example.com" routerHostname: "search-router.example.com:27028"
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: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.clusters[].loadBalancer.managed.deployment型: オブジェクト
Kubernetes演算子が 演算子が作成した 環境への配置 にマージする上書き。MongoDBリソースで
spec.statefulSetと同じ規則に従います。省略した場合、 Kubernetes演算子は環境配置にデフォルトを使用します。このオブジェクトには 2 つのフィールドが含まれています。
metadataには、 Kubernetes演算子が 環境配置メタデータにマージするlabelsフィールドとannotationsフィールドが含まれています。spec— apps/v1/DeploymentSpecオブジェクト。Kubernetes 演算子はこれらのオーバーライドを Envy 配置 仕様にマージします。
例
spec: clusters: - loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicy型: オブジェクト
Envoy プロキシがアップストリーム
mongotインスタンスへの個別の gRPC ストリームに適用する再試行動。Envoy プロキシは、失敗した試行とは異なるmongotホストに各再試行を送信します。このフィールドを省略すると、Envoy プロキシはデフォルト値で再試行します。デフォルト値は、トライごとのタイムアウトが
60sの場合に2回再試行するというものです。例
spec: clusters: - loadBalancer: managed: retryPolicy: numRetries: 2 perTryTimeout: "60s"
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型: オブジェクト
ユーザー提供の(独自の) 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として書き込みます。MongoDB が外部にある場合は、同じ値を使用してmongodパラメータを自分で構成します。外部のシャーディングされたクラスターソースの場合、値には Kubernetes Operator がシャードごとに展開する
{shardName}プレースホルダーが含まれている必要があり、プレースホルダー以外の内容も含まれている必要があります。外部のレプリカセットソースの場合、値に{shardName}プレースホルダーを含めることはできません。例
# Replica set example spec: clusters: - loadBalancer: unmanaged: endpoint: "search-lb.corp.example.com:443" # Sharded cluster example spec: clusters: - loadBalancer: unmanaged: endpoint: "{shardName}-lb.corp.example.com:443"
シャードごとの上書き
spec.clusters[].shardOverridesタイプ: オブジェクトの配列
このクラスターエントリ内の特定のシャードのサイズ設定をクラスターのデフォルトとは異なる方法でオーバーライドします。このフィールドを使用して、個別のシャードにクラスターの他のシャードよりも多くまたは少なく
mongotレプリカ、リソース、またはストレージを付与します。このフィールドは、外部のシャーディングされたクラスターソース (
spec.source.external.shardedCluster) のみで使用できます。参照する各シャード名はspec.source.external.shardedCluster.shards[*].shardNameに存在する必要があり、各シャードはクラスターエントリーごとに最大 1 回だけ上書きできます。オーバーライドで
replicas、resourceRequirements、persistence、jvmFlagsを設定すると、名前付きシャードのクラスター値が置き換えられます。Kubernetes Operator はstatefulSetをクラスター値にディープマージします。設定しないフィールドはクラスター値を継承します。例
spec: clusters: - replicas: 2 shardOverrides: - shardNames: - shard-0 replicas: 3 resourceRequirements: requests: cpu: "4" memory: 8Gi
spec.clusters[].shardOverrides[*].shardNamesタイプ: 文字列の配列
オーバーライドが適用されるこのクラスターエントリ内のシャードの名前。このフィールドは必須であり、少なくとも 1 つのエントリを含む必要があります。
spec.clusters[].shardOverrides[*].replicasタイプ: 整数
名前付きシャードのクラスターの
mongotレプリカカウントを置き換えます。0の値は、これらのシャードのmongotインスタンスをオフラインにします。
spec.clusters[].shardOverrides[*].resourceRequirementsタイプ: Core/v1/ResourceRequirements
クラスターの CPU とメモリのリクエストと名前付きシャードの制限を置き換えます。
spec.clusters[].shardOverrides[*].persistence型: オブジェクト
指定されたシャードのクラスターの永続ボリューム構成を置き換えます。
spec.clusters[].persistenceと同じスキーマを使用します。
spec.clusters[].shardOverrides[*].statefulSet型: オブジェクト
名前付きシャードの StatefulSet オーバーライド。他のオーバーライド フィールドとは異なり、Kubernetes 演算子はこの値をクラスターの
spec.clusters[].statefulSet値に置き換えるのではなく、ディープマージします。
spec.clusters[].shardOverrides[*].jvmFlagsタイプ: 文字列の配列
空でないリストに設定すると、名前付きシャードのクラスターの
spec.clusters[].jvmFlagsが置き換えられます。spec.clusters[].jvmFlagsの形式ルールはこのフィールドにも適用されます。
同期ソースの選択
spec.clusters[].syncSourceSelector型: オブジェクト
このクラスターエントリの
mongotインスタンスがデータを同期するmongodノードを選択します。
spec.clusters[].syncSourceSelector.matchTagSetsタイプ: オブジェクトの配列
レプリカセットタグにより同期ソース
mongodノードを選択するレプリカセットタグセットの順序付きリスト。Kubernetes Operator は、リストをmongot構成に渡します。mongotは、最初に一致するタグセットが選択したノードから同期し、セカンダリノードを優先します。各エントリは、タグ名とタグ値のマップです。空のドキュメント (
{})はどのノードにもマッチするため、前のタグセットがマッチしない場合のマッチオールのフォールバックとして末尾の{}エントリを追加できます。最大50エントリを指定できます。例
spec: clusters: - syncSourceSelector: matchTagSets: - region: us-east-1 workload: search - {}
JVM Flags
spec.clusters[].jvmFlagsタイプ: 文字列の配列
mongotプロセスに渡されるJVMフラグ。Kubernetes演算子は、--jvm-flags "<all flags space-separated>"を使用するmongotスタートアップコマンドに変更せずに フラグを含めます。各フラグは
-X、-XX:、または-Dで始まる必要があります。スペースを含めることはできません。英数字と.、_、+、:、-、=の文字のみを含めることができます。Kubernetes 演算子は、これらのルールに一致しないフラグを拒否します。このフィールドに
-Xmsまたは-Xmxを指定しない場合、 Kubernetes Operator は両方をspec.clusters[].resourceRequirements.requests.memoryの半分に設定して、ヒープサイズを自動計算します。リソース要件を指定しない場合、 Kubernetes 演算子はデフォルトの 4Gi メモリリクエストを使用し、約-Xmx2048m -Xms2048mを生成します。独自の
-Xmsまたは-Xmx値を指定すると、 Kubernetes 演算子 はそれらを使用し、値を上書きしません。Kubernetes Operator は、演算子によって計算されたフラグの後に、指定したフラグを常に追加します。「mongot のハードウェア サイズ」を参照してください。
例
spec: clusters: - jvmFlags: - -Xms2g - -Xmx2g
StatefulSet の上書き
spec.clusters[].statefulSet型: オブジェクト
Kubernetes 演算子が
mongotポッドを配置するために作成する StatefulSet の上書き。Kubernetes 演算子は常に上書きを最後に適用するため、Kubernetes 演算子が計算した設定が上書きされます。このオブジェクトには 2 つのフィールドが含まれています。
metadataには、Kubernetes 演算子が StatefulSet メタデータにマージするlabelsフィールドとannotationsフィールドが含まれます。spec— apps/v1/StatefulSetSpec オブジェクト。Kubernetes 演算子はこれらのオーバーライドを StatefulSet 仕様にマージします。
注意
spec.clusters[].statefulSetを使用してリソース要件や永続性設定を設定しないでください。代わりに、それぞれspec.clusters[].resourceRequirementsとspec.clusters[].persistenceフィールドを使用してください。
mongot詳細設定
spec.clusters[].advancedMongotConfigs型: オブジェクト
このクラスターエントリの高度な
mongot設定。Kubernetes 演算子は、mongot構成ファイルのadvancedConfigsキーの下の値を、読み取りまたは変更せずにそのままレンダーします。このフィールドは、Kubernetes 演算子がmongot構成内の他の場所で生成する設定には影響しません。このフィールドは、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.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-{clusterIndex}-{shardName}-certマネージド ロードバランサーサーバー証明書(クラスターごと、すべてのトポロジ)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certマネージド ロードバランサークライアント証明書
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-cert以下の条件に一致するもの。
{name}は、MongoDBSearchリソースのmetadata.nameです{clusterIndex}インデックスを設定しない単一クラスター配置の場合はspec.clusters[].indexの値(0)です。{shardName}は、次の値です:spec.source.external.shardedCluster.shards[*].shardName
Kubernetes 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をマウントします。注意
シャーディングされたクラスターの配置の場合、Kubernetes 演算子は
certificateKeySecretRefを拒否します。これは、単一のシークレット参照ではシャードごとの証明書をカバーできないためです。certsSecretPrefixを使用するか、いずれのフィールドも設定せず、デフォルトのシャードごとのパスワードなしパターンとデフォルト名のロード バランサー証明書のシークレットを作成します。例
spec: security: tls: certsSecretPrefix: my-prefix
spec.security.tls.keyFilePasswordSecretRef型: オブジェクト
TLS 証明書シークレットのパスワードで暗号化されたサーバーの秘密キーを複号化するパスワードを含むシークレット。シークレットには、
keyFilePasswordキーの下にパスワードが含まれている必要があります。サーバーの秘密キーが暗号化されていない場合は、このフィールドを省略します。
ログ記録の設定
spec.logLevel型: string
mongotログの冗長度。値は次のいずれかになります。TRACEDEBUGINFOWARNERROR
省略した場合、デフォルトは
INFOになります。
メトリクスの設定
spec.observability型: オブジェクト
MongoDBSearch リソースの可視性設定。
mongotの Prometheus メトリクスエンドポイントと MongoDB Ops Manager のメトリクスフォワーダーが含まれます。
spec.observability.prometheus型: オブジェクト
mongotの Prometheus メトリクスエンドポイントの構成。このフィールドを省略すると、Kubernetes Operator はデフォルトポート9946でメトリクスエンドポイントを有効にします。エンドポイントを無効にするには、spec.observability.prometheus.modeをdisabledに設定します。ポートを変更するには、spec.observability.prometheus.portを設定します。
spec.observability.prometheus.mode型: string
mongotで Prometheus メトリクスエンドポイントを有効または無効にします。値は次のいずれかになります。enableddisabled
省略した場合、デフォルトは
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演算子は次のデフォルト値を使用します。
requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi
spec.observability.metricsForwarder.deployment型: オブジェクト
Kubernetes 演算子が演算子作成のメトリクスフォワーダー配置に統合する上書き設定。
spec.clusters[].loadBalancer.managed.deploymentと同じ規約に従います。labelsとannotationsを持つmetadataフィールド、および apps/v1/DeploymentSpec オブジェクトを持つspecフィールド。
spec.observability.metricsForwarder.opsManager型: オブジェクト
メトリクスフォワーダーがメトリクスを送信する対象の MongoDB Ops Manager プロジェクトと認証情報。省略すると、Kubernetes 演算子はソース MongoDB リソースの接続構成からプロジェクトと認証情報を導出します。ソース MongoDB リソースが存在しない外部 MongoDB ソースの場合は、このフィールドを設定します。
このフィールドを設定する場合は、
agentCredentialsとprojectConfigMapRefの両方を設定する必要があります。
spec.observability.metricsForwarder.opsManager.agentCredentials.name型: string
メトリクスフォワーダーが認証する MongoDB Ops Manager エージェント API キーを含む Secret の名前。
spec.observability.metricsForwarder.opsManager.projectConfigMapRef.name型: string
メトリクスフォワーダーがメトリクスを送信する MongoDB Ops Manager プロジェクト構成を含む ConfigMap の名前。
自動埋め込みの設定
重要
自動埋め込みは、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キーを含むシークレットの名前。シークレットには、indexing-keyキーの下にインデックス時キー、query-keyキーの下にクエリ時キーを含める必要があります。embeddingModelAPIKeySecretは、spec.autoEmbedding.providerEndpointが演算子管理のセルフホスト型 Voyage AI 埋め込みサービスを指す場合にのみ省略できます。そうでない場合、Kubernetes Operator には必要です。
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
機能フラッグの設定
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が含まれます。このフィールドは、
PHASE列の下のkubectl get出力に表示されます。
status.message型: string
リソースが
PendingまたはFailedフェーズにある理由など、現在のステータスに関する詳細が記述された人間が読み取り可能なメッセージ。
status.lastTransition型: string
status.phaseの最後の遷移のタイムスタンプ。
status.observedGenerationタイプ: 整数
Kubernetes 演算子が最後に処理した MongoDBSearch リソースの生成。
status.warningsタイプ: 文字列の配列
Kubernetes 演算子がリソースに報告する警告。
status.version型: string
Kubernetes 演算子が調整した MongoDB Search のバージョン (
mongot)。このフィールドは、
VERSION列の下のkubectl get出力に表示されます。
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などです。Kubernetes 演算子は、メインのstatus.phaseとは独立してこのフェーズを報告するため、Env の配置を個別にモニターできます。このフィールドは、
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
メトリクスフォワーダーの状態に関する詳細な人間が読み取り可能なメッセージ。
status.clustersタイプ: オブジェクトの配列
配置トポロジー全体のクラスターごとのステータス。 Kubernetes演算子は、
spec.clusters[]のクラスターごとに 1 つのエントリを報告するため、単一クラスター配置では 1 つのエントリが含まれます。各エントリは、そのクラスターの検索、 ロードバランサー、および メトリクスフォワーダー フェーズを個別に報告するため、特定のクラスターとコンポーネントに問題をローカライズできます。
status.clusters[].name型: string
ノードクラスターの名前。単一クラスター配置の場合は空。
status.clusters[].indexタイプ: 整数
このクラスターの
spec.clusters[]の固定インデックス。各ステータス エントリを、リストの順序とは独立して仕様エントリにマッピングします。
status.clusters[].search型: string
このクラスターの
mongotステートメントを実行します。クラスターは、レプリカセットソースに対して 1 つのmongotステートメントセットを実行し、シャーディングされたソースでは シャードごとに 1 つ実行します。値は、Pending、Running、またはFailedです。
status.clusters[].searchMessage型: string
status.clusters[].searchがRunningでない理由を含む、人間が判読可能なメッセージ。
status.clusters[].loadBalancer型: string
このクラスターのマネージド ロードバランサー(Env) フェーズ。管理対象のロードバランサーが設定されていない場合は、空になります。値は、
Pending、Running、またはFailedです。
status.clusters[].loadBalancerMessage型: string
status.clusters[].loadBalancerがRunningでない理由を含む、人間が判読可能なメッセージ。
status.clusters[].metricsForwarder型: string
このクラスターの Ops Manager メトリクスフォワーダー フェーズ。メトリクス フォワーダーが有効になっていない場合は、空になります。値は、
Pending、Running、またはFailedです。
status.clusters[].metricsForwarderMessage型: string
status.clusters[].metricsForwarderがRunningでない理由を含む、人間が判読可能なメッセージ。
例
kubectl get mdbs NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m