Google Cloud
01 / 04

Compute: GCE, Cloud Run & App Engine

Google Cloud: Compute Services

GCP offers multiple compute options: GCE (full VMs), GKE (managed Kubernetes), Cloud Run (serverless containers), App Engine (PaaS), and Cloud Functions (serverless functions).

Cloud Run — Serverless Containers

Cloud Run is the most popular GCP compute service for new applications. It runs any containerized app with automatic scaling to zero.

# Build and deploy in one command
gcloud run deploy my-service \
  --source . \              # builds container via Cloud Build
  --region europe-west1 \
  --platform managed \
  --allow-unauthenticated \
  --port 8080 \
  --memory 512Mi \
  --cpu 1 \
  --min-instances 0 \
  --max-instances 100 \
  --set-env-vars NODE_ENV=production,DATABASE_URL=${DATABASE_URL}

# Deploy from existing image
gcloud run deploy my-service \
  --image europe-west1-docker.pkg.dev/my-project/my-repo/my-image:latest \
  --region europe-west1

# Update traffic split (canary)
gcloud run services update-traffic my-service \
  --to-revisions my-service-00010-abc=10,LATEST=90

# View logs
gcloud run services logs read my-service --region europe-west1

Compute Engine (GCE)

# Create a VM
gcloud compute instances create my-vm \
  --machine-type e2-medium \
  --image-family debian-12 \
  --image-project debian-cloud \
  --zone europe-west1-b \
  --tags http-server

# SSH into VM
gcloud compute ssh my-vm --zone europe-west1-b

# Create a managed instance group (auto-scaling VM fleet)
gcloud compute instance-groups managed create my-mig \
  --base-instance-name my-vm \
  --template my-template \
  --size 2 \
  --zone europe-west1-b

# Machine types:
# e2-micro, e2-small, e2-medium  — shared CPU, cost-effective
# n2-standard-2                  — balanced (2 vCPU, 8GB RAM)
# c2-standard-4                  — compute-optimized
# a2-highgpu-1g                  — GPU instances

App Engine

  • Standard environment: language-specific runtimes (Node, Python, Go, Java) — scales to zero, free tier

  • Flexible environment: any language via Docker — no scale-to-zero, more control

  • Deploy: gcloud app deploy — reads app.yaml

  • Traffic splitting: gcloud app services set-traffic --splits v1=90,v2=10

  • Good for: simple web apps, APIs where Cloud Run is overkill but GCE is too complex

GKE — Managed Kubernetes

# Create Autopilot cluster (recommended — fully managed node pools)
gcloud container clusters create-auto my-cluster \
  --region europe-west1

# Get credentials
gcloud container clusters get-credentials my-cluster --region europe-west1

# Standard cluster (you manage nodes)
gcloud container clusters create my-cluster \
  --num-nodes 3 \
  --machine-type e2-standard-4 \
  --zone europe-west1-b

# Enable Workload Identity (recommended for IAM)
gcloud container clusters update my-cluster \
  --workload-pool my-project.svc.id.goog \
  --region europe-west1

Keep your own version of these notes — editable, searchable, and organised by your stack.

Start free