# Flux vs Argo

Wow, its been a while since I last wrote on this blog. These past two weeks I've been consistently posting to LinkedIn thanks to PARA and Zettelkasten; these tools make up my note taking system and as a result I have plenty of "publish ready" posts. So putting that to use, here I am once again attempting this blog thing.

Today I'll be discussing why I chose Flux to manage my production homelab cluster, over ArgoCD. TL;DR: "It forces me to stay in the CLI, its k8s native, its simple".

* * *

## Context

I run a k3s cluster that mirrors real world production infra, on a debian13 proxmoxVM. As of right now I run 4 apps/service in a staging cluster, soon I will deploy the production cluster to another VM. Both clusters will be managed via GitOps from a single monorepo in Github, "git is the source of truth for everything". I do believe this is the modern standard with cloud/multi-cloud, hybrid, and air-gapped infrastructure.

repo: [Homelab](https://github.com/angel-n-chavez/homelab)

## Why Flux

I chose flux because it forces me to stay in the CLI as there is no GUI. It also forces me to think in a "Git Ops" way. Because of this, this also makes it much simpler to deploy and manage. Ccompared to ArgoCD it can be overwhelming with how much you have at your disposal in the GUI. Easily integrated with AKS, and EKS; unsure on GCP k8s platform. Lastly Flux relies on Kustomize, which is what I use extensively in my homelab.

eventually I'll try Argo and use Helm more but for now i think its better in the long term do go this route. Beside Flux has Helm support and its honestly better, IPO!

* * *

## End of the Day

Whether you use Flux or Argo the implacations of Gitops for your infra and team can be very beneficial:

*   easier to collaborate
    
*   can make infra/app changes via pull-requests
    
*   easier to automate
    
*   no `kubectl`
    
*   can set up alerts to ensure correctness and notify when there is divergence
    

The list goes on and its not without its flaws and drawbacks(be ready to read alot of YAML!😂️), however the reality is real world engineering teams adopt this method because it works and it works for this platform engineer!🔒️

Until next time where I'll either be talking about deploying audiobookshelf, or how I am managing backups for my apps data; thanks for stopping by!
