GCP
Deploy M3 Forge on GCP using GKE for Kubernetes and Cloud SQL for PostgreSQL, with an S3-compatible object storage layer for the current M3 Forge runtime contract.
Recommended GCP mapping
| M3 Forge dependency | GCP service |
|---|---|
| Kubernetes | Google Kubernetes Engine |
| PostgreSQL | Cloud SQL for PostgreSQL |
| Object storage | MinIO on GKE, or another S3-compatible service |
| Secrets | Secret Manager with External Secrets Operator |
| Analytics | ClickHouse Cloud on GCP or self-managed ClickHouse |
| Ingress | GKE Ingress, Gateway API, or NGINX Ingress |
Important storage note
M3 Forge currently expects an S3-compatible object storage API. Native Google Cloud Storage is not yet the default runtime contract. On GCP, plan around MinIO or another S3-compatible layer until a native GCS adapter is introduced.
Prerequisites
- a GKE cluster
- Cloud SQL for PostgreSQL
- an S3-compatible object storage endpoint reachable from the cluster
- ingress or Gateway API
- published API and frontend images
Installation
Provision infrastructure
Create:
- GKE cluster
- Cloud SQL PostgreSQL instance
- MinIO or another S3-compatible object store
- ClickHouse service
Prepare values
Start from:
cp deploy/helm/charts/m3forge/examples/self_hosted_external.yaml gcp-m3forge-values.yamlPoint values at GCP-managed services
Set:
DATABASE_URLfor Cloud SQLconfig.storage.s3EndpointUrlfor MinIO or the S3-compatible endpoint- frontend and API public URLs
- ingress or Gateway config
Install the chart
helm install m3forge ./deploy/helm/charts/m3forge \
-f gcp-m3forge-values.yamlExample values shape
config:
public:
frontendUrl: https://forge.example.com
apiUrl: https://forge.example.com
appUrl: https://forge.example.com
storage:
s3EndpointUrl: https://minio.example.internal
s3BucketName: m3forge
s3Region: us-central1
secrets:
existingSecret: m3forge-secrets
create: false
ingress:
enabled: true
className: gce
host: forge.example.comGCP-specific notes
Storage
Do not assume that GCS is a drop-in replacement for the current M3 Forge storage path. Keep the object-storage contract explicitly S3-compatible for now.
Next steps
Last updated on