Skip to main content

Overview

Argo CD natively supports Helm, Jsonnet, and Kustomize. For other config management tools or unsupported features, you can create Config Management Plugins (CMPs). The repo server delegates manifest building to plugins when configured correctly.
Security ConsiderationsPlugins are granted trust in the Argo CD system. Administrators should:
  • Only install plugins from trusted sources
  • Audit plugins for security risks
  • Implement plugins securely with proper input sanitization

Plugin Installation

Sidecar Architecture

Plugins run as sidecars to the repo-server, providing isolation and flexibility.
1

Write Plugin Configuration

Create a ConfigManagementPlugin manifest:
While this looks like a Kubernetes object, it’s not a custom resource—it just follows Kubernetes-style conventions.
2

Place Configuration in Sidecar

The plugin config must be at /home/argocd/cmp-server/config/plugin.yaml.Option 1: Bake into Image
Option 2: Mount from ConfigMap
3

Register Plugin Sidecar

Patch argocd-repo-server deployment:
Critical Requirements:
  1. Use /var/run/argocd/argocd-cmp-server as entrypoint
  2. Run as user 999
  3. Config file at /home/argocd/cmp-server/config/plugin.yaml
  4. Use separate /tmp volume (not shared with repo-server)

Plugin Configuration

Discovery Rules

Plugins use discovery rules to match Applications:
Uses filepath.Glob pattern matching.
If discovery config is omitted, the plugin won’t match any Application automatically but can still be invoked explicitly by name.

Generate Command

The generate command must print valid Kubernetes YAML or JSON to stdout:
Debugging Tips:
  • Write log messages to stderr (always displayed)
  • Avoid printing sensitive information to stderr (visible in UI)
  • Exit with non-zero code on errors

Init Command

Runs before generate, useful for setup:

Parameters

Define UI parameters for your plugin:

Environment Variables

Plugin commands have access to:
Variables from the sidecar container environment.
  • ARGOCD_APP_NAME - Application name
  • ARGOCD_APP_NAMESPACE - Application namespace
  • ARGOCD_APP_REVISION - Git revision
  • ARGOCD_APP_SOURCE_REPO_URL - Repository URL
  • ARGOCD_APP_SOURCE_PATH - Path in repository
  • KUBE_VERSION - Target Kubernetes version
  • KUBE_API_VERSIONS - Available API versions
User-supplied variables (prefixed with ARGOCD_ENV_):
Available as $ARGOCD_ENV_FOO
Available as JSON in ARGOCD_APP_PARAMETERS and as individual env vars:
Results in:
  • PARAM_VALUES_FILES_0=values-dev.yaml
  • PARAM_IMAGE_TAG=v1.2.3
Sanitize User InputAlways escape user input to prevent malicious input from causing unwanted behavior.

Using Plugins in Applications

Auto-Discovery

Explicit Plugin Name

Advanced Configuration

Preserve File Mode

Only enable if you trust the plugin—executable permissions could be a security risk.

Provide Git Credentials

Enable only for trusted plugins—credentials used to clone the source repo will be shared.
Credentials are provided via Git’s ASKPASS method through a socket shared between containers.

Timeout Configuration

CMP commands respect timeouts:
  1. server.repo.server.timeout.seconds in argocd-cmd-params-cm (default: 60s)
  2. ARGOCD_EXEC_TIMEOUT on CMP sidecar (default: 90s)
  3. ARGOCD_EXEC_FATAL_TIMEOUT for forceful termination
If your plugin takes longer than 60s, increase both timeouts:

Debugging

1

Enable Debug Logging

Set --loglevel=info on the sidecar to see stderr output:
2

Check Sidecar Status

Should show 2/2 containers running.
3

View Logs

4

Hard Refresh

CMP errors are cached in Redis. Always do a “Hard Refresh” in the UI when testing.

Example Plugins

Check out the example plugins repository for:
  • Helm with custom value injection
  • Kustomize with additional transformations
  • Custom templating engines
  • Multi-tool pipelines

Migration from argocd-cm

Configuring plugins in argocd-cm ConfigMap was deprecated in v2.4 and removed in v2.8.
1

Convert ConfigMap Entry

Transform your plugin config to the new format (see examples above).
2

Add Discovery Rules

Add discovery rules or update Application manifests with explicit plugin names.
3

Verify Tool Access

Ensure your sidecar image includes all tools your plugin needs.
4

Test and Deploy

Test with a few Applications before migrating all of them.

Next Steps

Custom Health Checks

Add health checks for custom resources

Resource Actions

Define custom actions for resources

UI Extensions

Extend the web interface

Example Plugins

View plugin examples