Cloud Run ワーカープールのインスタンス分割とロールバック

ワーカープールはリクエスト以外のワークロードを処理します。新しいリビジョンのデプロイなど、複数のリビジョン間で作業を分割する必要があるユースケースでは、ワーカープールはインスタンス分割を使用します。

Cloud Run では、インスタンスを受信するリビジョンを指定し、各リビジョンのインスタンス割り当ての割合を指定できます。この機能を使用すると、以前のリビジョンにロールバックする、インスタンスを複数のリビジョン間で分割する、さらにインスタンスを最新のリビジョンに割り当てることができます。このページでは、この機能を使用して Cloud Run リビジョンへのインスタンス割り当てを管理する方法について説明します。

インスタンス割り当ての調整は即時に行われるわけではありません。リビジョンのインスタンス割り当てを変更しても、処理中のすべてのリクエストは完了するまで続行されます。処理中のリクエストは破棄されません。Cloud Run は、移行期間中にこれらのリクエストを新しいリビジョンまたは以前のリビジョンのいずれかに転送する可能性があります。

インスタンス分割のライフサイクル

複数のリビジョン間でインスタンスを分割した場合や、インスタンスを以前のリビジョンに割り当てた場合は、以降のすべてのデプロイでそのインスタンス分割パターンが使用されます。インスタンスの分割を行わず、最新リビジョンのみを使用する状態に戻すには、すべてのインスタンスを最新リビジョンに送信します。

必要なロール

Cloud Run ワーカープールとワーカープール リビジョンを管理するために必要な権限を取得するには、Cloud Run ワーカープールに対する Cloud Run デベロッパー(roles/run.developer)IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run ワーカープールがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。

以前のリビジョンにロールバックする

以前のリビジョンにロールバックするには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、Cloud Run ワーカープールに移動します。

    Cloud Run に移動

  2. リストでワーカープールを見つけてクリックします。

  3. [リビジョン] タブをクリックして、該当するワーカープールの現在のリビジョンのリストを表示します。

  4. [インスタンス分割を管理] をクリックして、インスタンス管理フォームを表示します。Cloud Run に、最新のサービス提供リビジョンが一覧表示されます。フォームで、次の詳細情報を構成します。

    1. [リビジョンを追加] をクリックし、プルダウン リストから以前のリビジョンを選択します。
    2. 前のリビジョンのインスタンスの割合を 100 に設定します。
    3. 最新のサービス提供ビジョンの割合を 0 に設定します。
    4. [保存] をクリックします。

gcloud

次のコマンドを実行して、ロールバック先のリビジョンを指定します。

   gcloud beta run worker-pools update-instance-split WORKER_POOL --to-revisions=REVISION=100

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

  • WORKER_POOL: ワーカープールの名前。
  • REVISION: ロールバック先のリビジョンの名前。

複数のリビジョン間でインスタンスを分割する

インスタンスを 2 つ以上のリビジョン間で分割するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

複数のリビジョン間でインスタンスを分割する場合は、すべてのリビジョンの合計割合が 100% になるようにしてください。また、ワークロードを処理するインスタンス分割の数よりも手動インスタンスの数が多くなるようにする必要があります。

コンソール

  1. Google Cloud コンソールで、Cloud Run ワーカープールに移動します。

    Cloud Run に移動

  2. リストでワーカープールを見つけてクリックします。

  3. [リビジョン] タブをクリックして、該当するワーカープールの現在のリビジョンのリストを表示します。

  4. [インスタンス分割を管理] をクリックして、インスタンス管理フォームを表示します。Cloud Run に、最新のサービス提供リビジョンが一覧表示されます。フォームで、次の詳細情報を構成します。

    1. 最新の配信リビジョンの割合を必要な分割に設定します(たとえば、100% から削減します)。

    2. [リビジョンを追加] をクリックし、プルダウン リストを使用して以前のリビジョンを選択して、対応する割合の分割を設定します。

    3. 追加のリビジョンでインスタンスを分割するには、[リビジョンを追加] をクリックして別のリビジョンを選択し、その割合を設定します。

    4. [保存] をクリックします。

gcloud

次のコマンドを実行して、リビジョンとインスタンスの割合を指定します。カンマ区切りリストで、各リビジョンにインスタンスを割り当てます。

   gcloud beta run worker-pools update-instance-split WORKER_POOL --to-revisions=LIST

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

  • WORKER_POOL: ワーカープールの名前。

  • LIST: リビジョンと割合のカンマ区切りのリスト。

    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx.

    例: my-worker-pool-s5sxn=10,my-worker-pool-cp9kw=90

インスタンスを最新のリビジョンに割り当てる

新しいリビジョンをデプロイすると、このリビジョンと将来のすべてのリビジョンにインスタンスの 100% を割り当てて、確立されたインスタンス分割をオーバーライドできます。インスタンスの 100% を最新のリビジョンに割り当てるには、次のコマンドを実行します。

  • --to-latest フラグを使用して、インスタンスの 100% を最新リビジョンに転送し、デプロイする新しいリビジョンにすべてのインスタンスを自動的に割り当てます。

    gcloud beta run worker-pools update-instance-split WORKER_POOL --to-latest
    
  • 必要に応じて、LATEST キーワードとともに --to-revisions フラグを使用して、デプロイ時に常に最新リビジョンにインスタンスのフローティング割合を割り当てます。常に最新のリビジョンにフローティングするインスタンスの割合を設定するには、次のコマンドを実行します。

    gcloud beta run worker-pools update-instance-split WORKER_POOL --to-revisions=LATEST=PERCENTAGE
    

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

    • WORKER_POOL: ワーカープールの名前。
    • PERCENTAGE: 最新リビジョンと将来の最新リビジョンに割り当てるインスタンスの割合。

次のステップ