I have three production clusters set up: one for the API server, frontend, and databases; another for machine learning inference; and the third for background job processing. Each cluster hosts multiple projects, each with its own namespace. I'm trying to figure out the best way to install ArgoCD for deployment management. Should I go for a central ArgoCD instance to deploy applications from one place, or should I install ArgoCD separately in each cluster, managing applications based on cluster type? I'm curious about how others approach this situation and what your implementation looks like.
5 Answers
We opt for one ArgoCD instance per cluster and manage them all from a single repository. This allows us to make changes in the non-production environment, then merge those PRs to push changes to production. It’s a straightforward approach for managing multiple clusters and keeps things in sync.
If your clusters are tied to different AWS accounts and environments, I’d recommend setting up one ArgoCD per environment. Otherwise, managing multiple instances can get a bit annoying, even if it's not the hardest thing ever. Just having one can simplify the overall process.
A central ArgoCD can be a bit tricky, especially if you’re following strict GitOps principles, but it definitely pays off in the long run if managed properly.
I lean towards a single ArgoCD setup too. You can refine your projects and configure RBAC to control access. Integrating with Keycloak for authentication also simplifies user management.
I've found that using one ArgoCD instance works well for this scenario. You can set it up to handle everything by organizing your projects with a staging concept and labeling your clusters. This way, management is centralized, which makes it easier to oversee deployments across your environments.
Related Questions
How To Get Your Domain Unblocked From Facebook
How To Find A String In a Directory of Files Using Linux