ワーカープールの手動スケーリング

このページでは、ワーカープールを手動でスケーリングする方法について説明します。

概要

手動スケーリングでは、再デプロイを必要とすることなく、特定のインスタンスの数を設定できます。これにより、外部システムを使用して独自のスケーリング ロジックを記述できます。例については、外部指標を使用してワーカープールを自動スケーリングするをご覧ください。

手動スケーリングを使用する場合の課金に関する考慮事項

手動スケーリングを使用する場合、リクエストしたすべてのインスタンスは、アイドル状態であってもアクティブなインスタンスとして課金されます。課金の詳細については、料金ページをご覧ください。

必要なロール

Cloud Run ワーカープールのデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

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

スケーリングを構成する

スケーリング モードまたは手動インスタンス数を変更しても、新しいリビジョンは作成されません。

スケーリング モードを構成するには、 Google Cloud コンソール、Google Cloud CLI、YAML、Terraform、または REST API を使用します。

コンソール

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

    Cloud Run に移動

  2. 新しいワーカープールを構成する場合は、メニューから [ワーカープール] を選択し、[コンテナをデプロイ] をクリックします。既存のワーカープールを構成する場合は、ワーカープールをクリックして詳細ウィンドウを表示し、詳細パネルの右上にある [スケーリング] の横にある鉛筆アイコンをクリックします。

  3. [スケーリング] フォーム(新しいワーカープールの場合)、または [スケーリングの編集] フォーム(既存のワーカープールの場合)を見つけます。

    画像

  4. [インスタンス数] フィールドに、サービスのコンテナ インスタンスの数を指定します。

  5. 仕様を完成させます。

  6. 新しいワーカープールの場合は [作成]、既存のワーカープールの場合は [保存] をクリックします。

gcloud

新しいワーカープールのスケーリングを指定するには、deploy コマンドを使用します。

gcloud run worker-pools deploy WORKER_POOL \
    --instances=INSTANCE_COUNT \
    --image IMAGE_URL

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

  • WORKER_POOL: ワーカープールの名前。
  • INSTANCE_COUNT: ワーカープールのインスタンス数。これにより、ワーカープールは手動スケーリングに設定されます。ワーカープールを無効にするには、値 0 を指定します。
  • IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/worker-pool:latest など)。

次の update コマンドを使用して、既存のワーカープールのスケーリングを指定します。

gcloud run worker-pools update WORKER_POOL \
   --instances=INSTANCE_COUNT

YAML

  1. 新しいワーカープールを作成する場合は、この手順をスキップします。既存のワーカープールを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. 次の例には、YAML 構成が含まれています。

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      annotations:
        run.googleapis.com/manualInstanceCount: `INSTANCE_COUNT`

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

    • WORKER_POOL: Cloud Run ワーカープールの名前
    • INSTANCE_COUNT: ワーカープールに対して手動でスケーリングするインスタンス数。ワーカープールを無効にするには、値 0 を指定します。
  3. 次のコマンドを使用して、ワーカープールを作成または更新します。

    gcloud run worker-pools replace worker-pool.yaml

    gcloud run worker-pools replace コマンドは、worker-pool.yaml ファイルが存在する場合はデフォルトでそのファイルを使用します。

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
  scaling {
    scaling_mode = "MANUAL"
    manual_instance_count = "INSTANCE_COUNT"
  }
}

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

  • WORKER_POOL: ワーカープールの名前。
  • REGION: Google Cloud リージョン(例: europe-west1)。
  • IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/worker-pool:latest など)。
  • INSTANCE_COUNT: ワーカープールのインスタンス数。これにより、ワーカープールは手動スケーリングに設定されます。ワーカープールを無効にするには、値 0 を指定します。

REST API

特定のワーカープールのインスタンス数を更新するには、PATCH HTTP リクエストを Cloud Run Admin API の workerPools エンドポイントに送信します。

curl の使用例を次に示します。

    curl -H "Content-Type: application/json" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -X PATCH \
    -d '{"scaling":{"manualInstanceCount":INSTANCE_COUNT }}' \
    https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL?update_mask=scaling.manualInstanceCount

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

  • ACCESS_TOKEN: ワーカープールを更新する IAM 権限を持つアカウントの有効なアクセス トークン。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • INSTANCE_COUNT: ワーカープールのインスタンス数。
  • PROJECT_ID: Google Cloud プロジェクト ID。
  • REGION: ワーカープールがデプロイされている Google Cloud リージョン。
  • WORKER_POOL: ワーカープールの名前。

ワーカープールのスケーリング構成を表示する

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

    [Cloud Run] に移動

  2. [ワーカープール] をクリックして、デプロイされたワーカープールのリストを確認します。

  3. 調べるワーカープールをクリックして、詳細ウィンドウを表示します。

  4. 現在のスケーリング設定は、ワーカープールのリビジョン リストの上に表示されます([スケーリング: 手動(インスタンス:)])。

ワーカープールを無効にする

ワーカープールを無効にするには、次のコマンドを使用してスケーリングをゼロに設定します。

gcloud run worker-pools update WORKER_POOL --instances=0

WORKER_POOL は、ワーカープールの名前に置き換えます。