Series: Kubernetes at home
Kubernetes at home - Part 1: The hardware - January 02, 2021
- Kubernetes at home - Part 2: The install - January 05, 2021
- Kubernetes at home - Part 3: HAProxy Ingress - January 05, 2021
- Kubernetes at home - Part 4: DNS and a certificate with HAProxy Ingress - January 07, 2021
- Kubernetes at home - Part 5: Keycloak for authentication - January 16, 2021
- Kubernetes at home - Part 6: Keycloak authentication and Azure Active Directory - January 17, 2021
- Kubernetes at home - Part 7: Grafana, Prometheus, and the beginnings of monitoring - January 26, 2021
- Kubernetes at home - Part 8: MinIO initialization - March 01, 2021
- Kubernetes at home - Part 9: Minecraft World0 - April 24, 2021
- Kubernetes at home - Part 10: Wiping the drives - May 09, 2021
- Kubernetes at home - Part 11: Trying Harvester and Rancher on the bare metal server - May 29, 2021
- Kubernetes at home - Part 12: Proxmox at home - December 23, 2021
Kubernetes at home - Part 1: The hardware
A lot of my projects at home start with the phrase “because I can” or “I want to see what happens”. As it turns out, I actually have a reason this time: because I want to be in control of some infrastructure and environment. And “because I can”. Having gotten that justification out of the way, here’s a quick catch-up to where I am.
Some history
In late 2019, I was running a couple Raspberry Pis as an easy Kubernetes cluster with MicroK8s. This image clearly shows how much organization I put into it.
During early 2020, I treated these Raspberry Pis as experimental test machines. I kept taking apart the cluster, trying something new like maybe a new distro, and then putting it back together. I didn’t run any essential services on them which didn’t translate to much focus on maintenance or on sustaining it.
With all this experimentation, I kept coming back to an obsession with certificates. I tried once or twice to create my own personal home certificate authority. All of these attempts at having my own certificate authority made some progress, but more progress was made with annoying myself. I quickly realized that I didn’t want to host a certificate authority if I can help it.
Eventually, I dropped most attempts at this and started accepting a problem with certificates on my home network with self-hosted services, especially since I didn’t want to pay for a certificate. After this acceptance, I started experimenting with different pieces of Kubernetes but didn’t make a lot of noteworthy progress.
The current generation
A few months ago, I decided that I wanted to run some heavy workloads and more databases in Kubernetes, so I started looking at some new hardware. After a few holiday sales, I ended up with some quite solid desktop components in a Fractal Node 804 case sitting underneath a cabinet in the living room.
The hardware choices were mostly based on what I could find cheap. The exception is that the sale on the AMD Ryzen 5 3600 CPU was not much of a discount. Also, I don’t like a lot of ambient hardware noise and so I did as best as possible to minimize that with a passively cooled GPU and quiet fans. A GPU isn’t strictly necessary, but I wanted one anyway for ease of access.
I did get a cheap M.2 drive as a boot drive and to run Kubernetes from, and then a large capacity cheaper SSD to serve as local persistent storage which I then backup to network storage every once in a while. The brand of drives doesn’t seem to matter much.
The intent
My stated reason above was because I want to be in control of some infrastructure and environment. To elaborate on that, I want to build Software-as-a-Service (SaaS) products. By controlling my hardware locally, any software dependency will become a clearly obvious and visible acceptance. Not to mention that by purchasing hardware, I have effectively purchased reserved space. A future retrospective will be very interesting to see whether I utilized the hardware fully and saved money compared to a public cloud offering.
Summary
Let’s see how many blog posts I can go down the road of self-hosted Kubernetes for a software developer.
Series: Kubernetes at home
Kubernetes at home - Part 1: The hardware - January 02, 2021
- Kubernetes at home - Part 2: The install - January 05, 2021
- Kubernetes at home - Part 3: HAProxy Ingress - January 05, 2021
- Kubernetes at home - Part 4: DNS and a certificate with HAProxy Ingress - January 07, 2021
- Kubernetes at home - Part 5: Keycloak for authentication - January 16, 2021
- Kubernetes at home - Part 6: Keycloak authentication and Azure Active Directory - January 17, 2021
- Kubernetes at home - Part 7: Grafana, Prometheus, and the beginnings of monitoring - January 26, 2021
- Kubernetes at home - Part 8: MinIO initialization - March 01, 2021
- Kubernetes at home - Part 9: Minecraft World0 - April 24, 2021
- Kubernetes at home - Part 10: Wiping the drives - May 09, 2021
- Kubernetes at home - Part 11: Trying Harvester and Rancher on the bare metal server - May 29, 2021
- Kubernetes at home - Part 12: Proxmox at home - December 23, 2021