We had 20 microservices in GKE in one environment.
Each with its own Load Balancer.
Each with its own external IP.
Cost: ~$500-600/month just for LBs and IPs.
What bothered us:
GCP charges for external IPs ($7/month each) and for routing rule ($18/month each).
20 services = 20 IPs = $140/month just for addresses.
Plus 20 separate LBs to manage.
Plus 20 DNS records.
Plus debugging routing across 20 configs.
Classic trap of complexity: “one service = one Load Balancer.”
Easy to start. Pain to scale.
The fix for us:
One Application Load Balancer for all services. Ok, technically not all - we (and you may too) have reasons to use several separate, but for many services its ok.
How it works:
- 20 domains (service1.example.com, service2.example.com, etc.)
- All point to ONE external IP
- ALB routes by host header
- Auto-manages SSL certs for all domains (first 100 free in GCP)
Cost breakdown:
- 1 IP: ~$7/month
- 20 routing rules:
$360/month ($18 per rule)
Total: ~$367/month
Savings: ~$233/month (~40% reduction)
Implementation notes:
Uses GCP-specific features (NEG, backend targets).
Terraform module makes it manageable.
Worth it for 10+ services. Overkill for 2-3.
What would be your solution?
