Skip to content

/flags/helm/helm-set

helm --set, --set-string and -f: override chart values

verified onenvironmentlocal · windows 10.0.26200 arm64 · GNU bash 5.3.15 (Git Bash) · v4.3.1+gc0d08d0updated 2026-10-20
tool
Helm
command
helm install / helm upgrade / helm template
flag
--set
default
values from values.yaml

--set key=value overrides a value from the chart's values.yaml for one release. Dots address nested keys (image.tag=1.29.0), braces build lists (list={a,b,c}), and commas separate several assignments. Helm guesses the type: true becomes a boolean and 3 an integer, which --set-string prevents.

See how values are typed

bash
helm create mychart >/dev/null
cat > mychart/templates/cm.yaml <<'EOF'
apiVersion: v1
kind: ConfigMap
metadata:
  name: cfg
data:
  flag: {{ kindOf .Values.flag | quote }}
  num: {{ kindOf .Values.num | quote }}
  list: {{ .Values.list | join "," | quote }}
  host: {{ .Values.ingress.host | quote }}
EOF
helm template demo ./mychart --show-only templates/cm.yaml \
  --set flag=true --set num=3 --set 'list={a,b,c}' --set ingress.host=app.example.com
helm template demo ./mychart --show-only templates/cm.yaml --set-string flag=true --set num=3 \
  --set 'list={a}' --set ingress.host=x | grep flag

Output

---
# Source: mychart/templates/cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cfg
data:
  flag: "bool"
  num: "int64"
  list: "a,b,c"
  host: "app.example.com"

  flag: "string"

Precedence

Later sources win: chart values.yaml, then each -f file in order, then --set/--set-string/--set-file in order.

bash
helm upgrade --install web ./mychart -f values.prod.yaml --set image.tag=1.29.0

Syntax

FlagExampleResult
--setreplicaCount=3replicaCount: 3 (int)
--setimage.tag=1.29.0image: {tag: "1.29.0"}
--set'list={a,b,c}'list: [a, b, c]
--setservers[0].port=80first list item, key port
--setname=a\,ba literal comma: name: "a,b"
--set-stringflag=trueflag: "true" (string)
--set-fileconfig=./app.confvalue read from a file
-f / --valuesvalues.prod.yamla whole values file

Sources