Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/

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

項目一覧

  • 始める前に
  • Overview
  • サービス メッシュなしで MongoDBMultiClusterリソースを配置

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

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

サービス メソッドを使用せずに 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プロセスへの外部接続が可能になります。

次の手順では、レプリカセット内の 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コマンドを実行して、 CAMongoDBMultiClusterリソースにリンクします。 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_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: 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...
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 文字以下にする必要があります。

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

multi-replica-set
string

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

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

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

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

6.0.0-ent
spec
.opsManager
.configMapRef
string

ConfigMap MongoDB Ops Managerの名前 接続構成の場合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
コレクション

任意。

ステートフルセット の構成を提供します MongoDB のマルチ Kubernetes クラスター配置で、クラスターの各StatusSets に対して の上書きを適用します。clusterSpecListの下で個々のクラスター レベルで指定されると、複数の Kubernetes クラスター MongoDB 配置全体の Atlas App Services のグローバル構成が上書きされます。 「 マルチKubernetes-クラスター リソース仕様 」と「 StatefunctionSet v1 アプリ Kubernetes ドキュメント 」を参照してください。

例 を参照してください。
spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec
コレクション
任意。 指定すると、 VolumeClaim テンプレート のデフォルトのストレージ サイズのクラスターごとの上書きが行われます。 、データを保存する永続ボリュームの場合
例 を参照してください。
string

Operator が と通信するための MongoDB Ops ManagerAPI認証情報として 作成KubernetesMongoDB 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 演算子のトラブルシューティング 」を参照してください。

戻る

リソースの配置