Google Cloud¶
All Tomoda compute, data, secrets, and CI live in a single GCP project: development-485000, region asia-east1. Environment separation (dev vs prod) is done with Kubernetes namespaces inside one GKE cluster — there are no per-environment GCP projects.
Terraform code for everything below is in infrastructure/gcp/. Remote state lives in the GCS bucket development-485000-tfstate (default workspace).
-
The big picture: project layout, region choice, namespace-based env split, and a Mermaid diagram of every resource Terraform manages.
-
gke-tomodainasia-east1-a. Two node pools (one idle, one active), Workload Identity, deletion protection on. -
Custom VPC, single regional subnet, secondary ranges for pods and services. No Cloud NAT.
-
Four triggers (backend/frontend × dev/prod), tied to the tomoda GitHub repo. Dev requires manual approval; prod fires on semver tags.
-
Two Docker repos (
tomoda-dev-repo,tomoda-prod-repo). Image-updater SA pulls metadata for Argo CD Image Updater. -
Helm-installed Argo CD with Dex + Google OAuth restricted to
tomoda.life. ClusterIP exposed through Traefik + oauth2-proxy. -
The IAP brand, OAuth client, and Secret Manager entry used by Argo CD and oauth2-proxy.
-
GCS bucket for multilingual Photon indexes. Public-read, lifecycle to Nearline then delete. CronJob currently suspended.
-
tomoda-db-backups-${project_id}. CNPG Barman writes WAL + base backups here via Workload Identity. -
All Workload Identity bindings in one place: which K8s SA impersonates which GCP SA, and what it gets access to.