イメージ ファミリー内のイメージのバージョンを設定する


イメージ ファミリーを使用して、イメージのバージョニングを簡略化します。イメージをイメージ ファミリーに追加し、最新のイメージ バージョンとして設定します。イメージ ファミリーを以前のイメージ バージョンにロールバックする必要があると判断した場合は、ファミリー内の最新のイメージの使用を中止します。

イメージ ファミリーを操作する際のベスト プラクティスについては、イメージ ファミリーのベスト プラクティスをご覧ください。

Google Cloud コンソール、gcloud compute images create コマンド--storage-location フラグ、images().insert メソッドを使用すると、イメージの保存先を指定できます。

始める前に

イメージ ファミリー内のイメージのバージョンを設定する

コンソール

  1. Google Cloud Console で、[イメージの作成] ページに移動します。

    [イメージの作成] に移動

  2. イメージの [名前] を指定します。例: image-v1

  3. イメージ作成元の [ソース] を指定します。永続ディスク、スナップショット、別のイメージまたは Cloud Storage 内の disk.raw ファイルが指定できます

  4. 実行中の VM にアタッチされたディスクからイメージを作成する場合、[インスタンスを実行し続ける] をオンにして、VM の実行中にイメージを作成することを確認します。イメージを作成する前に VM を準備できます。

  5. [ソースディスクのロケーションに基づく(デフォルト)] プルダウン リストで、イメージを保存するロケーションを指定します。たとえば、イメージを us マルチリージョンに保存するには us を指定し、us-central1 リージョンに保存するには us-central1 を指定します。選択しない場合、Compute Engine はイメージのソースのロケーションに最も近いマルチリージョンにイメージを保存します。

  6. 新しいイメージの、イメージ ファミリーを指定します。たとえば、my-image-family を追加してイメージ ファミリーの一部としてイメージを管理します。

  7. 省略可: 他のイメージ プロパティを指定します。

    • 説明: カスタム イメージの説明。
    • ラベル: リソースをグループ化するラベル
  8. 暗号鍵を指定します。Google が管理する鍵、Cloud Key Management Service(Cloud KMS)鍵、顧客指定の暗号鍵(CSEK)のいずれかを選択できます。暗号鍵が指定されていない場合、イメージは Google が管理する鍵を使用して暗号化されます。

  9. [作成] をクリックしてイメージを作成します。

gcloud

gcloud compute images create image-v1 \
    --source-disk disk-1 \
    --source-disk-zone us-central1-f \
    --family my-image-family

イメージ ファミリーは image-v1 をポイントします。2 つ目のイメージをファミリーに追加します。

gcloud compute images create image-v2 \
    --source-disk disk-2 \
    --source-disk-zone us-central1-f \
    --family my-image-family

API

images().insert メソッドPOST リクエストを送信します。リクエストの本文にイメージ ファミリーを指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family",

}

image-v2 はイメージ ファミリーに追加した最新のイメージであるため、イメージ ファミリーではこのイメージがポイントされます。

gcloud

gcloud compute images describe-from-family コマンドを実行して、ファミリーでどのイメージがポイントされるかを確認できます。

例:

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

API

images().getFromFamily メソッドGET リクエストを送信します。リクエストの本文にイメージ ファミリーを指定します。

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

{
  "resourceId":"my-image-family",

}

イメージ ファミリーをロールバックして image-v2 をポイントしなくなるようにする必要があると判断した場合は、image-v2 を使用中止にすると、ファミリーは再び image-v1 をポイントします。

gcloud compute images deprecate image-v2 \
    --state DEPRECATED \
    --replacement image-v1

イメージ ファミリーが image-v1 をポイントしていることを確認します。

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY