kubectl mongodbプラグインを使用して次の操作を行います。
開始する前に、 kubetl MongoDBプラグイン をインストールしてください。
kubectl mongodbプラグインには次のサブコマンドがあります。
設定サブコマンド
kubectl mongodb multicluster setupサブコマンドは、初期複数 Kubernetes クラスター MongoDB 配置を設定します。 次のアクションを実行します。
MongoDB のマルチ配置のすべてのノードクラスターを含む、
mongodb-kubernetes-operator-member-listという名前のデフォルトの ConfigMap を作成します。 この名前はハードコードされており、変更することはできません。 「既知の問題点 」を参照してください。演算子クラスターおよび各ノードクラスターで、ServiceAccounts、ロール、ClusterRoles、およびRoleBindings および ClusterRoleBindingsを作成します。
サービス アカウントに適切な権限を適用します。
前述の設定を使用して、マルチ Kubernetes クラスター MongoDB 配置を作成します。
設定サブコマンド オプション
kubectl mongodbプラグインのsetupサブコマンドには次のオプションがあります。
オプション | データ型 | 説明 |
|---|---|---|
| string | 必須。 Kubernetes Operator が配置される中央クラスター(例: |
| string | 必須。 Kubernetes Operator が配置される名前空間(例: |
| ブール値 | 任意。 名前空間を除くすべての以前に作成されたリソースを削除するかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。 ノードクラスターの ClusterRole と ClusterRoleBinding を作成するかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。 Kubernetes APIサーバーでサービス アカウントのシークレットを作成するかどうかを示すフラグ。デフォルト値は |
| ブール値 | 任意。 ノード クラスターで MongoDB ワークロードを実行するために必要なサービス アカウントとロールをインストールするかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。 |
| string | 必須。 メンバークラスターを含むカンマ区切りのリスト(例: |
| string | 任意。 Kubernetes Operator がノードクラスターのKubernetes APIサーバー にアクセスするために使用する PEM でエンコードされた CA |
| string | 必須。 ノード クラスター リソースが配置される名前空間(例: |
| string | 任意。 Kubernetes Operator がノード クラスターと通信するために使用するサービス アカウントの名前。 デフォルト値は |
kubectl mongodbプラグインsetupサブコマンドの使用方法の完全な例については、マルチ Kubernetes クラスターのクイック スタート をご覧ください。
サブコマンドをリカバリする
場合によっては、 kubectl mongodb multiclusterサブコマンドは、失敗したクラスター トポロジーを自動的に回復できます。 その他の場合は、 障害から手動で回復する必要があります。 詳細については、「障害復旧 」を参照してください。
サブコマンド オプションをリカバリする
kubectl mongodbプラグインのrecoverサブコマンドには次のオプションがあります。
オプション | データ型 | 説明 |
|---|---|---|
| string | 必須。 Kubernetes Operator が配置される中央クラスター(例: |
| string | 必須。 Kubernetes Operator が配置される名前空間(例: |
| ブール値 | 任意。 名前空間を除くすべての以前に作成されたリソースを削除するかどうかを示すフラグ。 デフォルト値は |
| ブール値 | 任意。 ノードクラスターの ClusterRole と ClusterRoleBinding を作成するかどうかを示すフラグ。 デフォルト値は |
| string | 任意。 Kubernetes Operator がノードクラスターの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 シークレットにコピーするため、証明書のみを渡します。各ファイルは、次の要件を満たしている必要があります。
PEM でエンコードされた証明書が少なくとも 1 つ含まれます。
秘密キーは含まれません。 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 を保持するには、いずれかのサブコマンドを実行するたびに、必要なノードごとに 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.
この警告は助言です。サブコマンドは引き続き完了し、新しい Kubernetes シークレットを書込みます。