イメージ ファミリーのベスト プラクティス


このドキュメントでは、Compute Engine でイメージ ファミリーを使用する場合のベスト プラクティスについて説明します。

始める前に

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

    Select the tab for how you plan to use the samples on this page:

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

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

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

公開イメージ ファミリー

Compute Engine には、自動化システムが最新のイメージを参照できるようにするためのイメージ ファミリーが用意されています。管理者は、イメージのセットをイメージ ファミリーとしてグループ化できます。これにより、イメージのユーザーは、正確なイメージ名の代わりにイメージ ファミリー名を把握するだけで済みます。イメージ名は一意であることが必要なので、多くの場合、イメージビルド パイプラインは、アプリケーション名、日付、バージョンなどの情報がエンコードされたイメージ名(例 : my-application-v3-20210101)を作成します。自動化ツールではイメージ ファミリー名を参照できるため、イメージ名を定期的に更新する必要はありません。イメージ ファミリーを使用すると、常にファミリー内の最新のイメージ(my-application など)にアクセスできます。

イメージ ファミリー。

公開イメージは、イメージ ファミリーに分類されています。公開イメージ ファミリーは、各ゾーンで使用可能な最新バージョンのイメージを常に参照します。新しいイメージがグローバルでリリースされると、イメージ ファミリーの最初の可用性はゾーンに依存します。これにより、Google イメージの更新中にワークフローのゾーンのフォールト トレラントが向上します。

イメージのロールアウト中、イメージ ファミリー内の最新バージョンのイメージは、ゾーンによって異なる場合があります。たとえば、debian-cloud プロジェクトの debian-12 イメージ ファミリーは、常に最新の Debian 12 イメージを参照していますが、ゾーン us-central1-asouthamerica-east1-b の最新の Debian 12 イメージは異なる場合があります。

Google Cloud CLI を使用してイメージ ファミリーから VM を作成すると、Compute Engine は VM のゾーンで使用可能な最新のイメージをリクエストに使用します。 Google Cloud コンソールを使用して VM を作成すると、Compute Engine には、選択したゾーンで使用可能な公開イメージのみが表示されます。グローバルに使用可能な最新のイメージを使用して VM を作成する場合は、gcloud CLI の instances create コマンドを使用して --image-family-scope=global を指定します。

使用可能な最新のイメージ バージョンの表示

イメージ ファミリー内のグローバルに使用可能な最新のイメージを表示、または、特定のゾーンで利用可能な最新のイメージを表示することができます。

グローバル

イメージ ファミリー内のグローバルに使用可能な最新のイメージを表示するには、次のいずれかの方法を使用します。

gcloud

gcloud compute images describe-from-family コマンドを実行します。

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT

次のように置き換えます。

REST

images.getFromFamily メソッドGET リクエストを送信します。

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME

次のように置き換えます。

各ゾーン

特定のゾーンのイメージ ファミリー内の使用可能な最新のイメージを表示するには、次のいずれかの方法を使用します。

gcloud

--zone フラグを指定して gcloud compute images describe-from-family コマンドを使用します。

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT \
   --zone=ZONE

次のように置き換えます。

REST

imageFamilyViews メソッドGET リクエストを送信します。

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME

次のように置き換えます。

カスタム イメージ ファミリー

カスタム イメージのカスタム イメージ ファミリーを作成できます。イメージ ファミリーは、イメージ ファミリーの作成に使用した最新のイメージを参照します。イメージ ファミリーを以前のイメージ バージョンにロールバックするには、以前のイメージが非推奨でなければ、そのファミリー内の最新のイメージを非推奨にします。詳細については、イメージ ファミリー内のイメージのバージョンを設定するをご覧ください。

イメージ ファミリーを指定してイメージを作成する場合、またはイメージ ファミリーが存在しないときにイメージ ファミリーを作成する場合は、イメージ作成ステップに --family フラグを追加する必要があります。

gcloud compute images create my-application-v3-20210101 \
    --source-disk my-application-disk-1 \
    --source-disk-zone us-central1-f \
    --family my-application

このコマンドを実行すると、イメージ my-application に基づくインスタンスを実行するすべての呼び出しは、新しく作成されたイメージ my-application-v3-20210101 を参照します。

イメージ ファミリーの名前を選択する際は、命名規則を確認してください。

イメージ ファミリーの使用方法

イメージ ファミリーを使用すると最新のイメージを参照できますが、最新のイメージがアプリケーションと互換性を持たない場合があります。したがって、確認しないと本番環境で問題が発生する可能性があります。リスクを軽減しながらイメージ ファミリーのメリットを最大限に活用するには、イメージ ファミリーが参照する最新のイメージを本番環境で使用する前にテストすることをおすすめします。

検討に値するアプローチの概要を以下に示します。

  • 本番環境とは別にテスト環境を設定します。
  • テスト環境で次の手順を実施します。
    • ソースイメージ ファミリーからカスタム イメージ ファミリーを作成します。
    • カスタム イメージ ファミリー内の新しいイメージがワークロードに対して安定していることを確認します。
  • 問題がなければ、このカスタム イメージ ファミリーを本番環境に移行します。

具体的には、このプロセスの手順は次のようになります。

  1. テスト プロジェクトで、ソースイメージ ファミリーからイメージを作成します。この新しいソースイメージ ファミリーには、テスト環境で参照する独自のカスタム イメージ ファミリーも必要です。カスタム イメージ ファミリーを指定してイメージを作成するには、次のコマンドを実行します。

    gcloud compute images create test-image-name \
    --source-image-project source-project \
    --source-image-family source-image-family \
    --project test-project \
    --family test-image-family
    

    次のように置き換えます。

    • test-image-name: テストイメージの名前。
    • source-project: ソースイメージ ファミリーが属するプロジェクト。
    • source-image-family: ソースイメージ ファミリーの名前。
    • test-project: イメージ ファミリーを追加するテスト プロジェクトの名前。
    • test-image-family: テストイメージ ファミリーの名前。
  2. カスタム イメージ ファミリー test-image-family を使用して、ワークロードをテストするための VM を作成します。VM を作成するには、次のコマンドを実行します。

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    次のように置き換えます。

    • test-instance-name: テスト インスタンスの名前。
    • test-image-family: テストイメージ ファミリーの名前。
    • test-project: テスト プロジェクトの名前。
  3. このイメージがワークロードに対して安定していることを確認できたら、イメージを本番環境にコピーします。

    gcloud compute images create prod-image-name \
    --source-image-family test-image-family \
    --source-image-project test-project \
    --project prod-project \
    --family prod-image-family
    

    次のように置き換えます。

    • prod-image-name: 本番環境イメージの名前。
    • test-image-family: テストイメージ ファミリーの名前。
    • test-project: テストイメージ ファミリーが属するプロジェクト。
    • prod-project: 本番環境に存在するプロジェクトの名前。
    • prod-image-family: 本番環境で使用するイメージ ファミリーの名前。