16.4. モジュールごとのプリフライト検証ステージ
プリフライトは、クラスター内に存在するすべての KMM モジュールに次の検証を実行します。
- イメージの検証ステージ
- ビルドの検証ステージ
- 署名の検証ステージ
16.4.1. イメージの検証ステージ リンクのコピーリンクがクリップボードにコピーされました!
イメージの検証は常に、実行されるプリフライト検証の最初のステージです。イメージの検証が成功した場合、その特定のモジュールで他の検証は実行されません。
イメージの検証は、次の 2 つのステージで構成されます。
- イメージの存在とアクセシビリティー。コードは、モジュール内のアップグレードされたカーネル用に定義されたイメージにアクセスし、そのマニフェストを取得しようとします。
-
今後の
modprobeの実行のために、Moduleで定義されたカーネルモジュールが正しいパスに存在することを確認します。正しいパスは<dirname>/lib/modules/<upgraded_kernel>/です。
この検証が成功した場合は、カーネルモジュールが正しい Linux ヘッダーでコンパイルされた可能性が高いです。
16.4.2. ビルドの検証ステージ リンクのコピーリンクがクリップボードにコピーされました!
ビルドの検証は、イメージの検証が失敗し、Module にアップグレードされたカーネルに関連する build セクションがある場合のみ、実行されます。ビルドの検証は、ビルドジョブを実行し、それが正常に終了したことを検証しようとします。
次に示すように、depmod を実行する場合は、カーネルバージョンを指定する必要があります。
RUN depmod -b /opt ${KERNEL_VERSION}
$ RUN depmod -b /opt ${KERNEL_VERSION}
PushBuiltImage フラグが PreflightValidationOCP カスタムリソース (CR) で定義されている場合は、結果のイメージをリポジトリーにプッシュしようとします。結果のイメージ名は、Module CR の containerImage フィールドの定義から取得されます。
アップグレードされたカーネルに sign セクションが定義されている場合、結果のイメージは Module CR の containerImage フィールドではなく、一時的なイメージ名になります。これは、結果のイメージが Sign フローの製品である必要があるためです。
16.4.3. 署名の検証ステージ リンクのコピーリンクがクリップボードにコピーされました!
署名の検証は、イメージの検証が失敗し、Module にアップグレードカーネルに関連する sign セクションがあり、アップグレードされたカーネルに関連する Module に build セクションがあった際にビルドの検証が正常に終了した場合のみ、実行されます。署名の検証では、署名ジョブの実行が試行され、正常に終了したことが検証されます。
PushBuiltImage フラグが PreflightValidationOCP CR で定義されている場合、署名の検証は結果のイメージをレジストリーにプッシュしようとします。
結果のイメージは、常に Module の containerImage フィールドで定義されたイメージです。入力イメージは、Build ステージの出力、または UnsignedImage フィールドで定義されたイメージのいずれかです。
build セクションが存在する場合、sign セクションの入力イメージは、build セクションの出力イメージになります。したがって、入力イメージを sign セクションで使用できるようにするには、PreflightValidationOCP CR で PushBuiltImage フラグを定義する必要があります。