Multi-Cluster Deployment Using Argo CD & GitOps: A Scalable DevOps Strategy

akash rawatakash rawat
3 min read

Managing multiple Kubernetes clusters can become overwhelming fast — especially when you’re trying to ensure consistency, security, and scalability across environments. That’s where GitOps and Argo CD step in as your DevOps sidekicks.

In this post, you’ll learn how to:

  • Deploy applications to multiple Kubernetes clusters using Argo CD

  • Use Git as the source of truth

  • Understand why Argo CD is preferred over traditional CI/CD tools for this use case

What You Need Before Starting

  • At least two Kubernetes clusters (on EKS, GKE, AKS, or even Minikube/kind for testing)

  • kubectl and Kubeconfigs for all clusters

  • Argo CD installed (we’ll walk through this)

  • A Git repository containing your Kubernetes manifests or Helm charts

Why Argo CD?

✅ Declarative & Git-Centric

Argo CD follows the GitOps model. Everything — your deployment configs, service definitions, or Helm values — lives in Git. You don’t push changes to the cluster; Argo CD pulls them from Git, ensuring the cluster always reflects the Git state.

✅ Multi-Cluster Friendly

Argo CD supports deploying to multiple clusters from a single control plane. You can manage dev, staging, and prod clusters from one place, reducing tool sprawl.

✅ Visual UI & RBAC

A powerful web UI gives you full visibility into what’s deployed where. And with fine-grained RBAC, you can control who can deploy what and where.

✅ Drift Detection

If someone manually changes something in a cluster, Argo CD will detect it and can optionally auto-revert it to match the Git state.

Step-by-Step: Multi-Cluster Deployment with Argo CD

Pick one cluster to act as your Argo CD control plane.

1️⃣ Install Argo CD on a Management Cluster

kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Once deployed, access Argo CD UI:

kubectl port-forward svc/argocd-server -n argocd 8080:443

kubectl port-forward svc/argocd-server -n argocd 8080:443

Visit https://localhost:8080 and log in with:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

2️⃣ Add Target Clusters to Argo CD

Assuming you already have context access to both clusters:

argocd login localhost:8080

argocd cluster add argocd cluster add <context-name-for-cluster-a>

add argocd cluster add <context-name-for-cluster-b>

argocd cluster list

4️⃣ Create Argo CD Applications

You can define these as YAML (Application CRDs) or through the UI.

Here’s an example of two apps from the CLI:

🔄 Automation & GitOps Flow

Once set up:

Developers push changes to Git

  • Argo CD automatically syncs the changes to the correct cluster

  • If someone tampers with the live environment, Argo CD detects drift and fixes it

📊 Real-World Use Cases

  • Isolate environments (dev, stage, prod) across different clusters

  • Blue/green or canary deployments across clusters

  • Multi-tenant apps running on different clusters

  • Centralized control for distributed teams

0
Subscribe to my newsletter

Read articles from akash rawat directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

akash rawat
akash rawat