Last Updated: 2025-06-28
Project: Saleor Google Cloud Platform Infrastructure
Terraform Directory: /infrastructure/
This Terraform configuration deploys a complete Saleor e-commerce platform on Google Cloud Platform using serverless architecture. The infrastructure is production-ready with proper security, monitoring, and scalability features.
The infrastructure is deployed without active application services (Cloud Run removed):
- Project ID:
melodic-now-463704-k1 - Region:
us-central1 - Environment: Development
- Resource Suffix:
33b5604e
- VPC Network:
saleor-vpc-33b5604e - Subnet:
saleor-subnet-33b5604e(10.0.0.0/24) - Private IP Range:
saleor-private-ip-33b5604e(10.146.0.0/16) - Cloud NAT:
saleor-nat-33b5604e - Router:
saleor-router-33b5604e
- Service Account: ❌
saleor-cloud-run-33b5604e@melodic-now-463704-k1.iam.gserviceaccount.com(deleted) - VPC Connector:
saleor-connector-33b5604e(10.8.0.0/28)
- Artifact Registry:
saleor-33b5604e(us-central1) - Repository Type: Docker
- Status: Active and ready for container images
- Cloud SQL Instance:
saleor-postgres-33b5604e - Database Version: PostgreSQL 15
- Configuration:
- Private IP only (10.146.0.0/16 range)
- Point-in-time recovery enabled
- Automated backups (7-day retention for development)
- Max connections: 200
- Database:
saleor - User:
saleor
- Redis Instance:
saleor-redis-33b5604e - Version: Redis 7.0
- Tier: Basic
- Memory: 1GB
- Host:
10.248.157.155:6379 - Location: us-central1-f
-
Static Files:
saleor-static-melodic-now-463704-k1-33b5604e- CORS enabled for GET/HEAD requests
- Lifecycle rule: Move to Nearline after 365 days
-
Media Files:
saleor-media-melodic-now-463704-k1-33b5604e- CORS enabled for all HTTP methods
- Lifecycle rule: Move to Nearline after 365 days
-
Private Files:
saleor-private-melodic-now-463704-k1-33b5604e- No public access
- Lifecycle rule: Move to Nearline after 365 days
- Django Secret Key:
saleor-django-secret-key-33b5604e - Database Password:
saleor-db-password-33b5604e - Both secrets have automatic replication enabled
- Global IP Address:
34.8.212.5(saleor-lb-ip-33b5604e) - SSL Certificate:
saleor-ssl-cert-33b5604e- Managed certificate for domain:
saleor-demo.example.com
- Managed certificate for domain:
- Backend Service:
saleor-backend-33b5604e- CDN enabled with caching policies
- Logging enabled (100% sample rate)
-
Cloud Run Service:
saleor-app-33b5604e- Status:
⚠️ Deployed but failing startup probes - Region: asia-southeast2 (Indonesia)
- Container:
asia-southeast2-docker.pkg.dev/melodic-now-463704-k1/saleor-33b5604e/saleor:latest - Health Checks: Startup and liveness probes configured
- VPC Access: Connected via VPC connector
- Scaling: 0-5 instances (scale to zero enabled)
- Status:
-
Cloud Run Job (Celery Worker):
saleor-worker-33b5604e✅- Status: Successfully deployed
- Parallelism: 10 workers
- Resource Limits: 1 CPU, 1GB RAM
-
Service Account:
saleor-cloud-run-33b5604e@melodic-now-463704-k1.iam.gserviceaccount.com✅- Permissions: Cloud SQL Client, Storage Admin, Secret Manager Access
-
VPC Connector:
saleor-connector-33b5604e✅- IP Range: 10.8.0.0/28
- Status: Active for private networking
- Cloud Scheduler:
saleor-worker-scheduler-33b5604e- Schedule: Every 5 minutes (
*/5 * * * *) - Triggers Celery worker jobs automatically
- Schedule: Every 5 minutes (
- Cloud Run API
- Cloud SQL Admin API
- Redis API
- Cloud Storage API
- Compute Engine API
- Cloud Scheduler API
- Cloud Monitoring API
- Cloud Logging API
- Secret Manager API
- Artifact Registry API
- Cloud Build API
- VPC Access API
- Private networking for database and Redis
- Service account with minimal required permissions
- Secret Manager for sensitive data
- VPC with private Google access
- SSL termination at load balancer
- Auto-scaling Cloud Run services
- CDN-enabled load balancer
- Separate worker processes for background tasks
- Regional deployment ready
- Load balancer access logging
- Cloud NAT logging (errors only)
- Health checks for application services
- Automated scheduling for background tasks
- Docker Image Built:
saleor-production:latest(Image ID:bff918395293) - Pushed to Artifact Registry: ✅
- Repository:
us-central1-docker.pkg.dev/melodic-now-463704-k1/saleor-33b5604e/saleor:latest - Digest:
sha256:24dc4394cac3a1cd64d9b6272703a201df69ff3d9e4f9fad9ce4bb888d94e4aa - Created: 2025-06-28T18:06:59
- Repository:
- Service Name:
saleor-app-33b5604e - Current Status: Deployment in progress with startup issues
- Issue: Container failing startup probe checks
- Error:
Revision 'saleor-app-33b5604e-00001-kmq' is not ready and cannot serve traffic - Root Cause: Application configuration or environment variable issues
- Logs: Available via Google Cloud Console
- Telemetry Settings: Added required
TELEMETRY_TRACER_CLASSandTELEMETRY_METER_CLASS - Instance Limits: Reduced max instances from 10 to 5 due to quota restrictions
- Environment Variables: All Saleor-required variables configured
✅ Completed Steps:
- Infrastructure fully deployed via Terraform
- Docker authentication configured
- Saleor application image built and optimized for Cloud Run
- Container image pushed to Artifact Registry
- Environment variables verified against Saleor requirements
- Telemetry configuration added
- Quota issues resolved (max instances reduced to 5)
✅ Completed:
- Resolved container startup issues (added telemetry error handling)
- Created database migration jobs (
saleor-migrate-33b5604e,saleor-setup-33b5604e) - Fixed Cloud Scheduler IAM permissions for job execution
✅ Completed:
- Architecture Switch: Successfully migrated from GKE to Cloud Run architecture
- Regional Migration: Moved deployment from us-central1 to asia-southeast2 (Indonesia)
- Container Image: Built and pushed to Indonesia region Artifact Registry
- Infrastructure Deployment: All supporting infrastructure deployed successfully
- Worker Jobs: Celery worker job deployed and operational
- Cloud Run Service: Deployed but experiencing startup probe failures
- Issue: Service failing to pass health checks during startup
❌ Pending:
- Debug Startup Issues: Investigate Cloud Run service startup probe failures
- Service Configuration: Fix container startup configuration if needed
- Configure DNS to point domain to load balancer IP (
34.8.212.5) - SSL certificate provisioning (awaiting DNS configuration)
- Final deployment verification and application testing
- Problem: Cloud Run container failed startup probe checks due to missing telemetry configuration
- Root Cause:
TELEMETRY_TRACER_CLASSandTELEMETRY_METER_CLASSsettings causing AttributeError crashes - Solution: Added graceful error handling in telemetry initialization to prevent application crashes
- Status: Container startup issues resolved, application can now start successfully
- Problem: Cloud Scheduler job getting 403 PERMISSION_DENIED when trying to execute Cloud Run jobs
- Solution: Added IAM policy binding giving Cloud Scheduler service account
run.invokerrole - Status: Scheduler can now successfully trigger background worker jobs
- Issue: GKE cluster required 300GB SSD, only 250GB available
- Solution: Switched to Cloud Run architecture (serverless, no SSD requirements)
- Result: Successfully deployed in Indonesia region without quota limitations
- Benefits:
- No SSD quota constraints
- Serverless scaling (scale to zero)
- Lower operational overhead
- Same functionality as GKE for Saleor application
- Issue: Cloud Run service failing startup probe checks
- Error: Container not passing health checks at
/health/endpoint - Symptoms: Service deployed but not serving traffic
- Troubleshooting: Review Cloud Run logs for startup errors
- Solutions:
- Check application logs via Cloud Console
- Verify database connectivity from Cloud Run
- Adjust startup probe timing if needed
- Impact: Web service not accessible until resolved
- Action: Configure external DNS provider to point
saleor-demo.example.comto34.8.212.5 - Impact: Required for SSL certificate provisioning and public access
- Status: Manual configuration needed in external DNS provider
- Development environment uses ZONAL availability for cost savings
- Basic tier Redis for development workloads
- Lifecycle rules on storage buckets to manage long-term costs
- Resource limits configured to prevent unexpected scaling costs
Status:
Terraform State: Cloud Run infrastructure deployed successfully
Current Region: Indonesia (asia-southeast2)
Last Terraform Apply: 2025-06-28
Last Docker Build: 2025-06-28 09:49:00 UTC
Container Image: ✅ Available in Asia Southeast 2 Artifact Registry
Infrastructure Status: Database ✅ Redis ✅ VPC ✅ Cloud Run
Current Architecture: Cloud Run (serverless containers)
Service Status: Worker Job ✅ Web Service
Next Action: Debug Cloud Run service startup issues