Every tool replaced something worse — and is itself the wrong tool somewhere. For each big idea in this course: what life was like before it, its honest merits ✅ and demerits ❌, and where to use it 👍 vs where not 👎.
FTP Fridays. One anointed "deploy person", a printed release checklist, a maintenance window at midnight, and tests run "when there's time". Integration happened once a month and was named "integration hell" for a reason. CI (2000s) made every push tested; CD made every good build shippable.
Ops knowledge lived in wiki runbooks, shell history and heads. Clusters were changed imperatively (kubectl by hand, CI push), so "what's running?" and "who changed it?" had no reliable answer — Part 1 of this course is a museum tour of exactly that world.
GitOps existed as scripts: Jenkins jobs running kubectl-apply on a timer, or early Flux (the other great GitOps agent — same loop, no UI). Heavyweight deploy platforms like Spinnaker did more but cost an ops team to run. ArgoCD won hearts with the visual app-tree UI.
Copy-paste YAML per environment — dev/staging/prod folders that started identical and drifted apart typo by typo (copy-paste drift is lesson 02's disease wearing YAML). Or worse: sed scripts in CI rewriting manifests nobody could preview.
Either secrets were pasted into git (published forever — git never forgets), or they lived outside GitOps entirely (hand-applied Secret files the robot couldn't manage — drift by design). Both ended in incident reports.
Rule of thumb: small/self-hosted → Sealed Secrets · cloud with a secret manager → External Secrets. Diagram ↗