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

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

始める前に

公開イメージ ファミリー

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

イメージ ファミリー。

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

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

Google Cloud CLI を使用してイメージ ファミリーから VM を作成すると、Compute Engine は VM のゾーンで使用可能な最新のイメージをリクエストに使用します。Google Cloud Console を使用して VM を作成すると、選択したゾーンで使用可能な公開イメージのみが表示されます。グローバルに使用可能な最新のイメージを使用して 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

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

API

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

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

API

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: 本番環境で使用するイメージ ファミリーの名前。