coredns/dynapi v0.1.0: an HTTP API for CoreDNS records, 8 years later

tl;dr coredns/dynapi v0.1.0 is out, published on 2026-10-01. It is an external CoreDNS plugin. Applications read, replace and delete A and AAAA record sets through a JSON HTTP API. The idea started as coredns/coredns#1822. I opened that PR on 2018-05-20. It was closed on 2018-09-29, when the coredns/dynapi repository was created. That repository stayed empty for eight years. The plugin in v0.1.0 is a new design, not a port of the old code. Why I needed it At SumUp we had what felt like an amazing idea: build our own take on ArgoCD. It was a Kubernetes-based deployment system for on-demand dev environments, and it ran on bare metal instances. It worked. ...

October 2, 2026 · 10 min

Writing a Kubernetes Cloud Controller Manager: Bridging Your Infra to Kubernetes

A Cloud Controller Manager is a bridge. On one side: a Kubernetes cluster that thinks in Nodes, Services, and Routes. On the other: whatever actually runs your machines and network - a hyperscaler like AWS, GCP, or Azure, or just as often a private cloud, a colocated rack, or a home lab. The CCM’s whole job is translation - when a Node joins, ask the infrastructure what it knows about that machine and translate it onto the Node object; when a Service wants a load balancer, go create one and wire the ingress IP back into status. Without it, kubectl get nodes never gets a region label and type: LoadBalancer never gets an IP - Kubernetes has no idea any of that infrastructure exists. ...

August 6, 2026 · 27 min

Writing a Kubernetes CSI Driver: Controller and Node from Scratch

Kubernetes storage is one of those areas that looks simple from the outside — you create a PersistentVolumeClaim, a pod mounts it, done. But the moment you need to integrate your own storage backend, you’re staring at the Container Storage Interface spec, sidecar containers you’ve never heard of, and gRPC services that have to be wired together just right. I had the pleasure of writing and contributing to a production-grade CSI driver end-to-end. This post covers everything I wish I had in one place: what CSI actually is, how Kubernetes orchestrates it, and how to implement all three services in Go. ...

April 24, 2026 · 15 min

Practically, Go 1.25's Container-Aware GOMAXPROCS: What You Need to Know

Go 1.25 just dropped with expected changes to GOMAXPROCS, which significantly change how Go applications behave in containerized environments. The runtime now automatically detects and respects container CPU limits when setting GOMAXPROCS. This isn’t just a minor improvement—it’s a shift that may dramatically improve performance for millions of containerized Go applications. And this isn’t the only amazing change, but this is the one I’ll focus on in this post. The Problem That Plagued Go for Years Before Go 1.25, there was a fundamental mismatch between Go’s runtime and containerized environments: ...

January 13, 2025 · 13 min