AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Search とベクトル検索の設定

Kubernetes 演算子 用のMongoDB Controllers を使用して、 MongoDB 8.2 以降と並行してMongoDB Search とベクトル検索を配置できます。

次の例は、 MongoDB Search とベクトル検索 の配置の specオブジェクト内の設定を示しています。これらの設定の詳細については、必要な設定オプション設定 を参照してください。

注意

この例は機能する構成ではありません。参照のために、すべての使用可能なフィールドにサンプル値が入力されています。一部のフィールドは互いに排除され、一部のフィールドは他のフィールドより優先されます(例えば、source.externalsource.mongodbResourceRefより優先されます)。有効な組み合わせについては、以下のフィールドの説明を参照してください。

1spec:
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 は外部です

  • MongoDB MongoDBSearch とは名前が異なります

MongoDBSearchリソースは常にMongoDB配置に接続されている必要があります。MongoDB または MongoDBCommunity CRD とともに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 を使用します。

spec.source.username

: string

mongodmongot を認証するために使用するユーザー名。指定されたユーザーには searchCoordinator ロールが必要です。省略した場合、Kubernetes演算子はユーザー名が search-sync-source であると想定します。

spec.source.passwordSecretRef.name

: string

mongotmongod で認証するために使用する必要があるパスワードを含むシークレットの名前。省略した場合、デフォルトは <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 になります。

spec.source.x509

: オブジェクト

mongot 同期ソース接続の x509クライアント証明書認証を構成します。このフィールドを に設定すると、mongot はユーザー名とパスワードの代わりに x509 を使用してMongoDBに認証します。

このフィールドは、spec.source.passwordSecretRefspec.source.usernamespec.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 キーの下にパスワードを含める必要があります。秘密キーが暗号化されていない場合は、このフィールドを省略します。

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

: オブジェクト

外部データソースを説明する設定。このオブジェクトは、外部 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 演算子 によってマネージドではない場合にのみ、これを使用してください。MongoDB CRD を使用して配置されたオペレーターマネージドのシャーディングされたクラスターの場合は、代わりに 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 つの mongot StatefulSet を作成します。各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 つ以下のエントリを含める必要があります。replicasloadBalancerresourceRequirementspersistencejvmFlagsstatefulSet などのすべてのサイジングと配置の設定は、clusters エントリ内にあります。これらの設定には、トップレベルの同等のものはありません。

単一クラスター配置の場合は、1 つのエントリを指定します。nameindex は省略できます。

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[].replicas1 より大きい場合は、mongod と複数の mongot インスタンス間でトラフィックをルーティングするように spec.clusters[].loadBalancer も構成する必要があります。

spec.clusters[].replicas0 に設定すると、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データベースとは共有されません。データベース自体には、インデックスメタデータ(定義)のみが保存されます。

スカラー
データ型
説明

labelSelector

string

storage

string

マウントする永続ボリュームの最小サイズ。この値は、整数とその後に続く JEDEC 表記のストレージ単位として表されます。

デフォルト値は16Gです。

例えば、レプリカセットに 60 ギガバイトのストレージ容量が必要な場合は、この値を 60G に設定します。

storageClass

string

永続ボリューム要求 で指定されたストレージのタイプ。このオブジェクト仕様で使用する前に、このストレージ タイプを StorageClass オブジェクトとして作成できます。

StorageClass reclaimPolicy保持 するように設定します。これにより、永続的なボリューム要求が削除されてもデータが保持されます。

MongoDBSearch は、single 持続モードのみをサポートします。これは、すべてのデータに 1 つのボリュームを使用します。CRD スキーマには spec.clusters[].persistence.multiple フィールドも含まれていますが、Kubernetes Operator はこれを適用しません。persistence を省略すると、Kubernetes Operator は spec.clusters[].persistence.single.storage16G に設定します。

spec.clusters[].loadBalancer

: オブジェクト

mongod(または mongos)と mongot の間の L7 負荷分散の構成。このフィールドは、spec.clusters[].replicas1 より大きい場合に必要です。spec.clusters[].replicas1 の場合、このフィールドは任意です。後でスケールアップするために、単一の mongotインスタンスに対してもロードバランサーを構成できます。

正確に managed または unmanaged の 1 つを設定する必要があります。

spec.clusters 内のすべてのエントリは、ロード バランサー モードに同意する必要があります。すべてのエントリで loadBalancer.managed を設定するか、すべてのエントリで loadBalancer.unmanaged を設定するか、またはどのエントリも loadBalancer を設定しないかのいずれかです。Kubernetes Operator はミックス モードを拒否します。マルチクラスター配置はマネージド モードのみをサポートします。

ロードバランサーは、mongod クライアントが表示する TLS 証明書と、それらの証明書に含める必要があるホスト名に影響します。

  • ロードバランサーがない場合mongodmongot に直接接続します。mongod に提示される TLS 証明書は mongot の証明書です。MongoDBクラスターがKubernetesの外部にある場合、mongot サービスは外部ドメインに公開されます。その外部ドメインは、mongot TLS 証明書の 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

    mongot TLS 証明書の SAN フィールドにこれらのサービス FQDN を含めることをお勧めします。演算子マネージド Envoy プロキシは現在、認証機関に対してのみ mongot 証明書を検証し、SAN ホスト名と一致しません。外部の mongod プロセスは Envoy プロキシの TLS 証明書を参照するため、外部ドメインを mongot 証明書ではなく Envoy 証明書の SAN に含めます。

Tip

最初に単一の mongot ポッドを配置する場合でも、マネージド ロードバランサーを有効にします。ロードバランサーが設定されている状態で、後で spec.clusters[].replicas を増やすアップしても、TLS 証明書内のドメインは安定したままになります。これは、ロードバランサーがmongodmongot の間にすでに存在するためです。

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 フィールドが含まれています。

  • specapps/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 回だけ上書きできます。

オーバーライドで replicasresourceRequirementspersistencejvmFlags を設定すると、名前付きシャードのクラスター値が置き換えられます。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
- {}
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
spec.clusters[].statefulSet

: オブジェクト

Kubernetes 演算子が mongot ポッドを配置するために作成する StatefulSet の上書き。Kubernetes 演算子は常に上書きを最後に適用するため、Kubernetes 演算子が計算した設定が上書きされます。

このオブジェクトには 2 つのフィールドが含まれています。

  • metadata には、Kubernetes 演算子が StatefulSet メタデータにマージする labels フィールドと annotations フィールドが含まれます。

  • specapps/v1/StatefulSetSpec オブジェクト。Kubernetes 演算子はこれらのオーバーライドを StatefulSet 仕様にマージします。

注意

spec.clusters[].statefulSet を使用してリソース要件や永続性設定を設定しないでください。代わりに、それぞれ spec.clusters[].resourceRequirementsspec.clusters[].persistence フィールドを使用してください。

spec.clusters[].advancedMongotConfigs

: オブジェクト

このクラスターエントリの高度な mongot 設定。Kubernetes 演算子は、mongot 構成ファイルの advancedConfigs キーの下の値を、読み取りまたは変更せずにそのままレンダーします。このフィールドは、Kubernetes 演算子が mongot 構成内の他の場所で生成する設定には影響しません。

このフィールドは、MongoDBSearch リソースがファーストクラスのフィールドとして公開していない mongot 設定にのみ使用します。

spec.security

: オブジェクト

mongot listenサーバーのセキュリティ設定。

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 を使用してください。これは、単一のシークレット参照ではシャードごとの証明書をカバーできないためです。

  • certificateKeySecretRefcertsSecretPrefix の両方を指定した場合、レプリカセットの配置では 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には、externalHostnamerouterHostnameからの拡張されたすべてのシャード ホスト名が含まれている必要があります。

Kubernetes Operator は、次の順序で mongot サーバー証明書の秘密名を解決します。

  1. spec.security.tls.certificateKeySecretRef.nameを設定すると、Kubernetes 演算子はその名前を使用します。

  2. certsSecretPrefix を設定すると、Kubernetes 演算子は前の表の命名パスワードなしを使用します。

  3. いずれのフィールドも設定しない場合、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 ログの冗長度。値は次のいずれかになります。

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

省略した場合、デフォルトは INFO になります。

spec.observability

: オブジェクト

MongoDBSearch リソースの可視性設定。mongot の Prometheus メトリクスエンドポイントと MongoDB Ops Manager のメトリクスフォワーダーが含まれます。

spec.observability.prometheus

: オブジェクト

mongot の Prometheus メトリクスエンドポイントの構成。このフィールドを省略すると、Kubernetes Operator はデフォルトポート 9946 でメトリクスエンドポイントを有効にします。エンドポイントを無効にするには、spec.observability.prometheus.modedisabled に設定します。ポートを変更するには、spec.observability.prometheus.port を設定します。

spec.observability.prometheus.mode

: string

mongot で Prometheus メトリクスエンドポイントを有効または無効にします。値は次のいずれかになります。

  • enabled

  • disabled

省略した場合、デフォルトは enabled になります。

spec.observability.prometheus.port

タイプ: 整数

Prometheus メトリクス エンドポイントとなる接続されたデバイスを有効にするポート。デフォルトでは、Prometheus メトリクス エンドポイントとなる接続されたデバイスはポート 9946 で有効になっています。

spec.observability.metricsForwarder

: オブジェクト

Kubernetes Operator が作成して mongot Prometheus メトリクスをスクレイピングし、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 と同じ規約に従います。labelsannotations を持つ metadata フィールド、および apps/v1/DeploymentSpec オブジェクトを持つ spec フィールド。

spec.observability.metricsForwarder.opsManager

: オブジェクト

メトリクスフォワーダーがメトリクスを送信する対象の MongoDB Ops Manager プロジェクトと認証情報。省略すると、Kubernetes 演算子はソース MongoDB リソースの接続構成からプロジェクトと認証情報を導出します。ソース MongoDB リソースが存在しない外部 MongoDB ソースの場合は、このフィールドを設定します。

このフィールドを設定する場合は、agentCredentialsprojectConfigMapRefの両方を設定する必要があります。

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は gRPC RESOURCE_EXHAUSTED応答を介してアップストリームプロキシにロードシェッディングをシグナル送信します(演算子マネージド Envoy ロードバランサーなど)。その後、プロキシは別の mongotインスタンスでリクエストを再試行します。

省略した場合、デフォルトは true になります。

spec.version

: string

mongodb-search Docker イメージのバージョン。省略すると、Kubernetes Operator は、バンドルされているデフォルトの MongoDB Search バージョンを使用します。Kubernetes Operator をアップグレードする際の自動アップグレードを防止するため、バージョンを明示的に設定できます。

Kubernetes 演算子 は、 MongoDBSearchリソースの statusフィールドにステータス情報を報告します。

status.phase

: string

MongoDBSearch リソースの現在のフェーズ。可能な値には、PendingRunningFailedDisabledUpdated、および 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 リソース。各エントリには、リソースのkindname、任意のmessageerrorsのリストが報告されます。

status.pvc

タイプ: オブジェクトの配列

mongot StatefulSets の永続ボリューム要求の状態。各エントリには、要求が属する phasestatefulsetName が報告されます。

status.loadBalancer

: オブジェクト

演算子が管理するロードバランサー(Envoy)のステータス。このフィールドは、spec.clusters[].loadBalancer.managed が設定されている場合にのみ存在します。マルチクラスター配置の場合、Kubernetes 演算子はすべてのクラスターの Envoy 配置で最悪のフェーズを報告します。

status.loadBalancer.phase

: string

マネージド ロードバランサーの現在のフェーズ。指定できる値は、PendingRunningFailed などです。Kubernetes 演算子は、メインの status.phase とは独立してこのフェーズを報告するため、Env の配置を個別にモニターできます。

このフィールドは、LOADBALANCER 列の下の kubectl get 出力にも表示されます。

status.loadBalancer.message

: string

マネージドロードバランサーのステータスに関する詳細を含む人間が読み取り可能なメッセージ。

status.metricsForwarder

: オブジェクト

メトリクスフォワーダーのステータス。

status.metricsForwarder.phase

: string

メトリクスフォワーダーの現在のフェーズ。指定できる値は、PendingRunningFailed です。spec.observability.metricsForwarder.modedisabled に設定すると、フェーズは 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 つ実行します。値は、PendingRunning、または Failed です。

status.clusters[].searchMessage

: string

status.clusters[].searchRunning でない理由を含む、人間が判読可能なメッセージ。

status.clusters[].loadBalancer

: string

このクラスターのマネージド ロードバランサー(Env) フェーズ。管理対象のロードバランサーが設定されていない場合は、空になります。値は、PendingRunning、または Failed です。

status.clusters[].loadBalancerMessage

: string

status.clusters[].loadBalancerRunning でない理由を含む、人間が判読可能なメッセージ。

status.clusters[].metricsForwarder

: string

このクラスターの Ops Manager メトリクスフォワーダー フェーズ。メトリクス フォワーダーが有効になっていない場合は、空になります。値は、PendingRunning、または Failed です。

status.clusters[].metricsForwarderMessage

: string

status.clusters[].metricsForwarderRunning でない理由を含む、人間が判読可能なメッセージ。

$ kubectl get mdbs
NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE
mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m