Skip to content

Commands Reference

Complete gcloud CLI reference for Cloud Run operations.

Service Management

Deploy

bash
# Basic deploy
gcloud run deploy SERVICE_NAME \
  --image IMAGE_URL \
  --region REGION

# Deploy from source
gcloud run deploy SERVICE_NAME \
  --source . \
  --region REGION

# Full deploy with all options
gcloud run deploy SERVICE_NAME \
  --image IMAGE_URL \
  --region us-central1 \
  --platform managed \
  --memory 2Gi \
  --cpu 2 \
  --timeout 300 \
  --concurrency 80 \
  --min-instances 1 \
  --max-instances 100 \
  --port 8080 \
  --set-env-vars "KEY1=value1,KEY2=value2" \
  --allow-unauthenticated

Update Service

bash
# Update memory/CPU
gcloud run services update SERVICE_NAME \
  --region REGION \
  --memory 4Gi \
  --cpu 4

# Update environment variables
gcloud run services update SERVICE_NAME \
  --region REGION \
  --set-env-vars "KEY=value"

# Update scaling
gcloud run services update SERVICE_NAME \
  --region REGION \
  --min-instances 2 \
  --max-instances 50

Delete Service

bash
gcloud run services delete SERVICE_NAME --region REGION

Traffic Management

View Traffic

bash
gcloud run services describe SERVICE_NAME \
  --region REGION \
  --format 'yaml(status.traffic)'

Split Traffic

bash
# 50/50 split
gcloud run services update-traffic SERVICE_NAME \
  --region REGION \
  --to-revisions REVISION_A=50,REVISION_B=50

# Rollback to previous
gcloud run services update-traffic SERVICE_NAME \
  --region REGION \
  --to-revisions PREVIOUS_REVISION=100

Gradual Rollout

bash
# Deploy with no traffic
gcloud run deploy SERVICE_NAME \
  --image NEW_IMAGE \
  --region REGION \
  --no-traffic

# Gradually increase
gcloud run services update-traffic SERVICE_NAME \
  --region REGION \
  --to-revisions NEW_REVISION=10

# Then 50%
gcloud run services update-traffic SERVICE_NAME \
  --region REGION \
  --to-revisions NEW_REVISION=50

# Finally 100%
gcloud run services update-traffic SERVICE_NAME \
  --region REGION \
  --to-revisions NEW_REVISION=100

Revisions

List Revisions

bash
gcloud run revisions list \
  --service SERVICE_NAME \
  --region REGION

Describe Revision

bash
gcloud run revisions describe REVISION_NAME \
  --region REGION

Delete Old Revisions

bash
# Delete specific revision
gcloud run revisions delete REVISION_NAME --region REGION

# Delete all but latest 3
gcloud run revisions list --service SERVICE --region REGION \
  --format 'value(metadata.name)' | tail -n +4 | \
  xargs -I {} gcloud run revisions delete {} --region REGION --quiet

Jobs (Batch Processing)

Create Job

bash
gcloud run jobs create JOB_NAME \
  --image IMAGE_URL \
  --region REGION \
  --tasks 10 \
  --parallelism 5 \
  --max-retries 3

Execute Job

bash
gcloud run jobs execute JOB_NAME --region REGION

View Executions

bash
gcloud run jobs executions list --job JOB_NAME --region REGION

Secrets & Environment

Set Environment Variables

bash
gcloud run services update SERVICE_NAME \
  --region REGION \
  --set-env-vars "VAR1=value1,VAR2=value2"

# From file
gcloud run services update SERVICE_NAME \
  --region REGION \
  --env-vars-file env.yaml

Use Secret Manager

bash
# Mount as environment variable
gcloud run services update SERVICE_NAME \
  --region REGION \
  --set-secrets "API_KEY=my-secret:latest"

# Mount as file
gcloud run services update SERVICE_NAME \
  --region REGION \
  --set-secrets "/secrets/config=my-secret:latest"

Networking

VPC Connector

bash
# Create connector
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
  --network default \
  --region REGION \
  --range 10.8.0.0/28

# Use in service
gcloud run services update SERVICE_NAME \
  --region REGION \
  --vpc-connector CONNECTOR_NAME \
  --vpc-egress all-traffic

Custom Domain

bash
# Map domain
gcloud beta run domain-mappings create \
  --service SERVICE_NAME \
  --domain your-domain.com \
  --region REGION

IAM & Authentication

View IAM Policy

bash
gcloud run services get-iam-policy SERVICE_NAME --region REGION

Grant Access

bash
# Allow unauthenticated
gcloud run services add-iam-policy-binding SERVICE_NAME \
  --region REGION \
  --member allUsers \
  --role roles/run.invoker

# Grant to specific user
gcloud run services add-iam-policy-binding SERVICE_NAME \
  --region REGION \
  --member user:email@example.com \
  --role roles/run.invoker

# Grant to service account
gcloud run services add-iam-policy-binding SERVICE_NAME \
  --region REGION \
  --member serviceAccount:SA@PROJECT.iam.gserviceaccount.com \
  --role roles/run.invoker

Debugging

View Logs

bash
# Recent logs
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE_NAME" \
  --limit 100

# Stream logs
gcloud beta run services logs tail SERVICE_NAME --region REGION

# Filter errors
gcloud logging read "resource.type=cloud_run_revision AND severity>=ERROR" --limit 50

Get Service URL

bash
gcloud run services describe SERVICE_NAME \
  --region REGION \
  --format 'value(status.url)'

Check Health

bash
SERVICE_URL=$(gcloud run services describe SERVICE_NAME \
  --region REGION --format 'value(status.url)')
curl -sf "${SERVICE_URL}/health" && echo "Healthy" || echo "Unhealthy"