このドキュメントでは、マネージド インスタンス グループ(MIG)の仮想マシン(VM)インスタンスに構成の更新を選択的に適用する方法について説明します。
Compute Engine は、使用する構成コンポーネント(インスタンス テンプレート、オプションのすべてのインスタンス構成、オプションのステートフル構成)に基づいて MIG 内の VM を維持します。
コンポーネントを変更して MIG の VM 構成を更新すると、Compute Engine は更新された構成を、グループに追加された新しい VM に自動的に適用します。
更新された構成を既存の VM に適用するには、選択的更新(「追従型」更新タイプとも呼ばれます)を設定します。このタイプの更新には、��のような利点があります。
- 更新する VM を選択できます。
- 更新のタイミングと順序を制御できます。
- gcloud CLI または REST を使用して、すべての VM を直ちに更新できます。
また、MIG 内のすべてまたはランダムな VM のサブセットに対して新しい構成のロールアウトを自動化するには、MIG で VM 構成の更新を自動的に適用するをご覧ください。 判断するには、既存の VM に新しい構成を適用する方法をご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
更新された構成を選択した VM に適用する
MIG が既存の VM に新しい VM 構成を自動的に適用しないようにするには、グループの更新ポリシータイプを「追従型」に設定します。詳細については、グループの更新ポリシーのタイプを確認するをご覧ください。
次に、gcloud CLI または REST を使用して MIG の構成を更新し、最新の構成をグループ内の特定の VM またはすべての VM に適用します。
gcloud
グループに新しいインスタンス テンプレートを設定するには、set-instance-template
コマンドを使用します。
gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE
特定の VM に構成を適用する
更新された構成を特定の VM に適用するには、--instances
フラグを指定して update-instances
コマンドを使用します。
gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --instances INSTANCE_NAMES \ --most-disruptive-allowed-action DISRUPTION_LEVEL \ --minimal-action DISRUPTION_LEVEL
すべての VM に構成を適用する
更新された構成をすべての VM に適用するには、--all-instances
フラグを指定して update-instances
コマンドを使用します。
gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \ --all-instances \ --most-disruptive-allowed-action DISRUPTION_LEVEL \ --minimal-action DISRUPTION_LEVEL
次のように置き換えます。
INSTANCE_GROUP_NAME
: MIG の名前INSTANCE_TEMPLATE
: 新しいインスタンス テンプレートINSTANCE_NAMES
: テンプレートを適用する VM のリストDISRUPTION_LEVEL
: 最小または最大の中断レベル(none
、refresh
、restart
、replace
のいずれか)- デフォルトの最小アクションは
none
です。 - デフォルトの許容される最も大がかりなアクションは
replace
です。
- デフォルトの最小アクションは
REST
グループに新しいインスタンス テンプレートを設定するには、ゾーンまたはリージョンの MIG に対して patch
メソッドを呼び出し、versions.instanceTemplate
フィールドを更新します。新しいテンプレートをグループ内のすべての VM に自動的にロールアウトしないようにするには、updatePolicy.type
フィールドを OPPORTUNISTIC
に設定します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "OPPORTUNISTIC" }, "versions": [{ "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", }] }
特定の VM に構成を適用する
更新された構成を特定の VM に適用するには、ゾーンまたはリージョンの MIG に対して applyUpdatesToInstances
メソッドを呼び出し、リクエスト内の VM のリストを指定します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances { "instances": [ "zones/ZONE/instances/INSTANCE_NAME_1", "zones/ZONE/instances/INSTANCE_NAME_2" ], "minimalAction": DISRUPTION_LEVEL, "mostDisruptiveAllowedAction": DISRUPTION_LEVEL }
すべての VM に構成を適用する
更新した構成を既存のすべての VM に適用するには、allInstances
フィールドを true
に設定します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances { "allInstances": true, "minimalAction": DISRUPTION_LEVEL, "mostDisruptiveAllowedAction": DISRUPTION_LEVEL }
次のように置き換えます。
INSTANCE_GROUP_NAME
: グループの名前NEW_TEMPLATE
: 新しいテンプレートの名前ZONE
: 更新するインスタンスのゾーンINSTANCE_NAME_1
、INSTANCE_NAME_2
: 更新する VM の名前DISRUPTION_LEVEL
: 最小または最大の中断レベル(NONE
、REFRESH
、RESTART
、REPLACE
のいずれか)- デフォルトの
minimalAction
はNONE
です。 - デフォルトの
mostDisruptiveAllowedAction
はREPLACE
です。
- デフォルトの
他のマネージド インスタンス グループのメソッドと同様に、applyUpdatesToInstances
はインテント ベースのメソッドです。つまり、このメソッドはオペレーション レスポンスを返します。オペレーションが完了するまでに時間がかかることがあります。
リクエストを送った後、ステータスを確認して、更新が完了したことを確認できます。
選択更新での中断レベルを制御する
更新の特性によっては、インスタンスの状態が損なわれる可能性があります。たとえば、インスタンスのブートディスクを変更するには、インスタンスを置き換える必要があります。選択更新での中断レベルを制御するには、次のオプションを設定します。
最小アクション: このオプションは、中断を最小限に抑えるとともに、必要以上に大がかりなアクションを適用する場合に使用します。
- 中断を最小限に抑えるには、最小アクションを
NONE
に設定します。より大がかりなアクションを実行しなけれ��更新����な���場合���Compute Engine は更新��必要なアクションを実行します。 - 必要以上に大がかりなアクションを適用するには、最小アクションに
RESTART
またはREPLACE
を設定します。たとえば、Compute Engine ではメタデータを変更するために VM を再起動する必要はありませんが、アプリケーションが VM の再起動時にのみインスタンス メタデータを読み取る場合は、メタデータの変更を取得するために、最小限のアクションをRESTART
に設定します。
- 中断を最小限に抑えるには、最小アクションを
許容される最も大がかりなアクション: 許容可能なレベルを超える中断が必要な場合は、このオプションを使用して更新を防ぐことができます。このフラグで設定したアクションよりも大がかりなアクションを実行しなければ更新できない場合、更新リクエストは失敗します。たとえば、許容される最も大がかりなアクションとして
RESTART
を設定した場合、ブートディスク イメージを更新しようとしても失敗します。ブートディスク イメージの更新にはインスタンスの再作成が必要になり、これは再起動よりも大がかりなアクションになるためです。
選択した VM を更新する場合は、どちらのオプションにも次の値を指定できます。
値 | 説明 | 更新可能なインスタンス プロパティ |
---|---|---|
NONE | インスタンスを一切中断しません。 | なし |
REFRESH | インスタンスを停止しません。 | 追加のディスク、インスタンス メタデータ、ラベル、タグ |
RESTART | インスタンスを停止して再起動します。 | 追加のディスク、インスタンス メタデータ、ラベル、タグ、マシンタイプ |
REPLACE | インスタンスを削除して再作成します。 | インスタンス テンプレートまたはインスタンスごとの構成ファイルに保存されているすべてのインスタンス プロパティ |
許容される最も大がかりなアクションを、最小アクションよりも小さいアクションにすることはできません。
VM を選択的に更新する場合、次のデフォルトが適用されます。
- デフォルトの最小アクションは
NONE
で、可能な限り中断を制限します。 - デフォルトの許容される最も大がかりなアクションは
REPLACE
です。このような中断を許容できない場合は、許容される最も大がかりなアクションを可能な限り少なくします。
次のステップ
- MIG とマネージド VM に関する情報の表示について確認する。
- インスタンス テンプレートの作成について確認する。
- イメージ ファミリーとローリング置換を使用して MIG 内のすべての VM で OS イメージを更新する方法を確認する。