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 (Paa…
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-west1Compute 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 instancesApp 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