If you’ve been manually kubectl apply-ing your manifests like a caveman, or trusting a fragile Jenkins pipeline to push changes to your cluster, we need to talk.

Today I’m diving into ArgoCD. If you hang around Kubernetes circles, you’ve heard the name. It’s the poster child for GitOps. But is it actually good, or is it just another CNCF landscape logo to slap on your resume?

At its core, ArgoCD is a Kubernetes controller. It watches a Git repository (your source of truth) and compares it to what is actually running in your cluster (the live state).
If they match? Green checkmarks. Happiness.

If they don’t? It yells at you (or automatically fixes it, if you’re brave).

Unlike traditional CD tools that “push” changes to the cluster, ArgoCD lives inside the cluster and “pulls” changes. It’s a subtle difference that changes everything about security and visibility.

I’ve been running it in production for a while, and here’s the lowdown.


My Lab Configuration

For this test, I used the following: Physical 2 x Raspberry Pi5 2 x Raspberry Pi4 MSI NUC Mini PC 32 Cores 32GB RAM and 250GB NVME Router Dedicated 1GBps Network Switch

Logical 4 (2VMs) Master\Control Plane Nodes -running ubuntu with k3s 4 (2VMs) Worker Nodes -running ubuntu with k3s Proxmox K8s Cluster

Workloads/Services Cert Manager Nginx Prometheus ArgoCD


The Good Stuff (The Advantages)

  1. The “Source of Truth” is Finally Real

With ArgoCD, Git is law. If someone manually tweaks a deployment size in the cluster to fix a bug at 3 AM, ArgoCD detects the “Drift” immediately. The UI shows a diff, and you can sync it back to the Git state with one click. It forces discipline. No more “snowflake” clusters where nobody knows what’s actually running.

  1. The UI is Actually Useful

Kubernetes dashboards are historically… okay. ArgoCD’s UI is fantastic. It visualizes the hierarchy of your resources (Service -> Pod -> ReplicaSet) nicely. Seeing the health status of an entire namespace at a glance is a game-changer for debugging.

  1. Multi-Cluster Management

If you manage fleets of clusters, ArgoCD is a beast. You can have one “Control Plane” Argo instance that deploys apps to 50 other clusters. Combined with ApplicationSets (a feature that lets you template out apps), you can deploy a monitoring stack to 100 clusters by editing a single file.

  1. Sync Waves

This is a lifesaver. You can tell Argo to deploy the Database before the API, and the API before the Frontend, using “Sync Waves”. It respects the health of the previous wave before moving on. It makes complex rollouts boring, which is exactly what you want DevOps to be.

The Not-So-Good Stuff (The Drawbacks)

  1. Secrets Management is Awkward

ArgoCD does not solve the “Secret in Git” problem for you. You can’t just commit a generic Kubernetes Secret to a public repo. You have to bring your own solution, like Bitnami Sealed Secrets, External Secrets Operator, or a plugin like Argo CD Vault Plugin. It adds friction to the setup process.

  1. The Bootstrap Paradox

If ArgoCD manages your cluster via Git, who manages ArgoCD? You eventually end up in a meta-situation where ArgoCD manages itself (an “App of Apps” pattern). It’s cool once it works, but wrapping your head around bootstrapping the initial installation can be a headache for beginners.

  1. It Can Be Resource Hungry

On small clusters, ArgoCD (specifically the repo-server and application-controller) can eat a surprising amount of RAM if you have hundreds of applications. It’s not lightweight like a simple cron job.

The Verdict

Is ArgoCD perfect? No. The learning curve for features like ApplicationSets can be steep, and you’ll spend the first week fighting with YAML indentation and repository credentials.

But once it’s running? I can’t imagine managing Kubernetes without it.

The peace of mind you get from knowing that Git is the absolute state of your infrastructure is worth the setup cost. If you are running Kubernetes in production and you aren’t using GitOps yet, stop what you’re doing and kubectl apply ArgoCD.

Rating

5/5 - tentacles

References

  • Helm Documentation: https://argo-cd.readthedocs.io/en/stable/getting_started/
  • CNCF: https://landscape.cncf.io/?item=app-definition-and-development–continuous-integration-delivery–argo