Colophon
What’s running this site? Hugo with terminal theme. Pretty simple. I write in markdown and magic happens.
How is the site being deployed? Here’s where it gets interesting. This site is deployed in the most unnecessarily complicated Rube Goldberg way possible but I love it.
I’ll expand this explanation in the future, but for now…
- I create a markdown document in my Hugo repository.
- I run a shell script that renders the Hugo site, copies it to a deployment repository alongside some other web apps I host, checks the code into git and syncs up to a private Github repository.
- The shell script waits while a Github action picks up the change and packages the static site in a nginx docker image and moves the image to Dockerhub.
- The shell script triggers ArgoCD to grab the new docker image and deploy it to my local kubernetes cluster. I have four nodes in the cluster so four pods are created behind the k8s service and ingress.
- Cloudflare proxies back to my local cluster to help limit traffic.
Excessive! Unnecessary! The above is not a workflow I’d suggest for anyone wanting to publish a simple blog, I do it for the love of the game.
One area I’d like to improve is local load balancing. There’s a few options but they all end up relying on a single server to proxy the traffic. My web traffic is served by any of the nodes in the k8s cluster, which works fine but one of these days I’ll set up something like MetalLB to make it even more complex. Figuring out how to ssl everything in my internal and external network services was the last big project I pulled off, I’m going to give it a few weeks before I do another big one.
If any of the above interests you, I learned an awful lot from Youtube “homelab” videos. I love cloud services and strongly believe in them for “real” work but I’m a hardware geek and can’t pass up turning a pile of old machines into an extensive cluster. Your mileage may vary.