kubectl mongodbプラグインを使用して次の操作を行います。
開始する前に、 kubetl MongoDBプラグイン をインストールしてください。
kubectl mongodbプラグインには次のサブコマンドがあります。
設定サブコマンド
kubectl mongodb multicluster setupサブコマンドは、初期複数 Kubernetes クラスター MongoDB 配置を設定します。 次のアクションを実行します。
MongoDB のマルチ配置のすべてのノードクラスターを含む、
mongodb-kubernetes-operator-member-listという名前のデフォルトの ConfigMap を作成します。 この名前はハードコードされており、変更することはできません。 「既知の問題点 」を参照してください。サービス アカウントに適切な権限を適用します。
前述の設定を使用して、マルチ Kubernetes クラスター MongoDB 配置を作成します。
設定サブコマンド オプション
kubectl mongodbプラグインのsetupサブコマンドには次のオプションがあります。
オプション | データ型 | 説明 |
|---|---|---|
| string | 必須。Kubernetes 演算子が配置される中央クラスター(例: |
| string | 必須。 Kubernetes Operator が配置される名前空間(例: |
| ブール値 | 任意。 名前空間を除くすべての以前に作成されたリソースを削除するかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。ノードクラスターの ClusterRole と ClusterRoleBinding を作成するかどうかを示すフラグ。デフォルト値は |
| ブール値 | 任意。Kubernetes APIサーバーでサービス アカウントのシークレットを作成するかどうかを示すフラグ。デフォルト値は |
| ブール値 | 任意。ノード クラスターでMongoDBワークロードを実行するために必要なサービスアカウントとロールをインストールするかどうかを示すフラグ。デフォルト値は |
| ブール値 | 任意。 |
| string | 必須。 メンバークラスターを含むカンマ区切りのリスト(例: |
| string | 任意。Kubernetes演算子がノードクラスターのKubernetes APIサーバーに到達するために使用するPEMエンコードされたCAバンドルへのパス(形式は |
| string | 必須。 ノード クラスター リソースが配置される名前空間(例: |
| string | 任意。 Kubernetes Operator がノード クラスターと通信するために使用するサービス アカウントの名前。 デフォルト値は |
kubectl mongodbプラグインsetupサブコマンドの使用方法の完全な例については、マルチ Kubernetes クラスターのクイック スタート をご覧ください。
サブコマンドをリカバリする
場合によっては、 kubectl mongodb multiclusterサブコマンドは、失敗したクラスター トポロジーを自動的に回復できます。 その他の場合は、 障害から手動で回復する必要があります。 詳細については、「障害復旧 」を参照してください。
サブコマンド オプションをリカバリする
kubectl mongodbプラグインのrecoverサブコマンドには次のオプションがあります。
オプション | データ型 | 説明 |
|---|---|---|
| string | 必須。Kubernetes 演算子が配置される中央クラスター(例: |
| string | 必須。 Kubernetes Operator が配置される名前空間(例: |
| ブール値 | 任意。 名前空間を除くすべての以前に作成されたリソースを削除するかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。ノードクラスターの ClusterRole と ClusterRoleBinding を作成するかどうかを示すフラグ。デフォルト値は |
| string | 任意。Kubernetes演算子がノードクラスターのKubernetes APIサーバーに到達するために使用するPEMエンコードされたCAバンドルへのパス(形式は |
kubectl mongodbプラグインrecoverサブコマンドの使用法の完全な例については、手動障害復旧手順 を参照してください。
ノード クラスター用のカスタム CA バンドル
デフォルトでは 、kubectl mongodb プラグインは各ノードクラスターの CA をそのクラスターのサービスアカウント トークンシークレットから読み取り、それを生成されたmongodb-enterprise-operator-multi-cluster-kubeconfig シークレットに書き込みます。場合によっては、カスタム CA バンドルを提供する必要があります。例、 Kubernetes Operator からノードクラスターのKubernetes APIサーバーへのネットワーク パスが、独自の証明書を提示するプロキシやロードバランサーなどの他の場所で TLS を終了する場合です。カスタムmember-cluster-ca CA バンドルを指定するには、 オプションを使用します。
次のコマンドは、3つのノードクラスターのうち2つにCAバンドルを提供します。
kubectl mongodb multicluster setup \ --central-cluster="operator-cluster" \ --member-clusters="cluster-1,cluster-2,cluster-3" \ --member-cluster-namespace=mongodb \ --central-cluster-namespace=mongodb \ --member-cluster-ca cluster-1=/path/to/cluster-1-ca.pem \ --member-cluster-ca cluster-2=/path/to/cluster-2-ca.pem前の例では、cluster-3 はサービス アカウント トークン シークレットから CA を保持します。
CAバンドルの要件
kubectl mongodb プラグインは、ファイルの内容を修正せずに KubeConfig シークレットにコピーするため、証明書のみを渡してください。各ファイルは、次の要件を満たしている必要があります。
少なくとも1つのPEMエンコードされた証明書が含まれています。
秘密キーを含みません。TLS ターミネーターがエクスポートするバンドルは、サーバーキーを証明書の隣に配置する可能性があります。プラグインは、エラー
found a private key (<block type> block), pass certificates onlyとともにこのようなバンドルを拒否します。
プラグインは、形式が正しくない <member-cluster-name>=<path-to-pem-file> ペアを渡した場合、member-clusters にリストされていないノード クラスターを指定した場合、または、同じノード クラスターを複数回指定した場合のいずれかにもエラーを返します。
繰り返し実行
setup と recover の両方のサブコマンドは、KubeConfig シークレット全体を再生成します。後で実行する際、member-cluster-ca からノードクラスターを省略した場合、そのクラスターはサービスアカウントトークンシークレットの CA に戻ります。カスタム CA を保持するには、いずれかのサブコマンドを実行するたびに、カスタム CA を必要とするすべてのノードクラスターに対して member-cluster-ca オプションを再渡してください。
サブコマンドが、ノード クラスターのサービス アカウント トークン シークレットと一致しない CA を置き換えるとき、プラグインは次のような警告を出力します。
Warning: replacing the CA for member cluster cluster-1, which does not match its ServiceAccount token secret. Pass --member-cluster-ca cluster-1=<path-to-pem-file> to keep a custom CA.警告は助言です。サブコマンドはまだ完了し、新しい KubeConfig シークレットを書き込みます。