Udo Müller
Infrastructure, Kubernetes and homelab engineering
I design and run infrastructure: Kubernetes clusters, GitOps pipelines, and the automation that keeps them reproducible.
Topics
- LinuxServices, systemd, filesystems and the everyday plumbing under everything else.0 posts · 5 notes
- KubernetesClusters, workloads, storage and the ways they fail.5 posts · 17 notes
- GitOpsFlux, CI and keeping cluster state in Git.0 posts · 9 notes
- OpenTofuProvisioning with OpenTofu and Terraform.0 posts · 1 note
- AnsibleConfiguration management, roles, collections and awkward targets.1 post · 7 notes
- HomelabThe hardware, network, storage and hosting under it all, plus this site.3 posts · 6 notes
Latest posts
I wanted real-cluster tests for an Ansible collection that drives Talos. On my machine neither Docker nor QEMU would give me a node in maintenance mode, so I tested the rendering instead: fixtures, talosctl validate, determinism and negative cases. What it caught, and the five CI runs it took to go green.
DNS lookups to the Pi-hole address succeeded, but its query log stayed empty. The answers came from the router, whose ad-block feature redirects every port-53 packet on the LAN to its own resolver. How I found out, and the one-line test that would have saved me the afternoon.
A Prometheus volume looked almost full while retentionSize was set. The real story: a single corrupt WAL segment had stopped every checkpoint for weeks, the WAL grew to 48.7 GiB, and the size cap spent the difference by deleting old blocks.
A follow-up on the cluster whose etcd shared one consumer drive with every storage replica. Flush latency fell from 23 ms to 3 ms, a filtered copy shrank a 9.9 GB SQLite database to 3.8 GB in ten minutes, and turning on discard cost more in replica rebuilds than in reboots.
Projects
A three-node Talos Linux cluster on Proxmox, provisioned with OpenTofu and reconciled by FluxCD, running the household DNS, monitoring and internal services.