Workflows を使用して Cloud Run ワーカープールをスケーリングする

Cloud Run ワーカープールを作成したら、ワークフローを使用してスケーリングを自動化できます。これにより、外部イベント、カスタム ロジック、スケジュールに基づいてインスタンス数を調整できます。

始める前に

次のリストに、Workflows を使用して Cloud Run ワーカープールのワークフローをデプロイして実行する場合の要件を示します。

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Cloud Run Admin API と Workflows API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API を有効にする

必要なロール

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

Workflows が Cloud Run ワーカープールを更新できるようにするには、ワークフローのデプロイに使用するサービス アカウントに次のロールが必要です。

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

Cloud Run ワーカープールを作成する

まだ作成していない場合は、Cloud Run ワーカープールを作成します。ワークフローの実行時に、Cloud Run ワーカープールの名前を参照します。

ワークフローを作成、デプロイ、実行する

次のワークフローは、Cloud Run ワーカープールのインスタンス数を更新します。

  1. ホーム ディレクトリに、ワークフロー用の新しい YAML ファイル(update-cr-worker-pool.yaml など)を作成し、次の内容をコピーしてファイルに貼り付けます。

    main:
      params: [args]
      steps:
        - init:
            assign:
              - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
              - region: ${args.region}
              - workerPoolName: ${args.workerPool}
              - instanceCount: ${args.instanceCount}
              - workerPoolUrl: ${"https://run.googleapis.com/v2/projects/" + project + "/locations/" + region + "/workerPools/" + workerPoolName}
        - updateWorkerPool:
            call: http.patch
            args:
              url: ${workerPoolUrl}
              query:
                updateMask: "scaling.manualInstanceCount"
              auth:
                type: OAuth2
              body:
                scaling:
                  manualInstanceCount: ${int(instanceCount)}
            result: updateResult
        - returnOutput:
            return: ${updateResult.body}
    
  2. ワークフローをデプロイし、指定されたサービス アカウントに関連付けます。

    gcloud workflows deploy WORKFLOW_NAME \
        --source=WORKFLOW_NAME.yaml \
        --location=REGION \
        --service-account=SERVICE_ACCOUNT

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

    • WORKFLOW_NAME: ワークフローの名前(update-worker-pool など)。ワークフロー名は、前に作成した YAML ファイルの名前と一致している必要があります。
    • REGION: Cloud Run ワーカープールがデプロイされているリージョン(例: europe-west1)。
    • SERVICE_ACCOUNT: 必要なロールが付与されているサービス アカウントのメールアドレス(例:
        )。
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. ワーカープールの詳細とインスタンス数を使用してワークフローを実行します。

    gcloud workflows execute WORKFLOW_NAME \
        --location=REGION \
        --data='{"region":"REGION", "workerPool":"WORKER_POOL_NAME", "instanceCount":INSTANCE_COUNT}'

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

    • WORKFLOW_NAME: ワークフローの名前。
    • REGION: Cloud Run ワーカープールがデプロイされているリージョン(例: europe-west1)。
    • WORKER_POOL_NAME: ワーカープールの名前。
    • INSTANCE_COUNT: ワーカープールの変更後のインスタンス数(例: 3)。

更新を確認する

ワークフローを実行すると、 Google Cloud コンソールの次の場所で更新を確認できます。

  • 実行ステータスと結果を表示するには、ワークフローの詳細ページに移動して、ワークフローを選択します。

    [ワークフロー] に移動

    ワークフローの最新の実行で manualInstanceCount フィールドが変更されたことを確認します。

  • Cloud Run で更新が成功したことを確認するには、ワーカープールのページに移動します。

    Cloud Run に移動

    ワーカープールの手動スケーリング カウントが変更されたことを確認します。