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

サービス メッシュのないマルチ 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>を付ける必要があります。

For example, if you call your deployment my-deployment and you set the prefix to mdb, you must name the TLS secret for the client TLS communications mdb-my-deployment-cert. Also, you must name the TLS secret for internal cluster authentication (if enabled) mdb-my-deployment-clusterfile.

2

Run the kubectl command to link your CA to your MongoDBMultiCluster resource. Specify the CA certificate file that you must always name ca-pem for the MongoDBMultiCluster resource:

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

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

1# Provides statefulSet override per cluster
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 8.0.0
9 type: ReplicaSet
10 credentials: my-credentials
11 opsManager:
12 configMapRef:
13 name: my-project
14 externalAccess:
15 externalService:
16 annotations:
17 # Global cloud-specific annotations added to external services in all clusters
18 spec:
19 # ServiceSpec attributes to override in external services in all clusters
20 clusterSpecList:
21 - clusterName: cluster1.example.com
22 members: 2
23 externalAccess:
24 # Domain suffix that mongod processes will use in cluster1
25 externalDomain: cluster1.example.com
26 externalService:
27 annotations:
28 # Cloud-specific annotations for external services
29 spec:
30 # ServiceSpec attributes to override if necessary
31 - clusterName: cluster2.example.com
32 members: 1
33 externalAccess:
34 # Domain suffix that mongod processes will use in cluster2
35 externalDomain: cluster2.example.com
36 externalService:
37 annotations:
38 # Cloud-specific annotations for external services
39 spec:
40 # ServiceSpec attributes to override if necessary
41 - clusterName: cluster3.example.com
42 members: 1
43 externalAccess:
44 # Domain suffix that mongod processes will use in cluster3
45 externalDomain: cluster3.example.com
46 externalService:
47 annotations:
48 # Cloud-specific annotations for external services
49 spec:
50 # ServiceSpec attributes to override if necessary
51
52...
5

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

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

6

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

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

<pod-name>.<externalDomain>

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

7
キー
タイプ
説明

string

MongoDBMultiClusterリソースのラベル。

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

metadata.name 名前 も参照してください (Kubernetes ドキュメント)。

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

Name of the ConfigMap with the Ops Manager connection configuration. The spec.cloudManager.configMapRef.name setting is an alias for this setting and can be used in its place.

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

重要: 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

コレクション

任意。 指定すると、 VolumeClaim テンプレート のデフォルトのストレージ サイズのクラスターごとの上書きが行われます。 、データを保存する永続ボリュームの場合

例 を参照してください。

string

Name of the secret you created as Ops Manager API authentication credentials for the Kubernetes Operator to communicate with Ops Manager.

認証情報を保持する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 演算子のトラブルシューティング 」を参照してください。