Manage Helm values across environments with override precedence, multi-environment configurations, and secret management. Covers values files, --set, --set-string, values schema validation. Use when user mentions Helm values, environment-specific configs, values.yaml, --set overrides, or Helm configuration.
Comprehensive guidance for managing Helm values across environments, understanding override precedence, and advanced configuration strategies.
| Use this skill when... | Use <sibling> 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 |
Use this skill automatically when:
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
# Chart values.yaml
replicaCount: 1
image:
tag: "1.0.0"
# -f base.yaml
replicaCount: 2
# -f production.yaml
image:
tag: "2.0.0"
# --set replicaCount=5
# RESULT:
# replicaCount: 5 (from --set, highest precedence)
# image.tag: "2.0.0" (from production.yaml)
# Show chart default values
helm show values <chart>
# Show values from specific chart version
helm show values <chart> --version 1.2.3
# Save defaults to file
helm show values bitnami/nginx > default-values.yaml
# Get values used in deployed release
helm get values <release> --namespace <namespace>
# Get ALL values (including defaults)
helm get values <release> --namespace <namespace> --all
# Get values in different formats
helm get values <release> -n <namespace> -o json
# Get values from specific revision
helm get values <release> -n <namespace> --revision 2
# Using values file
helm install myapp ./chart \
--namespace prod \
--values values.yaml
# Using multiple values files (right-most wins)
helm install myapp ./chart \
--namespace prod \
-f values/base.yaml \
-f values/production.yaml
# Using --set for individual values
helm install myapp ./chart \
--namespace prod \
--set replicaCount=3 \
--set image.tag=v2.0.0
# Using --set-string to force string type
helm install myapp ./chart \
--namespace prod \
--set-string version="1.0"
# Using --set-json for complex structures
helm install myapp ./chart \
--namespace prod \
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
# Using --set-file to read value from file
helm install myapp ./chart \
--namespace prod \
--set-file tlsCert=./certs/tls.crt
# Reuse existing values, merge with new
helm upgrade myapp ./chart \
--namespace prod \
--reuse-values \
--set image.tag=v2.0.0
# Reset to chart defaults, ignore existing values
helm upgrade myapp ./chart \
--namespace prod \
--reset-values \
-f new-values.yaml
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
# Shared configuration across all environments
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
# Deploy to dev
helm upgrade --install myapp ./charts/myapp \
--namespace dev \
--create-namespace \
-f values/common.yaml \
-f values/dev.yaml \
-f values/secrets/dev.yaml
# Deploy to staging
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
# Deploy to production
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
# String
name: myapp
tag: "v1.0.0" # Quote to ensure string
# Number
replicaCount: 3
port: 8080
# Boolean
enabled: true
debug: false
# Null
database: null
# Nested objects
image:
repository: nginx
tag: "1.21.0"
pullPolicy: IfNotPresent
# Access in template: {{ .Values.image.repository }}
# Simple list
tags:
- api
- web
- production
# List of objects
env:
- name: DATABASE_URL
value: postgres://db:5432/myapp
- name: REDIS_URL
value: redis://cache:6379
# Simple value
--set name=myapp
# Nested value (use dot notation)
--set image.tag=v2.0.0
--set ingress.annotations."cert-manager\.io/cluster-issuer"=letsencrypt
# List values (use array index or {})
--set tags={api,web,prod}
# Complex JSON structures
--set-json 'nodeSelector={"disk":"ssd","region":"us-west"}'
# Force string (prevents numeric conversion)
--set-string version="1.0"
# Read value from file
--set-file cert=./tls.crt
# Render templates with values
helm template myapp ./chart --values values.yaml
# Validate against Kubernetes API
helm install myapp ./chart \
--values values.yaml \
--dry-run --validate
# See what values will be used (before install)
helm template myapp ./chart \
--values values.yaml \
--debug 2>&1 | grep -A 100 "COMPUTED VALUES"
# See what values were used (after install)
helm get values myapp --namespace prod --all
# Test with minimal values
helm template myapp ./chart --set image.tag=test
# Test with full production values
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.
| 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 |
npx skills add laurigates/helm-values-management下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer