このガイドでは、次の設定方法について説明します。
クラスター内の MongoDB ノード間の X.509 内部認証。
クライアントから MongoDB インスタンスへの X.509 認証。
Kubernetes Operator は、クラスター内の MongoDB ノード間の他の認証スキームをサポートしていません。
注意
Kubernetes クラスターでは MongoDB のスタンドアロン インスタンスを保護することはできません。
一般的な前提条件
TLS暗号化を使用して MongoDB 配置のいずれかを保護する前に、次の手順を完了してください。
プロジェクト レベルで X.509 認証を有効にすると、すべてのエージェントが MongoDB 配置で通信するときに X.509 クライアント認証を使用するように構成されます。
レプリカセットの X.509 内部認証の構成
前提条件
X.509 を使用してレプリカセットを保護する前に、TLS で暗号化されたレプリカセットをデプロイします。
X.509 内部認証の有効化
X.509 証明書のシークレットを作成します。
次の kubectl コマンドを実行して、レプリカセットの証明書を保存する新しいシークレットを作成します。
kubectl create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<replica-set-clusterfile-tls-cert> \ --key=<replica-set-clusterfile-tls-key>
注意
シークレットの前に<prefix>-<metadata.name>を付ける必要があります。
例として、配置を my-deployment と呼び出し、プレフィックスを mdb に設定した場合、クライアント TLS 通信用の TLS シークレットに mdb-my-deployment-cert という名前を付ける必要があります。 また、内部クラスター認証用の TLS シークレットには名前を付ける必要があります (有効にしている場合) mdb-my-deployment-clusterfile。
Copy the sample replica set resource.
Change the settings of this YAML file to match your desired replica set configuration.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "8.0.0" 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 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 authentication: 21 enabled: true 22 modes: ["X509"] 23 internalCluster: "X509" 24 ...
コピーした例セクションを既存のレプリカセットリソースに貼り付けます。
Configure the general X.509 settings for your replica set resource.
配置で TLS および X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
Configure the internal X.509 settings for your replica set resource.
配置で TLS および X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
キー | タイプ | 必要性 | 説明 | 例 |
|---|---|---|---|---|
| string | 必須 | Use this setting to enable X.509 internal cluster authentication. 重要:内部クラスター認証が有効になっている場合は、無効にすることはできません。 |
|
Save your replica set config file.
Apply your changes to your replica set deployment.
レプリカセットを更新するには、次の Kubernetes コマンドを呼び出します。
kubectl apply -f <replica-set-conf>.yaml
配置のステータスを追跡します。
MongoDBリソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
レプリカセットの内部認証 X.509 証明書の更新
すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。
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>
シャーディングされたクラスターの X.509 内部認証の構成
前提条件
X.509 を使用してシャーディングされたクラスターを保護する前に、 TLS で暗号化されたシャーディングされたクラスターをデプロイしてください。
X.509 内部認証の有効化
シャードの X.509 証明書のシークレットを作成します。
次の kubectl コマンドを実行して、シャーディングされたクラスターシャードの証明書を保存する新しいシークレットを作成します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-clusterfile \ --cert=<shard-0-clusterfile-tls-cert> \ --key=<shard-0-clusterfile-tls-cert> kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-clusterfile \ --cert=<shard-1-clusterfile-tls-cert> \ --key=<shard-1-clusterfile-tls-cert>
コンフィギュレーションサーバーの X.509 証明書のシークレットを作成します。
次の kubectl コマンドを実行して、シャーディングされたクラスターコンフィギュレーションサーバーの証明書を保存する新しいシークレットを作成します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-clusterfile \ --cert=<config-clusterfile-tls-cert> \ --key=<config-clusterfile-tls-cert>
mongos サーバーの X.509 証明書のシークレットを作成します。
次のkubectl コマンドを実行して、シャーディングされたクラスター mongos証明書を保存する新しいシークレットを作成します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-clusterfile \ --cert=<mongos-clusterfile-tls-cert> \ --key=<mongos-clusterfile-tls-cert>
Copy the sample sharded cluster resource.
Change the settings of this YAML file to match your desired sharded cluster configuration.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "8.0.0" 12 opsManager: 13 configMapRef: 14 name: <configMap.metadata.name> 15 # Must match metadata.name in ConfigMap file 16 credentials: <mycredentials> 17 type: ShardedCluster 18 persistent: true
19 security: 20 tls: 21 ca: <custom-ca> 22 certsSecretPrefix: <prefix> 23 authentication: 24 enabled: true 25 modes: ["X509"] 26 internalCluster: "X509" 27 ...
Paste the copied example section into your existing sharded cluster resource.
Configure the general X.509 settings for your sharded cluster resource.
配置で TLS および X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
Configure the internal X.509 settings for your sharded cluster resource.
配置で TLS および X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
キー | タイプ | 必要性 | 説明 | 例 |
|---|---|---|---|---|
| string | 必須 | Use this setting to enable X.509 internal cluster authentication. 重要:内部クラスター認証が有効になっている場合は、無効にすることはできません。 |
|
Save your sharded cluster config file.
Update and restart your sharded cluster deployment.
In any directory, invoke the following Kubernetes command to update and restart your sharded cluster:
kubectl apply -f <sharded-cluster-conf>.yaml
配置のステータスを追跡します。
MongoDBリソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
シャーディングされたクラスターの内部認証 X.509 証明書の更新
すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。
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 -n mongodb create secret tls <prefix>-<metadata.name>-0-cert \ --cert=<shard-0-tls-cert> \ --key=<shard-0-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-cert \ --cert=<shard-1-tls-cert> \ --key=<shard-1-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
コンフィギュレーションサーバーの TLS 証明書のシークレットを更新します。
シャーディングされたクラスターコンフィギュレーションサーバーの証明書を保存する既存のシークレットを更新するには、次の kubectl コマンドを実行します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-cert \ --cert=<config-tls-cert> \ --key=<config-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
シャードの X.509 証明書のシークレットを更新します。
kubectlシャーディングされたクラスターシャードの証明書を保存する既存のシークレットを更新するには、次の コマンドを実行します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-clusterfile \ --cert=<shard-0-clusterfile-tls-cert> \ --key=<shard-0-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-clusterfile \ --cert=<shard-1-clusterfile-tls-cert> \ --key=<shard-1-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -
コンフィギュレーションサーバーの X.509 証明書のシークレットを更新します。
シャーディングされたクラスターコンフィギュレーションサーバー の証明書を保存する既存のシークレットを更新するには、次の kubectl コマンドを実行します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-clusterfile \ --cert=<config-clusterfile-tls-cert> \ --key=<config-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -
mongos サーバーの X.509 証明書のシークレットを更新します。
kubectlシャーディングされたクラスターのmongos 証明書を保存する既存のシークレットを更新するには、次の コマンドを実行します。
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-clusterfile \ --cert=<mongos-clusterfile-tls-cert> \ --key=<mongos-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -