Optimistic Concurrency and Other controller-runtime Gotchas
March 18, 2026
#kubernetes #goThe Kubernetes API uses optimistic concurrency control. If you don’t understand resourceVersion, your controller will fight itself.
March 18, 2026
#kubernetes #goThe Kubernetes API uses optimistic concurrency control. If you don’t understand resourceVersion, your controller will fight itself.
February 10, 2026
#kubernetes #goThe controller-runtime cache can list resources by namespace and name. Custom indices let you query by any field.
Read MoreJanuary 14, 2026
#kubernetes #goYou run two replicas of your controller for availability. Without leader election, both try to reconcile the same resources at the same time.
Read MoreDecember 1, 2025
#kubernetes #goDeletion in Kubernetes is instant — unless a finalizer says otherwise. Here’s how to run cleanup logic before a resource disappears.
Read MoreOctober 7, 2025
#kubernetes #goYour controller creates a Deployment. The Deployment changes. How does your controller find out? Owner references and secondary watches.
Read MoreSeptember 22, 2025
#kubernetes #goSpec is what the user wants. Status is what the controller observes. Keeping them separate is how you avoid infinite reconcile loops.
Read MoreAugust 12, 2025
#kubernetes #goYour controller doesn’t need to reconcile every change. Predicates let you filter out the noise.
Read MoreJune 3, 2025
#kubernetes #goKubernetes ships with Pods, Deployments, and Services. CRDs let you teach it your own types.
Read MoreMay 20, 2025
#kubernetes #goThe reconciler pattern makes sense in theory. Here’s what it looks like in code.
Read MoreApril 8, 2025
#kubernetes #goA Kubernetes controller doesn’t respond to events — it reconciles state. That distinction changes how you think about everything.
Read MoreDecember 3, 2024
#goGo 1.23 made functions valid range targets. You can now iterate over anything — not just slices, maps, and channels.
Read MoreSeptember 10, 2024
#goGo 1.21 added log/slog to the standard library. Structured logging without a dependency.
July 16, 2024
#go #securityA reverse shell is one of the simplest networking programs you can write. It’s also one of the most instructive — you’ll touch TCP, process execution, I/O piping, and terminal handling in under 100 lines.
Read MoreMay 8, 2024
#goGo errors are values. Wrapping them adds context without losing the original cause.
Read MoreMarch 12, 2024
#goGo 1.22 added path parameters to net/http. You no longer need a third-party router for basic routing.
March 14, 2023
#gcp #databases #devopsYou need to hit a Cloud SQL instance from your laptop. It’s in a private VPC with no public IP. Here’s how to get there.
Read MoreNovember 8, 2022
#gcp #devopsBoth run containers. The question is how much of the infrastructure you want to own.
Read MoreAugust 16, 2022
#databases #devopsOpening a database connection is expensive. Opening one per request is a problem. Opening one per query is a disaster.
Read MoreMay 10, 2022
#kubernetes #devopsRequests tell the scheduler where to place your pod. Limits tell the runtime when to stop it.
Read MoreFebruary 8, 2022
#databases #goFour tools, four approaches. Here’s how golang-migrate, goose, sqlc, and GORM compare — and when to use each.
Read MoreNovember 3, 2021
#goGo doesn’t ship with a queue. Here’s how to build one that fits your use case.
Read MoreSeptember 14, 2021
#kubernetes #devopsA pod that’s running isn’t necessarily a pod that’s ready. Kubernetes uses two separate probes to tell the difference.
Read MoreJune 22, 2021
#databasesTransactions are how databases keep their promises. Isolation levels determine how strict those promises are.
Read MoreJuly 22, 2020
#docker #devopsEvery instruction in your Dockerfile creates a layer. Change one, and everything after it rebuilds. This isn’t a bug — it’s the mechanism. Learn to use it.
Read MoreJuly 14, 2020
#gcp #security #devopsHow to stop giving everything Owner and actually mean it.
Read MoreApril 8, 2020
#kubernetes #security #devopsMost people ignore Kubernetes RBAC until something breaks or something gets compromised. Don’t be that person.
Read MoreOctober 15, 2019
#docker #devopsYour Docker image doesn’t need a compiler in production. Here’s how to leave it behind.
Read MoreJune 18, 2019
#goGoroutines are cheap. Channels are how they talk. Everything else is a pattern built on top of those two ideas.
Read More