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 readyCustom Health Checks
Custom Health Checks
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
- Define your desired state in Git (target state)
- Refresh to detect differences between Git and cluster (sync status)
- Sync to apply changes from Git to cluster
- Monitor health status to ensure application is running correctly
- 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