Cloud Run ワーカープールを作成したら、ワークフローを使用してスケーリングを自動化できます。これにより、外部イベント、カスタム ロジック、スケジュールに基づいてインスタンス数を調整できます。
始める前に
次のリストに、Workflows を使用して Cloud Run ワーカープールのワークフローをデプロイして実行する場合の要件を示します。
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Cloud Run Admin API と Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。
必要なロール
Workflows を使用して Cloud Run ワーカープールをデプロイして実行するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run ワーカープールに対する Cloud Run 管理者(
roles/run.admin) -
プロジェクトに対する ワークフロー編集者 (
roles/workflows.editor) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser)
Workflows が Cloud Run ワーカープールを更新できるようにするには、ワークフローのデプロイに使用するサービス アカウントに次のロールが必要です。
- Cloud Run 管理者(
roles/run.admin)
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run ワーカープールがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
Cloud Run ワーカープールを作成する
まだ作成していない場合は、Cloud Run ワーカープールを作成します。ワークフローの実行時に、Cloud Run ワーカープールの名前を参照します。
ワークフローを作成、デプロイ、実行する
次のワークフローは、Cloud Run ワーカープールのインスタンス数を更新します。
ホーム ディレクトリに、ワークフロー用の新しい 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}ワークフローをデプロイし、指定されたサービス アカウントに関連付けます。
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.comPROJECT_NUMBER-compute@developer.gserviceaccount.com
- WORKFLOW_NAME: ワークフローの名前(
ワーカープールの詳細とインスタンス数を使用してワークフローを実行します。
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 で更新が成功したことを確認するには、ワーカープールのページに移動します。
ワーカープールの手動スケーリング カウントが変更されたことを確認します。