Hey everyone! I've been experimenting with Omni in my home lab and I'm currently exploring different methods for deploying services in my Kubernetes cluster. I've set up MetalLB, Traefik, Cert Manager, nfs-subdir-external-provisioner, and ArgoCD in various ways, but I never seem to be completely satisfied with the deployment strategies I've used. I'm on the lookout for any repositories that provide best practices for Kubernetes that align with the services I'm using. Ideally, I'd love to find a bootstrap playbook that allows me to deploy everything from scratch if that's feasible. One recurring dilemma I face is whether to use Helm charts for everything or to go with a multi-file approach. Just wondering if anyone knows of any good, opinionated examples out there. Thanks!
3 Answers
It sounds like you're trying to bootstrap your cluster setup! I've had success using FluxCD for this. You can manage one or multiple repositories to define the apps and their configurations. Each app can be deployed in various ways (Kustomization, Helm, YAML, etc.). Personally, I usually create a Kustomization for each app that sets it up via a Helm release and then adds any necessary YAML. FluxCD offers features like rollbacks and automated updates, which can be super helpful!
I was trying out Flux last night, but I’m still confused about how to get it to reconcile with Gitea, my source control provider. I’ll dig into Flux more this week, thanks for your insights!
I get what you mean about the lack of an integrated chart configuration on the cluster level. Some folks use DevOps tools to apply their chart configurations. Given my limited budget (ArgoCD can be a memory hog!), I created a Helm wrapper to streamline things. Check it out: github.com/eraldyhq/kubee. If you find something better, let me know!
Kubee looks really interesting! I think I could make good use of it for my Hetzner node. Thanks for the recommendation!
If you're looking for structure, I personally like this repository: github.com/khuedoan/homelab. It’s helped me a lot!
Definitely best practice! Though, I found setting it all up to integrate nicely with Git for automated tests and deployment feedback a bit tough. A Terraform module for setting up Git and Flux would be ideal, honestly.