● DevOps · Kubernetes · AWS

Master Cloud Engineering
From Real-World Experience

Practical tutorials, deep dives, and battle-tested guides for engineers who build and ship in the cloud.

Browse by topic → AWS Kubernetes DevOps GitLab

Setting Up Horizontal Pod Autoscaler on Kubernetes: The Settings That Actually Matter

Setting Up Horizontal Pod Autoscaler on Kubernetes: The Settings That Actually Matter

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering The default Horizontal Pod Autoscaler config scales on raw CPU with no stabilization window, which is exactly why it’s common to see replica counts bounce up and down every few minutes under normal, slightly-uneven traffic. The two settings that actually decide whether HPA is useful or … Read more

We Rotated a Database Password, and Every Pod That Didn’t Restart Started Failing Auth

We Rotated a Database Password, and Every Pod That Didn’t Restart Started Failing Auth

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering A scheduled quarterly rotation replaced the database credential in Secrets Manager, and within minutes most of the fleet was using it without issue. Two hours later, a subset of pods started failing every query with authentication errors — pods that hadn’t restarted in weeks, still holding … Read more

Catching Terraform Drift in CI Before a Manual Change Reaches Production

Catching Terraform Drift in CI Before a Manual Change Reaches Production

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering Someone changed a security group in the console to unblock themselves during an incident, and it never made it back into the .tf file. Terraform doesn’t know that happened until the next apply either quietly reverts it or, worse, doesn’t touch it because nothing in the … Read more

Setting Up Kubernetes RBAC: The Roles and RoleBindings That Actually Enforce Least Privilege

Setting Up Kubernetes RBAC: The Roles and RoleBindings That Actually Enforce Least Privilege

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering A Role scoped to one namespace, bound to one service account, with verbs limited to exactly what that workload does, is what turns Kubernetes RBAC into an actual security boundary instead of a checkbox. Most clusters we’ve audited get this half right: the Role exists, but … Read more

A Namespace Relabel Silently Broke a NetworkPolicy Selector, and Cross-Namespace Traffic Started Timing Out

A Namespace Relabel Silently Broke a NetworkPolicy Selector, and Cross-Namespace Traffic Started Timing Out

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering A payments-team service started timing out on calls to a shared internal API, intermittently, with nothing in either side’s logs pointing at why. No connection refused, no TLS error, no 5xx. Just a hang until the client’s own timeout gave up. The pods were healthy, the … Read more

Spinning Up Per-Merge-Request Review Environments With GitLab CI Dynamic Environments

Spinning Up Per-Merge-Request Review Environments With GitLab CI Dynamic Environments

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering A dynamic environment: block in .gitlab-ci.yml turns every merge request into its own deployed, reachable review app, and turns every closed merge request into a cleanup job that tears it back down. Reviewers stop asking “can you deploy this so I can look at it” and … Read more

A CoreDNS Cache Setting Kept Routing gRPC Traffic to Pods That No Longer Existed After Every Deploy

A CoreDNS Cache Setting Kept Routing gRPC Traffic to Pods That No Longer Existed After Every Deploy

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering Every deploy of one gRPC service left about 5% of calls failing for the next 30 to 40 seconds, then it cleared up on its own. The rollout itself looked clean, every new pod passed its readiness probe on schedule. The failing calls were connecting to … Read more

Setting Up Kubernetes Cluster Autoscaler on EKS: The Settings That Actually Matter

Setting Up Kubernetes Cluster Autoscaler on EKS: The Settings That Actually Matter

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering Installing Cluster Autoscaler is one Helm command. Getting it to scale up fast enough and scale down without evicting something it shouldn’t is the part that takes actual configuration. The defaults are conservative on purpose, and left untouched they either leave pending pods waiting longer than … Read more

A Mistyped Route53 Zone ID Exhausted Our ACME Rate Limit — and Killed an Unrelated Cert

A Typo’d Route53 Zone ID Quietly Exhausted Our ACME Rate Limit, and It Took Down an Unrelated Production Certificate

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering Our production API certificate expired on schedule for its routine 60-day renewal, except cert-manager never got a new one issued. The cause had nothing to do with that certificate. A staging Ingress with a typo’d Route53 zone ID had been failing its own renewal silently for … Read more

Structuring Terraform Modules and Remote State: What Actually Scales Past One Environment

Structuring Terraform Modules and Remote State: What Actually Scales Past One Environment

By KP  |  TZoneLabs  |  DevOps & Cloud Engineering A single main.tf with every resource for every environment works for the first few weeks of a project. It stops working the day you need a second environment, and by the time a team is running terraform plan against a 2,000-line file, nobody wants to touch … Read more