Background

If you have read my previous posts, I actively deploy and maintain multiple services for personal use, running from my home, accessible securely from the internet. I use docker-compose to keep all the 40+ services running smoothly. It works fine but is not a perfect way. If one of the containers goes down and becomes unhealthy, I would not know until I tried to access the service, but it was not. While I have a CI/CD pipeline set up with Drone , I cannot use it since there is no good way to deploy docker-compose files. They depend on folder names and other local parameters. If I wanted to scale these services tomorrow, I would have no way to do the same. The docker swarm is not comparable to what I had in mind.

Kubernetes for container orchestration

I was already getting my hands dirty with Kubernetes to explore and see what it can bring to the table. Reading blog posts on innovations happening in this space and seeing people put it to good use made me want to follow that too. I wanted to start with a Certified Kubernetes Application Developer (CKAD) course for a formal introduction. Sidenote, I highly recommend Pluralsight for these as I have found them highly valuable. Going through, I wanted to have a hands-on as well, not just listening to a bunch of people speaking tech.

Migration to Kubernetes

To get going, I planned to start with one service and move it to a multi-master Kubernetes dev cluster I deployed on six PhotonOS virtual machines using k3sup . The critical part of my setup is that it is not accessible from the internet with a Public IP like a traditional deployment. It utilizes Cloudflare’s Tunnels to expose services with a reverse proxy running on my server.

Learn about the issues faced and how I handle this in my next post on building a Kubernetes Operator .