Image Builder の概要

Image Builder は、Cloud Build を使用して Google Cloudプロジェクト内で実行される宣言型オペレーティング システム(OS)イメージ カスタマイズ ツールです。OS イメージのビルド、カスタマイズ、検証のプロセスを自動化し、本番環境のワークロード用に公開する前に、OS イメージが正しく起動し、構成要件に準拠していることを確認します。

主なメリット

Image Builder は、Google Cloud内のカスタム OS イメージのライフサイクルを自動化することで、インフラストラクチャの管理と構成要件の検証を支援します。Image Builder には、カスタム OS イメージのビルド用に次の機能が用意されています。

  • OS イメージの作成を自動化する: 宣言型 YAML レシピと自動化された Cloud Build ワークフローを使用して、カスタム スクリプトや外部ツールを使用せずにカスタム OS イメージを作成して維持します。Image Builder は Cloud Build 内で実行されるため、Cloud Build トリガーを使用して、リポジトリ イベント(Git push やタグなど)でイメージ ビルドを自動的に起動したり、定期的なスケジュール(セキュリティ パッチの毎週のビルドなど)を設定したり、Pub/Sub メッセージに応答したりできます(外部ワークフローや Webhook からビルドをプログラムでトリガーするため)。
  • 公開前に画像を検証する: 公開前に画像を検証します。Google が提供するチェックでは、中間イメージが起動し、セキュアブート(該当する場合)をサポートし、必要なネットワーク ドライバを読み込み、正常なゲスト エージェントを実行することを確認します。
  • スクリプト実行をトレースする: ビルド パイプライン中に実行されるコードを追跡します。Image Builder は、監査証跡を維持するために、ビルドログ内のインライン カスタマイズ スクリプトの暗号 SHA-256 ハッシュを自動的に記録します。
  • 使用したリソースに対してのみ料金が発生する: Image Builder サービスは追加料金なしで利用できます。パイプラインの実行中に使用される基盤となるコンピューティング、ストレージ、ビルド リソースに対してのみ料金が発生します。

Image Builder の仕組み

Image Builder は、Cloud Build オーケストレーター コンテナを使用して Google Cloud プロジェクト内で実行されます。イメージ ビルドプロセスは次のフェーズで構成されます。

  1. 検証と準備: オーケストレーター コンテナは YAML 構文をチェックし、必要な API がすべて有効になっていることと、ターゲットの Identity and Access Management(IAM)セキュリティ権限が有効になっていることを確認します。
  2. ワークスペースとディスクの準備: オーケストレーター コンテナは、ソースコードと構成を含む Cloud Build ワークスペース ディレクトリ(/workspace)を圧縮された tar ファイル(.tar.gz)にアーカイブし、この tar ファイルをビルド構成で指定された Cloud Storage workdir バケットにアップロードします。オーケストレーター コンテナは、静的にコンパイルされたカスタマイズ プロビジョナー ファイル システムを使用して、ワーカー VM に接続されたセカンダリ データディスクを定義する一時的な Compute Engine イメージを作成します。
  3. ワーカー VM の実行: オーケストレーター コンテナは、指定されたソースイメージをブートディスクとして使用してエフェメラル ワーカー VM インスタンスを起動し、カスタマイズ プロビジョナーを含むセカンダリ データディスクをアタッチします。
  4. カスタマイズ: 起動スクリプトがデータディスクをマウントし、ワーカー VM でカスタマイズ プロビジョナーを起動します。プロビジョナーはワークスペース アーカイブをダウンロードし、シェル スクリプトの実行、ファイルのコピー、ドライバのコンパイルなど、宣言されたカスタマイズを適用します。また、セキュリティ サニタイズ パスを実行して、SSH 認証鍵、一意のマシン ID、ログ履歴をクリーンアップします。その後、インスタンスをシャットダウンします。
  5. 検証(テスト): オーケストレータ コンテナは、カスタマイズされたブートディスクから一時的なテスト OS イメージを作成し、一時的なテスト VM をプロビジョニングして、次のシステム定義の検証チェックを実行します。
    • Intel IDPF ドライバの検証: サポートされているインスタンスが、汎用ディスプレイ ドライバやフォールバック ドライバではなく、Intel Infrastructure Data Path Function(idpf)ネットワーク ドライバを読み込むことを検証します。
    • ネットワーキングとゲスト エージェントの検証: ゲスト エージェント サービスがアクティブであること、少なくとも 1 つの非ループバック ネットワーク インターフェースが稼働していること、名前が規則(eth* または en*)に準拠していることを確認します。
    • セキュアブートの検証: UEFI セキュアブートが有効であり、システムがゲスト カーネルの検証を適用していることを確認します。
    • 一時停止または再開の検証: Compute Engine API を使用してテスト VM を一時停止し、システムを再起動せずに再開後にネットワーク接続が復元されることを検証します。
  6. リリース: すべての検証チェックに合格すると、オーケストレーター コンテナは最終的なイメージを準備します。
    • Artifact Registry が構成されている場合: オーケストレーター コンテナは、カスタマイズされたブートディスクを tar ファイルとして Artifact Registry の汎用リポジトリにエクスポートし、Artifact Registry URI をソースとして使用して最終的な本番環境の Compute Engine イメージを作成します。
    • Artifact Registry が構成されていない場合: オーケストレータ コンテナは、カスタマイズされたブートディスクを使用して、プロジェクトに Compute Engine イメージを直接作成します。

料金と割り当てに関する考慮事項

Image Builder サービスは追加料金なしでご利用いただけます。ただし、ビルド、テスト、リリース フェーズでプロビジョニングされた標準リソースの Google Cloud 料金は次のとおりです。

  • Compute Engine: ワーカー VM、テスト VM、アタッチされた永続ディスクの料金。
  • Cloud Build: オーケストレータ コンテナ ランタイムの分単位で課金されます。
  • Cloud Storage: ワークスペース アーカイブ、ログ エクスポート、中間アセットの料金。
  • Artifact Registry: エクスポートされたイメージの tar ファイルの保存に対して、構成されている場合は料金が発生します。
  • カスタム イメージ: 中間テスト、デバッグ、本番環境のイメージの保存に対する料金。

リソースの費用の詳細については、Compute EngineCloud BuildCloud StorageArtifact Registryカスタム イメージ ストレージの料金ドキュメントをご覧ください。

割り当て要件

ビルドを実行するゾーンに、十分な Compute Engine CPU と Persistent Disk の割り当てがあることを確認します。ターゲット ゾーンの割り当てが不足しているため、VM のプロビジョニング中にパイプラインが失敗します。

次のステップ