Blog
Notes from building and running Kubernetes, Terraform, GitOps and observability setups on AWS: what I did, what broke, and how I fixed it.
20 articles published
Series
Kubernetes Deep Dive
3 parts- What Years of Using Kubernetes Taught Me That the Documentation Never Could
- The Operational Patterns Kubernetes Won't Teach You, but Production Will
- What I Wish I'd Known About Kubernetes Reliability From Day One
Kubernetes Production Handbook
4 parts- Kubernetes Pod Lifecycle: From Scheduling to Termination
- Kubernetes Resource Management: Requests, Limits, LimitRanges, and QoS Classes
- Writing Kubernetes Runbooks That Actually Get Used During Incidents
- Init Containers and Sidecar Containers: What They Are and When to Actually Use Them
Kubernetes Security
2 parts- Kubernetes RBAC Hardening: From Cluster-Admin to Least Privilege
- Kubernetes Network Policies: Locking Down Pod-to-Pod Traffic
Production EKS on AWS
5 parts- Multi-Environment Infrastructure with Terraform: A Complete Guide
- Building a Production EKS Cluster from Scratch: Everything I Wish Someone Had Told Me
- Deploying and Scaling Applications on Amazon EKS
- GitHub Actions CI/CD Pipeline to Kubernetes: From Code Push to Live Deployment
- GitOps with Argo CD: A Practical Kubernetes Guide

Kubernetes Observability on EKS: Metrics, Alerts and Dashboards with Prometheus and Grafana
Deployed Prometheus, Grafana, and Alertmanager on EKS using the kube-prometheus-stack Helm chart. Metrics flowing, alerts routing to Slack, dashboards provisioned from Git. Includes the EBS CSI driver and IAM gotchas you will actually hit on EKS.

Writing Kubernetes Runbooks That Actually Get Used During Incidents
Most runbooks are written once, stored somewhere, and never opened again — especially during the incidents they were meant to help with. This article covers how to write Kubernetes runbooks that engineers actually reach for at 2 AM.

Kubernetes Resource Management: Requests, Limits, LimitRanges, and QoS Classes
Resource requests and limits are the single most impactful configuration decision in a Kubernetes cluster. Get them wrong and you get OOMKilled pods, noisy neighbours, unreliable scheduling, and wasted spend. This article explains how to get them right.
FeaturedKubernetes Pod Lifecycle: From Scheduling to Termination
Everything that happens between kubectl apply and a running pod — and between a delete command and a clean shutdown. Understanding the full pod lifecycle is what separates engineers who debug Kubernetes quickly from those who guess.

What I Wish I'd Known About Kubernetes Reliability From Day One
The reliability mindset that took years to develop: how to think about SLOs in a Kubernetes environment, failure modes that repeat, capacity planning in a dynamic system, and the on-call experience that changes how you build everything.
FeaturedFull Observability Stack on Kubernetes: Prometheus, Grafana, Loki, and Alertmanager with Helm
A step-by-step guide to deploying a complete observability stack on Kubernetes using Helm — covering metrics with Prometheus, visualisation with Grafana, log aggregation with Loki, and real alerting with Alertmanager.
FeaturedThe Operational Patterns Kubernetes Won't Teach You, but Production Will
Beyond the basics: the operational patterns that only emerge after running Kubernetes in production. Graceful shutdown, pod disruption budgets, anti-affinity rules, namespace strategy, and the kubectl commands that become muscle memory.
FeaturedKubernetes RBAC Hardening: From Cluster-Admin to Least Privilege
Most Kubernetes clusters start with everything running as cluster-admin. This article walks through how to progressively harden RBAC — implementing namespace-scoped roles, service account restrictions, and audit logging.
FeaturedWhat Years of Using Kubernetes Taught Me That the Documentation Never Could
Documentation taught me how Kubernetes works. Production taught me why it works the way it does — and why that difference changed how I think about infrastructure.