Skip to main content

Overview

Argo CD applications, projects, and settings can be defined declaratively using Kubernetes manifests. These can be applied using kubectl apply without touching the argocd CLI tool.
All Argo CD resources, including Application and AppProject specs, must be installed in the Argo CD namespace (by default argocd).

Configuration Resources

Atomic Configuration

These ConfigMaps and Secrets have a single supported resource name per type:
ConfigMap resources must be annotated with the label app.kubernetes.io/part-of: argocd for Argo CD to use them.

Multiple Configuration Objects

Application and project names are unique within an Argo CD installation.

Applications

The Application CRD represents a deployed application instance. It is defined by:
  • source: Reference to desired state in Git (repository, revision, path)
  • destination: Target cluster and namespace

Basic Application

The namespace must match the namespace of your Argo CD instance (typically argocd).

Helm Application

For Helm repositories, use chart instead of path:

Cascading Deletion

Without the finalizer, deleting an Application won’t delete its managed resources:

Sync Policy

Configure automated sync:

Projects

The AppProject CRD defines a logical grouping of applications with:
  • sourceRepos: Allowed Git repositories
  • destinations: Allowed clusters and namespaces
  • roles: RBAC roles for project access
Projects that can deploy to the Argo CD namespace grant admin-level access. Carefully restrict RBAC access to such projects.

Repositories

Repository credentials are stored in Secrets:

HTTPS Repository

SSH Repository

Clusters

Cluster credentials are stored in Secrets:

General Configuration

The argocd-cm ConfigMap contains general settings:

RBAC Configuration

The argocd-rbac-cm ConfigMap defines RBAC policies:

App of Apps Pattern

Create an application that creates other applications:
The apps directory contains multiple Application manifests that will be created.

Best Practices

Version Control

Store all declarative configurations in Git for auditability and GitOps workflows.

Use Finalizers

Always include the resources-finalizer for proper cascading deletion of application resources.

Project Scoping

Use AppProjects to implement multi-tenancy and restrict resource access.

Automated Sync

Configure sync policies for automated deployment and self-healing capabilities.