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

サービス メッシュのないマルチ Kubernetes クラスターでのレプリカセットの配置

この手順を使用して、ノード Kubernetes クラスター間の外部接続を確立するためにサービス キャッシュを使用せずに、マルチ Kubernetes クラスター MongoDB 配置にレプリカセットを配置します。

この手順を使用する代わりに、サービス メトリクスを使用するMulti-Kubernetes-Cluster クイック スタートを使用できます。

サービス メッシュを使用せずに複数の Kubernetes クラスター MongoDB 配置で、次のMongoDBMultiClusterリソース設定を使用します。

  • spec.clusterSpecList.externalAccess.externalServiceの に設定して、Kubernetes Operator が外部サービスを作成し、そのデフォルト設定の一部として、デフォルト設定のロード バランサーを構成します。 TLSパスを使用して TCP プロキシとして機能するようにロード バランサーを設定します(ロード バランサーには TLS 終了はありません)。

  • Kubernetes Operator が Kubernetes クラスター内の各ポッドに対して作成する外部サービスをカスタマイズします。 spec.externalAccessでグローバル「全クラスター」構成を使用する 設定と Kubernetes クラスター固有のオーバーライド( spec.clusterSpecList.externalAccess.externalService 内) 設定。

  • 各 Kubernetes クラスターのspec.clusterSpecList.externalAccess.externalService.annotationsで、ロード バランサーのクラウドプロバイダー固有の注釈を指定します。

  • spec.clusterSpecList.externalAccess.externalDomainで外部ドメインを指定します。 これにより、Kubernetes Operator はドメイン サフィックスを使用してmongodプロセスを登録できるようになります。 これにより、マルチ Kubernetes クラスター MongoDB 配置でmongodプロセスへの外部接続が可能になります。

次の手順では、レプリカセット内の MongoDB ホスト間、およびクライアント アプリケーションと MongoDB 配置間で、 TLSで暗号化された接続を確立します。

1

kubectlコマンドを実行して、 MongoDBMultiClusterリソース証明書を保存する新しいシークレットを作成します。

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key>

注意

シークレットの前に<prefix>-<metadata.name>を付ける必要があります。

例として、配置を my-deployment と呼び出し、プレフィックスを mdb に設定した場合、クライアント TLS 通信用の TLS シークレットに mdb-my-deployment-cert という名前を付ける必要があります。 また、内部クラスター認証用の TLS シークレットには名前を付ける必要があります (有効にしている場合) mdb-my-deployment-clusterfile。

2

kubectl コマンドを実行して、CA を MongoDBMultiCluster リソースにリンクします。MongoDBMultiCluster リソースに対して、常に ca-pem と呼ばなければならない CA 証明書ファイルを指定します。

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
3

まだ実行していない場合は、次のコマンドを実行して、デフォルトの名前空間の中央クラスターですべてのkubectlコマンドを実行します。

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAMEkubectl config set-context $(kubectl config current-context) \ --namespace=mongodb
4
  1. サンプル レプリカセットのYAMLファイルをコピーし、新しいテキストファイルに貼り付けます。

  2. 必要なレプリカセット構成に合わせてファイルの設定を変更します。

# Provides statefulSet override per cluster apiVersion: mongodb.com/v1kind: MongoDBMultiClustermetadata: name: multi-replica-setspec: version: 8.0.0 type: ReplicaSet credentials: my-credentials opsManager: configMapRef: name: my-project externalAccess: externalService: annotations: # Global cloud-specific annotations added to external services in all clusters spec: # ServiceSpec attributes to override in external services in all clusters clusterSpecList: - clusterName: cluster1.example.com members: 2 externalAccess: # Domain suffix that mongod processes will use in cluster1 externalDomain: cluster1.example.com externalService: annotations: # Cloud-specific annotations for external services spec: # ServiceSpec attributes to override if necessary - clusterName: cluster2.example.com members: 1 externalAccess: # Domain suffix that mongod processes will use in cluster2 externalDomain: cluster2.example.com externalService: annotations: # Cloud-specific annotations for external services spec: # ServiceSpec attributes to override if necessary - clusterName: cluster3.example.com members: 1 externalAccess: # Domain suffix that mongod processes will use in cluster3 externalDomain: cluster3.example.com externalService: annotations: # Cloud-specific annotations for external services spec: # ServiceSpec attributes to override if necessary ...
5

spec.externalAccessを使用して、マルチ Kubernetes クラスター MongoDB 配置内のすべてのクラスターに影響するグローバル値を指定します。 設定とspec.clusterSpecList.externalAccess.externalServiceを使用したクラスター固有のオーバーライド 設定。

MongoDBMultiClusterリソース仕様でこれらの設定を指定すると、Kubernetes Operator はすべての Kubernetes クラスター内の各ポッドの外部サービスを作成します。 次に、これらのサービスを使用して、配置内のすべてのmongodプロセスへの外部接続を確立します。

6

spec.クラスターSpecList.externalAccess.externalDomain を使用して、各 ノードクラスター の外部ドメインを定義します。設定。

その結果、Kubernetes Operator は、次の規則に従って、Kubernetes ノードクラスター内のすべてのmongodプロセスをホスト名で登録します。

<pod-name>.<externalDomain>

たとえば、 mongodプロセスには次のホスト名が含まれる場合があります: my-replica-set-0-0.cluster-1.example.com 。

7
キー
タイプ
説明
例

string

MongoDBMultiClusterリソースのラベル。

リソース名は 44 文字以下にする必要があります。

metadata.nameKubernetesドキュメントで、「 と名前」も参照してください。

multi-replica-set

string

このMongoDBMultiClusterリソースが実行する MongoDB のバージョン。

形式は、 MongoDB Community Editionでは X.Y.Z、Enterprise エディションでは X.Y.Z-ent です。

重要:互換性のあるMongoDB Serverバージョンを選択していることを確認してください。 互換性のあるバージョンは、 MongoDBデータベースリソースが使用する基本イメージによって異なります。

MongoDB のバージョン管理の詳細については、MongoDB マニュアルの「 MongoDBのバージョン管理 」を参照してください。

8.0.0

spec
.opsManager
.configMapRef
.name

string

MongoDB Ops Manager接続構成を含む ConfigMap の名前。spec.cloudManager.configMapRef.name 設定はこの設定のエイリアスであり、代わりに使用できます。

この値は、作成するリソースと同じ名前空間に存在する必要があります。

重要: Kubernetes Operator は ConfigMap への変更を追跡し、MongoDB リソースの状態を調整します。

<my-project>

spec
.clusterSpecList
.clusterName

string

MongoDBMultiClusterリソース内のクラスターの名前。

cluster1.example.com

spec
.clusterSpecList
.members

integer

このクラスター内のメンバーの数。

2

spec
.clusterSpecList
.statefulSet
.spec

コレクション

任意。

マルチ Kubernetes クラスターMongoDBデプロイ内のクラスターの各ステートメントに対して、StatusSet オーバーライドの構成を提供します。clusterSpecList の下で個々のクラスター レベルで指定すると、複数の Kubernetes クラスターMongoDBデプロイのステートメントを使用するグローバル構成が上書きされます。「 マルチKubernetes-クラスター リソース仕様 」と「 StateftSet v1 アプリKubernetesドキュメント 」を参照してください。

例 を参照してください。

spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec

コレクション

任意。指定すると、 データを保存する永続ボリュームの VolumeClaimtemplates のデフォルトのストレージサイズのクラスターごとの上書きを提供します。

例 を参照してください。

string

Kubernetes 演算子が Ops Manager と通信するための Ops Manager API 認証の認証情報として 作成した シークレットの名前。

認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。

重要: Kubernetes Operator は、シークレットへの変更を追跡し、MongoDB リソースの状態を調整します。

<mycredentials>

string

作成するMongoDBリソースのタイプ。 このフィールドでサポートされている値はReplicaSetのみです。 「制限 」を参照してください。

ReplicaSet

8

また、オブジェクト仕様に任意の設定を追加することもできます。「 マルチ Kubernetes クラスター リソース仕様 」を参照してください。

9
10

任意のディレクトリで、次の Kubernetes コマンドを呼び出してレプリカセットを作成します。

kubectl apply -f <replica-set-conf>.yaml
11
  1. すべてのノード クラスター での外部サービスのステータスを確認します。

    kubectl get services

    Kubernetes は、すべてのノード クラスター内のレプリカセットの各ポッドに対して作成された 1 つの外部サービスを返す必要があります。

  2. 各外部サービスが外部で公開され、アクセス可能なことを確認します。 次の例のようなコマンドを実行します。

    mongosh mongodb://my-replica-set-0-0.cluster-0.example.com:27017 \-tls -tlsCAFile "issuer-ca.pem"

    my-replica-set-0-0.cluster-0.example.com:27017に接続すると、クライアント トラフィックはmy-replica-set-0-0-svc-externalという名前の外部サービスに転送され、その結果、トラフィックはmongodプロセスに転送されます。

  3. 指定された外部ドメインのDNSゾーンを、対応する外部サービスを指すように設定します。 この構成は、環境または使用しているクラウドプロバイダーによって異なります。

12

MongoDBMultiCluster リソースのステータスを確認するには、中央クラスターで次のコマンドを使用します。

kubectl get mdbmc <resource-name> -o yaml -w

-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。