<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on heezy.blog</title><link>https://heezy.blog/tags/kubernetes/</link><description>Recent content in Kubernetes on heezy.blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 14 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://heezy.blog/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Cloudflare on IaC</title><link>https://heezy.blog/posts/cloudflare-iac/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/cloudflare-iac/</guid><description>&lt;p&gt;Everything in the lab is managed as code. FortiGate firewall rules, Proxmox VMs, Kubernetes manifests. Cloudflare was the last holdout. DNS records, tunnel config, and zone settings all lived in the dashboard, clicked into existence and never tracked anywhere. Time to fix that.&lt;/p&gt;</description></item><item><title>Pi-hole on Kubernetes with MetalLB and a Ruckus SSID</title><link>https://heezy.blog/posts/pihole-metallb-ruckus/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/pihole-metallb-ruckus/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚧 UNDER CONSTRUCTION 🚧&lt;/strong&gt;
Switch and Ruckus configuration pending. Screenshots to be added.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pi-hole was already running on the cluster. It worked fine from inside the cluster and via NodePort on weird high ports. The problem was that no actual client device could use it as a DNS server, because DNS clients expect port 53 and NodePort gives you 30054.&lt;/p&gt;
&lt;p&gt;What started as &amp;ldquo;just give Pi-hole a real IP&amp;rdquo; turned into a new VLAN, a new DHCP server, firewall policy changes, switch configuration, and a Ruckus SSID. The usual homelab scope creep.&lt;/p&gt;</description></item><item><title>About This Site</title><link>https://heezy.blog/posts/about-this-site/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/about-this-site/</guid><description>&lt;p&gt;This site is built with &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; using the &lt;a href="https://github.com/panr/hugo-theme-terminal"&gt;Terminal&lt;/a&gt; theme. The Hugo static site is compiled inside a Docker
multi-stage build, bundled into a &lt;a href="https://github.com/linuxserver/docker-swag"&gt;SWAG&lt;/a&gt; container image, pushed to Amazon ECR, and deployed to a MicroK8s cluster
via GitHub Actions. Source content lives in a Git repo and a push to main triggers the full build-and-deploy pipeline
automatically.&lt;/p&gt;</description></item><item><title>Hosting a Blog on Kubernetes Through Cloudflare with Zero Exposed Ports</title><link>https://heezy.blog/posts/swag-cloudflare-blog-hosting/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/swag-cloudflare-blog-hosting/</guid><description>&lt;p&gt;I wanted a blog. Not a WordPress instance, not a hosted platform, not something I pay monthly for. A static site built with Hugo, baked into a container image, served by nginx, tunneled through Cloudflare, running on my Kubernetes cluster at home. No ports exposed to the internet. No public IP pointing at my house. Just a Cloudflare Tunnel and a reverse proxy.&lt;/p&gt;</description></item><item><title>The Heezy: A Homelab That Got Out of Hand</title><link>https://heezy.blog/posts/the-heezy-architecture/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/the-heezy-architecture/</guid><description>&lt;h2 id="contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-even-is-a-heezy"&gt;What Even Is a Heezy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-network"&gt;The Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-kubernetes-cluster"&gt;The Kubernetes Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-runs-on-the-cluster"&gt;What Runs on the Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-dmz"&gt;The DMZ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#monitoring"&gt;Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#dns"&gt;DNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#infrastructure-as-code"&gt;Infrastructure as Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-aws-bootstrap-cdk-first-everything-else-after"&gt;The AWS Bootstrap: CDK First, Everything Else After&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#secrets"&gt;Secrets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#what-id-do-differently"&gt;What I&amp;rsquo;d Do Differently&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heezy.blog/posts/the-heezy-architecture/#the-name"&gt;The Name&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-even-is-a-heezy"&gt;What Even Is a Heezy&lt;/h2&gt;
&lt;p&gt;If you grew up in the early 2000s, you probably remember when Snoop Dogg had everyone adding &amp;ldquo;-izzle&amp;rdquo; to everything. &amp;ldquo;For sheezy&amp;rdquo; was peak vocabulary for a 12-year-old who spent too much time on Counter-Strike and not enough time on homework. &amp;ldquo;Heezy&amp;rdquo; rhymes with &amp;ldquo;easy,&amp;rdquo; which is what I told myself this project would be. It was not easy. But the name stuck, and now my entire infrastructure is named after slang that peaked in 2003. No regrets.&lt;/p&gt;</description></item><item><title>Running 25+ Services on a 5-Node MicroK8s Cluster</title><link>https://heezy.blog/posts/kubernetes-cluster-build-and-operations/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/kubernetes-cluster-build-and-operations/</guid><description>&lt;p&gt;This is the full story of building a MicroK8s cluster from scratch, migrating a Docker Compose stack onto it, and all the things that broke along the way. If you&amp;rsquo;re thinking about running Kubernetes at home for self-hosted services, this is what it actually looks like.&lt;/p&gt;</description></item><item><title>Cheap NVMe, Dead Talos, and How I Ended Up on MicroK8s</title><link>https://heezy.blog/posts/thinkcentre-talos-microk8s/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://heezy.blog/posts/thinkcentre-talos-microk8s/</guid><description>&lt;p&gt;I wanted to experiment with Kubernetes on a budget. The rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Five nodes&lt;/li&gt;
&lt;li&gt;Intel QuickSync-compatible processors for hardware transcoding&lt;/li&gt;
&lt;li&gt;As cheap as possible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found a bulk refurb reseller and bought five Lenovo ThinkCentres off the used market.&lt;/p&gt;</description></item></channel></rss>