kubectl mongodb プラグインは、配置を Kubernetes に移行するために生成するリソースに、常に mongodb.com/migration-dry-run: true アノテーションを追加します。そのアノテーションが存在する間、Kubernetes 演算子はオートメーション構成の変更を行いません。接続と認証情報の検証のみを行うため、Kubernetes 演算子が配置の所有権を取得する前に、必要に応じて何度でも問題を修正して再実行できます。
このタスクについて
Kubernetes 演算子は、
MongoDBリソースごとに、<resourceName>-connectivity-checkと名付けられたジョブを 1 つ作成します。ジョブはすべての外部ノードにダイヤルし、それに対して認証を行います。ttlSecondsAfterFinishedによって自動的に削除するされます。次の調整で再作成されるため、修正後の再検証は自動的に行われます。手動でそれを trigger する必要はありません。ドライランでは、Kubernetes からバーチャル マシンへの接続可能性 (DNS、TLS、ファイアウォール、およびノードのアドレス)、および
localデータベース上の__systemロール、TLS が有効になっている場合の CA を含む認証情報を確認します。ドライランでは、仮想マシンからKubernetesへのインバウンド接続はチェックされません。その方向性は、MongoDB Ops Manager UIの配置のモニタリングステータスを確認するか、仮想マシンのノードから
rs.status()を実行してKubernetes Podに到達できることを確認することで、ご自身で検証してください。プラグインと Kubernetes 演算子のバージョンチェックは、dry-run アノテーションの有無にかかわらず実行されます。
始める前に
mongodb.com/migration-dry-run: trueアノテーションが残っている生成済みのMongoDBカスタムリソース。このリソースの生成方法については、「レプリカセットをKubernetesに移行する」を参照してください。配置でTLSを使用している場合は、Kubernetesへの移行のためのTLSの構成で説明されているノード証明書とCAマテリアルが必要です。
Kubernetes 演算子
ServiceAccountは、batch/jobsつの許可 (create、get、list、watch、およびdelete) を持っています。この権限がないと、Kubernetes 演算子は接続バリデーター ジョブを全く作成できません。
手順
結果を読み取ります。
status.conditions[type=NetworkConnectivityVerified] を読み取る:
バリデーター ジョブ 終了コード | 条件ステータス | 理由 | 意味 |
|---|---|---|---|
ジョブが実行中です |
|
|
|
|
|
| すべての外部ノードは到達可能であり認証済みです。 |
|
|
| 認証情報、認証メカニズム、または不足している |
|
|
| DNS、TLS、タイムアウト、または到達不能なノード。ジョブPodのログを確認します。 |
|
|
| 未分類の障害。ジョブ Pod ログを確認する。 |
ジョブの開始前に発生する失敗は、OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed、AgentCertSubject の理由を使用します。
Kubernetes 演算子は、外部ノードがなくなると、status.conditions から NetworkConnectivityVerified 状態を完全に除きます。
必要な場合は問題を修正して再実行します。
必要に応じて、KubernetesまたはMongoDB Ops Manager UIで接続や認証情報の問題を修正します。削除するや適用するを行う必要はありません。次の調整でバリデータージョブが自動的に再作成されます。
ドライランが停止しているように見える場合は、<resourceName>-connectivity-check ジョブを削除する。次の調整では、それを再作成します。
Kubernetes 演算子 ServiceAccount に対する batch/jobs RBAC の許可がない場合、ジョブが本来作成されることを防止します。そのため、その場合はコンディションやジョブがまったく表示されません。ジョブが開始する前に発生する失敗は、上記の表の終了コードの理由ではなく、OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed、またはAgentCertSubjectの理由となります。
続行するには、dry-run 注釈を削除します。
NetworkConnectivityVerified 条件が理由 NetworkValidationPassed で True になった場合、アノテーションを除きます。
kubectl annotate mdb <resourceName> \ mongodb.com/migration-dry-run-重要
dry-runアノテーションを除くと、その点でKubernetes演算子がOps ManagerまたはCloud Managerプロジェクトの所有権を取得します。これは、検証した接続と認証情報の状態に対する後戻りできない点として扱ってください。