Understanding Preflight checks#

Preflight チェックの結果を確認して、インストール関連のすべてのシークレットが有効であることを確認します。

重点ロール サイト信頼性エンジニアSRE/インフラストラクチャエンジニア

前提条件#

結果#

  • ハイブリッドマネージャーHMのインストール中に、シークレット関連のブロッカーを診断および解決する機能。

HMインストールを開始すると、オペレーターはPreflight カスタムリソースを自動的に作成します。このリソースは、必要なすべてのKubernetesシークレットが存在し、オペレーターがプラットフォームサービスの展開を続行する前に**正しく構造化されていることを検証します。

Preflightリソースは自分で作成しません。 HybridControlPlane リソースが作成された後、オペレーターは自動的に作成します。

HybridControlPlane マニフェストを適用すると、オペレーターは次のことを行います。

  1. HybridControlPlane リソースを調整します。

  2. デプロイメントのシークレット要件を使用してPreflight リソースを作成します。

  3. 各シークレット要件を検証します。シークレットが存在することを確認し、シークレットのコンテンツに対して検証ルールを評価します。

  4. プリフライトリソースステータスの結果を報告します。

すべての要件が合格した場合、オペレーターはプラットフォームサービスの展開を続行します。要件が失敗すると、 展開がブロックされ 、オペレーターは問題が解決されるまで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秒以内に自動的に再評価します。

要件がチェックされていません#

要件が検証されると予想されるが、ステータスに表示されない場合は、シナリオ構成を確認します。

  1. HMインストールにどのシナリオが定義されているかを確認します。

kubectl get hybridcontrolplane <name> -o jsonpath={.spec.scenarios}
  1. 確立されたシナリオが、 Planning architecture フェーズ中にCTO/アーキテクト/リードエンジニアが確立したシナリオと一致することを確認します。コマンドの出力が予想されるシナリオと一致しない場合、それはインストールが計画通りに実行されず、インストール中に1つ以上のシナリオがスキップされたことを意味します。