Skip to main content
In this lesson you’ll learn how to deploy Helm charts with Argo CD and how Argo CD exposes Helm-specific options: value files, inline values, valuesObject, and Helm parameters. The examples use a simple Helm chart that renders a ConfigMap and a Deployment from chart defaults in values.yaml. You’ll also see how Argo CD merges and applies overrides and the defined order of precedence.

Argo CD Application spec (Helm)

A typical Argo CD Application that references a Helm chart includes Helm-specific fields under spec.source.helm. The minimal Application spec looks like this:
Scroll to spec.source.helm to configure Helm-specific behavior. Argo CD accepts multiple ways to pass Helm values and options:
  • valueFiles: list of values files (relative to spec.source.path)
  • values: inline YAML block
  • valuesObject: native key/value map (preferred over values)
  • parameters: Helm name/value list (highest precedence)
Below are common Helm source options you’ll use.

Example: valueFiles / values / valuesObject

Use valueFiles to reference files in the chart directory (relative to spec.source.path). You can also provide values as an inline YAML document or valuesObject as a native map. valuesObject takes precedence over values.

Other Helm options

Argo CD supports additional Helm options that affect templating and installation:
Argo CD also supports other customization tools such as Kustomize. This lesson focuses on Helm, but here is a reference Kustomize block for completeness:

Example Helm chart (repo) — values and templates

The demo repository contains a simple Helm chart (v1.0.0) with a values.yaml and templates that render a ConfigMap and a Deployment. Default values.yaml (chart defaults):
templates/configmap.yaml (reads color values from chart values):
templates/deployment.yaml (uses values for replicas, image, envFrom configmap):
When Argo CD detects this chart in a repo, the UI pre-populates fields from the chart’s default values.yaml. If you don’t provide any overrides, Argo CD will deploy using those chart defaults.
Screenshot of a web UI for creating a Helm release, showing a parameters form with entries like color.circle, color.oval, color.rectangle all set to "black" and image repository/pullPolicy fields. A navigation sidebar with applications is visible on the left.
Create the Application in Argo CD with your desired sync options (for example, automatic sync, auto-create namespace, destination server set to in-cluster). By default the chart renders with the chart’s default values (all shapes black, service type ClusterIP, image from values.yaml). The Deployment and Pod should appear in the target namespace (for example, helm-chart). Here is the Application resource tree showing the deployed resources:
A web dashboard screenshot (Argo CD) showing the "helm-random-shapes" application with "Healthy" and "Synced" status. The main pane displays a visual resource tree linking configmap, service, deployment, replica set and pod components.

Updating values from the Argo CD UI

Argo CD offers multiple ways to change Helm values after the Application has been created:
  • Upload a values.yaml file to the Application
  • Edit values (YAML block)
  • Edit valuesObject (map form)
  • Edit parameters (name/value list — highest precedence)
Example inline values override added in the UI or to the Application manifest:
After saving, Argo CD re-renders the manifests and applies the updated resources. For example, the ConfigMap will change to reflect the override:
If you change service type to NodePort, the Service manifest updates accordingly:
Updating a ConfigMap consumed by a Deployment (via envFrom) does not automatically restart running pods. To make pods pick up the new environment variables, perform a rollout restart on the Deployment, or use Argo CD reconciliation policies to trigger pod replacement.
Example command to restart the deployment so new pods pick up updated ConfigMap values:
After the rollout, new pods will read the updated environment variables and the application behavior (e.g., circle color) will change accordingly.

Overriding using Parameters (highest precedence)

Argo CD exposes Helm parameters (a list of name/value pairs) that take the highest precedence when templating. Parameters are useful for single-value overrides or when you prefer a flat list. Example parameters entry:
If the same key is present in both values (or valuesObject) and parameters, the value from parameters will be used. For example:
  • values sets color.circle: red
  • parameters sets color.circle: green
  • Result in rendered manifests: CIRCLE_COLOR: green

Precedence summary: when multiple Helm override mechanisms are used, Argo CD applies them in a defined order — last overrides win. Use the precedence table below to decide where to place your overrides.

Helm values precedence (Argo CD ordering)

From lowest to highest precedence: Additional notes on duplicates and ordering:
  • If the same parameter is supplied multiple times, the last occurrence wins.
  • If valueFiles includes multiple files, the last file in the list has the highest priority among them.
  • If a single values file contains duplicate keys, the last occurrence in the file wins.
  • valuesObject overrides values when both are present.
  • parameters override everything else.
Examples: valueFiles ordering:
If values-file-1.yaml contains param1: value1 and values-file-2.yaml contains param1: value2, the effective value is value2. parameters duplicate example:
Effective result: param1=value1 (last parameter entry wins). values block duplicate example:
Effective result: param1=value5 (last value in the block wins).

Additional example — Helm chart from a Helm repo

When using a Helm repository as repoURL, set spec.source.chart and spec.source.targetRevision (chart version). Example Application:
When using a Git repo as repoURL, targetRevision is a Git revision (branch/tag/commit), and path points to the chart inside the repository.

References and further reading

This walkthrough covered deploying a Helm chart with Argo CD, how to update Helm values via UI or manifests, and how Argo CD determines which override mechanism wins during templating.

Watch Video