検証テストのトラブルシューティング

カスタム VM イメージが正しく起動し、構成要件を満たしていることを確認するために、Image Builder は一時的なテスト VM で自動検証テストを実行します。これらのテストのいずれかが失敗すると、パイプラインが停止し、Image Builder は最終イメージを公開しません。

始める前に

  • まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。ログイン後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init
  • デフォルトのリージョンとゾーンを設定します。
  • REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

概要

カスタマイズの手順が正常に完了すると、オーケストレーターは VM ブートディスクを一時的なテストイメージ(image-builder-test-images ファミリーの image-builder-test-image-BUILD_ID という名前)としてエクスポートします。

オーケストレーターは、このイメージからテスト VM を起動し、一連のシステムテストを実行します。Image Builder は、テスト結果を標準の JUnit XML 形式で Cloud Build ログに直接出力します。

特定の検証テストのトラブルシューティング

各検証テストの一般的なエラーと診断手順を確認します。

Intel IDPF ドライバの検証

このテストでは、サポートされている VM インスタンスが物理ネットワーク インターフェースに高パフォーマンスの Intel Infrastructure Data Path Function(idpf)ドライバを読み込むことを確認します。

  • 失敗条件: VM が汎用ネットワーク アダプタ パッケージに戻るか、ゲスト カーネルにアクティブな idpf ドライバ モジュールがない場合、VM は検証に失敗します。
  • 解決策:
    • ベース オペレーティング システムに IDPF と互換性のあるカーネル バージョンがあることを確認します。
    • 標準のネットワーク ユーティリティがドライバを削除またはブロックリストに登録していないことを確認します。
    • カスタム カーネルビルドの場合は、CONFIG_IDPF が構成されていることを確認します。

ネットワーキングとゲスト エージェントの検証

このテストでは、インスタンスに動作中のゲスト通信と標準化されたネットワーク インターフェース構成があることを確認します。

  • 失敗条件: 次のいずれかの条件でテストが失敗します。
    • ゲスト エージェント サービス マネージャー SubStaterunning ステータスが表示されません。
    • 非ループバック ネットワーク インターフェースがオンラインになっていません。
    • インターフェース名が想定される標準パターン(eth*en* など)と一致しません。
  • 解決策:

    • ゲスト エージェントがインストールされ、起動時に開始するように構成されていることを確認します。

      systemctl is-active google-guest-agent
      
    • ネットワーク構成(netplan テンプレートや ifupdown テンプレートなど)でプライマリ仮想インターフェースが無効になっていないことを確認します。

セキュアブートの検証

このテストは、UEFI セキュアブートが有効であり、システムがイメージに対してゲスト OS カーネル署名検証を適用していることをアサートします。

  • 失敗条件: Compute Engine UEFI 変数が SecureBoot1 ではない、または SetupMode0 ではないと報告した場合、テストは失敗します。
  • 解決策:

    • イメージに有効な署名鍵が含まれていることを確認します。
    • imagebuilder.yaml ファイルで、宛先ブロックの guestOsFeaturesUEFI_COMPATIBLE が含まれていることを確認します。

      destinations:
        - diskImage:
            guestOsFeatures:
              - UEFI_COMPATIBLE
      

確認を一時停止または再開する

このテストでは、Compute Engine API を使用してテスト VM を一時停止し、VM の実行が再開された後、ゲストの完全な再起動をトリガーせずに接続が復元されることをアサートします。

  • 失敗条件: インスタンスが復帰時に再起動した場合、サスペンド中にハングした場合、ネットワーク ping の復元に失敗した場合、テストは失敗します。
  • 解決策:
    • ゲスト オペレーティング システムの ACPI サービスと電源ポリシーが有効になっており、ACPI イベントに応答するように構成されていることを確認します。
    • ゲスト システムログ(/var/log/syslog または /var/log/messages)を調べて、カスタム デーモンがシステム スリープ リクエストをブロックしているかどうかを確認します。

検証テストをスキップする

本番環境イメージを検証することをおすすめしますが、imagebuilder.yaml ファイルの spec.config ブロックで skipSystemTests: true を設定すると、テスト中に検証テストをスキップできます。

spec:
  config:
    skipSystemTests: true