レプリカセットの配置
注意
このページのMongoDB Ops Managerが表示されている場所では、 Cloud Managerを置き換えることができます。
重要
Kubernetes演算子を使用して、MongoDB Cloud ManagerMongoDB Ops Managerおよび バージョン6.0 .x 以降で リソースを配置できます。
Atlas 演算子を使用して MongoDB リソースを Atlas に配置できます。
警告
Kubernetes Operator はアービタ ノードをサポートしていません。
レプリカセットは、同じデータセットを保持する MongoDB 配置のグループです。 レプリカセットは冗長性と高可用性を提供し、すべての配置環境の基盤となります。
レプリカセットの詳細については、MongoDB マニュアルの 「レプリケーションの概要」を参照してください。
MongoDB Ops Managerが管理する新しいレプリカセットを配置するには、次の手順を使用します。 配置後は、 MongoDB Ops Managerを使用して、ノードの追加、削除、再構成などの操作を含むレプリカセットを管理します。
Considerations
Kubernetes Operator 経由でレプリカセットを配置する場合、 TLS証明書を使用して接続を暗号化するかどうかを選択する必要があります。
TLS-Encrypted接続の次の手順:
レプリカセット内の MongoDB ホスト間でTLS暗号化接続を確立します。
クライアント アプリケーションと MongoDB 配置間でTLS暗号化接続を確立します。
TLS暗号化の有効な証明書が必要です。
Non-Encrypted Connectionsの次の手順:
レプリカセット内の MongoDB ホスト間の接続を暗号化しません。
クライアント アプリケーションと MongoDB 配置間の接続を暗号化しません。
TLS暗号化接続を使用した配置よりもセットアップ要件が少なくなります。
注意
Kubernetes クラスターでは MongoDB のスタンドアロン インスタンスを保護することはできません。
シャーディングされたクラスターのTLS暗号化を設定するには、「 シャーディングされたクラスターの配置 」を参照してください。
TLSを使用してレプリカセット接続を暗号化するかどうかに応じて、適切なタブを選択します。
前提条件
オブジェクト を使用してレプリカセットを配置するには、次の手順を実行する必要があります。
注意
単一クラスターの Kubernetes 配置でシークレットが保存されないようにするには、すべての シークレット を移行します シークレット ストレージ ツール に渡す追加オプション。複数の Kubernetes クラスターでの配置では、 HashiCorp Vault などのシークレット ストレージ ツールへのシークレットの保存はサポートされていません。 。
次のコンポーネントごとに 1 つのTLS証明書を生成します。
レプリカセット。 レプリカセットのノードをホストする各 Kubernetes ポッドのSANを証明書に追加することを確認します。
TLS証明書では、各ポッドのSANは次の形式を使用する必要があります。
<pod-name>.<metadata.name>-svc.<namespace>.svc.cluster.local 重要
let の暗号 化などの AME ベースのサービスプロバイダーを使用している場合 TLS 証明書を発行するには、プロバイダーがポッドのデフォルトの FQDN (
*.svc.cluster.local
)を証明書に SAN に追加することを禁止する場合があります。ACMEベースの証明書を使用するには、レプリカセット リソースの証明書を構成する必要があります。 詳細については、手順の 「 ACMEベースのTLS証明書」 に関するステップを参照してください。
プロジェクトの MongoDB Agent。 MongoDB Agent 証明書については、次の要件を満たしていることを確認してください。
TLS証明書のコモン ネームが空ではない。
各TLS証明書内の組織と組織単位の組み合わせは、レプリカセット ノードのTLS証明書内の組織と組織単位とは異なります。
CA証明書ファイルが必要で、それに
ca-pem
という名前を付けます。TLS証明書の署名に使用したキーが必要です。
重要
Kubernetes 演算子は kubernetes.io/tls を使用しますMongoDB Ops Manager と MongoDB リソースのTLS証明書と秘密キーを保存するためのシークレット。 Kubernetes Operator バージョン1 以降。17 。0 、Kubernetes Operator は Opaque シークレット として保存される連結 PEM ファイルをサポートしていません。
オブジェクト を使用してレプリカセットを配置するには に設定されている場合は、以下を行う必要があります。
注意
単一クラスターの Kubernetes 配置でシークレットが保存されないようにするには、すべての シークレット を移行します シークレット ストレージ ツール に渡す追加オプション。複数の Kubernetes クラスターでの配置では、 HashiCorp Vault などのシークレット ストレージ ツールへのシークレットの保存はサポートされていません。 。
レプリカセットの配置
kubectl
をデフォルトで名前空間に設定します。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectl
コマンドを実行します。
注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
context
を中央クラスターの名前に設定します(例:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。MongoDB のマルチ配置に使用したのと同じスコープ(例:
kubectl config --namespace "mongodb"
に--namespace
を設定します。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
レプリカセットの TLS 証明書のシークレットを作成します。
このkubectl
コマンドを実行して新しい シークレット を作成します レプリカセットの証明書を保存する
kubectl create secret tls <prefix>-<metadata.name>-cert \ --cert=<replica-set-tls-cert> \ --key=<replica-set-tls-key>
注意
シークレットの前に<prefix>-<metadata.name>
を付ける必要があります。
たとえば、配置をmy-deployment
mdb
と呼び出し、プレフィックスを に設定する場合は、クライアント TLS 通信の TLS シークレットにmdb-my-deployment-cert
という名前を付ける必要があります。また、内部クラスター認証用のTLSシークレット(有効になっている場合) mdb-my-deployment-clusterfile
に名前を付ける必要があります。
HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。
シークレット ストレージのオプションの詳細については、「シークレット ストレージの構成 」を参照してください。
エージェントの TLS 証明書のシークレットを作成します。
このkubectl
コマンドを実行して新しい シークレット を作成します エージェントの TLS 証明書を保存する:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key>
HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。
ConfigMap を作成して、CA を配置にリンクします。
このkubectl
コマンドを実行してCAをレプリカセットにリンクし、 CA証明書ファイルを指定します。
重要
Kubernetes Operator では、ConfigMap でMongoDB
リソースの証明書がca-pem
という名前を持つ必要があります。
kubectl create configmap custom-ca --from-file=ca-pem=<your-custom-ca-file>
サンプルレプリカセットリソースをコピーします。
このYAMLファイルの設定を、必要なレプリカセット構成に合わせて変更します。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true 16 ...
16 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 ...
コピーした例を貼り付けて、新しいレプリカセットリソースを作成します。
希望のテキストエディタを開き、 オブジェクト を貼り付けます 指定されたドキュメントを新しいテキストファイルに置き換えます。
設定を希望する値に変更します。
キー | タイプ | 説明 | 例 |
---|---|---|---|
string | この Kubernetes レプリカセット オブジェクト のラベル 。 リソース名は 44 文字以下にする必要があります。 詳しくは、 |
| |
integer |
| ||
string | このレプリカセットが実行する MongoDB のバージョン。 形式は、 MongoDB Community Editionでは 重要:互換性のあるMongoDB Serverバージョンを選択していることを確認してください。 互換性のあるバージョンは、 MongoDBデータベースリソースが使用する基本イメージによって異なります。 MongoDB のバージョン管理の詳細については、MongoDB マニュアルの「 MongoDBのバージョン管理 」を参照してください。 |
| |
string | ConfigMap MongoDB Ops Managerの名前 接続構成の場合 この値は、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は ConfigMap への変更を追跡し、 |
| |
string | Operator が と通信するための MongoDB Ops ManagerAPI認証情報として 作成KubernetesMongoDB Ops Manager したシークレットの名前。 認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は、シークレットへの変更を追跡し、 |
| |
string | 作成する |
| |
string | 任意。 この この値が 永続的なボリュームクレーム を変更するには 構成では、配置の要件を満たすように次のコレクションを構成します。
警告: コンテナに 永続ボリューム への書込み (write) 権限を付与 。Kubernetes 演算子は、 永続的なボリューム を使用しない場合 では、この配置Disk Usage Disk IOPSProcessesDeploymentMetricsのデータ を確認するときに、 ページまたは ページの は表示されません。 |
|
カスタム認証局(CA)を使用して、レプリカセットリソースの TLS 設定を構成します。
配置でTLSを有効にするには、Kubernetes オブジェクトで次の設定を構成します。
キー | タイプ | 必要性 | 説明 | 例 |
---|---|---|---|---|
spec.security | string | 必須 | ConfigMap を追加する 配置の TLS 証明書に署名するために使用したカスタム CA を保存する の名前。 |
|
spec.security | string | 必須 | MongoDB 配置のTLS証明書を含むシークレット名の たとえば、配置を |
|
オプション:レプリカセットリソース用の AME ベースの TLS 証明書を構成します。
let の暗号 化などの AME ベースのサービスプロバイダーを使用している場合 TLS 証明書を発行するには、プロバイダーがポッドのデフォルトの FQDN (*.svc.cluster.local
)を証明書に SAN に追加することを禁止する場合があります。
ポッドのFQDNを含まない証明書を設定するには、次の手順に従います。
外部ドメインの証明書を発行します。 詳細については、 let の暗号化 に関するドキュメント を参照してください。 または プロバイダーのドキュメント を参照してください。
証明書にレプリカセットに配置するすべてのホスト名が含まれていることを確認します。 あるいは、
*.<externalDomain>
の ワイルドカード 証明書を発行することもできます。レプリカセットの配置で外部ドメインのみを含む証明書を使用するには、レプリカセットで使用されるデフォルトのホスト名を変更する必要があります。
Kubernetes クラスターの作成中にホスト名を設定する場合は、 デフォルトのドメイン を変更します
cluster.local
Kubernetes クラスターを作成または再作成する際に、 から外部ドメインに接続する必要があります。次に、spec.clusterDomain
設定を使用して MongoDB リソースでこのドメインを設定します。それ以外の場合は、Kubernetes オブジェクトで構成されている次の設定を使用して MongoDB 配置を作成します。
キー | タイプ | 必要性 | 説明 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
spec.externalAccess | string | 必須 | レプリカセットの配置を外部で公開するために使用される外部ドメイン。 デフォルトでは、各レプリカセット ノードは Kubernetes ポッドのFQDN (
以下に例を挙げます。
この設定でレプリカセットを配置すると、 Kubernetes Operator は外部ドメインを含むホスト名を使用して、 MongoDB Ops Managerオートメーション構成の レプリカセットに接続するための他のホスト名を指定するには、 警告:このフィールドを指定すると、 MongoDB Ops Managerが | |||||||
spec.externalAccess | コレクション | 任意 | ServiceSpec の構成。
Kubernetes 仕様の詳細については、 ServiceSpec を参照してください (Kubernetes ドキュメント)。 | |||||||
spec.externalAccess | コレクション | 任意 | 配置内のすべてのクラスターにクラウドプロバイダー固有の構成設定を追加できるキーと値のペア。 詳細については、 注釈 を参照してください Kubernetes クラウドプロバイダーのドキュメントとドキュメントを参照してください。 プレースホルダー値を指定して注釈をカスタマイズできます。 詳しくは、 |
レプリカセットの配置に追加で許容される設定を追加します。
また、次の任意設定のいずれかを オブジェクト に追加できます。 レプリカセット 配置の仕様ファイル。
警告
Kubernetes クラスターに デフォルトのドメインspec.clusterDomain
がある場合は、 を設定する必要があります デフォルトのcluster.local
以外。デフォルトを使用せず、 spec.clusterDomain
オプションを設定しない場合、Kubernetes 演算子が期待どおりに機能しない可能性があります。
レプリカセットの配置を開始します。
任意のディレクトリで、次の Kubernetes コマンドを呼び出してレプリカセットを作成します。
kubectl apply -f <replica-set-conf>.yaml
レプリカセットの配置のステータスを追跡します。
MongoDB
リソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w
(監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning
状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
TLSを使用してデータベース リソースを暗号化すると、以下を保護できます。
レプリカセットの TLS 証明書の更新
次の手順で、 TLS証明書を定期的に更新します。
kubectl
をデフォルトで名前空間に設定します。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectl
コマンドを実行します。
注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
context
を中央クラスターの名前に設定します(例:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。MongoDB のマルチ配置に使用したのと同じスコープ(例:
kubectl config --namespace "mongodb"
に--namespace
を設定します。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
kubectl
をデフォルトで名前空間に設定します。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectl
コマンドを実行します。
注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
context
を中央クラスターの名前に設定します(例:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。MongoDB のマルチ配置に使用したのと同じスコープ(例:
kubectl config --namespace "mongodb"
に--namespace
を設定します。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
サンプルレプリカセットリソースをコピーします。
このYAMLファイルの設定を、必要なレプリカセット構成に合わせて変更します。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true 16 ...
コピーした例を貼り付けて、新しいレプリカセットリソースを作成します。
希望のテキストエディタを開き、 オブジェクト を貼り付けます 指定されたドキュメントを新しいテキストファイルに置き換えます。
設定を希望する値に変更します。
キー | タイプ | 説明 | 例 |
---|---|---|---|
string | この Kubernetes レプリカセット オブジェクト のラベル 。 リソース名は 44 文字以下にする必要があります。 詳しくは、 |
| |
integer |
| ||
string | このレプリカセットが実行する MongoDB のバージョン。 形式は、 MongoDB Community Editionでは 重要:互換性のあるMongoDB Serverバージョンを選択していることを確認してください。 互換性のあるバージョンは、 MongoDBデータベースリソースが使用する基本イメージによって異なります。 MongoDB のバージョン管理の詳細については、MongoDB マニュアルの「 MongoDBのバージョン管理 」を参照してください。 |
| |
string | ConfigMap MongoDB Ops Managerの名前 接続構成の場合 この値は、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は ConfigMap への変更を追跡し、 |
| |
string | Operator が と通信するための MongoDB Ops ManagerAPI認証情報として 作成KubernetesMongoDB Ops Manager したシークレットの名前。 認証情報を保持するMongoDB Ops Manager Kubernetes Secretオブジェクトは、作成するリソースと同じ名前空間に存在する必要があります。 重要: Kubernetes Operator は、シークレットへの変更を追跡し、 |
| |
string | 作成する |
| |
string | 任意。 この この値が 永続的なボリュームクレーム を変更するには 構成では、配置の要件を満たすように次のコレクションを構成します。
警告: コンテナに 永続ボリューム への書込み (write) 権限を付与 。Kubernetes 演算子は、 永続的なボリューム を使用しない場合 では、この配置Disk Usage Disk IOPSProcessesDeploymentMetricsのデータ を確認するときに、 ページまたは ページの は表示されません。 |
|
レプリカセットの配置に追加で許容される設定を追加します。
また、次の任意設定のいずれかを オブジェクト に追加できます。 レプリカセット 配置の仕様ファイル。
警告
Kubernetes クラスターに デフォルトのドメインspec.clusterDomain
がある場合は、 を設定する必要があります デフォルトのcluster.local
以外。デフォルトを使用せず、 spec.clusterDomain
オプションを設定しない場合、Kubernetes 演算子が期待どおりに機能しない可能性があります。
レプリカセットの配置を開始します。
任意のディレクトリで、次の Kubernetes コマンドを呼び出してレプリカセットを作成します。
kubectl apply -f <replica-set-conf>.yaml
レプリカセットの配置のステータスを追跡します。
MongoDB
リソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w
(監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning
状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。