Zero-Downtime Deployments with Kubernetes
Understand readiness, surge capacity, graceful shutdown, and telemetry without treating rolling updates as an availability guarantee.
Building internal platforms that simplify development, standardize environments, and make the path from code to production faster and safer.
If every exception requires a platform ticket, teams will route around the platform. If there are no defaults, every service reinvents probes and IAM badly.
Readiness decides traffic. Liveness decides restarts. Mixing them, or pointing liveness at an external database, turns a dependency outage into a restart storm.
An unversioned chart that every team forked is no longer a platform. Version the interface and publish breaking-change notes.
A platform is a product with defaults, an interface, and an escape hatch. The job is to make the safe path the easy path—probes, requests, identity, and telemetry included—without becoming the ticket queue for every exception.
On Kubernetes, developers usually consume a Deployment, Service, and ingress path. The platform supplies golden templates, Helm charts, or Kustomize overlays with readiness and liveness probes, resource requests, disruption budgets, and Flux reconciliation. EKS and AKS are managed control planes with different identity models; the operating model—desired state in Git, self-service defaults, and documented exceptions—matters more than the distro name. Capacity, image policy, and namespace-scoped IAM sit underneath that interface.
Objects. A Deployment owns a ReplicaSet; the ReplicaSet owns Pods. A Service selects ready endpoints only.
Illustrative Kubernetes control-plane objects. A Deployment owns a ReplicaSet; the ReplicaSet owns Pods; a Service selects ready endpoints. This is not a cluster you can reach.
Track time to first deployment and how many services remain on the template. Adoption is a better signal than the number of supported tools.
CPU requests also become the denominator for utilization-based autoscaling. Empty requests make both scheduling and HPA guesswork.
GitOps makes the cluster match what was reviewed. A manual kubectl hotfix that is not reflected in Git will be reversed or forgotten.
Unusual latency, sidecars, or GPU workloads should have a documented exception path. Hidden forks are worse than approved divergence.
Helm packages a versioned interface. Kustomize overlays environment differences without a second chart fork. Mixing them without ownership produces two sources of truth.
A rigid chart prevents accidents and also prevents legitimate shapes. Versioned overlays or a second supported profile is usually cheaper than unofficial forks.
Helm versions a product interface. Kustomize patches environment differences. Operators encode policy but concentrate complexity. Start with reviewed templates; introduce controllers when the same mistake keeps recurring.
Shared clusters need stronger tenancy, network policy, and quota. Separate clusters increase cost and duplicate platform work.
A platform team publishes a Helm chart that creates a Deployment, Service, and ServiceMonitor. The chart sets readiness on /readyz, a startup probe, CPU and memory requests, and a PodDisruptionBudget. Teams may add an overlay for extra sidecars after review. Flux reconciles the chart from a protected repository. This is an educational product sketch, not a claim about a production platform.
A downstream outage restarts healthy application processes and lengthens the incident.
The scheduler packs nodes poorly and HPA cannot compute CPU utilization. The first noisy neighbor becomes a site incident.
The live state diverges from Git. The next reconcile looks like a mysterious rollback.
Change request rate and see pending versus ready replicas on a simplified HPA model.
Open the autoscaling lab →Understand readiness, surge capacity, graceful shutdown, and telemetry without treating rolling updates as an availability guarantee.
How HPA, resource requests, and cluster capacity interact—and why a target utilization is not a capacity plan.
Build a usable telemetry model around user-facing SLIs, bounded cardinality, and alerts that have a next step.
Architecture, delivery, identity, and recovery—not a tool list. No fabricated case studies, no implied retainer.