kubectl mongodbプラグインは、配置をKubernetesに移行するために生成されるリソースに常に mongodb.com/migration-dry-run: true アノテーションを追加します。この注釈が存在している間は、 Kubernetes Operator はオートメーション構成の変更を行いません。接続と認証情報のみを検証するため、 Kubernetes Operator が配置の所有権を取得する前に、必要な回数だけ問題を修正し再実行することができます。
このタスクについて
Kubernetes Operator は、
MongoDBリソースごとに 1 つのジョブを作成し、<resourceName>-connectivity-checkという名前を作成します。ジョブはすべての外部メンバーを呼び出し、それに対して認証を行います。ttlSecondsAfterFinishedを使用してそれ自体を削除し、次の調整時にそれが再作成されるため、修正後の再検証は自動的に行われます。手動でトリガーする必要はありません。ドライバーは、Kubernetes から仮想マシンへの到達性(DNS、TLS、ファイアウォール、ノード アドレス)と認証情報(
localデータベースの__systemロール、および TLS が有効になっている場合は CA を含む)をチェックします。ドライバーは、仮想マシンと Kubernetes 間のインバウンド接続をチェックしません。その方向を確認するには、配置の Ops Manager UIモニタリング
rs.status()ステータスを使用するか、仮想マシン ノードから を実行中てKubernetesポッドに到達できることを確認します。プラグインとKubernetes Operator のバージョン チェックは、ドライバー の注釈が存在するかどうかに関係なく実行されます。
始める前に
MongoDB生成された カスタムリソースにmongodb.com/migration-dry-run: trueアノテーションが引き続き存在するこのリソースを生成する方法については、「 Kubernetesへのレプリカセットの移行 」を参照してください。配置で TLS が使用される場合、ノード証明書と CA 資料は「 Kubernetesへの移行用の TLS の構成 」で説明されています。
Kubernetes演算子
ServiceAccountにはbatch/jobs権限(create、get、list、watch、delete)があります。この付与がないと、 Kubernetes Operator は接続検証ジョブを作成できません。
手順
結果をお読みください。
status.conditions[type=NetworkConnectivityVerified] を読み取る:
バリデータージョブ終了コード | 状態 | 理由 | 意味 |
|---|---|---|---|
ジョブはまだ実行中 |
|
| The |
|
|
| すべての外部ノードはアクセス可能であり、認証されます。 |
|
|
| Credentials, the authentication mechanism, or a missing |
|
|
| DNS、TLS、タイムアウト、または到達不能なノード。ジョブ ポッド ログを確認します。 |
|
|
| クラス化されていない障害。ジョブ ポッド ログを確認します。 |
Failures that occur before the Job starts use the reasons OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed, and AgentCertSubject.
Kubernetes Operator removes the NetworkConnectivityVerified condition from status.conditions entirely once no external members remain.
必要に応じて、問題を修正し再実行します。
必要に応じて、 Kubernetesまたは Ops Manager UIの接続または認証情報の問題を修正します。を削除したり再適用したりする必要はありません。次回の調整時に検証ジョブが自動的に再作成されます。
ドライバーの実行が停止したと思われる場合は、<resourceName>-connectivity-check ジョブを削除してください。次の調整では、それが再作成されます。
Kubernetes演算子 ServiceAccount に batch/jobsRBAC が付与されていない場合は、ジョブが最初に作成されなくなるため、その場合、条件やジョブはまったく表示されません。ジョブが開始される前に発生する障害は、上記表の終了コード理由の代わりに、OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed、または AgentCertSubject の理由として表示されます。
続行するには、ドライバーによる注釈を削除します。
NetworkConnectivityVerified 条件が True で理由 NetworkValidationPassed の場合は、注釈を削除します。
kubectl annotate mdb <resourceName> \ mongodb.com/migration-dry-run-
重要
ドライバーが注釈を削除する点で、 Kubernetes Operator は Ops Manager またはCloud Managerプロジェクトの所有権を取得します。先ほど検証した接続と認証情報の状態が返されない点として扱います。