VMs to Kubernetes. The Team Said No. I Did It Anyway. They Run It Now.
Multiple services running on virtual machines. Each one a snowflake, manually configured, impossible to reproduce. The team said "it works." I said "it works until it doesn't. And then what?" The deployment process was SSH in, pull the latest code, restart the process, cross your fingers. Hours per full deployment cycle. No horizontal scaling - just over-provisioned VMs burning money around the clock. And when a VM died? Rebuild from scratch, from someone's memory of how it was set up months ago. Step one was not Kubernetes. Step one was containerization. Multi-stage Dockerfiles, minimal base images, images versioned and stored in Google Artifact Registry. Environment parity between dev, staging, and prod was the whole point. The GKE setup had node pools segmented by workload type - compute-heavy services separated from I/O-bound ones. Horizontal pod autoscaling based on actual application metrics, not just CPU. Network policies for service-to-service isolation. The result: deployment time from hours to minutes, infrastructure costs right-sized through autoscaling, and zero snowflake servers. Every service reproducible from a Dockerfile and a Helm chart. When a node dies,…