Image Builder の概要

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

主なメリット

Google Cloud内のカスタム OS イメージのライフサイクルを自動化することで、Image Builder はインフラストラクチャの管理と構成要件の検証を支援します。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 インスタンスを起動し、カスタマイズ プロビジョナーを含むセカンダリ データディスクをアタッチします。ワーカー VM のハードウェア プロパティ、VPC ネットワーク、サブネットワーク、外部 IP 割り当て(エフェメラル パブリック IP または外部 IP なし)は、imagebuilder.yaml ファイルの infrastructureConfig 設定によって決まります。
  4. カスタマイズ: 起動スクリプトがデータディスクをマウントし、ワーカー VM でカスタマイズ プロビジョナーを起動します。プロビジョナーは、ワークスペース アーカイブをダウンロードし、シェル スクリプトの実行、ファイルのコピー、ドライバのコンパイルなど、宣言されたカスタマイズを適用します。また、セキュリティ サニタイズ パスを実行して、SSH 認証鍵、一意のマシン ID、ログ履歴をクリーンアップします。その後、インスタンスをシャットダウンします。
  5. 検証(テスト): オーケストレーター コンテナは、カスタマイズされたブートディスクから一時的なテスト OS イメージを作成し、imagebuilder.yaml ファイルのネットワークとインフラストラクチャの構成を使用して一時的なテスト VM をプロビジョニングし、次のシステム定義の検証チェックを実行します。