Skip to content
Done/Ops ENGINEERING SERVICES · EST. 2014
§ CASE STUDY · 2022 Online learning TRACK: DevSecOps
~/case-studies/infrastructure

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.

Stack · GKE Cloud Build Artifact Registry Flux Skaffold HashiCorp Packer Terraform
§ 01
THE FACTS

What changed, plainly.

Environments
Developer, staging, production, on-demand learner labs
Build philosophy
Build once. The tested image is the production image.
Deploys
Merge → staging. Tag → production. No human in the loop.
Time-to-new-environment
Weeks, not quarters — even for net-new use cases
§ 02
THE WORK

How it actually went.

01

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.

02

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.

03

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.

04

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.

05

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.

Next case · Six deployment targets to one → Start a conversation →