Skip to content

Manifest Compression

Overview

By default, the application controller stores cached resource manifests as raw in-memory objects. For clusters with a large number of managed resources, this can consume significant memory.

When manifest compression is enabled, cached manifests are serialized and compressed before being stored in memory, significantly reducing memory usage of the application controller.

Prerequisites

  • ArgoCD v3.5+

Enabling Manifest Compression

Add the following key to your argocd-cm ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
data:
  resource.manifest.compression.enabled: "true"

This setting supports hot-reload and changes take effect without restarting the controller. The cluster cache is automatically invalidated and re-synced with the new storage mode.

Configuring Storage and Compression

The serialization format and compression algorithm are configured in the argocd-cm ConfigMap. These settings support hot reload and changes take effect when the cluster cache is invalidated and re-synced.

Storage Format

ConfigMap key Description
resource.manifest.storage Serialization format. Default: json

Supported values: json, msgpack

Compression Algorithm

ConfigMap key Description
resource.manifest.compression Compression algorithm. Default: gzip-bestspeed

Supported values: gzip-bestspeed, gzip-default, s2-encode, s2-encodebetter, zlib, none

Example ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
data:
  resource.manifest.storage: "msgpack"
  resource.manifest.compression: "gzip-bestspeed"

Disabling

Set the configmap key to "false" or remove it:

data:
  resource.manifest.compression.enabled: "false"

When disabled, manifests are stored as raw in-memory objects, identical to the default ArgoCD behavior. The transition is seamless; the cache re-syncs automatically.