This page shows you how to manually scale your worker pool.
Overview
Manual scaling lets you set a specific instance count without requiring redeployment. This gives you the option to write your own scaling logic using an external system. See Autoscale worker pools with external metrics for an example of this.
Billing considerations when using manual scaling
When you use manual scaling, all the instances that you requested are billed as active instances, even if they happen to be idle. For complete billing details, see the pricing page.
Required roles
To get the permissions that you need to deploy Cloud Run worker pools, ask your administrator to grant you the following IAM roles:
- Cloud Run Developer (
roles/run.developer) on the Cloud Run service - Service Account User (
roles/iam.serviceAccountUser) on the service identity - Artifact Registry Reader (
roles/artifactregistry.reader) on the Artifact Registry repository of the deployed container image (if applicable)
For a list of IAM roles and permissions that are associated with Cloud Run, see Cloud Run IAM roles and Cloud Run IAM permissions. If your Cloud Run worker pool interfaces with Google Cloud APIs, such as Cloud Client Libraries, see the service identity configuration guide. For more information about granting roles, see deployment permissions and manage access.
Configure scaling
Changing scaling mode or changing the manual instance count does not create a new revision.
To configure the scaling mode, use the Google Cloud console, the Google Cloud CLI, YAML, Terraform, or REST API:
Console
In the Google Cloud console, go to Cloud Run:
If you are configuring a new worker pool, select Worker pools from the menu, and click Deploy container. If you are configuring an existing worker pool, click the worker pool to display its detail pane, then click the pen icon next to Scaling at the top right of the detail panel.
Locate the Scaling form (for a new worker pool) or the Edit scaling form for an existing worker pool.
In the field labelled Number of instances, specify the number of container instances for the service.
Finish the specification.
Click Create for a new worker pool or Save for an existing worker pool.
gcloud
To specify scaling for a new worker pool, use the deploy command:
gcloud run worker-pools deploy WORKER_POOL \ --instances=INSTANCE_COUNT \ --image IMAGE_URL
Replace the following:
- WORKER_POOL: the name of your worker pool.
- INSTANCE_COUNT: the number of instances for the worker pool.
This sets the worker pool to manual scaling. Specify a value of
0to disable the worker pool. IMAGE_URL: a reference to the container image that contains the worker pool, such asus-docker.pkg.dev/cloudrun/container/worker-pool:latest.
Specify scaling for an existing worker pool by using the following update command:
gcloud run worker-pools update WORKER_POOL \ --instances=INSTANCE_COUNT
YAML
If you are creating a new worker pool, skip this step. If you are updating an existing worker pool, download its YAML configuration:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
The following example contains the YAML configuration:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL annotations: run.googleapis.com/manualInstanceCount: `INSTANCE_COUNT`
Replace the following:
- WORKER_POOL: the name of your Cloud Run worker pool.
- INSTANCE_COUNT: the number of instances you are manually
scaling for the worker pool. Specify a value of
0to disable the worker pool.
Create or update the worker pool using the following command:
gcloud run worker-pools replace worker-pool.yaml
The
gcloud run worker-pools replacecommand defaults to usingworker-pool.yamlfile if present.
Terraform
To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.
resource "google_cloud_run_v2_worker_pool" "default"