サービス メッシュのないマルチ Kubernetes クラスターでのレプリカセットの配置
この手順を使用して、ノード 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 文字以下にする必要があります。 Kubernetesドキュメントで、「 | multi-replica-set | |
string | この 形式は、 MongoDB Community Editionでは 重要:互換性のあるMongoDB Serverバージョンを選択していることを確認してください。 互換性のあるバージョンは、 MongoDBデータベースリソースが使用する基本イメージによって異なります。 MongoDB のバージョン管理の詳細については、MongoDB マニュアルの「 MongoDBのバージョン管理 」を参照してください。 | 6.0.0-ent | |
string | ConfigMap MongoDB Ops Managerの名前 接続構成の場合 この値は、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は ConfigMap への変更を追跡し、 | <my-project> | |
spec .clusterSpecList .clusterName | string | MongoDBMultiCluster リソース内のクラスターの名前。 | cluster1.example.com |
spec .clusterSpecList .members | integer | このクラスター内のメンバーの数。 | 2 |
spec .clusterSpecList .statefulSet .spec | コレクション | 任意。 ステートフルセット の構成を提供します MongoDB のマルチ Kubernetes クラスター配置で、クラスターの各StatusSets に対して の上書きを適用します。 | 例 を参照してください。 |
spec .clusterSpecList .statefulSet .spec .volumeClaimTemplates .spec | コレクション | 任意。 指定すると、 VolumeClaim テンプレート のデフォルトのストレージ サイズのクラスターごとの上書きが行われます。 、データを保存する永続ボリュームの場合 | 例 を参照してください。 |
string | Operator が と通信するための MongoDB Ops ManagerAPI認証情報として 作成KubernetesMongoDB Ops Manager したシークレットの名前。 認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は、シークレットへの変更を追跡し、 | <mycredentials> | |
string | ReplicaSet |
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 演算子のトラブルシューティング 」を参照してください。