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

MongoDB 移行リソース設定

重要

このページの設定は、Kubernetes 演算子の下で自己管理型配置を Kubernetes へ移行することをサポートするために存在します。付随する移行を伴わずに Kubernetes に直接配置する MongoDBリソースでは設定しないでください。

このページでは、自己管理型の仮想マシン配置から Kubernetes への移行中にのみ適用される MongoDB リソースフィールド、ステータス条件、およびアノテーションについて説明します。MongoDB リソース設定の全セットについては、MongoDB データベース リソース仕様を参照してください。

これらのフィールドは、移行がKubernetesに拡張するソースの仮想マシンまたはベアメタルプロセスを識別します。これらはMongoDBリソースapiVersion: mongodb.com/v1に適用されます。

重要

これらのフィールドは移行のためにのみ存在します。グリーンフィールド Kubernetes 配置の場合、MongoDB リソースにこれらを設定しないでください。

spec.externalMembers

型: ExternalMember オブジェクトの配列

移行の一部であるバーチャル マシンまたはベアメタル ソース プロセス。このフィールドは移行専用です。

このリストからエントリーを除くことはできます。ただし、移行が開始した後はエントリーを追加してはなりません。spec.externalMembers リストが空の場合、移行は完了しています。

spec.externalMembers[].processName

型: string

必須

このフィールドは移行専用です。オートメーション構成の processes 配列内に表示されるプロセス名と完全に同じもの。

spec.externalMembers[].hostname

型: string

必須

このフィールドは移行専用です。オートメーション設定に表示されるとおりの、プロセスのhost:port値。

spec.externalMembers[].type

タイプ: 列挙: mongod または mongos

シャーディングされたクラスターに必須

このフィールドは移行専用です。レプリカセットにはmongodつの外部ノードしかありません。

spec.externalMembers[].replicaSetName

型: string

任意

このフィールドは移行専用です。シャーディングされたクラスターのmongod外部ノードに必要です。プロセスがコンフィギュレーションサーバーのレプリカセットに属しているか、特定のシャードのレプリカセットに属しているかを識別します。

これらのフィールドは移行専用であり、Kubernetes 演算子がそれ以外の場合に使用または生成するリソースまたはオートメーションの構成名を上書きします。

spec.replicaSetNameOverride

型: string

このフィールドは移行専用です。Kubernetesリソース名と異なる場合、またはオートメーション構成のレプリカセット名が有効なKubernetes名でない場合の、オートメーション構成のレプリカセット名。kubectl mongodb migrate-to-mckプラグインは、その--resource-name-overrideフラグを通じてこのフィールドを自動的に設定します。

spec.configServerNameOverride

型: string

このフィールドは移行専用です。オートメーションコンフィギュレーションに表示されるコンフィギュレーションサーバーのレプリカセット名。

spec.shardNameOverrides

型: ShardNameOverride オブジェクトの配列

このフィールドは移行専用です。シャードごとのオートメーション構成には、レプリカセット名とシャード _id が含まれます。

注意

spec.shardNameOverrides と spec.shardOverrides を混同しないでください。spec.shardOverrides はシャードごとのリソース設定を行いますが、移行名命とは無関です。

Kubernetes StatefulSet 名は、これらの上書きによって影響を受けることはありません。

Kubernetes 演算子は以前、これらのオートメーション構成設定をハードコードしていました。移行には、Kubernetes の配置が、既にソースの仮想マシン上で使用されているパスと一致させることができるように、それらを構成可能にする必要があります。

spec.downloadBase

型: string

デフォルト: /var/lib/mongodb-mms-automation

MongoDB Agent がエージェント バイナリをダウンロードするディレクトリ。Kubernetes 演算子は、この設定からキーファイルのパスを <downloadBase>/keyfile として導出します。

spec.security.tls.caFilePath

型: string

デフォルト: /mongodb-automation/tls/ca/ca-pem

Kubernetes演算子がポッド内のCA証明書をプロジェクトする絶対パス。このパスには、少なくとも2つのパスセグメントが含まれている必要があります。アプリケーションデータベースではサポートされていません。

注意

ポッドテンプレートがこのパス以上でボリュームをマウントする場合、マウントによって投影されたCAファイルが隠れる可能性があります。カスタム値を設定する前に、podTemplateボリュームマウントを検討してください。

spec.security.authentication.agents.autoPEMKeyFilePath

型: string

データベースポッド内のMongoDB Agentの結合PEMファイルの絶対パス。このフィールドを設定すると、MongoDB Ops ManagerまたはCloud Managerのtls.autoPEMKeyFilePath値が設定され、spec.security.authentication.agents.clientCertificateSecretRefによって参照されるシークレットがそのパスにマウントされます。

spec.security.authentication.agents.clientCertificateSecretRef が必要です。

移行されていない配置に対してKubernetes演算子が使用するハッシュされたエージェント証明書のマウントパスにデフォルト設定されます。

status.conditions

Type: Kubernetes Conditionsの配列

type をキーとしている標準的な Kubernetes の状態。このフィールドは MongoDB リソースに新しく追加され、移行をサポートします。

status.conditions[type=Migrating]

タイプ: Kubernetes condition

移行がアクティブかどうかを示す最上位のインジケーター。spec.externalMembers が空でない間は status は True であり、最後の外部ノードを除くと理由 MigrationComplete で False に切り替わります。

理由
ステータス
意味

Validating

True

ドライラン アノテーションが設定されています。

Extending

True

目的のKubernetesノード数が、最後に調整された数を超えています。

Pruning

True

externalMembers の数が status.migrationObservedExternalMembersCount を下回りました。

InProgress

True

外部ノードは存在しますが、何も変わっていません。これも最初の調整時の理由です。

MigrationComplete

False

すべての外部ノードが削除されました。

優先順位は Validating > Extending > Pruning > InProgress です。Kubernetes 側の削除と拡大の両方を行うプルーンは Extending を報告します。これもまた、変更を1つずつ行う別の理由です。

Pruningとextendingを同時に行うことはできません。

移行の完了をスクリプトで処理するには、status.phaseをポーリングするのではなく、kubectl wait --for=condition=Migrating=Falseを使用してください。

status.conditions[type=NetworkConnectivityVerified]

タイプ: Kubernetes condition

ドライラン接続チェックの結果。Kubernetes 演算子は、外部ノードがなくなると、status.conditions からこの状態を完全に除きます。

バリデーター ジョブ 終了コード
条件ステータス
理由
意味

ジョブが実行中です

Unknown

Running

status.phase は ConnectivityCheckRunning です。

0

True

NetworkValidationPassed

すべての外部ノードは到達可能であり認証済みです。

2

False

AuthenticationFailed

認証情報、認証メカニズム、または不足している__system@localロール。

3

False

NetworkFailed

DNS、TLS、タイムアウト、または到達不能なノード。ジョブPodのログを確認します。

1 またはその他

False

UnknownError

未分類の障害。ジョブ Pod ログを確認する。

ジョブの開始前に発生する失敗は、OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed、AgentCertSubject の理由を使用します。

Kubernetes 演算子は、外部ノードがなくなると、status.conditions から NetworkConnectivityVerified 状態を完全に除きます。

status.migrationObservedExternalMembersCount

タイプ: 整数

Kubernetes 演算子が前回の調整で確認したspec.externalMembersエントリの数。Kubernetes Operatorは、次の調整時にこの値を現在のspec.externalMembersカウントと比較して、外部ノードを削除したことを検出します。外部ノードが残っていない場合、このフィールドは設定されません。

注意

Go 構造体の埋め込みの副作用として、このフィールドは MongoDBOpsManager カスタム リソース スキーマにも表示されます。MongoDBOpsManager リソース上では、フィールドは常に null です。そこでは無視してください。

metadata.annotations.mongodb.com/migration-dry-run

型: string (ブール値)

kubectl mongodb migrate-to-mck プラグインは、このアノテーションを true に設定します。このアノテーションが存在する間、Kubernetes 演算子はオートメーション構成の変更を行わず、接続の検証のみを実行します。アノテーションを除くと、実際の移行が開始されます。

metadata.annotations.mongodb.com/migrate-tool-version

型: string

リソースを生成した kubectl mongodb migrate-to-mck プラグインのバージョンを記録します。Kubernetes 演算子は、ドライ実行をする間を含め、調整のたびにこのアノテーションを自身のバージョンと照らし合わせて検証します。

次の存在する MongoDB リソース フィールドは、移行専用ではありませんが、移行中に特定の値または検討する必要があります。

  • spec.members、spec.mongodsPerShardCount、spec.configServerCount、およびspec.mongosCountはすべて、kubectl mongodb migrate-to-mckプラグインが生成するリソースの0から始まります。

  • spec.memberConfig[].votes (整数、デフォルトでは1 )とspec.memberConfig[].priority (浮動小数点数を含む string、デフォルトでは"1" )。少なくとも と同じ数の エントリを提供する必要があります。spec.memberConfig spec.membersKubernetes Operatorspec.memberConfig spec.topologyは、 が の場合にのみ、シャーディングされたクラスターの最上位MultiCluster を無視します。単一クラスターのシャーディングされたクラスターの場合、最上位の は、spec.memberConfig spec.shardOverridesエントリに一致するなしでコンフィギュレーションサーバーノードとすべてのシャードのノードを構成します。kubectl mongodb migrate-to-mck プラグインは を生成せず、spec.memberConfig Kubernetes Operator は新しいノードをデフォルトで非投票にしないため、新しいノードの同期中は CRD1 "1"のデフォルトである と は誤りです。

    警告

    spec.memberConfig を設定するノード数を増やす前に

    デフォルトでは、新しい Kubernetes ノードは投票ノードとして参加します。CRD デフォルトは votes: 1 と priority: "1" です。これらのデフォルトにより、同期中のノードは最初の同期が完了する前に選挙に参加できます。

    MongoDB は、ノード数を増やす前に、votes: 0 と priority: "0" を使用して、新しい Kubernetes ノードごとに spec.memberConfig エントリを 1 つ書き込み (write)することを推奨します。これにより、まだ同期中のノードが選挙に勝つことができなくなります。votes は整数です。priority は string です。

  • ソース配置と完全に一致する必要があるフィールド: spec.version、spec.featureCompatibilityVersion、spec.additionalMongodConfig.net.port、spec.security.authentication.modes、および spec.security.authentication.internalCluster。