このドキュメントでは、Compute Engine でイメージ ファミリーを使用する場合のベスト プラクティスについて説明します。
始める前に
- このガイドのコマンドラインの例を使用する場合は、次の操作を行います。
- Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
公開イメージ ファミリー
Compute Engine には、自動化システムが最新のイメージを参照できるようにするためのイメージ ファミリーが用意されています。管理者は、イメージのセットをイメージ ファミリーとしてグループ化できます。これにより、イメージのユーザーは、正確なイメージ名の代わりにイメージ ファミリー名を把握するだけで済みます。イメージ名は一意であることが必要なので、多くの場合、イメージビルド パイプラインは、アプリケーション名、日付、バージョンなどの情報がエンコードされたイメージ名(例 : my-application-v3-20210101
)を作成します。自動化ツールではイメージ ファミリー名を参照できるため、イメージ名を定期的に更新する必要はありません。イメージ ファミリーを使用すると、常にファミリー内の最新のイメージ(my-application
など)にアクセスできます。
公開イメージは、イメージ ファミリーに分類されています。公開イメージ ファミリーは、各ゾーンで使用可能な最新バージョンのイメージを常に参照します。新しいイメージがグローバルでリリースされると、イメージ ファミリーの最初の可用性はゾーンに依存します。これにより、Google イメージの更新中にワークフローのゾーンのフォールト トレラントが向上します。
イメージのロールアウト中、イメージ ファミリー内の最新バージョンのイメージは、ゾーンによって異なる場合があります。たとえば、debian-cloud
プロジェクトの debian-10
イメージ ファミリーは、常に最新の Debian 10 イメージを参照していますが、ゾーン us-central1-a
と southamerica-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
次のように置き換えます。
IMAGE_FAMILY_NAME
: 検索するイメージ ファミリーの名前。イメージ ファミリー名の一覧については、オペレーティング システムの詳細をご覧ください。IMAGE_PROJECT
: イメージ プロジェクトの名前。イメージ プロジェクト名の一覧については、オペレーティング システムの詳細をご覧ください。
API
images.getFromFamily
メソッドに GET
リクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME
次のように置き換えます。
IMAGE_PROJECT
: イメージ プロジェクトの名前。イメージ プロジェクト名の一覧については、オペレーティング システムの詳細をご覧ください。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
次のように置き換えます。
IMAGE_FAMILY_NAME
: 検索するイメージ ファミリーの名前。イメージ ファミリー名の一覧については、オペレーティング システムの詳細をご覧ください。IMAGE_PROJECT
: イメージ プロジェクトの名前。イメージ プロジェクト名の一覧については、オペレーティング システムの詳細をご覧ください。ZONE
: クエリするゾーン。
API
imageFamilyViews
メソッドに GET
リクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME
次のように置き換えます。
IMAGE_PROJECT
: イメージ プロジェクトの名前。イメージ プロジェクト名の一覧については、オペレーティング システムの詳細をご覧ください。ZONE
: クエリするゾーン。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
を参照します。
イメージ ファミリーの使用方法
イメージ ファミリーを使用すると最新のイメージを参照できますが、最新のイメージがアプリケーションと互換性を持たない場合があります。したがって、確認しないと本番環境で問題が発生する可能性があります。イメージ ファミリーのメリットを利用しつつリスクを軽減するには、イメージ ファミリーが参照する最新のイメージを本番環境で使用する前にテストすることをおすすめします。
検討に値するアプローチの概要を以下に示します。
- 本番環境とは別にテスト環境を設定します。
- テスト環境で次の手順を実施します。
- ソースイメージ ファミリーからカスタム イメージ ファミリーを作成します。
- カスタム イメージ ファミリー内の新しいイメージがワークロードに対して安定していることを確認します。
- 問題がなければ、このカスタム イメージ ファミリーを本番環境に移行します。
具体的には、このプロセスの手順は次のようになります。
テスト プロジェクトで、ソースイメージ ファミリーからイメージを作成します。この新しいソースイメージ ファミリーには、テスト環境で参照する独自のカスタム イメージ ファミリーも必要です。カスタム イメージ ファミリーを指定してイメージを作成するには、次のコマンドを実行します。
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
: テストイメージ ファミリーの名前。
カスタム イメージ ファミリー
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
: テスト プロジェクトの名前。
このイメージがワークロードに対して安定していることを確認できたら、イメージを本番環境にコピーします。
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
: 本番環境で使用するイメージ ファミリーの名前。