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 メッセージに応答したりできます(外部ワークフローまたはウェブフックからビルドをプログラムでトリガーします)。
  • 公開前にイメージを検証する: イメージを公開する前に検証します。 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 をプロビジョニングし、次のシステム定義の検証チェックを実行します。
    • 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 と永続ディスクの割り当てがあることを確認します。ターゲット ゾーンの割り当てが不足していると、VM のプロビジョニング中にパイプラインが失敗します。

次のステップ