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

MongoDBデータベース リソースのアーキテクチャ

MongoDB カスタム リソースは、Kubernetes 演算子が管理するデータベース配置を定義します。カスタム リソースの仕様によってこれらのリソースが定義され、Kubernetes 演算子がこれらをモニターします。リソースの仕様を更新すると、Kubernetes 演算子は変更を Ops Manager にプッシュし、MongoDB 配置の構成が変更されます。

MongoDB CRD は 3 つの配置タイプをサポートしています。次の図は、各タイプの構成を示しています。

MongoDB Operator 用のMongoDBリソースの高レベルのアーキテクチャを示す図
クリックして拡大します

Standaloneリソースを配置できますが、レプリカセットを使用すると将来ノードを追加できるため、1 つのノードを持つ ReplicaSetリソースを配置することをお勧めします。Kubernetes では、Standaloneリソースは 1 つのノードのみを持つ ReplicaSetリソースと同等です。

Standaloneリソースの場合、Kubernetes Operator は単一のノードを含むレプリカセットを StatefulSet として配置します。Kubernetes Operator は、ポッド仕様を含む StatefulSet を作成し、Kubernetes StatefulSet コントローラーに依存してこの単一の mongod インスタンスのポッドを作成します。

ReplicaSetリソースの場合、Kubernetes Operator はレプリカセットをステートフルセットとして配置します。ノード数はspec.membersの値と等しくなります。Kubernetes Operator は、レプリカセットの各ノードについて 1 つのポッドを作成するために Kubernetes StatefulSet コントローラーに依存します。各ポッドは、そのポッドで mongod プロセスをマネージする MongoDB Agent インスタンスを実行します。

ShardedCluster リソースは、コンフィギュレーションサーバー、mongos インスタンス、およびシャード ノードで構成されています。Kubernetes 演算子は次を配置します。

  • すべてのコンフィギュレーションサーバーに 1 つのステートメントセット

  • すべての mongos インスタンスに対する 1 つの StatefulSet

  • 各シャードの StatefulSet

Kubernetes 演算子 は、各 StatefulSet に 1 つのポッドを作成するために Kubernetes StatefulSet コントローラーに依存します。2 シャードを持つシャーディングされたクラスターの場合、これは合計 4 の StatefulSet を意味します(コンフィギュレーションサーバーで 1、mongos で 1、シャードで 2)。

配置タイプ
StateftSets
ステートメントセットのサイズ

スタンドアロン

1

1 Pod

レプリカセット

1

1ポッド メンバーごと

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

<numberOfShards> + 2

mongos、シャードノード、またはコンフィギュレーションサーバーノードごとの 1 ポッド

MongoDBカスタム リソース仕様を適用すると、Kubernetes Operator は各リソースをステートフルセットとして配置します。Kubernetes 演算子 は、その後、継続的な調和ループに入ります。

  1. で指定された ConfigMapspec.opsManager.configMapRef.name からプロジェクト構成を読み取ります。

  2. API 認証情報を、spec.credentials で指定されたシークレットか、またはシークレット ストレージ ツールから読み取ります。

  3. MongoDB Ops Managerに接続し、次の操作を実行します。

    • ConfigMap のorgIdから組織を読み取ります。

    • projectNameで指定されたプロジェクトを読み取るか作成します。

    • <project-id>-group-secret が存在することを確認するか、MongoDB Ops Manager API キーを使用して作成します。

    • Kubernetes 演算子を ConfigMap と認証情報 Secrets のウォッチャーとして登録します。

  4. TLS と X.509 証明書を検証します (有効な場合):

    • レプリカセットの場合は、<prefix>-<resource-name>-cert 内の証明書を検索します。

    • シャーディングされたクラスターの場合:<prefix>-<resource-name>-x-cert (シャードごと)、<prefix>-<resource-name>-config-cert (コンフィギュレーションサーバー)、<prefix>-<resource-name>-mongos-cert (mongos インスタンス)の証明書を検索します。

  5. StatefulSet を作成または更新します。数は配置の種類によって異なります。現在、各ポッドは MongoDB Agent を実行していますが、mongodインスタンスはまだ含まれていません。

    • MongoDB Agent各インスタンスは、オートメーション構成のために Ops Manager をポーリングします。

    • 静的でないコンテナでは、MongoDB Agentはspec.versionで指定されたバージョンのMongoDBバイナリをダウンロードします。

    • 構成を受信した後、MongoDB Agent は mongod を開始します。

    • Kubernetes 演算子 は、spec.persistentfalse でない限り、各 Pod (mongos Pod を除く)の PersistentVolumeClaims を生成します。

  6. オートメーション構成の更新を MongoDB Ops Manager にプッシュします。各 MongoDB Agent は更新された構成をポーリングしています。それを適用します。フィールドを変更すると、Kubernetes 演算子は StatefulSets のローリング更新を実行します。

  7. Kubernetes Services を作成または更新します:

    • ReplicaSetまたはStandaloneの場合、<resource-name>-svcという名前のヘッドレスClusterIPサービス。

    • ShardedClusterの場合:

      • mongos: spec.service または<resource-name>-svc の名前を使用します。

      • Config servers: <resource-name>-cs.

      • 各シャード: <resource-name>-sh

次の図は、レプリカセットの調和フローを示しています。

レプリカセットの調整フローを示す図
クリックして拡大します

次の図は、シャーディングされたクラスターの調停フローを示しています。

シャーディングされたクラスターの調整フローを示す図
クリックして拡大します

ユーザー認証方法が SCRAM の場合、MongoDBUser リソースはユーザー認証情報を保存するシークレットに依存します。Kubernetes 演算子はシークレットの変更を監視し、次のように調整します。

  1. spec.MongoDBResourceRef.nameから MongoDB ユーザーのリソースを決定します。

  2. MongoDB Ops Manager に接続し、組織とプロジェクトを読み取り、エージェントのシークレットを検証します。

  3. MongoDB Ops Managerでユーザーの認証情報を更新します。ユーザーが存在しない場合は新しいユーザーを作成します。ユーザー名が変更された場合、Kubernetes 演算子は古い名前を削除し、新しい名前を追加します。

次の図は、MongoDBUser 調和フローを示しています。

MongoDBUser の調停フローを示す図
クリックして拡大します