helm-values-management

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Helm 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
undefined
yaml
undefined

Chart 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)

undefined
undefined

Core Value Commands

核心值管理命令

View Default Values

查看默认值

bash
undefined
bash
undefined

Show 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
undefined
helm show values bitnami/nginx > default-values.yaml
undefined

View Deployed Values

查看已部署的值

bash
undefined
bash
undefined

Get 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
undefined
helm get values <release> -n <namespace> --revision 2
undefined

Set Values During Install/Upgrade

安装/升级时设置值

bash
undefined
bash
undefined

Using values file

使用values文件

helm install myapp ./chart
--namespace prod
--values values.yaml
helm install myapp ./chart
--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
helm install myapp ./chart
--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
helm install myapp ./chart
--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"
helm install myapp ./chart
--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"}'
helm install myapp ./chart
--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
undefined
helm install myapp ./chart
--namespace prod
--set-file tlsCert=./certs/tls.crt
undefined

Value Reuse Strategies

值复用策略

bash
undefined
bash
undefined

Reuse existing values, merge with new

复用现有值并合并新值

helm upgrade myapp ./chart
--namespace prod
--reuse-values
--set image.tag=v2.0.0
helm upgrade myapp ./chart
--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
undefined
helm upgrade myapp ./chart
--namespace prod
--reset-values
-f new-values.yaml
undefined

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
project/
├── 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.yaml

Common Values (values/common.yaml)

通用值(values/common.yaml)

yaml
undefined
yaml
undefined

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
undefined
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
undefined

Deployment Commands

部署命令

bash
undefined
bash
undefined

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
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
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
undefined
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
undefined

Value Syntax & Types

值语法与类型

Simple Values

简单值

yaml
undefined
yaml
undefined

String

字符串

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
undefined
database: null
undefined

Nested Values

嵌套值

yaml
undefined
yaml
undefined

Nested 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 }}

undefined
undefined

Lists/Arrays

列表/数组

yaml
undefined
yaml
undefined

Simple 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
undefined
env:
  • name: DATABASE_URL value: postgres://db:5432/myapp
  • name: REDIS_URL value: redis://cache:6379
undefined

Setting Values via CLI

通过CLI设置值

bash
undefined
bash
undefined

Simple 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
undefined

Value Validation & Testing

值验证与测试

Template with Values

结合值渲染模板

bash
undefined
bash
undefined

Render 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
undefined
helm install myapp ./chart
--values values.yaml
--dry-run --validate
undefined

Check Computed Values

查看计算后的值

bash
undefined
bash
undefined

See what values will be used (before install)

查看将使用的值(安装前)

helm template myapp ./chart
--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"

See what values were used (after install)

查看已使用的值(安装后)

helm get values myapp --namespace prod --all
undefined
helm get values myapp --namespace prod --all
undefined

Test Different Value Combinations

测试不同值组合

bash
undefined
bash
undefined

Test 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

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

如需详细的环境值示例、schema验证JSON、密钥管理选项、模板值处理模式、最佳实践及故障排除内容,请查看[REFERENCE.md](REFERENCE.md)。

Agentic Optimizations

Agent优化命令

ContextCommand
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
场景命令
查看值(JSON格式)
helm get values <release> -n <ns> -o json
查看所有值(JSON格式)
helm get values <release> -n <ns> --all -o json
查看计算后的值
helm template myapp ./chart -f values.yaml --debug 2>&1 | grep -A 50 "COMPUTED VALUES"
验证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
  • Helm版本管理 - 安装/升级时使用值配置
  • Helm调试 - 排查值相关错误
  • Helm Chart开发 - 设计具备良好值结构的Chart

References

参考资料