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

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

始める前に

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

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $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

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

  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 に移動

    ワーカープールの手動スケーリング数が変更されていることを確認します。