| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-05-09T00:00:00.000Z" |
| reviewed | "2026-04-25T00:00:00.000Z" |
| name | helm-values-management |
| description | Manage Helm values — override precedence, multi-env configs, --set, schema validation, secrets. Use when the user mentions Helm values, env-specific configs, or values.yaml. |
| user-invocable | false |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob |
Helm Values Management
Comprehensive guidance for managing Helm values across environments, understanding override precedence, and advanced configuration strategies.
When to Use This Skill
| Use this skill when... | Use instead when... |
|---|
| Designing per-environment values files (dev/staging/prod) and override precedence | Use helm-release-management when the focus is the install/upgrade command itself rather than values shape |
Reasoning about --set, --set-string, --values, and --reuse-values behaviour | Use helm-debugging when values rendering produces wrong YAML or value type errors |
| Adding values schema validation or secret-injection patterns | Use helm-chart-development when the values schema lives inside a chart you are authoring |
When to Use
Use this skill automatically when:
- User needs to configure Helm deployments with custom values
- User mentions environment-specific configurations (dev/staging/prod)
- User asks about value override precedence or merging
- User needs to manage secrets or sensitive configuration
- User wants to understand what values were deployed
- User needs to validate or inspect values
Value Override Precedence
Values are merged with right-most precedence (last wins):
1. Chart defaults (values.yaml in chart)
↓
2. Parent chart values (if subchart)
↓
3. Previous release values (--reuse-values)
↓
4. Values files in order (-f values1.yaml -f values2.yaml)
↓
5. Individual overrides (--set, --set-string, --set-json, --set-file)
↑
HIGHEST PRECEDENCE
Example Precedence
replicaCount: 1
image:
tag: "1.0.0"
replicaCount: 2
image:
tag: "2.0.0"
Core Value Commands
View Default Values
helm show values <chart>
helm show values <chart> --version 1.2.3
helm show values bitnami/nginx > default-values.yaml
View Deployed Values
helm get values <release> --namespace <namespace>
helm get values <release> --namespace <namespace> --all
helm get values <release> -n <namespace> -o json
helm get values <release> -n <namespace> --revision 2
Set Values During Install/Upgrade
helm install myapp ./chart \
--namespace prod \
--values values.yaml
helm install myapp ./chart \
--namespace prod \
-f values/base.yaml \
-f values/production.yaml
helm install myapp ./chart \
--namespace prod \
--set replicaCount=3 \
--set image.tag=v2.0.0
helm install myapp ./chart \
--namespace prod \
--set-string version="1.0"
helm install myapp ./chart \
--namespace prod \
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
helm install myapp ./chart \
--namespace prod \
--set-file tlsCert=./certs/tls.crt
Value Reuse Strategies
helm upgrade myapp ./chart \
--namespace prod \
--reuse-values \
--set image.tag=v2.0.0
helm upgrade myapp ./chart \
--namespace prod \
--reset-values \
-f new-values.yaml
Multi-Environment Value Management
Directory Structure
project/
├── charts/
│ └── myapp/ # Helm chart
│ ├── Chart.yaml
│ ├── values.yaml # Chart defaults
│ └── templates/
└── values/ # Environment-specific values
├── common.yaml # Shared across all environments
├── dev.yaml # Development overrides
├── staging.yaml # Staging overrides
├── production.yaml # Production overrides
└── secrets/ # Sensitive values (gitignored)
├── dev.yaml
├── staging.yaml
└── production.yaml
Common Values (values/common.yaml)
app:
name: myapp
labels:
team: platform
component: api
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt
resources:
requests:
cpu: 100m
memory: 128Mi
Deployment Commands
helm upgrade --install myapp ./charts/myapp \
--namespace dev \
--create-namespace \
-f values/common.yaml \
-f values/dev.yaml \
-f values/secrets/dev.yaml
helm upgrade --install myapp ./charts/myapp \
--namespace staging \
--create-namespace \
-f values/common.yaml \
-f values/staging.yaml \
-f values/secrets/staging.yaml \
--atomic --wait
helm upgrade --install myapp ./charts/myapp \
--namespace production \
--create-namespace \
-f values/common.yaml \
-f values/production.yaml \
-f values/secrets/production.yaml \
--atomic --wait --timeout 10m
Value Syntax & Types
Simple Values
name: myapp
tag: "v1.0.0"
replicaCount: 3
port: 8080
enabled: true
debug: false
database: null
Nested Values
image:
repository: nginx
tag: "1.21.0"
pullPolicy: IfNotPresent
Lists/Arrays
tags:
- api
- web
- production
env:
- name: DATABASE_URL
value: postgres://db:5432/myapp
- name: REDIS_URL
value: redis://cache:6379
Setting Values via CLI
--set name=myapp
--set image.tag=v2.0.0
--set ingress.annotations."cert-manager\.io/cluster-issuer"=letsencrypt
--set tags={api,web,prod}
--set-json 'nodeSelector={"disk":"ssd","region":"us-west"}'
--set-string version="1.0"
--set-file cert=./tls.crt
Value Validation & Testing
Template with Values
helm template myapp ./chart --values values.yaml
helm install myapp ./chart \
--values values.yaml \
--dry-run --validate
Check Computed Values
helm template myapp ./chart \
--values values.yaml \
--debug 2>&1 | grep -A 100 "COMPUTED VALUES"
helm get values myapp --namespace prod --all
Test Different Value Combinations
helm template myapp ./chart --set image.tag=test
helm template myapp ./chart \
-f values/common.yaml \
-f values/production.yaml
For detailed environment value examples, schema validation JSON, secret management options, template value handling patterns, best practices, and troubleshooting, see REFERENCE.md.
Agentic Optimizations
| Context | Command |
|---|
| View values (JSON) | helm get values <release> -n <ns> -o json |
| All values (JSON) | helm get values <release> -n <ns> --all -o json |
| Computed values | helm template myapp ./chart -f values.yaml --debug 2>&1 | grep -A 50 "COMPUTED VALUES" |
| Validate schema | helm install myapp ./chart -f values.yaml --dry-run 2>&1 | head -50 |
Related Skills
- Helm Release Management - Using values during install/upgrade
- Helm Debugging - Troubleshooting value errors
- Helm Chart Development - Creating charts with good value design
References