helm-values-management
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHelm Values Management
Helm 值管理
Comprehensive guidance for managing Helm values across environments, understanding override precedence, and advanced configuration strategies.
跨环境管理Helm值、理解覆盖优先级及高级配置策略的全面指南。
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
在以下场景下自动使用本技能:
- 用户需要使用自定义值配置Helm部署
- 用户提及环境特定配置(开发/预发布/生产)
- 用户询问值覆盖优先级或合并规则
- 用户需要管理密钥或敏感配置
- 用户希望了解已部署的值内容
- 用户需要验证或检查值
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值采用最右侧优先级(最后生效)进行合并:
1. Chart默认值(chart中的values.yaml)
↓
2. 父Chart值(若为子Chart)
↓
3. 历史版本值(--reuse-values)
↓
4. 按顺序加载的values文件(-f values1.yaml -f values2.yaml)
↓
5. 单独覆盖项(--set, --set-string, --set-json, --set-file)
↑
最高优先级Example Precedence
优先级示例
yaml
undefinedyaml
undefinedChart values.yaml
Chart的values.yaml
replicaCount: 1
image:
tag: "1.0.0"
replicaCount: 1
image:
tag: "1.0.0"
-f base.yaml
-f base.yaml
replicaCount: 2
replicaCount: 2
-f production.yaml
-f production.yaml
image:
tag: "2.0.0"
image:
tag: "2.0.0"
--set replicaCount=5
--set replicaCount=5
RESULT:
最终结果:
replicaCount: 5 (from --set, highest precedence)
replicaCount: 5 (来自--set,优先级最高)
image.tag: "2.0.0" (from production.yaml)
image.tag: "2.0.0" (来自production.yaml)
undefinedundefinedCore Value Commands
核心值管理命令
View Default Values
查看默认值
bash
undefinedbash
undefinedShow chart default values
显示Chart默认值
helm show values <chart>
helm show values <chart>
Show values from specific chart version
显示特定版本Chart的默认值
helm show values <chart> --version 1.2.3
helm show values <chart> --version 1.2.3
Save defaults to file
将默认值保存到文件
helm show values bitnami/nginx > default-values.yaml
undefinedhelm show values bitnami/nginx > default-values.yaml
undefinedView Deployed Values
查看已部署的值
bash
undefinedbash
undefinedGet values used in deployed release
获取已发布版本使用的值
helm get values <release> --namespace <namespace>
helm get values <release> --namespace <namespace>
Get ALL values (including defaults)
获取所有值(包括默认值)
helm get values <release> --namespace <namespace> --all
helm get values <release> --namespace <namespace> --all
Get values in different formats
以不同格式获取值
helm get values <release> -n <namespace> -o json
helm get values <release> -n <namespace> -o json
Get values from specific revision
获取特定版本的值
helm get values <release> -n <namespace> --revision 2
undefinedhelm get values <release> -n <namespace> --revision 2
undefinedSet Values During Install/Upgrade
安装/升级时设置值
bash
undefinedbash
undefinedUsing values file
使用values文件
helm install myapp ./chart
--namespace prod
--values values.yaml
--namespace prod
--values values.yaml
helm install myapp ./chart
--namespace prod
--values values.yaml
--namespace prod
--values values.yaml
Using multiple values files (right-most wins)
使用多个values文件(最右侧文件生效)
helm install myapp ./chart
--namespace prod
-f values/base.yaml
-f values/production.yaml
--namespace prod
-f values/base.yaml
-f values/production.yaml
helm install myapp ./chart
--namespace prod
-f values/base.yaml
-f values/production.yaml
--namespace prod
-f values/base.yaml
-f values/production.yaml
Using --set for individual values
使用--set设置单个值
helm install myapp ./chart
--namespace prod
--set replicaCount=3
--set image.tag=v2.0.0
--namespace prod
--set replicaCount=3
--set image.tag=v2.0.0
helm install myapp ./chart
--namespace prod
--set replicaCount=3
--set image.tag=v2.0.0
--namespace prod
--set replicaCount=3
--set image.tag=v2.0.0
Using --set-string to force string type
使用--set-string强制字符串类型
helm install myapp ./chart
--namespace prod
--set-string version="1.0"
--namespace prod
--set-string version="1.0"
helm install myapp ./chart
--namespace prod
--set-string version="1.0"
--namespace prod
--set-string version="1.0"
Using --set-json for complex structures
使用--set-json设置复杂结构
helm install myapp ./chart
--namespace prod
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
--namespace prod
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
helm install myapp ./chart
--namespace prod
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
--namespace prod
--set-json 'nodeSelector={"disktype":"ssd","region":"us-west"}'
Using --set-file to read value from file
使用--set-file从文件读取值
helm install myapp ./chart
--namespace prod
--set-file tlsCert=./certs/tls.crt
--namespace prod
--set-file tlsCert=./certs/tls.crt
undefinedhelm install myapp ./chart
--namespace prod
--set-file tlsCert=./certs/tls.crt
--namespace prod
--set-file tlsCert=./certs/tls.crt
undefinedValue Reuse Strategies
值复用策略
bash
undefinedbash
undefinedReuse existing values, merge with new
复用现有值并合并新值
helm upgrade myapp ./chart
--namespace prod
--reuse-values
--set image.tag=v2.0.0
--namespace prod
--reuse-values
--set image.tag=v2.0.0
helm upgrade myapp ./chart
--namespace prod
--reuse-values
--set image.tag=v2.0.0
--namespace prod
--reuse-values
--set image.tag=v2.0.0
Reset to chart defaults, ignore existing values
重置为Chart默认值,忽略现有值
helm upgrade myapp ./chart
--namespace prod
--reset-values
-f new-values.yaml
--namespace prod
--reset-values
-f new-values.yaml
undefinedhelm upgrade myapp ./chart
--namespace prod
--reset-values
-f new-values.yaml
--namespace prod
--reset-values
-f new-values.yaml
undefinedMulti-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.yamlproject/
├── charts/
│ └── myapp/ # Helm Chart
│ ├── Chart.yaml
│ ├── values.yaml # Chart默认值
│ └── templates/
└── values/ # 环境特定值
├── common.yaml # 所有环境共享配置
├── dev.yaml # 开发环境覆盖配置
├── staging.yaml # 预发布环境覆盖配置
├── production.yaml # 生产环境覆盖配置
└── secrets/ # 敏感值(已加入git忽略)
├── dev.yaml
├── staging.yaml
└── production.yamlCommon Values (values/common.yaml)
通用值(values/common.yaml)
yaml
undefinedyaml
undefinedShared 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
undefinedapp:
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
undefinedDeployment Commands
部署命令
bash
undefinedbash
undefinedDeploy 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
--namespace dev
--create-namespace
-f values/common.yaml
-f values/dev.yaml
-f values/secrets/dev.yaml
helm upgrade --install myapp ./charts/myapp
--namespace dev
--create-namespace
-f values/common.yaml
-f values/dev.yaml
-f values/secrets/dev.yaml
--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
--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 staging
--create-namespace
-f values/common.yaml
-f values/staging.yaml
-f values/secrets/staging.yaml
--atomic --wait
--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
--namespace production
--create-namespace
-f values/common.yaml
-f values/production.yaml
-f values/secrets/production.yaml
--atomic --wait --timeout 10m
undefinedhelm 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
--namespace production
--create-namespace
-f values/common.yaml
-f values/production.yaml
-f values/secrets/production.yaml
--atomic --wait --timeout 10m
undefinedValue Syntax & Types
值语法与类型
Simple Values
简单值
yaml
undefinedyaml
undefinedString
字符串
name: myapp
tag: "v1.0.0" # Quote to ensure string
name: myapp
tag: "v1.0.0" # 添加引号确保为字符串类型
Number
数字
replicaCount: 3
port: 8080
replicaCount: 3
port: 8080
Boolean
布尔值
enabled: true
debug: false
enabled: true
debug: false
Null
空值
database: null
undefineddatabase: null
undefinedNested Values
嵌套值
yaml
undefinedyaml
undefinedNested objects
嵌套对象
image:
repository: nginx
tag: "1.21.0"
pullPolicy: IfNotPresent
image:
repository: nginx
tag: "1.21.0"
pullPolicy: IfNotPresent
Access in template: {{ .Values.image.repository }}
在模板中引用:{{ .Values.image.repository }}
undefinedundefinedLists/Arrays
列表/数组
yaml
undefinedyaml
undefinedSimple list
简单列表
tags:
- api
- web
- production
tags:
- api
- web
- production
List of objects
对象列表
env:
- name: DATABASE_URL value: postgres://db:5432/myapp
- name: REDIS_URL value: redis://cache:6379
undefinedenv:
- name: DATABASE_URL value: postgres://db:5432/myapp
- name: REDIS_URL value: redis://cache:6379
undefinedSetting Values via CLI
通过CLI设置值
bash
undefinedbash
undefinedSimple value
简单值
--set name=myapp
--set name=myapp
Nested value (use dot notation)
嵌套值(使用点符号)
--set image.tag=v2.0.0
--set ingress.annotations."cert-manager.io/cluster-issuer"=letsencrypt
--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}
--set tags={api,web,prod}
Complex JSON structures
复杂JSON结构
--set-json 'nodeSelector={"disk":"ssd","region":"us-west"}'
--set-json 'nodeSelector={"disk":"ssd","region":"us-west"}'
Force string (prevents numeric conversion)
强制字符串类型(防止数值转换)
--set-string version="1.0"
--set-string version="1.0"
Read value from file
从文件读取值
--set-file cert=./tls.crt
undefined--set-file cert=./tls.crt
undefinedValue Validation & Testing
值验证与测试
Template with Values
结合值渲染模板
bash
undefinedbash
undefinedRender templates with values
使用指定值渲染模板
helm template myapp ./chart --values values.yaml
helm template myapp ./chart --values values.yaml
Validate against Kubernetes API
针对Kubernetes API验证
helm install myapp ./chart
--values values.yaml
--dry-run --validate
--values values.yaml
--dry-run --validate
undefinedhelm install myapp ./chart
--values values.yaml
--dry-run --validate
--values values.yaml
--dry-run --validate
undefinedCheck Computed Values
查看计算后的值
bash
undefinedbash
undefinedSee what values will be used (before install)
查看将使用的值(安装前)
helm template myapp ./chart
--values values.yaml
--debug 2>&1 | grep -A 100 "COMPUTED VALUES"
--values values.yaml
--debug 2>&1 | grep -A 100 "COMPUTED VALUES"
helm template myapp ./chart
--values values.yaml
--debug 2>&1 | grep -A 100 "COMPUTED VALUES"
--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
undefinedhelm get values myapp --namespace prod --all
undefinedTest Different Value Combinations
测试不同值组合
bash
undefinedbash
undefinedTest with minimal values
使用最小化值测试
helm template myapp ./chart --set image.tag=test
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
-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](REFERENCE.md).helm template myapp ./chart
-f values/common.yaml
-f values/production.yaml
-f values/common.yaml
-f values/production.yaml
如需详细的环境值示例、schema验证JSON、密钥管理选项、模板值处理模式、最佳实践及故障排除内容,请查看[REFERENCE.md](REFERENCE.md)。Agentic Optimizations
Agent优化命令
| Context | Command |
|---|---|
| View values (JSON) | |
| All values (JSON) | |
| Computed values | |
| Validate schema | |
| 场景 | 命令 |
|---|---|
| 查看值(JSON格式) | |
| 查看所有值(JSON格式) | |
| 查看计算后的值 | |
| 验证schema | |
Related Skills
相关技能
- Helm Release Management - Using values during install/upgrade
- Helm Debugging - Troubleshooting value errors
- Helm Chart Development - Creating charts with good value design
- Helm版本管理 - 安装/升级时使用值配置
- Helm调试 - 排查值相关错误
- Helm Chart开发 - 设计具备良好值结构的Chart