MongoDB Database リソースの仕様
項目一覧
注意
このページのMongoDB Ops Managerが表示されている場所では、 Cloud Managerを置き換えることができます。
MongoDB Enterprise Kubernetes演算子 Kubernetes を 作成します 書込み (write) 仕様ファイルから
Kubernetes Operator は、Kubernetes 内の MongoDB 固有のリソースを カスタム リソースとして作成します。
これらのカスタム リソースを管理するには、次のプロセスを使用します。
MongoDB
リソース仕様を作成または更新します。MongoDB Enterprise Kubernetes Operator に指示して、Kubernetes 環境に適用します。 その結果、Kubernetes Operator は次のアクションを実行します。
変更を反映するようにMongoDB Ops Manager配置構成を更新します。
配置タイプ | StateftSets | ステートメントセットのサイズ |
---|---|---|
スタンドアロン | 1 | 1 Pod |
レプリカセット | 1 | |
シャーディングされたクラスター | <numberOfShards> + 2 | 1 mongos ポッド 、シャード、またはコンフィギュレーションサーバー ノードごと |
各MongoDB
リソースは、 YAMLのオブジェクト仕様を使用して、MongoDB オブジェクト(スタンドアロン、レプリカセット、シャーディングされたクラスター)の特性と設定を定義します。
Common Resource Settings
すべてのリソース タイプでは、次の設定を使用する必要があります。
必須
spec.credentials
型: string
必須。 シークレット MongoDB Ops ManagerAPIの名前Kubernetes は、Kubernetes Operator がCloud Manager または と通信するための 認証情報として 作成MongoDB Ops Manager しました。
認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。
重要
演算子がシークレットへの変更を管理
Kubernetes Operator は、シークレットへの変更を追跡し、
MongoDB
リソースの状態を調整します。
spec.persistent
タイプ: ブール値
デフォルト: True
警告: コンテナに 永続ボリューム への書込み (write) 権限を付与 。Kubernetes 演算子は、
securityContext
でfsGroup = 2000
、runAsUser = 2000
、runAsNonRoot = true
を設定します。 Kubernetes Operator は、fsgroup
をrunAsUser
と等しく設定して、コンテナでメイン プロセスを実行するユーザーがボリュームを書込み可能にします。 詳細については、「 ポッドまたはコンテナのセキュリティ コンテキストの構成 」を参照してください および関連する ディスカッション (Kubernetes ドキュメント)。リソースを再デプロイしても永続ボリュームの問題が修正されない場合は、 MongoDB サポートにお問い合わせください。永続的なボリューム を使用しない場合 Disk UsageDisk IOPSProcesses、Deployment 、Metrics チャートは、この配置 のデータ を確認するときに、 ページの タブまたは ページのいずれにも表示できません。
spec.version
型: string
この
MongoDB
リソースにインストールした MongoDB のバージョン。重要
互換性のある MongoDB Server バージョンを選択していることを確認してください。
互換性のあるバージョンは、MongoDB database リソースが使用する基本イメージによって異なります。
注意
この値をデータベースリソース用のMongoDBの新しいバージョンに更新しても、機能の互換性バージョンはアップグレード元のMongoDBバージョンのままになり、必要に応じてダウングレードのオプションが提供されます。 機能の互換性バージョンを新しいMongoDBバージョンと一致させるには、
spec.featureCompatibilityVersion
を新しいバージョンに、またはAlwaysMatchVersion
に手動で設定する必要があります。 詳しくは、spec.featureCompatibilityVersion
を参照してください。
条件付き
すべてのリソースは、次のいずれかの設定を使用する必要があります。
spec.opsManager.configMapRef.name
型: string
ConfigMap の名前Cloud Manager またはMongoDB Ops Manager 接続構成の場合。
spec.cloudManager.configMapRef.name
設定はこの設定のエイリアスであり、代わりに使用できます。この値は、作成するリソースと同じ名前空間に存在する必要があります。
重要
演算子が ConfigMap への変更を管理
Kubernetes 演算子は、ConfigMap への変更を追跡し、
MongoDB
リソースの状態を調整します。
任意
すべてのリソースの種類では、次の設定を使用できます。
metadata.annotations.mongodb.com/v1.architecture
型: string
具体的な配置で使用されるコンテナ アーキテクチャを決定します。
実行時に MongoDB バイナリをダウンロードするデフォルトの非静的コンテナ、または
実行時に不変である静的コンテナ(パブリック プレビュー) 。
指定できる値は次のとおりです。
static
non-static
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-project annotations: mongodb.com/v1.architecture: "static"
spec.agent.backupAgent.logRotate.sizeThresholdMB
タイプ: 整数
MongoDB Agent がログをローテーションする前のバックアップ ログファイルの最大サイズ(MB 単位)。
spec.agent.mongod.auditlogRotate.sizeThresholdMB
タイプ: 数値
MongoDB Agent がログをローテーションする前の監査ログファイルの最大サイズ(MB 単位)。
spec.agent.mongod.auditlogRotate.numTotal
タイプ: 整数
MongoDB Ops Managerが保持する 監査ログ ファイルの合計数。 この値を設定しない場合、監査ログファイルの合計数はデフォルトで0になります。
spec.agent.mongod.auditlogRotate.percentOfDiskspace
タイプ: 数値
MongoDB Ops Managerがログファイルを保存するために使用できる合計ディスク領域の最大パーセンテージは小数で表されます。 この制限を超えた場合、 MongoDB Ops Managerは、この制限を満たすまで圧縮されたログファイルを削除します。 MongoDB Ops Managerは、最も古いログファイルを最初に削除します。
デフォルトは0.02です。
spec.agent.mongod.logRotate.sizeThresholdMB
タイプ: 整数
MongoDB Ops Managerがログファイルをローテーションする前の、個々のログファイルの最大サイズ(MB 単位)。 MongoDB Ops Manager は、この
sizeThresholdMB
またはspec.agent.mongod.logRotate.timeThresholdHrs
のいずれかに指定された値を満たす場合、ログファイルをすぐにローテーションします。
spec.agent.mongod.logRotate.timeThresholdHrs
タイプ: 整数
次のローテーションまでの個々のログファイルの最大期間(時間単位)。 は最後のローテーション以降の時間です。
MongoDB Ops Manager は、ファイルがこの
timeThresholdHrs
またはspec.agent.mongod.logRotate.sizeThresholdMB
のいずれかを満たすと、ログファイルをローテーションします。
spec.agent.monitoringAgent.logRotate.sizeThresholdMB
タイプ: 整数
MongoDB Agent が監視ログをローテーションする前の、個々のログファイルの最大サイズ(MB 単位)。
spec.agent.readinessProbe.environmentVariables
型: オブジェクト
Readness Probe のログファイルを制御するために使用される次の環境変数を構成します。
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-project spec: agent: readinessProbe: environmentVariables: READINESS_PROBE_LOGGER_BACKUPS: 1 READINESS_PROBE_LOGGER_MAX_SIZE: 10 READINESS_PROBE_LOGGER_MAX_AGE: 3 READINESS_PROBE_LOGGER_COMPRESS: true MDB_WITH_AGENT_FILE_LOGGING: false LOG_FILE_PATH: /var/log/mongodb-mms-automation/readiness.log
spec.featureCompatibilityVersion
型: string
MongoDBのアップグレード後に、以前のメジャーMongoDBバージョンにデフォルト設定されます。
新しいメジャー バージョンへのアップグレードに関連して発生するデータの変更を制限します。 例、 MongoDB 5.0からMongoDB 6.0にアップグレードする場合、機能の互換性バージョンは5.0のままになり、必要に応じてダウングレードのオプションが提供されます。
機能の互換性バージョンを新しいMongoDBバージョンと一致させる場合は、
featureCompatibilityVersion
を新しいバージョンに手動で設定する必要があります。 例、featureCompatibilityVersion: 6.0
。または、
AlwaysMatchVersion
オプションを有効にすると、アップグレード中に機能の互換性バージョンがMongoDBバージョンと一致するように自動的に更新されます。 例、featureCompatibilityVersion: AlwaysMatchVersion
。機能の互換性の詳細については、 MongoDBマニュアルの
setFeatureCompatibilityVersion
を参照してください。
spec.clusterDomain
型: string
デフォルト: cluster.local
Kubernetes Operator を配置する Kubernetes クラスターのドメイン名。 Kubernetes がステートメントを作成する場合 、Kubernetes は各 ポッド に割り当てます FQDN 。またはCloud Manager MongoDB Ops Managerを更新するために、Kubernetes 演算子は各 ポッド の FQDN を計算します 指定されたクラスター名を使用します。Kubernetes では、これらのホスト名をクエリするためのAPIは提供されていません。
警告
Kubernetes クラスターに デフォルトのドメイン
spec.clusterDomain
がある場合は、 を設定する必要があります デフォルトのcluster.local
以外。デフォルトを使用せず、spec.clusterDomain
オプションも設定しない場合、Kubernetes 演算子が期待どおりに機能しない可能性があります。
spec.clusterName
型: string
デフォルト: cluster.local
Kubernetes Operator を配置する Kubernetes クラスターのドメイン名。 Kubernetes がステートメントを作成する場合 、Kubernetes は各 ポッド に割り当てます FQDN 。またはCloud Manager MongoDB Ops Managerを更新するために、Kubernetes 演算子は各 ポッド の FQDN を計算します 指定されたクラスター名を使用します。Kubernetes では、これらのホスト名をクエリするためのAPIは提供されていません。
警告
Kubernetes クラスターに デフォルトのドメイン
spec.clusterDomain
がある場合は、 を設定する必要があります デフォルトのcluster.local
以外。デフォルトを使用せず、spec.clusterDomain
オプションも設定しない場合、Kubernetes 演算子が期待どおりに機能しない可能性があります。
spec.service
型: string
デフォルト: <resource_name>+"-svc" および <resource_name>+"-svc-external"
Atlas App Services が作成または使用する Kubernetes サービスの名前 。この名前のサービスがすでに存在する場合、MongoDB Enterprise Kubernetes Operator はサービスを削除または再作成しません。 この設定により、独自のカスタム サービスを作成し、Kubernetes Operator でそれらを再利用できます。
spec.logLevel
型: string
デフォルト: INFO
ポッド 内のオートメーションエージェントのログ記録のレベルを構成します 。受け入れ可能な値は以下の通りです。
DEBUG
INFO
WARN
ERROR
FATAL
配置固有のリソース設定
MongoDB
リソース仕様で使用できる他の設定と使用する必要がある他の設定は、作成する MongoDB 配置アイテムによって異なります。
スタンドアロン設定
注意
すべてのスタンドアロン設定はレプリカセット リソースにも適用されます。
spec.additionalMongodConfig
タイプ: コレクション
MongoDB プロセスを開始するための追加構成オプション。
Kubernetes Operator は、MongoDB Agent を通じて配置する MongoDB バージョンがサポートするすべての構成オプションをサポートしています。ただし、Kubernetes Operator は、次のいずれかのオプションに指定した値を上書きします。
Kubernetes Operator が所有する構成オプションの詳細については、「 MongoDB Kubernetes Operator 専用設定 」を参照してください。
使用できる構成オプションについては、 MongoDBドキュメントの「 配置の詳細オプションMongoDB Ops Manager 」を 参照してください。
spec.agent.startupOptions
タイプ: コレクション
MongoDB データベース リソースを起動する MongoDB Agent 設定。
MongoDB Agent 設定はキーと値のペアとして提供する必要があります。 値は文字列である必要があります。
サポートされている MongoDB Agent 設定のリストについては、以下を参照してください。
Cloud Manager プロジェクトのMongoDB Agent 設定。
OperatorMongoDB Agent を使用して配置したMongoDB Ops Manager バージョンの 設定 。Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-standalone 6 spec: 7 version: "6.0.0-ent" 8 service: my-service 9 10 opsManager: 11 configMapRef: 12 name: my-project 13 credentials: my-credentials 14 type: Standalone 15 16 persistent: true 17 agent: 18 startupOptions: 19 maxLogFiles: "30" 20 dialTimeoutSeconds: "40" 21 ...
spec.podSpec
型: オブジェクト
MongoDB CustomResourceDefinition の仕様を含むオブジェクト ポッド。
spec.externalAccess
タイプ: コレクション
クラスターを外部接続用に公開するための仕様。 Kubernetes クラスターの外部から MongoDB リソースに接続する方法については、「 Kubernetes の外部から MongoDB Database リソースに接続する 」を参照してください。
spec.externalAccess
を追加すると、Kubernetes Operator はレプリカセット内の各ポッドの外部サービスを作成します。 外部サービスは、クラスター内の各 MongoDB database ポッドの外部エントリ ポイントを提供します。 各外部サービスには セレクター があります は、外部サービスを特定のポッドに一致させます。値なしでこの設定を追加すると、Kubernetes Operator は次のデフォルト値を持つ外部サービスを作成します。
フィールド値説明Name
<pod-name>-svc-external
外部サービスの名前。 この値は変更できません。Type
LoadBalancer
外部 LoadBalancer を作成します servicePort
<Port Number>
mongod
のポート。publishNotReadyAddress
true
DNS レコード を指定する は、Ped が準備ができていない場合でも作成されます。どのデータベース ポッドでもfalse
に設定しないでください。注意
spec.externalAccess.externalDomain
を設定すると、外部サービスはバックアップ用の別のポート(Port Number + 1
)を追加します。
spec.externalAccess.externalService
タイプ: コレクション
spec.externalAccess
のデフォルト値を上書きするための指定。spec.externalAccess
設定を設定すると、Kubernetes Operator はデフォルト値の外部ロード バランサー サービスを自動的に作成します。 ニーズに応じて、特定の値を上書きしたり、新しい値を追加したりできます。 たとえば、 NodePort サービス を作成しようとすると、 で、ロード バランサーが必要ない場合は、Kubernetes 仕様でオーバーライドを構成する必要があります。externalAccess: externalService: annotations: # cloud-specific annotations for the service spec: type: NodePort # default is LoadBalancer # you can specify other spec overrides if necessary Kubernetes 仕様の詳細については、 ServiceSpec を参照してください (Kubernetes ドキュメント)。
spec.externalAccess.externalService.annotations
タイプ: コレクション
配置内のすべてのクラスターにクラウドプロバイダー固有の構成設定を追加できるキーと値のペア。 詳細については、 注釈 を参照してください Kubernetes クラウドプロバイダーのドキュメントとドキュメントを参照してください。
注釈 を使用できます で、Kubernetes Operator の配置で使用される外部サービスのプレースホルダー値を指定します。Kubernetes Operator は、これらの値を次の表に記載されている正しい値に自動的に置き換えます。 プレースホルダーを使用すると、特定のポッドの各サービスに特定の注釈を提供できます。
値説明{resourceName}
{namespace}
{podIndex}
ステートフルセット によって割り当てられたポッドのインデックス 現在の外部サービスが対象とする と{podName}
{resourceName}-{podIndex}
に等しい。{statefulSetName}
ステートメントセット 。{resourceName}
に等しい。{externalServiceName}
指定したプレースホルダー値に基づいて、外部サービスの生成された名前。{resourceName}-{podIndex}-svc-external
に等しい。{mongodProcessDomain}
mongod プロセスをホストしているサーバーのドメイン名。 指定されている場合は
spec.externalAccess.externalDomain
と等しくなります。 それ以外の場合は、mongod
プロセスFQDNに使用されるドメインと等しくなります。たとえば、プロセス ホスト名
mdb-rs-1.example.com
の場合、example.com
はドメイン名になります。{mongodProcessFQDN}
mongod
オートメーション構成 で設定された プロセスのホスト名。プロセス ホスト名は、配置構成によって異なります。
external domains
を使用するように配置を構成した場合、プロセス ホスト名は次の形式を使用します。{resourceName}-{podIndex}.{mongodProcessDomain}
以下に例を挙げます。
mdb-rs-1.example.com
配置で外部ドメインを使用しない場合、プロセス ホスト名は次の形式を使用します。
{resourceName}-{podIndex}.{resourceName}-{podIndex}-svc.{namespace}.svc.cluster.local
以下に例を挙げます。
mdb-rs-1.mdb-rs-1-svc.ns.svc.cluster.local
注意
表に指定されている既知のプレースホルダー値のみを使用し、プレースホルダーが空または null 値を使用しないようにする必要があります。 また、単一の MongoDB リソース配置では、複数の Kubernetes クラスター配置に固有のプレースホルダーを使用することもできません。
それ以外の場合、Kubernetes Operator はエラーを返します。 たとえば、次のエラーメッセージが表示される場合があります。
error replacing placeholders in map with key=external-dns.alpha.kubernetes.io/hostname, value={resourceName}-{podIndex}-{unknownPlaceholder}.{clusterName}-{clusterIndex}.example.com: missing values for the following placeholders: {clusterName}, {clusterIndex}, {unknownPlaceholder}`` 例
次の例えでは、
{resourceName}
、{podIndex}
、{namespace}
プレースホルダーを指定します。apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: mdb-rs namespace: ns spec: replicas: 3 externalAccess: externalService: annotations: external-dns.alpha.kubernetes.io/hostname: {resourceName}-{podIndex}-{namespace}.example.com Kubernetes Operator は、各プレースホルダーの適切な値に基づいて、外部サービスの注釈を自動的に入力します。 例:
mdb-rs-0-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-0-ns.example.com mdb-rs-1-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-1-ns.example.com mdb-rs-2-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-2-ns.example.com
spec.externalAccess.externalService.spec
タイプ: コレクション
ServiceSpec の構成 。詳しくは、
spec.externalAccess.externalService
を参照してください。
spec.podSpec.persistence.single
タイプ: コレクション
Kubernetes Operator が 1 つの 永続ボリューム要求 を作成するようにします と では、データ、ジャーナル、ログの 3 つのすべてのディレクトリが同じ 永続ボリューム にマウントされます。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.multiple
コレクションを設定できますが、両方は設定できません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
string永続ボリューム の最小サイズ マウントする必要があるもの。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 16Gi です。
たとえば、 のスタンドアロン配置に60ギガバイトのストレージが必要な場合は、この値を
60Gi
に設定します。storageClass
string永続的なボリューム要求 で指定されるストレージのタイプ 。このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.podSpec.persistence.multiple.data
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします と は、データのディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 から、Kubernetes で スタンドアロン配置 をホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 16Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
stringスタンドアロン配置に必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.podSpec.persistence.multiple.journal
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします およびジャーナル用のディレクトリを独自の 永続ボリューム にマウントする 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 から、Kubernetes で スタンドアロン配置 をホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 1Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
stringスタンドアロン配置に必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.podSpec.persistence.multiple.logs
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします および は、ログ用のディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 から、Kubernetes で スタンドアロン配置 をホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 3Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
stringスタンドアロン配置に必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.podSpec.podTemplate.affinity.nodeAffinity
型: 構造体
Kubernetes ルール : ポッド を配置する 特定の範囲の ノード 上の レプリカセット 用 。
読み取りおよび書込みパフォーマンスを最適化するには、ノードの アフィニティ ルールを使用してノードを制限します 特定の ノード 上で を実行する 、または特定の ノード で の実行を優先する場合は 。
spec.podSpec.podTemplate.affinity.podAffinity
型: 構造体
Kubernetes ルール 複数の
MongoDB
リソース ポッド かどうかを判断 は他の ポッド と同じ場所に配置する必要があります 。ユースケースの詳細については、「 アフィニティと非アフィニティ 」を参照してください。 (Kubernetes ドキュメント)。
spec.podSpec.podTemplate.affinity.podAntiAffinity
型: 構造体
Default: kubernetes.io/hostname
ルール
MongoDB
を設定する ポッド を分散する リソースを異なる場所でホストする。ロケーションは、単一のノード、ロック、またはリージョンにすることができます。 デフォルトでは、Kubernetes Operator は異なるノードにポッドを分散しようとします。
spec.podSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
型: 構造体
Default: kubernetes.io/hostname
spec.podSpec.podTemplate
タイプ: コレクション
テンプレート MongoDB Enterprise Kubernetes Operator が MongoDB データベース リソース用に作成する Kubernetes ポッド用。
テンプレート値は、
spec.podSpec
で指定された値よりも優先されます。注意
Kubernetes 演算子は、
spec.podSpec.podTemplate
で指定したフィールドを検証しません。
spec.podSpec.podTemplate.metadata
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が MongoDB database リソース用に作成する Kubernetes ポッドのメタデータ。
spec.podSpec.podTemplate.metadata
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
spec.podSpec.podTemplate.spec
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が MongoDB データベースリソース用に作成する Kubernetes ポッドの仕様。
spec.podSpec.podTemplate.spec
に追加できるフィールドを確認するには、Kubernetes PodSpec v1Core API を参照してください。注意
spec.podSpec.podTemplate.spec.containers
にコンテナを追加すると、Kubernetes Operator はそれらを Kubernetes ポッドに追加します。 これらのコンテナは、ポッド内の MongoDB database リソース コンテナに追加されます。この設定を使用して、各ポッドの CPU と RAM の割り当てを指定します。 例について Githubは、 のサンプルを参照してください。
レプリカセット設定
注意
すべてのスタンドアロン設定はレプリカセット リソースにも適用されます。
レプリカセットのリソース タイプには次の設定が適用されます。
spec.backup
タイプ: コレクション
spec.backup.mode
のコレクション コンテナ。Kubernetes Operator で MongoDB リソースの継続的なバックアップを可能にします。
spec.backup.assignmentLabels
タイプ: 配列
バックアップデーモン、oplog ストア、ブロックストア、 S3スナップショット ストア、ファイルシステム ストアを特定のプロジェクトまたはグループに割り当てるためのラベルのコンマ区切りリスト。 割り当てラベル を使用して、特定のバックアップ ストアが特定のプロジェクトに関連付けられていることを識別します。
Kubernetes Operator を使用して割り当てラベルを設定すると、割り当てラベルのKubernetes構成ファイルで設定した値が、 MongoDB Ops Manager UI で定義された値を上書きします。 Kubernetes Operator を使用して設定しない割り当てラベルは、 MongoDB Ops Manager UI で設定された値を引き続き使用します。
注意
このパラメータを設定する場合、
spec.credentials
の値にリンクされた API キーにGlobal Owner
ロールが必要です。
spec.backup.mode
型: string
MongoDB リソースの継続的なバックアップを有効にします。 指定できる値は、
enabled
、disabled
、terminated
です。注意
spec.backup.mode
の設定は、 MongoDB Ops Managerで有効になっているspec.backup.enabled
バックアップMongoDB Ops Managertrue
に依存します。また、 リソース仕様 の 値が に設定されている必要があります。spec.backup.mode
を使用して MongoDB リソースの継続的なバックアップを有効にすると、バックアップ ステータスを確認できます。
spec.backup.encryption.kmip
型: オブジェクト
KMIPバックアップ暗号化の構成設定を含むオブジェクトです。 詳細については、「 MongoDB Ops Managerの KMIP バックアップ暗号化の構成 」を参照してください。
spec.backup.snapshotSchedule
タイプ: コレクション
Kubernetes Operator の MongoDB リソースの継続的なバックアップのスナップショット スケジュール設定のコレクション コンテナ。
spec.backup.snapshotSchedule.dailySnapshotRetentionDays
タイプ: 数値
日次スナップショットを保持する日数。
1
から365
までの値を設定できます。 値を0
に設定すると、このルールが無効になります。
spec.backup.snapshotSchedule.weeklySnapshotRetentionWeeks
タイプ: 数値
Number of weeks to keep weekly snapshots.
1
から52
までの値を設定できます。 値を0
に設定すると、このルールが無効になります。
spec.backup.snapshotSchedule.monthlySnapshotRetentionMonths
タイプ: 数値
月次スナップショットを保持する月数。
1
から36
までの値を設定できます。 値を0
に設定すると、このルールが無効になります。
spec.backup.snapshotSchedule.referenceHourOfDay
タイプ: 数値
24 時間制でスナップショットをスケジュールする時刻のUTC時間。
0
から23
までの値を設定できます。
spec.backup.snapshotSchedule.referenceMinuteOfHour
タイプ: 数値
スナップショットをスケジュールする時間のUTC分。
0
から59
までの値を設定できます。
spec.backup.snapshotSchedule.fullIncrementalDayOfWeek
型: string
MongoDB Ops Managerが完全なスナップショットを取得する曜日。 この設定により、最新の完全なバックアップが保証されます。 MongoDB Ops Manager はデフォルト値を
SUNDAY
に設定します。
spec.clusterName
型: string
デフォルト: cluster.local
Kubernetes Operator を配置する Kubernetes クラスターのドメイン名。 Kubernetes がステートメントを作成する場合 、Kubernetes は各 ポッド に割り当てます FQDN 。またはCloud Manager MongoDB Ops Managerを更新するために、Kubernetes 演算子は各 ポッド の FQDN を計算します 指定されたクラスター名を使用します。Kubernetes では、これらのホスト名をクエリするためのAPIは提供されていません。
警告
Kubernetes クラスターに デフォルトのドメイン
spec.clusterDomain
がある場合は、 を設定する必要があります デフォルトのcluster.local
以外。デフォルトを使用せず、spec.clusterDomain
オプションも設定しない場合、Kubernetes 演算子が期待どおりに機能しない可能性があります。
spec.connectivity.replicaSetHorizons
タイプ: コレクション
クライアント アプリケーションと MongoDB エージェントに対して異なるDNS設定を提供できます。 Kubernetes Operator は、レプリカセット ノードに スプリット ホライゾンDNSを使用します。 この機能により、Kubernetes クラスター内と Kubernetes 外部からの両方で通信が可能になります。
ホストごとに複数の外部マッピングを追加できます。
スプリットホライゾンの要件:
この配列内の各値が一意であることを確認してください。
この配列内のエントリ数が
spec.members
の値と一致していることを確認します。TLS
spec.security.certsSecretPrefix
を有効にするには、 設定の値を指定します。このメソッドでスプリットホライズンを使用するには、 TLSプロトコルの サーバー名表示 拡張機能が必要です。
例
この例では、レプリカセットのメンバーは
example-localhost
ホライゾンで相互に通信します。 クライアントはexample-website
ホライゾンを使用してレプリカセットと通信します。1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 type: ReplicaSet 10 opsManager: 11 configMapRef: 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 persistent: true 15 security: 16 tls: 17 enabled: true 18 connectivity: 19 replicaSetHorizons: 20 - "example-website": "web1.example.com:30907" 21 - "example-website": "web2.example.com:32350" 22 - "example-website": "web3.example.com:31185" 23 ...
spec.externalAccess.externalDomain
型: string
レプリカセットの配置を外部で公開するために使用される外部ドメイン。
デフォルトでは、各レプリカセット ノードは Kubernetes ポッドのFQDN (
*.svc.cluster.local
)をデフォルトのホスト名として使用します。 ただし、この設定に外部ドメインを追加すると、レプリカセットは代わりに、指定されたドメインのサブドメインであるホスト名を使用します。 このホスト名は、次の形式を使用します。<replica-set-name>-<pod-idx>.<externalDomain>
以下に例を挙げます。
replica-set-1.example.com
この設定でレプリカセットを配置すると、 Kubernetes Operator は外部ドメインを含むホスト名を使用して、 MongoDB Ops Managerオートメーション構成の
processes[n].hostname
フィールドを上書きします。 次に、MongoDB Agent はこのホスト名を使用してmongod
に接続します。レプリカセットに接続するための他のホスト名を指定するには、
spec.connectivity.replicaSetHorizons
設定を使用できます。 ただし、次の接続では、外部ドメインを含むホスト名は引き続き使用されます。警告:このフィールドを指定すると、 MongoDB Ops Managerが
mongod
プロセスを登録する方法が変更されます。 このフィールドは、Kubernetes Operator バージョン1.19以降の新しいレプリカセット配置でのみ指定できます。 実行中のレプリカセット配置のMongoDB Ops Manager自動化構成で、このフィールドまたは任意のprocesses[n].hostname
フィールドの値を変更することはできません。
spec.memberConfig
タイプ: コレクション
MongoDB
リソースから配置された各 MongoDB レプリカセット ノードの仕様。配列内の要素の順序は、レプリカセット内のノードの順序を反映する必要があります。 たとえば、 配列の最初の要素はインデックス
0
の ポッドに影響し、2 番目の要素はインデックス1
に影響するなどします。例
3 つのノードからなるレプリカセットの次の仕様例を検討してみましょう。
spec: memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - votes: 0 priority: "0.5" tags: tag2: "value2" environment: "prod"
spec.memberConfig.priority
型: string
MongoDB レプリカセットがプライマリ になる相対的な可能性を示す数値。
レプリカセット メンバーがプライマリになる相対的な可能性を高めるには、
priority
の値を高く指定します。レプリカセット メンバーがプライマリになる相対的な可能性を減らすには、
priority
の値を低く指定します。
たとえば、
memberConfig.priority
が1.5
のメンバーは、memberConfig.priority
が0.5
のメンバーよりも多く、プライマリになる可能性が高くなります。かつ
memberConfig.priority
が0
のノードはプライマリになる資格がありません。 詳しくは、「メンバーの優先順位 」を参照してください。
spec.memberConfig.tags
タイプ: map
MongoDB レプリカセットの特定のノードに読み取りおよび書込み (write) 操作を指示するためのレプリカセット タグのマップ。
spec.memberConfig.votes
タイプ: 数値
MongoDB レプリカセットのメンバーが選挙で投票できるかどうかを決定します。 メンバーに投票を許可するには を
1
に設定します。 ノードを選挙から除外するには、0
に設定します。
次の設定はレプリカセットのリソースタイプにのみ適用されます。
spec.backup.autoTerminateOnDeletion
タイプ: ブール値
MongoDB リソースを削除するときに Kubernetes Operator がバックアップを停止して終了するかどうかを制御するフラグ。 省略した場合、デフォルト値は
false
です。 このフラグをtrue
に設定すると、spec.backup.mode
設定がenabled
に設定されているときに MongoDB カスタム リソースを削除する場合に便利です。
シャーディングされたクラスターの設定
重要
マルチクラスターのシャードクラスタの配置は現在パブリック プレビュー段階です。
注意
すべてのレプリカセット設定は、特に指定がない限り、シャーディングされたクラスター リソースにも適用されます。
次の設定は、シャーディングされたクラスターのリソース タイプにのみ適用されます。
spec.backup.snapshotSchedule.clusterCheckpointIntervalMin
タイプ: 数値
連続するクラスター チェックポイント間の分数。 この設定は、 MongoDBを機能の互換性バージョン4.0またはそれ以前のバージョンで実行するシャーディングされたクラスターにのみ適用されます。 この数値により、シャーディングされたクラスターのポイントインタイム復元の粒度が決まります。
15
、30
、または60
の値を設定できます。
spec.configSrv.additionalMongodConfig
タイプ: コレクション
各コンフィギュレーション サーバー ノード を起動するための追加 構成オプション 。
Kubernetes Operator は、MongoDB Agent を通じて配置する MongoDB バージョンがサポートするすべての構成オプションをサポートしています。ただし、Kubernetes Operator は、次のいずれかのオプションに指定した値を上書きします。
Kubernetes Operator が所有する構成オプションの詳細については、「 MongoDB Kubernetes Operator 専用設定 」を参照してください。
使用できる構成オプションについては、 MongoDBドキュメントの「 配置の詳細オプションMongoDB Ops Manager 」を 参照してください。
spec.configSrv.agent
タイプ: コレクション
各コンフィギュレーションサーバーノードの MongoDB Agent 構成設定。
spec.configSrv.agent.startupOptions
タイプ: コレクション
各コンフィギュレーションサーバー ノードを起動する MongoDB Agent 設定。
MongoDB Agent 設定はキーと値のペアとして提供する必要があります。 値は文字列である必要があります。
サポートされている MongoDB Agent 設定のリストについては、以下を参照してください。
Cloud Manager プロジェクトのMongoDB Agent 設定。
OperatorMongoDB Agent を使用して配置したMongoDB Ops Manager バージョンの 設定 。Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.configSrvPodSpec
型: オブジェクト
MongoDB CustomResourceDefinition の仕様を含むオブジェクト コンフィギュレーションサーバー ポッド。
spec.configSrvPodSpec.persistence.single
タイプ: コレクション
Kubernetes Operator が 1 つの 永続ボリューム要求 を作成するようにします と では、データ、ジャーナル、ログの 3 つのすべてのディレクトリが同じ 永続ボリューム にマウントされます。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.multiple
コレクションを設定できますが、両方は設定できません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
string永続ボリューム の最小サイズ マウントする必要があるもの。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 5Gi です。
たとえば、 の各コンフィギュレーションサーバー ノードに60ギガバイトのストレージ容量が必要な場合は、この値を
60Gi
に設定します。storageClass
string永続的なボリューム要求 で指定されるストレージのタイプ 。このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.configSrvPodSpec.persistence.multiple.data
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします と は、データのディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringstorageClass
string各コンフィギュレーションサーバー ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.configSrvPodSpec.persistence.multiple.journal
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします およびジャーナル用のディレクトリを独自の 永続ボリューム にマウントする 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringstorageClass
string各コンフィギュレーションサーバー ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.configSrvPodSpec.persistence.multiple.logs
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします および は、ログ用のディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringstorageClass
string各コンフィギュレーションサーバー ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.configSrvPodSpec.podTemplate
タイプ: コレクション
テンプレート MongoDB Enterprise Kubernetes Operator が各コンフィギュレーション サーバー ノード に対して作成する Kubernetes ポッド用。
テンプレート値は、
spec.configSrvPodSpec
で指定された値よりも優先されます。注意
Kubernetes 演算子は、
spec.configSrvPodSpec.podTemplate
で指定したフィールドを検証しません。
spec.configSrvPodSpec.podTemplate.affinity.podAffinity
タイプ: コレクション
Kubernetes ルール 複数の
MongoDB
リソース ポッド かどうかを判断 は他の ポッド と同じ場所に配置する必要があります 。ユースケースの詳細については、「 アフィニティと非アフィニティ 」を参照してください。 (Kubernetes ドキュメント)。
spec.configSrvPodSpec.podTemplate.affinity.nodeAffinity
タイプ: コレクション
Kubernetes ルール : ポッド を配置する 特定の範囲の ノード 上の レプリカセット 用 。
読み取りおよび書込みパフォーマンスを最適化するには、ノードの アフィニティ ルールを使用してノードを制限します 特定の ノード 上で を実行する 、または特定の ノード で の実行を優先する場合は 。
spec.configSrvPodSpec.podTemplate.affinity.podAntiAffinity
型: string
Default: kubernetes.io/hostname
ルール
MongoDB
を設定する ポッド を分散する リソースを異なる場所でホストする。ロケーションは、単一のノード、ロック、またはリージョンにすることができます。 デフォルトでは、Kubernetes Operator は異なるノードにポッドを分散しようとします。
spec.configSrvPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
型: string
Default: kubernetes.io/hostname
spec.configSrvPodSpec.podTemplate.metadata
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各コンフィギュレーションサーバー ノードに対して作成する Kubernetes ポッドのメタデータ。
spec.configSrvPodSpec.podTemplate.metadata
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
spec.configSrvPodSpec.podTemplate.spec
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各コンフィギュレーションサーバー ノードに対して作成する Kubernetes ポッドの仕様。
spec.configSrvPodSpec.podTemplate.spec
に追加できるフィールドを確認するには、Kubernetes PodSpec v1Core API を参照してください。注意
spec.configSrvPodSpec.podTemplate.spec.containers
にコンテナを追加すると、Kubernetes Operator はそれらを Kubernetes ポッドに追加します。 これらのコンテナは、ポッド内の各コンフィギュレーションサーバー ノードコンテナに追加されます。この設定を使用して、各ポッドの CPU と RAM の割り当てを指定します。 例について Githubは、 のサンプルを参照してください。
spec.mongodsPerShardCount
タイプ: 整数
必須。 シャードあたりのメンバー数。
spec.mongosCount
タイプ: 整数
必須。 シャーディングされた
mongos
クラスター内 の インスタンスの数。
spec.mongos.additionalMongodConfig
タイプ: コレクション
各 mongos インスタンスを起動するための追加 構成オプション 。
Kubernetes Operator は、MongoDB Agent を通じて配置する MongoDB バージョンがサポートするすべての構成オプションをサポートしています。ただし、Kubernetes Operator は、次のいずれかのオプションに指定した値を上書きします。
Kubernetes Operator が所有する構成オプションの詳細については、「 MongoDB Kubernetes Operator 専用設定 」を参照してください。
使用できる構成オプションについては、 MongoDBドキュメントの「 配置の詳細オプションMongoDB Ops Manager 」を 参照してください。
spec.mongos.agent
タイプ: コレクション
各
mongos
インスタンスの MongoDB Agent 構成設定。
spec.mongos.agent.startupOptions
タイプ: コレクション
各
mongos
インスタンスの起動に使用する MongoDB Agent 設定。MongoDB Agent 設定はキーと値のペアとして提供する必要があります。 値は文字列である必要があります。
サポートされている MongoDB Agent 設定のリストについては、以下を参照してください。
Cloud Manager プロジェクトのMongoDB Agent 設定。
OperatorMongoDB Agent を使用して配置したMongoDB Ops Manager バージョンの 設定 。Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.mongosPodSpec
型: オブジェクト
MongoDB CustomResourceDefinition の仕様を含むオブジェクト mongos ポッド。
spec.mongosPodSpec.podTemplate
タイプ: コレクション
テンプレート MongoDB Enterprise Kubernetes Operator が各 インスタンスに対して作成する Kubernetes
mongos
ポッドの場合、テンプレート値は、
spec.mongosPodSpec
で指定された値よりも優先されます。注意
Kubernetes 演算子は、
spec.mongosPodSpec.podTemplate
で指定したフィールドを検証しません。
spec.mongosPodSpec.podTemplate.affinity.podAffinity
タイプ: コレクション
任意。 Kubernetes ルール 複数の
MongoDB
リソース ポッド かどうかを判断する は他の ポッド と同じ場所に配置する必要があります 。
spec.mongosPodSpec.podTemplate.affinity.nodeAffinity
タイプ: コレクション
Kubernetes ルール : ポッド を配置する 特定の範囲の ノード 上の レプリカセット 用 。
読み取りおよび書込みパフォーマンスを最適化するには、ノードの アフィニティ ルールを使用してノードを制限します 特定の ノード 上で を実行する 、または特定の ノード で の実行を優先する場合は 。
spec.mongosPodSpec.podTemplate.affinity.podAntiAffinity
型: string
Default: kubernetes.io/hostname
ルール
MongoDB
を設定する ポッド を分散する リソースを異なる場所でホストする。ロケーションは、単一のノード、ロック、またはリージョンにすることができます。 デフォルトでは、Kubernetes Operator は異なるノードにポッドを分散しようとします。
spec.mongosPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
型: string
Default: kubernetes.io/hostname
spec.mongosPodSpec.podTemplate.metadata
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各
mongos
インスタンスに対して作成する Kubernetes ポッドのメタデータ。spec.mongosPodSpec.podTemplate.metadata
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
spec.mongosPodSpec.podTemplate.spec
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各
mongos
インスタンスに対して作成する Kubernetes ポッドの仕様。spec.mongosPodSpec.podTemplate.spec
に追加できるフィールドを確認するには、Kubernetes PodSpec v1Core API を参照してください。注意
spec.mongosPodSpec.podTemplate.spec.containers
にコンテナを追加すると、Kubernetes Operator はそれらを Kubernetes ポッドに追加します。 これらのコンテナは、ポッド内の各mongos
インスタンス コンテナに追加されます。この設定を使用して、各ポッドの CPU と RAM の割り当てを指定します。 例について Githubは、 のサンプルを参照してください。
spec.shardCount
タイプ: 整数
必須。 シャーディングされたクラスター内の シャード の数。
spec.shard.additionalMongodConfig
タイプ: コレクション
各シャーディングされた クラスター のシャード ノードを起動するための追加 構成オプション 。
Kubernetes Operator は、MongoDB Agent を通じて配置する MongoDB バージョンがサポートするすべての構成オプションをサポートしています。ただし、Kubernetes Operator は、次のいずれかのオプションに指定した値を上書きします。
Kubernetes Operator が所有する構成オプションの詳細については、「 MongoDB Kubernetes Operator 専用設定 」を参照してください。
使用できる構成オプションについては、 MongoDBドキュメントの「 配置の詳細オプションMongoDB Ops Manager 」を 参照してください。
spec.shard.agent
タイプ: コレクション
各シャーディングされたクラスターのシャード ノードの MongoDB Agent の構成設定。
spec.shard.agent.startupOptions
タイプ: コレクション
各シャーディングされたクラスターのシャード ノードを起動する MongoDB Agent 設定。
MongoDB Agent 設定はキーと値のペアとして提供する必要があります。 値は文字列である必要があります。
サポートされている MongoDB Agent 設定のリストについては、以下を参照してください。
Cloud Manager プロジェクトのMongoDB Agent 設定。
OperatorMongoDB Agent を使用して配置したMongoDB Ops Manager バージョンの 設定 。Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.shardPodSpec
型: オブジェクト
MongoDB CustomResourceDefinition の仕様を含むオブジェクト シャード ポッド。
spec.shardPodSpec.persistence.multiple.data
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします と は、データのディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 各シャーディングされた クラスター のシャード ノードを Kubernetes でホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 16Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
string各シャーディングされたクラスターのシャード ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.shardPodSpec.persistence.multiple.journal
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします およびジャーナル用のディレクトリを独自の 永続ボリューム にマウントする 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 各シャーディングされた クラスター のシャード ノードを Kubernetes でホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 1Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
string各シャーディングされたクラスターのシャード ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.shardPodSpec.persistence.multiple.logs
タイプ: コレクション
Kubernetes Operator が 永続的なボリューム要求 を作成するようにします および は、ログ用のディレクトリを独自の 永続ボリューム にマウントします。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.single
コレクションを設定できますが、両方を設定することはできません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
stringKubernetes ノード で使用可能である必要がある最小ストレージ容量 各シャーディングされた クラスター のシャード ノードを Kubernetes でホストします。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 3Gi です。
たとえば、この
MongoDB
リソースに60ギガバイトのストレージ容量が必要な場合は、この値を60Gi
に設定します。storageClass
string各シャーディングされたクラスターのシャード ノードに必要なストレージのタイプ。 このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
spec.shardPodSpec.podTemplate
タイプ: コレクション
テンプレート MongoDB Enterprise Kubernetes Operator が各シャーディングされ たクラスター のシャード ノードに対して作成する Kubernetes ポッド用。
テンプレート値は、
spec.shardPodSpec
で指定された値よりも優先されます。注意
Kubernetes 演算子は、
spec.shardPodSpec.podTemplate
で指定したフィールドを検証しません。
spec.shardPodSpec.podTemplate.affinity.podAffinity
型: string
Kubernetes ルール 複数の
MongoDB
リソース ポッド かどうかを判断 は他の ポッド と同じ場所に配置する必要があります 。ユースケースの詳細については、「 アフィニティと非アフィニティ 」を参照してください。 (Kubernetes ドキュメント)。
spec.shardPodSpec.podTemplate.affinity.nodeAffinity
型: string
Kubernetes ルール : ポッド を配置する 特定の範囲の ノード 上の レプリカセット 用 。
読み取りおよび書込みパフォーマンスを最適化するには、ノードの アフィニティ ルールを使用してノードを制限します 特定の ノード 上で を実行する 、または特定の ノード で の実行を優先する場合は 。
spec.shardPodSpec.podTemplate.affinity.podAntiAffinity
型: string
Default: kubernetes.io/hostname
ルール
MongoDB
を設定する ポッド を分散する リソースを異なる場所でホストする。ロケーションは、単一のノード、ロック、またはリージョンにすることができます。 デフォルトでは、Kubernetes Operator は異なるノードにポッドを分散しようとします。
spec.shardPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
型: string
Default: kubernetes.io/hostname
spec.shardPodSpec.podTemplate.metadata
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各シャーディングされたクラスターのシャード ノードに対して作成する Kubernetes ポッドのメタデータ。
spec.shardPodSpec.podTemplate.metadata
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
spec.shardPodSpec.podTemplate.spec
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が各シャーディングされたクラスターのシャード ノードに対して作成する Kubernetes ポッドの仕様。
spec.shardPodSpec.podTemplate.spec
に追加できるフィールドを確認するには、Kubernetes PodSpec v1Core API を参照してください。注意
spec.shardPodSpec.podTemplate.spec.containers
にコンテナを追加すると、Kubernetes Operator はそれらを Kubernetes ポッドに追加します。 これらのコンテナは、ポッド内の各シャーディングされたクラスターのシャード ノードのコンテナに追加されます。この設定を使用して、各ポッドの CPU と RAM の割り当てを指定します。 例について Githubは、 のサンプルを参照してください。
spec.shardSpecificPodSpec
タイプ: 配列
ステートメント を含むリスト は、シャードごとに上書きします。
spec.shardSpecificPodSpec.podTemplate
タイプ: コレクション
テンプレート MongoDB Enterprise Kubernetes Operator が特定のシャードに対して作成する Kubernetes ポッド用。
テンプレート値は、
spec.shardSpecificPodSpec
で指定された値よりも優先されます。注意
Kubernetes 演算子は、
spec.shardSpecificPodSpec.podTemplate
で指定したフィールドを検証しません。
spec.shardSpecificPodSpec.podTemplate.affinity.podAffinity
型: string
Kubernetes ルール 複数の
MongoDB
リソース ポッド かどうかを判断 は他の ポッド と同じ場所に配置する必要があります 。ユースケースの詳細については、「 アフィニティと非アフィニティ 」を参照してください。 (Kubernetes ドキュメント)。
spec.shardSpecificPodSpec.podTemplate.affinity.podAntiAffinity
型: string
Default: kubernetes.io/hostname
ルール
MongoDB
を設定する ポッド を分散する リソースを異なる場所でホストする。ロケーションは、単一のノード、ロック、またはリージョンにすることができます。 デフォルトでは、Kubernetes Operator は異なるノードにポッドを分散しようとします。
spec.shardSpecificPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
型: string
Default: kubernetes.io/hostname
spec.shardSpecificPodSpec.podTemplate.metadata
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が特定のシャードに対して作成する Kubernetes ポッドのメタデータ。
spec.shardSpecificPodSpec.podTemplate.metadata
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
spec.shardSpecificPodSpec.podTemplate.spec
タイプ: コレクション
MongoDB Enterprise Kubernetes Operator が特定のシャードに対して作成する Kubernetes ポッドの仕様。
spec.shardSpecificPodSpec.podTemplate.spec
に追加できるフィールドを確認するには、Kubernetes PodSpec v1Core API を参照してください。注意
spec.shardSpecificPodSpec.podTemplate.spec.containers
にコンテナを追加すると、Kubernetes Operator はそれらを Kubernetes ポッドに追加します。 これらのコンテナは、ポッド内の特定のシャード コンテナに追加されます。この設定を使用して、各ポッドの CPU と RAM の割り当てを指定します。 例について Githubは、 のサンプルを参照してください。
spec.topology
型: string
任意
デフォルト:
SingleCluster
シャーディングされたシャーディングされたクラスターのトポロジーを定義します。 既存の配置では変更できません。
MultiCluster
に設定されている場合:すべてのシャーディングされたクラスターコンポーネントには
clusterSpecList
が定義されている必要があります: -spec.mongos.clusterSpecList
-spec.configSrv.clusterSpecList
-spec.shard.clusterSpecList
次のフィールドは無視され、
spec.<section>.clusterSpecList
オブジェクト内の各クラスターに同等の値が渡されます。-spec.mongodsPerShardCount
はspec.shard.clusterSpecList.members
で定義されています -spec.mongosCount
はspec.mongos.clusterSpecList.members
で定義されています -spec.configServerCount
はspec.configSrv.clusterSpecList.members
で定義されています。 -spec.shardOverrides.memberConfig
はspec.shardOverrides.clusterSpecList.memberConfig
で定義されています -spec.shardOverrides.members
はspec.shardOverrides.clusterSpecList.members
で定義されています -spec.shardOverrides.statefulSet
はspec.shardOverrides.clusterSpecList.statefulSet
で定義されています
例:
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: sc spec: shardCount: 3 # we don't specify mongodsPerShardCount, mongosCount and configServerCount as they don't make sense for multi-cluster topology: MultiCluster type: ShardedCluster version: 7.0.12 cloudManager: configMapRef: name: my-project credentials: my-credentials persistent: true shard: clusterSpecList: - clusterName: member-cluster-0 members: 2 # each shard will have 2 members in cluster 0, unless overriden - clusterName: member-cluster-1 members: 2 - clusterName: member-cluster-2 members: 1 shardOverrides: - shardNames: [sc-2] # this override will apply to the third shard (here, shards are indexed from 0 to 2 as we have 3 shards) clusterSpecList: - clusterName: member-cluster-0 # all other fields are optional, if not provided the fields from matching member cluster from shard.clusterSpecList will be taken by default members: 3 - clusterName: member-cluster-1 # we don't deploy this shard to member-cluster-1 # Note that it is also possible to make it explicit with members: 0 # we don't provide entry for clusterName: member-cluster-1, so it won't be deployed there - clusterName: member-cluster-2 members: 2 configSrv: clusterSpecList: - clusterName: member-cluster-0 members: 2 # config server will have 2 members in this cluster - clusterName: member-cluster-1 members: 1 - clusterName: member-cluster-2 members: 2 mongos: clusterSpecList: - clusterName: member-cluster-0 members: 2 # router will have 2 members in this cluster - clusterName: member-cluster-1 members: 1 次のフィールドは、
topology=MultiCluster
が実行される配置にのみ関連します。spec.configSrv.clusterSpecList
注意
このフィールドは、マルチクラスターのシャーディングされたクラスターの配置でのみ使用できます。これらは現在public preview段階です。
タイプ: オブジェクトの配列
必須
topology=MultiCluster
の場合)次の最上位フィールドを持つマルチクラスターのシャーディングされたクラスター配置で使用するオブジェクトの配列。
externalAccess
タイプ: コレクション
マルチ Kubernetes クラスター MongoDB 配置を外部接続用に公開するための仕様。 Kubernetes クラスターの外部からマルチ Kubernetes クラスター MongoDB 配置に接続する方法については、「 Kubernetes 外部からマルチクラスター リソースに接続する 」を参照してください。
これらの設定は、すべてのクラスターのサービスに適用されます。 特定のクラスターでこれらのグローバル設定をオーバーライドするには、 spec.clusterSpecList.externalAccess.externalService を使用します。
spec.externalAccess
を追加すると、Kubernetes Operator はレプリカセット内の各ポッドの外部サービスを作成します。 外部サービスは、クラスター内の各 MongoDB database ポッドの外部エントリ ポイントを提供します。 各外部サービスには セレクター があります は、外部サービスを特定のポッドに一致させます。値なしでこの設定を追加すると、Kubernetes Operator は次のデフォルト値を持つ外部サービスを作成します。
フィールド値説明Name
<pod-name>-svc-external
外部サービスの名前。 この値は変更できません。Type
LoadBalancer
外部 LoadBalancer を作成します servicePort
<Port Number>
mongod
のポート。publishNotReadyAddress
true
DNS レコード を指定する は、Ped が準備ができていない場合でも作成されます。どのデータベース ポッドでもfalse
に設定しないでください。注意
spec.clusterSpecList.externalAccess.externalDomainを設定すると、外部サービスはバックアップ用の別のポート(
Port Number + 1
)を追加します。
members
タイプ: 数値
MongoDB レプリカセット内のノードの数。
memberConfig
タイプ: コレクション
マルチ Kubernetes クラスターMongoDBデプロイ内の各MongoDBシャードとそのノードの仕様。
シャードのオブジェクト内の要素の順序は、レプリカセット内のノードの順序を反映する必要があります。 例、最初の要素はインデックス
0
の ポッドに影響し、2 番目の要素はインデックス1
に影響するなど、 に影響します。例
3 つのレプリカ セットを含むマルチ Kubernetes クラスター MongoDB 配置の次の例の仕様を検討してみましょう。
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet duplicateServiceObjects: false credentials: my-credentials opsManager: configMapRef: name: my-project clusterSpecList: - clusterName: cluster1.example.com members: 2 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - clusterName: cluster2.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - clusterName: cluster3.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod"
podSpec.persistence
タイプ: コレクション
spec.configSrv.clusterSpecList
とspec.shard.clusterSpecList
に渡されるclusterSpecItem
オブジェクトでのみ利用可能。 特定のクラスターの既存の永続化構成を上書きします。
statefulSet
タイプ: コレクション
ステートフルセット の構成を提供します マルチ Kubernetes クラスターMongoDBデプロイにおけるクラスターの各ステートメントセットの オーバーライド。マルチ Kubernetes クラスターMongoDBデプロイ内のすべてのクラスターに適用されるグローバル構成を設定するには、 spec.status.spec を参照してください。
この設定は、マルチ Kubernetes クラスター MongoDB 配置のレプリカセット リソース タイプにのみ適用されます。
spec.duplicateServiceObjects
注意
このフィールドは、マルチクラスターのシャーディングされたクラスターの配置でのみ使用できます。これらは現在public preview段階です。
タイプ: ブール値
任意
デフォルト:
true
トポロジーが
MultiCluster
でない場合は無視されます。 すべてのシャーディングされたクラスターコンポーネントのサービスに適用されます(mongos
、configSrv
、shards
。true
に設定されている場合:- Kubernetes演算子は、各ノード クラスター内のすべてのノード クラスターからすべての
Pod Services
を作成します。 false
に設定されている場合:- Kubernetes演算子は、次のみを作成します:
spec.mongos.clusterSpecList
注意
このフィールドは、マルチクラスターのシャーディングされたクラスターの配置でのみ使用できます。これらは現在public preview段階です。
タイプ: オブジェクトの配列
必須
topology=MultiCluster
の場合)次の最上位フィールドを持つマルチクラスターのシャーディングされたクラスター配置で使用するオブジェクトの配列。
externalAccess
タイプ: コレクション
マルチ Kubernetes クラスター MongoDB 配置を外部接続用に公開するための仕様。 Kubernetes クラスターの外部からマルチ Kubernetes クラスター MongoDB 配置に接続する方法については、「 Kubernetes 外部からマルチクラスター リソースに接続する 」を参照してください。
これらの設定は、すべてのクラスターのサービスに適用されます。 特定のクラスターでこれらのグローバル設定をオーバーライドするには、 spec.clusterSpecList.externalAccess.externalService を使用します。
spec.externalAccess
を追加すると、Kubernetes Operator はレプリカセット内の各ポッドの外部サービスを作成します。 外部サービスは、クラスター内の各 MongoDB database ポッドの外部エントリ ポイントを提供します。 各外部サービスには セレクター があります は、外部サービスを特定のポッドに一致させます。値なしでこの設定を追加すると、Kubernetes Operator は次のデフォルト値を持つ外部サービスを作成します。
フィールド値説明Name
<pod-name>-svc-external
外部サービスの名前。 この値は変更できません。Type
LoadBalancer
外部 LoadBalancer を作成します servicePort
<Port Number>
mongod
のポート。publishNotReadyAddress
true
DNS レコード を指定する は、Ped が準備ができていない場合でも作成されます。どのデータベース ポッドでもfalse
に設定しないでください。注意
spec.clusterSpecList.externalAccess.externalDomainを設定すると、外部サービスはバックアップ用の別のポート(
Port Number + 1
)を追加します。
members
タイプ: 数値
MongoDB レプリカセット内のノードの数。
memberConfig
タイプ: コレクション
マルチ Kubernetes クラスターMongoDBデプロイ内の各MongoDBシャードとそのノードの仕様。
シャードのオブジェクト内の要素の順序は、レプリカセット内のノードの順序を反映する必要があります。 例、最初の要素はインデックス
0
の ポッドに影響し、2 番目の要素はインデックス1
に影響するなど、 に影響します。例
3 つのレプリカ セットを含むマルチ Kubernetes クラスター MongoDB 配置の次の例の仕様を検討してみましょう。
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet duplicateServiceObjects: false credentials: my-credentials opsManager: configMapRef: name: my-project clusterSpecList: - clusterName: cluster1.example.com members: 2 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - clusterName: cluster2.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - clusterName: cluster3.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod"
statefulSet
タイプ: コレクション
ステートフルセット の構成を提供します マルチ Kubernetes クラスターMongoDBデプロイにおけるクラスターの各ステートメントセットの オーバーライド。マルチ Kubernetes クラスターMongoDBデプロイ内のすべてのクラスターに適用されるグローバル構成を設定するには、 spec.status.spec を参照してください。
この設定は、マルチ Kubernetes クラスター MongoDB 配置のレプリカセット リソース タイプにのみ適用されます。
spec.shard.clusterSpecList
注意
このフィールドは、マルチクラスターのシャーディングされたクラスターの配置でのみ使用できます。これらは現在public preview段階です。
タイプ: オブジェクトの配列
必須
topology=MultiCluster
の場合)次の最上位フィールドを持つマルチクラスターのシャーディングされたクラスター配置で使用するオブジェクトの配列。
externalAccess
タイプ: コレクション
マルチ Kubernetes クラスター MongoDB 配置を外部接続用に公開するための仕様。 Kubernetes クラスターの外部からマルチ Kubernetes クラスター MongoDB 配置に接続する方法については、「 Kubernetes 外部からマルチクラスター リソースに接続する 」を参照してください。
これらの設定は、すべてのクラスターのサービスに適用されます。 特定のクラスターでこれらのグローバル設定をオーバーライドするには、 spec.clusterSpecList.externalAccess.externalService を使用します。
spec.externalAccess
を追加すると、Kubernetes Operator はレプリカセット内の各ポッドの外部サービスを作成します。 外部サービスは、クラスター内の各 MongoDB database ポッドの外部エントリ ポイントを提供します。 各外部サービスには セレクター があります は、外部サービスを特定のポッドに一致させます。値なしでこの設定を追加すると、Kubernetes Operator は次のデフォルト値を持つ外部サービスを作成します。
フィールド値説明Name
<pod-name>-svc-external
外部サービスの名前。 この値は変更できません。Type
LoadBalancer
外部 LoadBalancer を作成します servicePort
<Port Number>
mongod
のポート。publishNotReadyAddress
true
DNS レコード を指定する は、Ped が準備ができていない場合でも作成されます。どのデータベース ポッドでもfalse
に設定しないでください。注意
spec.clusterSpecList.externalAccess.externalDomainを設定すると、外部サービスはバックアップ用の別のポート(
Port Number + 1
)を追加します。
members
タイプ: 数値
MongoDB レプリカセット内のノードの数。
memberConfig
タイプ: コレクション
マルチ Kubernetes クラスターMongoDBデプロイ内の各MongoDBシャードとそのノードの仕様。
シャードのオブジェクト内の要素の順序は、レプリカセット内のノードの順序を反映する必要があります。 例、最初の要素はインデックス
0
の ポッドに影響し、2 番目の要素はインデックス1
に影響するなど、 に影響します。例
3 つのレプリカ セットを含むマルチ Kubernetes クラスター MongoDB 配置の次の例の仕様を検討してみましょう。
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet duplicateServiceObjects: false credentials: my-credentials opsManager: configMapRef: name: my-project clusterSpecList: - clusterName: cluster1.example.com members: 2 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - clusterName: cluster2.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - clusterName: cluster3.example.com members: 1 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod"
podSpec.persistence
タイプ: コレクション
spec.configSrv.clusterSpecList
とspec.shard.clusterSpecList
に渡されるclusterSpecItem
オブジェクトでのみ利用可能。 特定のクラスターの既存の永続化構成を上書きします。
statefulSet
タイプ: コレクション
ステートフルセット の構成を提供します マルチ Kubernetes クラスターMongoDBデプロイにおけるクラスターの各ステートメントセットの オーバーライド。マルチ Kubernetes クラスターMongoDBデプロイ内のすべてのクラスターに適用されるグローバル構成を設定するには、 spec.status.spec を参照してください。
この設定は、マルチ Kubernetes クラスター MongoDB 配置のレプリカセット リソース タイプにのみ適用されます。
spec.shardOverrides
注意
このフィールドは、マルチクラスターのシャーディングされたクラスターの配置でのみ使用できます。これらは現在public preview段階です。
タイプ: オブジェクトの配列
任意
シャードごとのオーバーライドを含むリスト。 各オブジェクトには、次のフィールドが含まれています。
shardNames
必須
このオーバーライドが適用されるシャードの名前。
podSpec.Persistence
任意
Kubernetes Operator が永続ボリュームを作成してシャードにバインドする方法を定義します。
topology=MultiCluster
の場合、すべてのノード クラスターの永続化設定を設定します。spec.shardOverrides.clusterSpecList.persistence
では、特定のノード クラスターの永続設定を定義できます。additionalMongodConfig
任意
spec.shard.additionalMongodConfig
のシャード固有の上書き。agent
任意
spec.shard.agent
のシャード固有の上書き。statefulSet
任意
spec.shardPodSpec.podTemplate
とspec.shard.clusterSpecList.statefulSet
のシャード固有の上書き。members
任意
topology=SingleCluster
の場合にのみ利用可能です。spec.mongodsPerShardCount
のオーバーライド用のシャード固有オーバーライド。memberConfig
任意
topology=SingleCluster
の場合にのみ利用可能です。spec.shard.memberConfig
のシャード固有の上書き。
spec.shardPodSpec.persistence.single
タイプ: コレクション
Kubernetes Operator が 1 つの 永続ボリューム要求 を作成するようにします と では、データ、ジャーナル、ログの 3 つのすべてのディレクトリが同じ 永続ボリューム にマウントされます。 。
注意
spec.persistent
: true
の場合は、このコレクションに値を設定する必要があります。このコレクションまたは
persistence.multiple
コレクションを設定できますが、両方は設定できません。
スカラーデータ型説明labelSelector
stringタグ マウントされたボリュームをディレクトリにバインドするために使用されます。storage
string永続ボリューム の最小サイズ マウントする必要があるもの。この値は、 JEDEC表記では、整数とそれに続くストレージの単位として表されます。
デフォルト値は 16Gi です。
たとえば、 の各シャーディングされたクラスターのシャード ノードに60ギガバイトのストレージ容量が必要な場合は、この値を
60Gi
に設定します。storageClass
string永続的なボリューム要求 で指定されるストレージのタイプ 。このストレージ タイプは、 StorageClass として作成できます。 この オブジェクト で使用する前にオブジェクトを 仕様。
StorageClass を必ず設定してください 保持 する
reclaimPolicy
。これにより、 永続的なボリューム要求 が発生した場合にデータが保持できます は削除されます。
Prometheus 設定
Prometheus は、スタンドアロン リソース、レプリカセット、またはシャーディングされたクラスターで使用できます。 詳細については、「 Prometheus で使用するリソースの配置」を参照してください。 例については、「 Prometheus と MongoDB リソース 」を参照してください。
MongoDB リソースで Prometheus を使用する場合、次の設定が適用されます。
spec.prometheus.metricsPath
型: string
任意
デフォルト:
"/metrics"
メトリクス エンドポイントへのパスを示す、人間が判読可能なstring 。 この設定を指定しない場合、デフォルトが適用されます。
spec.prometheus.passwordSecretRef
型: オブジェクト
条件付き
シークレット の詳細を含むオブジェクト 基本的な HTTP 認証用。MongoDB リソースで Prometheus を使用する場合は、この設定を指定する必要があります。
spec.prometheus.passwordSecretRef.key
型: string
任意
デフォルト:
"password"
シークレット 内のキーを識別する、人間が判読可能な 基本的なstringHTTP 認証のパスワードを保存します。この設定を指定しない場合、デフォルトが適用されます。
spec.prometheus.passwordSecretRef.name
型: string
条件付き
秘密 を識別する、人間が判読可能なラベル 基本的な HTTP 認証用のパスワードを含むMongoDB リソースで Prometheus を使用する場合は、この設定を指定する必要があります。
spec.prometheus.tlseSecretKeyRef
型: オブジェクト
任意
シークレット の詳細を含むオブジェクト TLS 認証用。
spec.prometheus.tlseSecretKeyRef.key
型: string
任意
デフォルト:
"password"
シークレットstring 内のキーを識別する、人間が判読可能な は TLS 認証用のパスワードを保存します。この設定を指定しない場合、デフォルトが適用されます。
spec.prometheus.tlseSecretKeyRef.name
型: string
条件付き
秘密 を識別する、人間が判読可能なラベル TLS 認証用のパスワードを含むMongoDB リソースで Prometheus を使用し、 TLS認証を使用する場合は、この設定を指定する必要があります。
セキュリティ設定
次のセキュリティ設定は、レプリカセットとシャーディングされたクラスターのリソース タイプにのみ適用されます。
spec.security.tls.enabled
タイプ: ブール値
デフォルト:
false
重要
spec.security.tls.enabled
は Kubernetes Operator バージョン1.19以降非推奨です。 TLSを有効にするには、spec.security.certsSecretPrefix
設定の値を指定します。TLS 証明書を使用して以下の間の通信を暗号化します。
レプリカセットまたはシャーディングされたクラスター構成内の MongoDB ホスト
クライアント(
mongo
shell、ドライバー、 MongoDB Compassなど)と MongoDB の配置
デフォルトでは、
net.ssl.mode
はrequireSSL
に設定されています。 クライアントとデータベース接続に使用されるTLSモードを変更するには、spec.additionalMongodConfig.net.ssl.mode
を参照してください。
spec.security.tls.ca
型: string
ConfigMap の名前を指定する
MongoDB
これは リソースの CA を保存します。重要
カスタムCAを使用して
MongoDB
リソースのTLS証明書に署名する場合は、このパラメータを指定する必要があります。Kubernetes Operator では、ConfigMap で
MongoDB
リソース証明書ca-pem
に名前を付ける必要があります。
spec.security.certsSecretPrefix
型: string
Kubernetes シークレット のプレフィックスへのテキスト レプリカセットの または シャーディングされたクラスターの TLS キーと証明書を含む を作成した
シークレットの前に
<prefix>-<metadata.name>
を付ける必要があります。たとえば、配置を
my-deployment
mdb
と呼び出し、プレフィックスを に設定する場合は、クライアント TLS 通信の TLS シークレットにmdb-my-deployment-cert
という名前を付ける必要があります。また、内部クラスター認証用のTLSシークレット(有効になっている場合)mdb-my-deployment-clusterfile
に名前を付ける必要があります。TLS証明書を含むシークレットの名前の詳細については、配置に適用される「レプリカセットの配置 」のトピックを参照してください。
spec.security.tls.additionalCertificateDomains
タイプ: ブール値
この配置内の各ポッドへのTLS証明書に追加する必要があるすべてのドメインのリスト。 このパラメーターを設定すると、Kubernetes Operator が TLS 証明書に変換するすべての CSR に、形式 の SAN が含まれ
<pod name>.<additional cert domain>
。レプリカセット リソースには、このパラメーターは必要ありません。 Use
spec.connectivity.replicaSetHorizons
instead.注意
このパラメータをTLS対応のリソースに追加すると、リソースが
Pending
状態に達したときに Kubernetes にエラーが表示されます。 このエラーは表示されます。Please manually remove the |csr| in order to proceed.
この問題を解決するには、以下の手順を行います。Kubernetes が新しい CSR を生成できるように、既存の CSR を削除します。リソースを削除する方法については、 リソースの 削除 を参照してください。 (Kubernetes ドキュメント)。
Kubernetes が CSR を生成した後に、 CSRを承認します。
spec.additionalMongodConfig.net.ssl.mode
型: string
デフォルト:
requireSSL
ネットワーク接続に使用する
sslMode
を指定します。 以下は有効なオプションです。値説明allowSSL
サーバー間の接続ではTLSは使用されません。 着信接続の場合、サーバーではTLSと非 TLS のいずれも受け付けます。preferSSL
サーバー間の接続ではTLSが使用されます。 着信接続の場合、サーバーではTLSと非 TLS のいずれも受け付けます。requireSSL
サーバーはTLS暗号化接続のみを使用し、受け入れます。
spec.additionalMongodConfig.net.tls.disabledProtocols
型: string
MongoDB バージョン 4.2 の新機能。
TLSによって実行されている MongoDB サーバーで、1 つ以上の特定のプロトコルを使用する着信接続を受け付けないようにします。 複数のプロトコルを指定するには、プロトコルをコンマで区切ったリストで入力します。 たとえば、
TLS1_0,TLS1_1
。この設定は、次のプロトコルを認識します:
TLS1_0
、TLS1_1
、TLS1_2
、および MongoDB 4.0.4 以降 (および 3.6.9)、TLS1_3
。 認識されないプロトコルを指定すると、サーバーは起動しません。macOS では、
TLS1_1
を無効にして、TLS1_0
とTLS1_2
の両方を有効にすることはできません。 少なくともTLS1_0
またはTLS1_2
も無効にする必要があります。 たとえば、TLS1_0,TLS1_1
は macOS でTLS1_2
を無効にします。無効にするプロトコルのリストは、無効なプロトコルのデフォルトのリストを置き換えます。
MongoDB バージョン4.0以降、 MongoDB 1.01.1は、システムで TLS + が利用可能な場合、 TLS の使用を無効にします。無効になっているTLSを有効にするには1を使用します。 0 、
spec.additionalMongodConfig.net.tls.disabledProtocols
の値としてnone
を指定する。 この設定の詳細については、「 TLS を無効にする1 」を参照してください。 0 。レプリカセットとシャーディングされたクラスターのノード間では、少なくとも 1 つのプロトコルが共通している必要があります。
spec.security.authentication.enabled
タイプ: ブール値
デフォルト:
false
Cloud ManagerまたはMongoDB Ops Managerプロジェクトで認証が有効になっているかどうかを指定します。
true
に設定されている場合は、spec.security.authentication.modes
で認証メカニズムを設定する必要があります。重要
この設定を含めると、
false
に設定されている場合でも、Kubernetes Operator はこの MongoDB リソースの認証を管理します。 この設定がリソース仕様に存在している間は、 Cloud ManagerまたはMongoDB Ops Managerの UI または API を使用してこのリソースの認証を構成することはできません。Cloud ManagerまたはMongoDB Ops Managerの UI または API を使用して認証を管理する場合は、この設定を省略します。
spec.security.authentication.modes
タイプ: 配列
MongoDB 配置で使用する認証メカニズムを指定します。 有効な値は、
SCRAM
、SCRAM-SHA-1
、MONGODB-CR
、X509
、LDAP
です。SCRAM-SHA-1
よりもSCRAM-SHA-256
(SCRAM
)を推奨します。SCRAM-SHA-1
を指定する場合は、MONGODB-CR
も指定する必要があります。注意
X.509 内部クラスター認証
509またはCloud Manager MongoDB Ops Managerプロジェクトで X. 内部クラスター認証 を有効にするには、この値を
["X509"]
に設定し、次の設定を指定します。spec.security.certsSecretPrefix
設定に値を指定します。
spec.security.authentication.modes
に複数の値を指定する場合は、spec.security.authentication.agents.mode
の値も指定する必要があります。
spec.security.authentication.internalCluster
型: string
X. 509内部クラスター認証を有効にするかどうかを指定します。
X.509 内部クラスター認証を有効にするには、 を
"X509"
に設定します。 次の設定を指定する必要があります。Kubernetes 演算子は次の値を受け入れます。
["X509"]
: X.509 内部クラスター認証が有効になっています。""
または省略: 内部クラスター認証が有効になっていません。
重要
内部クラスター認証を有効にした後で、無効にすることはできません。
spec.security.authentication.requireClientTLSAuthentication
タイプ: ブール値
デフォルト:
false
MongoDB ホストがクライアントにTLS証明書を使用して接続することを要求するかどうかを指定します。 TLS認証を有効にする場合、デフォルトは
true
になります。TLS認証を有効にするには、
spec.security.certsSecretPrefix
設定の値を指定します。
spec.security.authentication.ldap
タイプ: コレクション
LDAP 認証に必要です。
LDAPCloud ManagerまたはMongoDB Ops Manager プロジェクトの 認証を構成します。LDAP認証を有効にするには、
spec.security.authentication.modes
を["LDAP"]
に設定します。
spec.security.authentication.ldap.servers
タイプ: 文字列の配列
LDAP 認証に必要です。
LDAPサーバーのホスト名とポートのリスト。 次の形式で、それぞれのポートを持つホスト名を指定します。
spec: security: authentication: ldap: servers: - "<hostname1>:<port1>" - "<hostname2>:<port2>"
spec.security.authentication.ldap.transportSecurity
型: string
LDAP 認証に必要です。
LDAPサーバーがTLSを受け入れるかどうかを指定します。
LDAPサーバーがTLSを受け入れている場合は、値を
tls
に設定します。 LDAPサーバーがTLSを受け入れていない場合は、この値を空白のままにするか、値をnone
に設定します。注意
none
またはtls
以外の string を指定した場合でも、Kubernetes Operator は 設定をtls
に設定します。
spec.security.authentication.ldap.caConfigMapRef
タイプ: コレクション
TLS による LDAP 認証に必要です。
ConfigMap は、 LDAP サーバーの TLS 証明書を検証する CA を含みます。
spec.security.authentication.ldap.caConfigMapRef.name
型: string
TLS による LDAP 認証に必要です。
ConfigMap の名前 は、 LDAP サーバーの TLS 証明書を検証する CA を含みます。
spec.security.authentication.ldap.caConfigMapRef.key
型: string
TLS による LDAP 認証に必要です。
LDAP サーバーの TLS 証明書を検証する CA を保存するフィールド名。
spec.security.authentication.ldap.bindQueryUser
型: string
LDAP 認証に必要です。
MongoDB が LDAP サーバーに接続するときにバインドする LDAP 識別名。
spec.security.authentication.ldap.bindQueryPasswordSecretRef
タイプ: コレクション
LDAP 認証に必要です。
シークレット を指定します は、 LDAP サーバーに接続するときに MongoDB がバインドするパスワードを含みます。
spec.security.authentication.ldap.bindQueryPasswordSecretRef.name
型: string
LDAP 認証に必要です。
シークレット の名前 は、 LDAP サーバーに接続するときに MongoDB がバインドするパスワードを含みます。
シークレット
password
には、パスワードを保存する フィールドのみを含める必要があります。
spec.security.authentication.ldap.authzQueryTemplate
型: string
LDAP 認可に必要です。
RFC4515 と RFC4516 ユーザーが属する LDAP グループを取得するために MongoDB によって実行される LDAP 形式のクエリ URL テンプレート。クエリは、
spec.security.authentication.ldap.servers
で指定されたホストに対して相対的です。 テンプレートでは、次のトークンを使用できます。{USER}
- 認証されたユーザー名、または
transformed
ユーザー名を LDAP クエリに置き換えます。
{PROVIDED_USER}
- 認証または LDAP 変換の前に、指定されたユーザー名を LDAP クエリに置き換えます。 ( MongoDB バージョン 4.2 以降で利用可能)
spec.security.authentication.agents.automationLdapGroupDN
型: string
MongoDB Agent ユーザーが属する LDAP グループの DN(Distinguished Name、識別名)。
この設定は、次の場合に必要です。
spec.security.authentication.ldap.authzQueryTemplate
が存在し、かつspec.security.authentication.agents.mode
はLDAP
またはX509
です。
spec.security.authentication.ldap.userCacheInvalidationInterval
タイプ: 整数
MongoDB が LDAP ユーザー キャッシュをフラッシュするまでの待機時間を秒単位で指定します。 デフォルトは 30 秒です。
spec.security.authentication.agents
タイプ: コレクション
MongoDB AgentCloud ManagerまたはMongoDB Ops Manager プロジェクトの 認証構成。
spec.security.authentication.agents.mode
型: string
MongoDB 配置の MongoDB エージェントが使用する認証メカニズム。 有効な値は、
SCRAM
、SCARM-SHA-1
、MONGODB-CR
、X509
、LDAP
です。 指定する値はspec.security.authentication.modes
にも存在する必要があります。SCRAM-SHA-1
よりもSCRAM-SHA-256
(SCRAM
)を推奨します。SCRAM-SHA-1
を指定する場合は、MONGODB-CR
も指定する必要があります。
spec.security.authentication.agents.automationUserName
型: string
MongoDB エージェントが MongoDB 配置を操作するために使用するユーザーの名前。 ユーザー名は、
spec.security.authentication.ldap.userToDNMapping
に従って LDAP 識別名(DN)にマッピングされます。 結果の DN は LDAP 配置にすでに存在している必要があります。この設定は、
spec.security.authentication.agents.mode
がLDAP
である場合に必要です。
spec.security.authentication.agents.automationPasswordSecretRef
タイプ: コレクション
シークレット の詳細
spec.security.authentication.agents.automationUserName
これには ユーザーのパスワードが含まれます。この設定は、
spec.security.authentication.agents.mode
がLDAP
である場合に必要です。
spec.security.authentication.agents.automationPasswordSecretRef.name
型: string
シークレット の名前
spec.security.authentication.agents.automationUserName
これには ユーザーのパスワードが含まれます。このシークレットは、Kubernetes Operator を配置するのと同じ名前空間に作成する必要があります。kubectl create secret generic ldap-agent-user \ --from-literal="password=<password>" -n <metadata.namespace> このシークレットには 1 つのキーが含まれている必要があり、その値は LDAP 配置内の
spec.security.authentication.agents.automationUserName
ユーザーのパスワードと一致します。この設定は、
spec.security.authentication.agents.mode
がLDAP
である場合に必要です。
spec.security.authentication.agents.automationPasswordSecretRef.key
型: string
シークレット 内のキー
spec.security.authentication.agents.automationPasswordSecretRef.name
spec.security.authentication.agents.automationUserName
これは、 のユーザーのパスワードを含みます。この設定は、
spec.security.authentication.agents.mode
がLDAP
である場合に必要です。
spec.security.authentication.agents.clientCertificateSecretRef.name
型: string
シークレット を指定します MongoDB Agent の TLS 証明書が含まれる。省略された場合、デフォルトは
agent-certs
となります。このシークレットには、次のキーが含まれている必要があります。これらのキーの値は、サーバーによって検証できるTLS証明書です。
mms-automation-agent-pem
mms-backup-agent-pem
mms-monitoring-agent-pem
このシークレットは、Kubernetes Operator を配置するのと同じ名前空間に作成する必要があります。
kubectl create secret generic agent-certs \ --from-file=mms-automation-agent-pem=<automation-cert.pem> \ --from-file=mms-backup-agent-pem=<backup-cert.pem> \ --from-file=mms-monitoring-agent-pem=<monitoring-cert.pem> \ --namespace=<metadata.namespace>
spec.security.roles
タイプ: 配列
MongoDB 配置に対するきめ細かなアクセス制御を付与するユーザー定義のロールを定義する配列。
ユーザー定義ロールを有効にするには、
spec.security.authentication.enabled
がtrue
である必要があります。例
上記の例では、
customRole
という名前のユーザー定義ロールにより、このロールを割り当てられたユーザーには次の操作を許可します。pets
データベースのcats
コレクションにドキュメントを挿入し、pets
データベース内のdogs
コレクションにドキュメントを検索して挿入します。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 type: ReplicaSet 10 opsManager: 11 configMapRef: 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 persistent: true 15 security: 16 authentication: 17 enabled: true 18 modes: 19 - "SCRAM" 20 roles: 21 - role: "customRole" 22 db: admin 23 privileges: 24 - actions: 25 - insert 26 resource: 27 collection: cats 28 db: pets 29 - actions: 30 - insert 31 - find 32 resource: 33 collection: dogs 34 db: pets 35 ...
spec.security.roles.authenticationRestrictions
タイプ: 配列
この
spec.security.roles.role
を割り当てられたユーザーが接続できる IP アドレスと接続できる IP アドレスを定義する配列。
spec.security.roles.authenticationRestrictions.clientSource
タイプ: 配列
この
spec.security.roles.role
を割り当てられたユーザーが接続できる IP アドレスまたは CIDR ブロックの配列。MongoDB サーバーは、リクエストがこの配列に存在しないクライアントからの接続リクエストである場合、このロールを持つユーザーからの接続リクエストを拒否します。
spec.security.roles.authenticationRestrictions.serverAddress
タイプ: 配列
この
spec.security.roles.role
を割り当てられたユーザーが接続できる IP アドレスまたは CIDR ブロックの配列。MongoDB サーバーは、クライアントがこの配列に存在しないサーバーへの接続をリクエストした場合、このロールを持つユーザーからの接続リクエストを拒否します。
spec.security.roles.privileges.actions
タイプ: 配列
このロールを付与されたユーザーが実行できるアクションのリスト。 許容値のリストについては、Kubernetes Operator で配置する MongoDB バージョンの MongoDB マニュアルの「特権アクション」を参照してください。
spec.security.roles.privileges.resource
タイプ: コレクション
特権
actions
が適用されるリソース。このコレクションには、次のいずれかを含める必要があります。
spec.security.roles.privileges.resource.database
型: string
特権
actions
が適用されるデータベース。この設定に値を指定する場合は、
spec.security.roles.privileges.resource.collection
の値も指定する必要があります。
spec.security.roles.privileges.resource.collection
型: string
database
権限 が適用されるactions
のコレクション。この設定に値を指定する場合は、
spec.security.roles.privileges.resource.database
の値も指定する必要があります。
spec.security.roles.privileges.resource.cluster
タイプ: ブール値
デフォルト: False
特権
actions
が MongoDB 配置のすべてのデータベースとコレクションに適用されることを示すフラグ。 省略された場合、デフォルトはfalse
となります。true に設定されている場合、
spec.security.roles.privileges.resource.database
とspec.security.roles.privileges.resource.collection
の値を指定しないでください。
例
次の例は、すべての設定が指定されたスタンドアロン配置のリソース仕様を示しています。
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-standalone spec: version: "4.2.2-ent" service: my-service opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true type: Standalone additionalMongodConfig: systemLog: logAppend: true verbosity: 4 operationProfiling: mode: slowOp podSpec: persistence: single: storage: "12Gi" storageClass: standard labelSelector: matchExpressions: - {key: environment, operator: In, values: [dev]} podTemplate: metadata: labels: label1: mycustomlabel affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 ...
次の例は、提供されたすべての設定を持つレプリカセットのリソース仕様を示しています。
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-replica-set spec: members: 3 version: "6.0.0-ent" service: my-service opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true type: ReplicaSet podSpec: persistence: multiple: data: storage: "10Gi" journal: storage: "1Gi" labelSelector: matchLabels: app: "my-app" logs: storage: "500M" storageClass: standard podTemplate: metadata: labels: label1: mycustomlabel affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service additionalMongodConfig: net: ssl: mode: preferSSL ...
次の例は、すべての 設定が提供されているシャーディングされたクラスターのリソース仕様を示しています。
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-sharded-cluster spec: shardCount: 2 mongodsPerShardCount: 3 mongosCount: 2 configServerCount: 3 version: "6.0.0-ent" service: my-service type: ShardedCluster ## Please Note: The default Kubernetes cluster name is ## `cluster.local`. ## If your cluster has been configured with another name, you can ## specify it with the `clusterDomain` attribute. opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true configSrvPodSpec: # if "persistence" element is omitted then Operator uses the # default size (5Gi) for mounting single Persistent Volume podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongosPodSpec: podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId shardPodSpec: persistence: multiple: # if the child of "multiple" is omitted then the default size will be used. # 16GB for "data", 1GB for "journal", 3GB for "logs" data: storage: "20Gi" logs: storage: "4Gi" storageClass: standard podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongos: additionalMongodConfig: systemLog: logAppend: true verbosity: 4 configSrv: additionalMongodConfig: operationProfiling: mode: slowOp shard: additionalMongodConfig: storage: journal: commitIntervalMs: 50 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service ...
StateftSet 設定
次の ステートメントセット 設定は、レプリカセットとシャーディングされたクラスターのリソースタイプにのみ適用されます。
spec.statefulSet.spec
タイプ: コレクション
ステートメントセット の仕様 MongoDB Enterprise Kubernetes Operator
MongoDB
が リソース用に作成する