Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

CI/CD and GitOps

ArgoCD Consulting: Run GitOps on Kubernetes With Confidence

ArgoCD is a declarative GitOps continuous delivery tool for Kubernetes that compares the state in git with the live cluster and syncs the difference. We design repository layout, ApplicationSets, SSO and RBAC, sync and drift policies, and its own high availability and upgrades, so deployments are auditable and reversible.

Key takeaways

  • ArgoCD makes git the source of truth for Kubernetes and gives teams a UI to see sync status, diffs and health of every application.
  • Repository structure and promotion flow matter more than the tool. Decide how environments, clusters and teams map to directories and branches first.
  • ApplicationSets generate applications for many clusters or services from one template, which is how ArgoCD scales to a fleet.
  • Production use needs SSO, project-level RBAC, restricted cluster permissions and monitoring of ArgoCD itself.
  • Secrets do not belong in git in plain text; pair ArgoCD with an external secrets or sealed secrets approach.

What teams use ArgoCD for

Application delivery from git

Helm charts, Kustomize overlays or plain manifests are synced to clusters from a repository, with diff and rollback history.

Multi-cluster and multi-environment fleets

ApplicationSets stamp out the same applications across dev, staging and production clusters with per-environment values.

Platform add-on management

Ingress controllers, certificate managers and observability agents are installed and upgraded through reviewed pull requests.

Self-service for product teams

Projects, RBAC and namespaces let teams deploy their own services without receiving cluster-admin access.

Drift detection and audit

Out-of-sync resources are flagged or self-healed, and every change is traceable to a commit and an author.

What ArgoCD is and why teams adopt it

ArgoCD is a Kubernetes controller that implements GitOps. You describe what should run in a git repository as Helm charts, Kustomize overlays or plain manifests. ArgoCD compares that desired state with the live cluster and reports the difference as an Application, which is either in sync or out of sync. It can apply the change automatically or wait for a human.

Teams adopt it for four reasons: every change has a commit and an author, rollback is a revert, cluster credentials stay inside the cluster rather than in CI, and the web UI makes the state of every application visible to developers who do not live in kubectl. As ArgoCD consulting specialists, we see it succeed when the surrounding design is right, and stall when it is installed and left alone. For the definition, see our ArgoCD glossary entry.

How we run ArgoCD in production

Repository model first

We settle structure before installing anything. The usual choice is a separate configuration repository from application source, with a directory per environment and a clear promotion path. Our guidance is detailed in GitOps repository structure design and multi-environment promotion with Kustomize.

ApplicationSets for scale

Writing one Application per service per cluster does not scale. An ApplicationSet generates Applications from a template, driven by a list, a git directory structure or the clusters you have registered.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: platform-addons
  namespace: argocd
spec:
  generators:
    - clusters:
        selector:
          matchLabels:
            env: production
  template:
    metadata:
      name: "ingress-{{name}}"
    spec:
      project: platform
      source:
        repoURL: https://github.com/your-org/platform-config.git
        targetRevision: main
        path: addons/ingress
      destination:
        server: "{{server}}"
        namespace: ingress
      syncPolicy:
        syncOptions: [CreateNamespace=true]

New clusters labelled env: production receive the ingress add-on automatically. See ApplicationSets for multi-cluster for the full pattern.

Sync policy by environment

Automated sync with self-heal suits development and staging. In production we often keep sync manual or use sync windows, and enable pruning deliberately, because auto-pruning a mistaken deletion removes real resources. See drift detection and sync policies.

Rendering, health and ignored differences

ArgoCD renders Helm charts and Kustomize overlays in its repository server, then compares the result with live objects. Some fields are legitimately changed by other controllers, such as replica counts managed by an autoscaler or annotations injected by a service mesh. Left alone, these show as permanently out of sync and teach people to ignore the dashboard. We add targeted ignore rules for those fields only, and use resource health checks so an application is not reported healthy until its rollout has actually completed. The aim is a status colour that engineers trust.

Security and access

  • SSO, not the admin account. Connect your identity provider and disable the built-in admin once SSO works.
  • Projects as boundaries. An AppProject restricts which repositories, clusters and namespaces a team can use, and which resource kinds they may create.
  • RBAC mapped to groups. Developers can view and sync their applications, platform engineers manage the rest. Details in GitOps RBAC and access control.
  • Scoped cluster access. Avoid giving ArgoCD cluster-admin on every cluster when namespace-scoped permissions will do.
  • Secrets. Use External Secrets Operator or Sealed Secrets rather than committing credentials. See Sealed Secrets and External Secrets Operator.
  • Repository credentials. Use read-only deploy keys or app tokens per repository.

Cost and capacity

ArgoCD is open source, so cost is the cluster resources and the people time. Its main components are the API server, repository server, application controller and Redis. The repository server renders Helm and Kustomize and is often the first to need more memory; the application controller scales with the number of resources it watches. For large fleets we shard the controller, tune refresh intervals and avoid watching resources that churn constantly. A central ArgoCD managing many clusters is convenient but makes it a high-value target and a single point of coordination, so some organisations run one instance per environment tier.

Day-2 operations

  • Upgrade through git, one minor version at a time, in a lower environment first, reading the release notes for changes.
  • Monitor controller health, sync failures and reconciliation latency through Prometheus and Grafana.
  • Notify teams on sync failures and deployments. See GitOps deployment notifications.
  • Back up by keeping all ArgoCD configuration in git; recovery is a reinstall.
  • Progressive delivery with Argo Rollouts adds canary and blue-green releases, covered in progressive delivery.

Failure modes we avoid

ProblemCauseFix
Perpetual OutOfSyncControllers mutating fieldsIgnore differences for those fields
Accidental mass deletionAuto-prune with a bad commitManual prune in production, sync windows
Slow syncsOverloaded repository serverMore resources, manifest caching
Team escalationBroad default projectDedicated AppProjects
Plaintext secrets in gitNo secrets strategyExternal or sealed secrets

When not to use ArgoCD, and how it compares

For a single small cluster with one team, a pipeline running helm upgrade may be enough for now. If you want lean controllers, tight Helm and OCI integration, and no UI, look at Flux. We compare them directly in our installation guide for both. ArgoCD pairs naturally with Helm, and CI tools such as GitHub Actions build the images it deploys. A worked example is in our GitOps with ArgoCD on EKS tutorial.

Ready to move to GitOps? See the GitOps service or talk to us.

Official documentation: argo-cd.readthedocs.io

How we work with ArgoCD

  1. 01

    Assess clusters and delivery today

    We map clusters, environments, teams, current deploy tooling and compliance needs, and agree what moves under GitOps first.

  2. 02

    Design the repository model

    We decide app-of-apps or ApplicationSets, environment layout, config versus source repositories and the promotion path.

  3. 03

    Install and bootstrap from git

    ArgoCD is installed with high availability suitable to your scale, then adopted into git so it manages its own configuration.

  4. 04

    Wire access and security

    SSO, project boundaries, RBAC policy, repository credentials and cluster registration are configured with least privilege.

  5. 05

    Set sync and secret policies

    Auto-sync, pruning, self-heal, sync windows and a secrets approach are chosen per environment, conservative in production.

  6. 06

    Operate and hand over

    Monitoring, notifications, upgrade runbooks and break-glass procedures are documented and rehearsed with your team.

ArgoCD compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
ArgoCDArgoCD is a declarative GitOps continuous delivery tool for Kubernetes that compares the state in git with the live cluster and syncs the difference.
FluxChoose it if you prefer small composable controllers, native Kubernetes resources and CLI-driven workflows, and do not need a built-in UI for developers.
Pipeline-driven deploysChoose helm or kubectl from CI for a single small cluster where GitOps overhead is not yet justified. Plan to move as environments multiply.
Managed GitOps offeringsChoose a cloud provider's managed Flux or GitOps extension if you want less control plane to run and accept its constraints.
SpinnakerChoose it for complex multi-cloud release orchestration with sophisticated pipelines, accepting a heavier platform to operate.

Tools we use alongside ArgoCD

Argo RolloutsApplicationSetArgo CD NotificationsHelmKustomizeExternal Secrets OperatorSealed SecretsDexPrometheusGrafanaGitHubGitLab

Frequently asked questions

What is ArgoCD used for?
ArgoCD continuously deploys applications to Kubernetes from a git repository. It watches the repository and the cluster, shows any difference, and applies changes either automatically or on approval. Teams use it for auditable deployments, easy rollbacks, drift detection and managing many clusters from declarative configuration.
How is ArgoCD different from a CI pipeline deploying with kubectl?
A pipeline pushes changes once and then forgets, whereas ArgoCD continuously reconciles. It needs credentials only inside the cluster instead of in CI, detects manual drift, and presents live health and diffs. CI still builds and tests; ArgoCD takes over from the point of deployment.
ArgoCD or Flux: which should we choose?
Both are mature CNCF graduated projects. ArgoCD offers a strong UI, application-centric views and a central control plane, which suits teams who want visibility. Flux is a set of lean controllers that suits platform teams comfortable in the CLI. We compare them against your team and cluster count before recommending.
How do you manage secrets with ArgoCD?
Never commit plain secrets. Common patterns are the External Secrets Operator pulling values from a cloud secrets manager, or Sealed Secrets storing encrypted values in git. We pick the one that fits your cloud and rotation needs, and keep ArgoCD's own access to secrets minimal.
Is ArgoCD safe for production?
Yes, with proper setup. Run it in high availability mode, authenticate through SSO, disable the default admin account, use projects to restrict what each team can deploy and where, limit its cluster permissions, and monitor it. Test upgrades in a non-production cluster before touching production.
What happens if ArgoCD goes down?
Running workloads are unaffected, because ArgoCD only reconciles changes. While it is down, new commits are not applied and drift is not corrected. Since its configuration lives in git, it can be reinstalled and resume. We alert on its health so an outage does not go unnoticed.

Talk to an engineer about ArgoCD

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.