One platform, four kinds of environment
A GitOps-driven platform on GKE serving developer, staging, and production workloads — plus on-demand Linux lab environments for learners.
What changed, plainly.
How it actually went.
The problem
An established online learning company with a varied stack and four very different environment shapes: developer (with parity to current production), unified staging, specialized data-science boxes, and a highly available production estate.
Each had been bolted on as it was needed. Nobody was confident any two environments matched.
CI → artifact creation
We split the world along Google project boundaries. One project owns CI: Cloud Build turns source into containers, Artifact Registry stores them, IAM grants the rest of the org pull-only access.
That single project does the work once. Every other environment uses the same artifact. What you tested is what you ran.
Deploying & running code
GKE for execution, with environment differences expressed in code rather than in tribal knowledge.
Skaffold lets developers write locally and execute against a cluster that mirrors production. First-time-deploy success goes up sharply when the dev environment isn't a fiction.
Flux closes the loop: merge to a release branch → staging picks it up; tag a release → production updates within minutes. The deploy is the merge.
And then it changed
The product team came back with a learner-lab requirement: spin up Linux environments on demand for hands-on coursework, multiple flavors, multiple regions.
On-prem, this is a six-month procurement story. On Google Cloud with Packer, we layered images on top of well-tested public images and shipped it in weeks across multiple environments.
What you take away
Build once. Use IAM to make the same artifact available everywhere. GitOps your deploys so a merge is the deploy. Layer your custom images on top of trusted ones.