Skip to main content

Overview

Argo CD operates on GitOps principles, treating Git as the single source of truth for your Kubernetes application state. This page explains the core concepts you need to understand to effectively use Argo CD.

Application

An Application is a group of Kubernetes resources defined by a manifest in a Git repository. It’s implemented as a Custom Resource Definition (CRD) in Kubernetes.

Application Structure

An Application resource defines:
  • Source: Where to find the application manifests (Git repo, Helm chart, etc.)
  • Destination: Which cluster and namespace to deploy to
  • Sync Policy: How and when to synchronize

Application Source Type

The Application Source Type (also called Tool) determines how Argo CD builds your application manifests:

Plain Kubernetes Manifests

Raw YAML/JSON files in a directory

Helm

Helm charts from Git repos or Helm registries

Kustomize

Kustomize overlays and bases

Jsonnet

Jsonnet files with external variables
You can also use Configuration Management Plugins (CMPs) to support custom tools like Ksonnet, Kapitan, or your own templating solutions.

Target State vs Live State

Target State

The target state is the desired state of your application as represented by files in a Git repository. This is what your application should look like according to Git.

Live State

The live state is the actual state of your application running in the Kubernetes cluster. This is what your application currently looks like.

Sync Status

Sync status indicates whether the live state matches the target state. It answers: “Is the deployed application the same as Git says it should be?”

Synced

Live state matches target state

OutOfSync

Live state differs from target state

Unknown

Unable to determine sync status

Viewing Sync Status

Sync Operation

A sync is the process of making an application move to its target state. It applies changes from Git to the Kubernetes cluster.

Manual Sync

Automated Sync

Configure automatic synchronization when Git changes are detected:

Sync Operation Status

Indicates whether a sync operation succeeded or failed:
  • Succeeded: All resources synchronized successfully
  • Failed: One or more resources failed to sync
  • Running: Sync is currently in progress

Refresh

Refresh compares the latest code in Git with the live state in the cluster to figure out what’s different. It doesn’t make changes—it just detects drift.
Argo CD automatically refreshes applications every 3 minutes by default. You can configure this interval in the argocd-cm ConfigMap.

Health Status

Health indicates the operational state of your application: “Is it running correctly? Can it serve requests?”

Healthy

All resources are healthy and ready

Progressing

Resources are being created or updated

Degraded

One or more resources are unhealthy

Suspended

Application is suspended (e.g., CronJob)

Missing

Resources don’t exist in the cluster

Unknown

Health status cannot be determined

Health Assessment

Argo CD determines health based on resource type: Deployment: All replicas are ready
Service: Endpoints exist (for non-headless services) Pod: All containers running and ready Job: Job completed successfully
You can define custom health checks for CRDs in the argocd-cm ConfigMap:

Project

A Project provides logical grouping of applications and enables:
  • Multi-tenancy: Restrict which repositories and clusters teams can use
  • RBAC: Define who can deploy what and where
  • Resource whitelisting: Control which Kubernetes resources can be deployed

Configuration Management Plugin

A Configuration Management Plugin (CMP) is a custom tool that generates Kubernetes manifests. Use CMPs when built-in tools (Helm, Kustomize, etc.) don’t meet your needs. Example use cases:
  • Custom templating engines
  • Security scanning integration
  • Dynamic manifest generation
  • Proprietary configuration tools

Summary

GitOps Workflow

  1. Define your desired state in Git (target state)
  2. Refresh to detect differences between Git and cluster (sync status)
  3. Sync to apply changes from Git to cluster
  4. Monitor health status to ensure application is running correctly
  5. Repeat as you make changes to Git

Next Steps

Architecture

Learn how Argo CD components work together

Automated Sync

Enable continuous deployment with auto-sync

Sync Options

Customize sync behavior with advanced options

Resource Hooks

Execute custom logic during sync lifecycle