排解驗證測試問題

為確保自訂 VM 映像檔能正確啟動並符合設定需求,Image Builder 會在臨時測試 VM 上執行自動驗證測試。如果其中一項測試失敗,管道就會停止,Image Builder 也不會發布最終映像檔。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上您打算如何使用範例的分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設地區和區域。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 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 基礎架構資料路徑函式 (idpf) 驅動程式。

  • 失敗條件:如果 VM 還原為一般網路介面卡套件,或客層核心缺少有效的 idpf 驅動程式模組,VM 就會驗證失敗。
  • 解決方法:
    • 確認基礎作業系統的 Kernel 版本與 IDPF 相容。
    • 確認標準網路公用程式並未剝除或封鎖驅動程式。
    • 如果是自訂核心建構作業,請確認已設定 CONFIG_IDPF。

網路和訪客代理程式驗證

這項測試會確認執行個體可正常進行訪客通訊,並具有標準化的網路介面設定。

  • 失敗條件:在下列任一情況下,測試都會失敗:
    • 訪客代理服務管理員 SubState 不會顯示 running 狀態。
    • 沒有非迴路網路介面處於連線狀態。
    • 介面名稱不符合預期的標準模式 (例如 eth* 或 en*)。
  • 解決方法:

    • 確認已安裝訪客代理程式,並設定在開機時啟動:

      systemctl is-active google-guest-agent
      
    • 請確認網路設定 (例如 netplan 或 ifupdown 範本) 未停用主要虛擬介面。

安全啟動驗證

這項測試會確認 UEFI 安全啟動是否處於啟用狀態,以及系統是否對映像檔強制執行客體 OS 核心簽章驗證。

  • 失敗條件:如果 Compute Engine UEFI 變數回報 SecureBoot 不是 1,或 SetupMode 不是 0,測試就會失敗。
  • 解決方法:

    • 確認圖片包含有效的簽名金鑰。
    • 在 imagebuilder.yaml 檔案中,確認目的地區塊下的 guestOsFeatures 包含 UEFI_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