この手順を使用して、ノード Kubernetes クラスター間の外部接続を確立するためにサービス キャッシュを使用せずに、マルチ Kubernetes クラスター MongoDB 配置にレプリカセットを配置します。
この手順を使用する代わりに、サービス メトリクスを使用するMulti-Kubernetes-Cluster クイック スタートを使用できます。
始める前に
- 前提条件を完了しますが、サービス メッシュは設定しません。 代わりに、サービス メトリクス が必要かどうかを判断してください。 サービス メッシュなしで配置する場合は、外部ドメインを使用し、DNS を設定して外部接続を有効にします。 
- 前提条件を完了する一環として、 TLS暗号化の有効な証明書を生成します。 詳細については、「 TLS 暗号化接続の準備 」を参照してください。 
- MongoDB Ops Managerのリソースを配置します。 
- Kubernetes 演算子 をマルチ Kubernetes クラスター MongoDB 配置にインストールします。 「マルチ Kubernetes クラスター クイック スタート 」を参照してください。 
Overview
サービス メソッドを使用せずに MongoDB のマルチ Kubernetes クラスター配置で次の 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プロセスへの外部接続が可能になります。
MongoDBMultiClusterサービス メッシュなしでの リソースの配置
次の手順では、レプリカセット内の MongoDB ホスト間、およびクライアント アプリケーションと MongoDB 配置間で、 TLSで暗号化された接続を確立します。
リソースの TLSMongoDBMultiCluster 証明書のシークレットを作成します。
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に名前を付ける必要があります。
ConfigMap を作成して、CA をMongoDBMultiCluster リソースにリンクします。
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> 
サンプル リソースをコピーして貼り付けます。
- サンプル レプリカセットのYAMLファイルをコピーし、新しいテキストファイルに貼り付けます。 
- 必要なレプリカセット構成に合わせてファイルの設定を変更します。 
1 # Provides statefulSet override per cluster 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6   name: multi-replica-set 7 spec: 8   version: 6.0.0-ent 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 ... 
外部接続設定 を定義します。
spec.externalAccessを使用して、マルチ Kubernetes クラスター MongoDB 配置内のすべてのクラスターに影響するグローバル値を指定します。 設定とspec.clusterSpecList.externalAccess.externalServiceを使用したクラスター固有のオーバーライド 設定。
MongoDBMultiClusterリソース仕様でこれらの設定を指定すると、Kubernetes Operator はすべての Kubernetes クラスター内の各ポッドの外部サービスを作成します。 次に、これらのサービスを使用して、配置内のすべてのmongodプロセスへの外部接続を確立します。
各 Kubernetes ノード クラスターの外部ドメインを定義します。
spec.clusterSpecList.externalAccess.externalDomainを使用して、各ノード クラスターの外部ドメインを定義します 設定。
その結果、Kubernetes Operator は、次の規則に従って、Kubernetes ノードクラスター内のすべてのmongodプロセスをホスト名で登録します。
<pod-name>.<externalDomain> 
たとえば、 mongodプロセスには次のホスト名が含まれる場合があります: my-replica-set-0-0.cluster-1.example.com 。
設定を希望する値に変更します。
| キー | タイプ | 説明 | 例 | 
|---|---|---|---|
| string | 
 リソース名は 44 文字以下にする必要があります。 
 | 
 | |
| string | この 形式は、 MongoDB Community Editionでは  重要:互換性のあるMongoDB Serverバージョンを選択していることを確認してください。 互換性のあるバージョンは、 MongoDBデータベースリソースが使用する基本イメージによって異なります。 MongoDB のバージョン管理の詳細については、MongoDB マニュアルの「 MongoDBのバージョン管理 」を参照してください。 | 
 | |
| string | MongoDB Ops Manager接続構成を含む ConfigMap の名前。 この値は、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は ConfigMap への変更を追跡し、 | 
 | |
| spec.clusterSpecList.clusterName | string | 
 | 
 | 
| spec.clusterSpecList.members | integer | このクラスター内のメンバーの数。 | 
 | 
| spec.clusterSpecList.statefulSet.spec | コレクション | 任意。 マルチ Kubernetes クラスターMongoDBデプロイ内のクラスターの各ステートメントに対して、StatusSet オーバーライドの構成を提供します。 | 例 を参照してください。 | 
| spec.clusterSpecList.statefulSet.spec.volumeClaimTemplates.spec | コレクション | 任意。指定すると、 データを保存する永続ボリュームの VolumeClaimtemplates のデフォルトのストレージサイズのクラスターごとの上書きを提供します。 | 例 を参照してください。 | 
| string | Operator が と通信するための MongoDB Ops ManagerAPI認証情報として 作成KubernetesMongoDB Ops Manager したシークレットの名前。 認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は、シークレットへの変更を追跡し、 | 
 | |
| string | 作成する | 
 | 
MongoDBMultiClusterリソース配置に追加で許容される設定を追加します。
また、オブジェクト仕様に任意の設定を追加することもできます。「 マルチ Kubernetes クラスター リソース仕様 」を参照してください。
レプリカセットの配置を開始します。
任意のディレクトリで、次の Kubernetes コマンドを呼び出してレプリカセットを作成します。
kubectl apply -f <replica-set-conf>.yaml 
各ノード クラスターの外部接続を確認します。
- すべてのノード クラスター での外部サービスのステータスを確認します。 - kubectl get services - Kubernetes は、すべてのノード クラスター内のレプリカセットの各ポッドに対して作成された 1 つの外部サービスを返す必要があります。 
- 各外部サービスが外部で公開され、アクセス可能なことを確認します。 次の例のようなコマンドを実行します。 - 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プロセスに転送されます。
- 指定された外部ドメインのDNSゾーンを、対応する外部サービスを指すように設定します。 この構成は、環境または使用しているクラウドプロバイダーによって異なります。 
マルチ Kubernetes クラスター MongoDB 配置のステータスを追跡します。
MongoDBMultiClusterリソースのステータスを確認するには、 演算子クラスターで次のコマンドを使用します。
kubectl get mdbmc <resource-name> -o yaml -w 
-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。