Kubernetes
Kubernetes is a container orchestration platform. It allows for the automatic distribution of containers overs multiple servers. While it may be a bit of overkill for what I need at home for the applications we use, it has provided an excellent learning environment for me to increase my cloud computing skills. As part of the stand-up of Kubernetes, I installed the following services first as a foundation for all my other projects.
- Flannel is the overlay network provider to allow pods to communicate with each other and outside the cluster
- MetalLB provides Load Balancer services on my "bare metal" Kubernetes Cluster
- Nginx Ingress Controller provides load balancing of web traffic to Kubernetes services
- Cert-Manager Provides ACME services for automatic certificates to providers like Let's Encrypt
- Longhorn Longhorn is a lightweight, reliable and easy-to-use distributed block storage system for Kubernetes.
- NFS Storage Classes Provide the ability to create persistent storage for containers to a NFS share.
- Step CA to have an internal ACME certificate provider for projects I do not want to deploy to the internet at large.
I do not cover the actual installation of Kubernetes here as I have found many excellent guides are already available and I don't think I have anything else to add to provide any additional value. For my home lab I leverage Rocky Linux for all my server infrastructure and I found this guide at HowtoForge to be incredibly helpful and I was able to get my cluster up and going very quickly with this.
In addition, I have found that Lens has proven to be a very useful IDE for Kubernetes to help manage my K8s cluster.