Understanding Preflight checks#
Preflight
チェックの結果を確認して、インストール関連のすべてのシークレットが有効であることを確認します。
重点ロール サイト信頼性エンジニアSRE/インフラストラクチャエンジニア
前提条件#
フェーズ5ハイブリッドマネージャーのインストール — インストールコマンドを実行しましたが、プロセスがスタックしているようです。
結果#
ハイブリッドマネージャーHMのインストール中に、シークレット関連のブロッカーを診断および解決する機能。
HMインストールを開始すると、オペレーターはPreflight
カスタムリソースを自動的に作成します。このリソースは、必要なすべてのKubernetesシークレットが存在し、オペレーターがプラットフォームサービスの展開を続行する前に**正しく構造化されていることを検証します。
Preflightリソースは自分で作成しません。 HybridControlPlane
リソースが作成された後、オペレーターは自動的に作成します。
HybridControlPlane
マニフェストを適用すると、オペレーターは次のことを行います。
HybridControlPlaneリソースを調整します。デプロイメントのシークレット要件を使用して
Preflightリソースを作成します。各シークレット要件を検証します。シークレットが存在することを確認し、シークレットのコンテンツに対して検証ルールを評価します。
プリフライトリソースステータスの結果を報告します。
すべての要件が合格した場合、オペレーターはプラットフォームサービスの展開を続行します。要件が失敗すると、 展開がブロックされ 、オペレーターは問題が解決されるまで30秒ごとに再試行します。
プリフライトステータスの確認#
installation Helm command を実行した後にインストールがスタックしているように見える場合は、プリフライトステータスを検査します。
kubectl get preflight -o yaml
status.secretRequirementsStatus
セクションには、チェックされた各シークレットの結果が表示されます。
status:
observedGeneration: 1
secretRequirementsStatus:
- secret:
name: hm-portal-bootstrap
namespace: default
state: Valid
- secret:
name: edb-object-storage
namespace: default
state: Invalid
messages:
- "failed to pass the rule: aws-configurations"
- secret:
name: langflow-secret
namespace: default
state: SecretNotFound
状態を理解する#
State |
Meaning |
Action required |
|---|---|---|
Valid |
Secret exists and passes all validation rules. |
None. |
Invalid |
Secret exists but one or more validation rules failed. |
Review the messages field to identify which rules failed, then fix the secret content. |
SecretNotFound |
The referenced secret does not exist. |
Create the secret in the correct namespace with the required keys. |
!!!警告
すべての シークレット要件がValid
状態に到達するまで、展開はブロックされたままです。オペレーターは30秒ごとに自動的に再試行します。すべての要件が合格すると、手動介入なしで展開が続行されます。
各シークレット要件は、 インストールシナリオ core
、migration 、ai 、またはanalytics
に関連付けられています。オペレーターは、HybridControlPlane
のspec.scenarios
で構成されたシナリオを使用して、チェックする要件をフィルタリングします。
構成が特定のシナリオ
core, aiなどを定義している場合、これらのシナリオに一致する要件のみが検証されます。他のシナリオmigrationなどの要件はスキップされます。構成が
spec.scenariosを定義していない場合、シナリオに関係なく、すべてのシークレット要件が検証されます。
これは、実際に展開するシナリオのシークレットを提供するだけでよいことを意味します。たとえば、
analytics
シナリオを使用しない場合、Lakekeeperの交絡キーシークレットを提供する必要はありません。
プリフライト障害のトラブルシューティング#
インストールが停止しているようです#
Helmコマンドは完了したが、ポッドが起動していない場合、プリフライトチェックが展開をブロックしている可能性があります。最初にプリフライトステータスを確認します。
kubectl get preflight -o yaml
Valid ではないエントリがないか、 status.secretRequirementsStatus
を確認します。
シークレットが見つかりません#
要件にSecretNotFound
が示されている場合、シークレットが存在することを確認します。
kubectl get secret <secret-name> -n <namespace>
シークレットが存在しない場合は、 Preparing your environment のドキュメントに従って作成します。名前と名前空間がプリフライトで想定されているものと正確に一致することを確認します。
検証ルールの失敗#
要件がInvalid を示している場合、messages
フィールドは、どのルールが失敗したかを示します。例
failed to pass the rule: aws-configurations
これは、シークレットが存在するが、予想される構造を満たさないことを意味します。シークレットを検査します。
kubectl get secret <secret-name> -n <namespace> -o yaml
シークレットのデータキーと値をルールメッセージと比較します。一般的な原因には次のようなものがあります。
欠落キー — シークレットには必須データフィールドたとえば、AWSオブジェクトストレージの
aws_regionまたはbucket_nameが欠落しています。アノテーションの欠落 — 一部のシークレットでは、シークレットのメタデータに特定のレプリケーターアノテーションを設定する必要があります。
間違ったシークレットタイプ —たとえば、TLSシークレットには
kubernetes.io/tlsタイプが必要です。空の値 — 必須フィールドは存在しますが、データが含まれません。
シークレットを修正した後、オペレーターは30秒以内に自動的に再評価します。
要件がチェックされていません#
要件が検証されると予想されるが、ステータスに表示されない場合は、シナリオ構成を確認します。
HMインストールにどのシナリオが定義されているかを確認します。
kubectl get hybridcontrolplane <name> -o jsonpath={.spec.scenarios}
確立されたシナリオが、 Planning architecture フェーズ中にCTO/アーキテクト/リードエンジニアが確立したシナリオと一致することを確認します。コマンドの出力が予想されるシナリオと一致しない場合、それはインストールが計画通りに実行されず、インストール中に1つ以上のシナリオがスキップされたことを意味します。