Blog

Original summaries of my most-read technical articles — Kubernetes observability, Terraform, and AWS. Each one links to the full, in-depth version on Medium.

TerraformTerragruntInfrastructure As Code

How We Broke Up Our Terraform Monolith with Terragrunt — and What It Actually Got Us

Why we moved our entire Terraform infrastructure across development, test, and production onto Terragrunt, how we migrated without downtime or state loss, and the honest tradeoffs.

2026-10-05

KubernetesGrafanaObservability

Kubernetes Observability with Grafana, Loki, Tempo, Mimir & Alloy

How to wire Grafana, Loki, Tempo, Mimir, and Alloy into a single cross-correlated observability stack on Kubernetes, deployed via Helm.

2025-10-13

KubernetesGrafana AlloyObservability

The Ultimate Grafana Alloy Setup Guide

Replacing Fluent Bit, Node Exporter, and an OTel Collector with a single Grafana Alloy agent on Kubernetes — config, routing, and the measured resource savings.

2025-10-09

KubernetesGrafana TempoDistributed Tracing

A Production-Ready Guide to Grafana Tempo on Kubernetes

A production Grafana Tempo setup on Kubernetes: S3-backed storage via IRSA, independent scaling per component, and metrics-generator for automatic RED metrics.

2025-10-01

KubernetesGrafana MimirPrometheus

A Production-Ready Guide to Grafana Mimir on Kubernetes

Moving past single-node Prometheus limits with Grafana Mimir's microservices architecture — component split, S3 buckets via IRSA, and the multi-tenant gotcha that trips people up.

2025-09-30

TerraformHelmKubernetes

How Terraform's New Helm Flags Prevent Kubernetes Management Chaos

What Terraform's take_ownership and upgrade_install Helm provider flags actually do, and how to tell a real deploy risk from a harmless state-schema refresh in the plan output.

2025-11-07

KubernetesAWS ALBNGINX

Zero Downtime Deployments with Kubernetes Using ALB and NGINX

Why AWS ALB alone drops traffic during Kubernetes rolling updates, and how inserting an NGINX Ingress layer plus the right grace-period tuning gets to 100% availability.

2025-02-27

SQLiteMonitoringPerformance

Reducing Uptime Kuma's Database from 5GB to 2.7MB — a 1,850x Cleanup

Diagnosing and fixing an unbounded SQLite growth problem in Uptime Kuma: from a 5GB database and a 10-30s dashboard load to 2.7MB and 1-2 seconds.

2026-01-16

Looking for the rest? View all articles on Medium →