My Home Server with Kubernetes
It’s true that I run my own server with Kubernetes at home, but what does it actually look like, and what do I test on it? At the beginning, I built an “enterprise” solution that is on the level of large corporations, at least on the surface - I have my own repository for OCI images, my own pipelines in GitHub for creating OCI images, and even my own installation of ArgoCD.
Despite this, when I want to deploy something to Kubernetes, it usually doesn’t take me more than an hour today, even with creating my own image. How do I actually proceed? First of all, I need to build a Dockerfile for the application, which is usually not rocket science - I simply need to create a Dockerfile.
I typically leave the creation of Dockerfiles to AI Perplexity, which I received free for a year as a T-Mobile customer in a promotion. Perplexity conducts complete research, searches the web, and creates something. The result is usually not perfect on the first try, it’s about 80-90 percent there, so I need to refine the query and usually specify the most current versions of products, because it often pulls old versions from the web.
Once I have the Dockerfile, I proceed further. I already have some existing GitHub workflows (which is essentially a CI/CD pipeline) in my private repository, so I just copy and modify them, a matter of minutes. Then I just need to sync everything to GitHub and everything is sent via webhooks to my local GitHub runner, where it compiles and uploads to the repository.
The OCI (or Docker) image is thus essentially ready, and it’s time to deploy to ArgoCD. I already have several projects on ArgoCD, so I copy one as a template and modify it. Usually everything is already solved, from storing secrets in HashiCorp Vault through Kubernetes Secret Operator, to ingress with a custom SSL certificate (which I have deployed in the browser) through deployment, again a matter of a few minutes.
Then I just need to push everything to GitHub again, sync in Argo, reconfigure DNS in Mikrotik, and suddenly I have my own deployed application. Essentially a corporate system, at my home, where I test everything.
Don’t even ask how long it took me to get everything to this state. Yes, if I had to do it again, it would be simple, but years ago I started as a Kubernetes novice, and at home I learned everything and went through blind alleys and problems.