Skip to main content

Reconciliation Settings

Reconciliation settings allow you to tune how Argo CD processes application reconciliation. These settings can help prevent resource exhaustion and improve performance in large-scale deployments. All reconciliation settings can be located by navigating to Argo CD → your instance → Settings → Reconciliation Settings.

For more details on high availability and rate limiting, see the Argo CD High Availability documentation.

Bucket Rate Limiting​

Bucket rate limiting uses a simple bucket-based approach to prevent resource spikes when many applications need reconciliation simultaneously.

To enable bucket rate limiting:

  1. Toggle the Enabled switch to ON.

  2. Configure the following settings:

    • Bucket Size: The number of items that can be queued in a single burst (default: 500)
    • Bucket QPS: The number of items that can be queued per second (default: 50)
  3. Click Save.

Item Rate Limiting​

Item rate limiting manages how frequently individual applications can be requeued using exponential backoff. This helps prevent sync loops and controller resource exhaustion.

To enable item rate limiting:

  1. Toggle the Enabled switch to ON.

  2. Configure the following settings:

    • Failure Cooldown: The reset period in milliseconds. Backoff resets if this duration elapses without requeuing (default: 10000ms)
    • Backoff Factor: The multiplier for exponential backoff increases (default: 1.5)
    • Base Delay: The initial backoff value in milliseconds (default: 1ms)
    • Max Delay: The maximum backoff ceiling in milliseconds (default: 1000ms)
  3. Click Save.

Resources​

The Resources section allows you to control which Kubernetes resources Argo CD monitors and reconciles.

Inclusions​

By default, all resource groups/kinds are included. The Inclusions setting allows you to customize the list of included groups/kinds. If specified, only these resources will be monitored.

Exclusions​

Configuration to completely ignore entire classes of resource groups/kinds (optional). Excluding high-volume resources improves performance and memory usage, and reduces load and bandwidth to the Kubernetes API server.

These are globs, so a * will match all values. If you omit groups/kinds/clusters, they will match all groups/kinds/clusters.

note

events.k8s.io and metrics.k8s.io are always excluded by Argo CD, regardless of this setting.

Default exclusions​

When this setting is empty, the instance uses the default exclusions of its Argo CD version. They skip high-volume resources such as Endpoints, EndpointSlice, Lease, cert-manager CertificateRequest, Cilium identities and endpoints, and Kyverno policy reports. The defaults are the resource.exclusions block of the upstream argocd-cm.yaml.

caution

A custom exclusion list replaces the default exclusions instead of adding to them. If you add a single entry, Argo CD starts watching and caching every resource type the defaults skipped, which can noticeably increase the application controller's memory usage.

Adding exclusions while keeping the defaults​

  1. Open the upstream argocd-cm.yaml for your instance's Argo CD version. Use the release tag without the Akuity suffix, for example v3.5.5 for v3.5.5-ak.107: https://github.com/argoproj/argo-cd/blob/v3.5.5/manifests/base/config/argocd-cm.yaml.
  2. Copy the entries of its resource.exclusions block into the Exclusions field.
  3. Add your own entries below them, and click Save.

After upgrading the instance to a new Argo CD version, check that version's argocd-cm.yaml for changes to the defaults.

Example exclusion configuration that keeps the defaults and adds an entry:

# Default exclusions copied from argocd-cm.yaml for your Argo CD version
- apiGroups:
- ''
- discovery.k8s.io
kinds:
- Endpoints
- EndpointSlice
# ... the rest of the default entries ...

# Custom entries
- apiGroups:
- '*.crossplane.io'
kinds:
- ProviderConfigUsage

Compare Options​

The Compare Options section allows you to configure how Argo CD compares resources during reconciliation. This is specified in YAML format.

Available options include:

  • ignoreAggregatedRoles: If set to true, differences caused by aggregated roles in RBAC resources are ignored
  • ignoreResourceStatusField: Disables status field diffing in specified resource types. Options:
    • crd - CustomResourceDefinitions (default)
    • all - All resources
    • none - Disabled

Example configuration:

ignoreAggregatedRoles: true
ignoreResourceStatusField: crd