helm-values
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHelm Values
Helm Values
Managing values files and configuration overrides in Helm.
在Helm中管理values文件和配置覆盖。
Values Hierarchy
Values 层级结构
Helm merges values from multiple sources (lower precedence first):
- Built-in default values
- Chart's
values.yaml - Parent chart's values
- Values files specified with (can be multiple)
-f - Individual parameters with
--set
Helm会从多个来源合并values(优先级从低到高):
- 内置默认值
- Chart的
values.yaml - 父Chart的values
- 通过指定的values文件(可指定多个)
-f - 使用指定的单个参数
--set
values.yaml Structure
values.yaml 结构
Organize by Resource
按资源组织
yaml
undefinedyaml
undefinedGlobal settings
Global settings
global:
environment: production
domain: example.com
global:
environment: production
domain: example.com
Application settings
Application settings
app:
name: myapp
version: "1.0.0"
app:
name: myapp
version: "1.0.0"
Image settings
Image settings
image:
repository: myregistry/myapp
pullPolicy: IfNotPresent
tag: "" # Overrides appVersion
image:
repository: myregistry/myapp
pullPolicy: IfNotPresent
tag: "" # Overrides appVersion
Service settings
Service settings
service:
type: ClusterIP
port: 80
targetPort: 8080
service:
type: ClusterIP
port: 80
targetPort: 8080
Ingress settings
Ingress settings
ingress:
enabled: false
className: nginx
annotations: {}
hosts:
- host: myapp.example.com
paths:
- path: /
pathType: Prefix
tls: []
ingress:
enabled: false
className: nginx
annotations: {}
hosts:
- host: myapp.example.com
paths:
- path: /
pathType: Prefix
tls: []
Resources
Resources
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
Persistence
Persistence
persistence:
enabled: false
storageClass: ""
accessMode: ReadWriteOnce
size: 8Gi
undefinedpersistence:
enabled: false
storageClass: ""
accessMode: ReadWriteOnce
size: 8Gi
undefinedOverride Strategies
覆盖策略
Override with File
使用文件覆盖
bash
undefinedbash
undefinedSingle file
Single file
helm install myrelease ./mychart -f custom-values.yaml
helm install myrelease ./mychart -f custom-values.yaml
Multiple files (later files override earlier)
Multiple files (later files override earlier)
helm install myrelease ./mychart
-f values-base.yaml
-f values-production.yaml
-f values-base.yaml
-f values-production.yaml
undefinedhelm install myrelease ./mychart
-f values-base.yaml
-f values-production.yaml
-f values-base.yaml
-f values-production.yaml
undefinedOverride with --set
使用--set覆盖
bash
undefinedbash
undefinedSingle value
Single value
helm install myrelease ./mychart --set image.tag=2.0.0
helm install myrelease ./mychart --set image.tag=2.0.0
Multiple values
Multiple values
helm install myrelease ./mychart
--set image.tag=2.0.0
--set replicaCount=5
--set image.tag=2.0.0
--set replicaCount=5
helm install myrelease ./mychart
--set image.tag=2.0.0
--set replicaCount=5
--set image.tag=2.0.0
--set replicaCount=5
Nested values
Nested values
helm install myrelease ./mychart
--set ingress.enabled=true
--set ingress.hosts[0].host=myapp.com
--set ingress.enabled=true
--set ingress.hosts[0].host=myapp.com
undefinedhelm install myrelease ./mychart
--set ingress.enabled=true
--set ingress.hosts[0].host=myapp.com
--set ingress.enabled=true
--set ingress.hosts[0].host=myapp.com
undefinedOverride with --set-string
使用--set-string覆盖
bash
undefinedbash
undefinedForce string type (useful for numeric-looking strings)
Force string type (useful for numeric-looking strings)
helm install myrelease ./mychart
--set-string version="1.0"
--set-string version="1.0"
undefinedhelm install myrelease ./mychart
--set-string version="1.0"
--set-string version="1.0"
undefinedOverride with --set-file
使用--set-file覆盖
bash
undefinedbash
undefinedRead value from file
Read value from file
helm install myrelease ./mychart
--set-file config=./config.json
--set-file config=./config.json
undefinedhelm install myrelease ./mychart
--set-file config=./config.json
--set-file config=./config.json
undefinedEnvironment-Specific Values
环境专属Values
values-development.yaml
values-development.yaml
yaml
replicaCount: 1
image:
tag: "dev-latest"
pullPolicy: Always
resources:
limits:
cpu: 200m
memory: 256Mi
ingress:
enabled: true
hosts:
- host: dev.myapp.com
postgresql:
enabled: trueyaml
replicaCount: 1
image:
tag: "dev-latest"
pullPolicy: Always
resources:
limits:
cpu: 200m
memory: 256Mi
ingress:
enabled: true
hosts:
- host: dev.myapp.com
postgresql:
enabled: truevalues-production.yaml
values-production.yaml
yaml
replicaCount: 5
image:
tag: "1.0.0"
pullPolicy: IfNotPresent
resources:
limits:
cpu: 1000m
memory: 1Gi
ingress:
enabled: true
hosts:
- host: myapp.com
tls:
- secretName: myapp-tls
hosts:
- myapp.com
postgresql:
enabled: false
external:
host: prod-db.example.comyaml
replicaCount: 5
image:
tag: "1.0.0"
pullPolicy: IfNotPresent
resources:
limits:
cpu: 1000m
memory: 1Gi
ingress:
enabled: true
hosts:
- host: myapp.com
tls:
- secretName: myapp-tls
hosts:
- myapp.com
postgresql:
enabled: false
external:
host: prod-db.example.comGlobal Values
全局Values
Parent Chart values.yaml
父Chart的values.yaml
yaml
global:
environment: production
storageClass: fast-ssd
postgresql:
auth:
existingSecret: db-credentialsyaml
global:
environment: production
storageClass: fast-ssd
postgresql:
auth:
existingSecret: db-credentialsSubchart Access
子Chart访问
yaml
undefinedyaml
undefinedIn subchart template
In subchart template
environment: {{ .Values.global.environment }}
undefinedenvironment: {{ .Values.global.environment }}
undefinedSchema Validation
Schema 验证
values.schema.json
values.schema.json
json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["image"],
"properties": {
"replicaCount": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"image": {
"type": "object",
"required": ["repository"],
"properties": {
"repository": {
"type": "string"
},
"tag": {
"type": "string"
},
"pullPolicy": {
"type": "string",
"enum": ["Always", "IfNotPresent", "Never"]
}
}
},
"service": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["ClusterIP", "NodePort", "LoadBalancer"]
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535
}
}
}
}
}json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["image"],
"properties": {
"replicaCount": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"image": {
"type": "object",
"required": ["repository"],
"properties": {
"repository": {
"type": "string"
},
"tag": {
"type": "string"
},
"pullPolicy": {
"type": "string",
"enum": ["Always", "IfNotPresent", "Never"]
}
}
},
"service": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["ClusterIP", "NodePort", "LoadBalancer"]
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535
}
}
}
}
}Secrets in Values
Values中的密钥
Don't Commit Secrets
不要提交密钥
yaml
undefinedyaml
undefinedvalues.yaml - public defaults
values.yaml - public defaults
database:
host: ""
username: ""
password: ""
database:
host: ""
username: ""
password: ""
values-secrets.yaml - not in git
values-secrets.yaml - not in git
database:
host: "prod-db.example.com"
username: "dbuser"
password: "super-secret"
undefineddatabase:
host: "prod-db.example.com"
username: "dbuser"
password: "super-secret"
undefinedUse External Secrets
使用外部密钥
yaml
undefinedyaml
undefinedvalues.yaml
values.yaml
database:
useExistingSecret: true
existingSecretName: db-credentials
```yamldatabase:
useExistingSecret: true
existingSecretName: db-credentials
```yamlIn template
In template
{{- if .Values.database.useExistingSecret }}
secretKeyRef:
name: {{ .Values.database.existingSecretName }}
key: password
{{- else }}
value: {{ .Values.database.password | quote }}
{{- end }}
undefined{{- if .Values.database.useExistingSecret }}
secretKeyRef:
name: {{ .Values.database.existingSecretName }}
key: password
{{- else }}
value: {{ .Values.database.password | quote }}
{{- end }}
undefinedComplex Value Structures
复杂值结构
Lists
列表
yaml
undefinedyaml
undefinedvalues.yaml
values.yaml
extraEnvVars:
- name: LOG_LEVEL value: info
- name: API_KEY valueFrom: secretKeyRef: name: api-secret key: key
```yamlextraEnvVars:
- name: LOG_LEVEL value: info
- name: API_KEY valueFrom: secretKeyRef: name: api-secret key: key
```yamltemplate
template
{{- range .Values.extraEnvVars }}
- name: {{ .name }} {{- if .value }} value: {{ .value | quote }} {{- else if .valueFrom }} valueFrom: {{- toYaml .valueFrom | nindent 4 }} {{- end }} {{- end }}
undefined{{- range .Values.extraEnvVars }}
- name: {{ .name }} {{- if .value }} value: {{ .value | quote }} {{- else if .valueFrom }} valueFrom: {{- toYaml .valueFrom | nindent 4 }} {{- end }} {{- end }}
undefinedMaps
映射
yaml
undefinedyaml
undefinedvalues.yaml
values.yaml
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9090"
labels:
team: platform
environment: production
```yamlannotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9090"
labels:
team: platform
environment: production
```yamltemplate
template
annotations:
{{- range $key, $value := .Values.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
undefinedannotations:
{{- range $key, $value := .Values.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
undefinedBest Practices
最佳实践
Document Values
为Values添加文档
yaml
undefinedyaml
undefinedvalues.yaml with comments
values.yaml with comments
Number of replicas
Number of replicas
@param replicaCount - Number of pod replicas
@param replicaCount - Number of pod replicas
replicaCount: 3
replicaCount: 3
Image configuration
Image configuration
@param image.repository - Docker image repository
@param image.repository - Docker image repository
@param image.tag - Docker image tag (defaults to Chart appVersion)
@param image.tag - Docker image tag (defaults to Chart appVersion)
image:
repository: myapp
tag: ""
undefinedimage:
repository: myapp
tag: ""
undefinedSensible Defaults
合理的默认值
yaml
undefinedyaml
undefinedProvide production-ready defaults
Provide production-ready defaults
replicaCount: 3 # Not 1
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 500m # Same as limit for guaranteed QoS
memory: 512Mi
undefinedreplicaCount: 3 # Not 1
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 500m # Same as limit for guaranteed QoS
memory: 512Mi
undefinedFeature Flags
功能开关
yaml
undefinedyaml
undefinedAllow enabling/disabling features
Allow enabling/disabling features
features:
metrics:
enabled: true
port: 9090
tracing:
enabled: false
endpoint: ""
undefinedfeatures:
metrics:
enabled: true
port: 9090
tracing:
enabled: false
endpoint: ""
undefinedView Computed Values
查看计算后的值
bash
undefinedbash
undefinedSee final merged values
See final merged values
helm get values myrelease
helm get values myrelease
See all values (including defaults)
See all values (including defaults)
helm get values myrelease --all
helm get values myrelease --all
Template with values
Template with values
helm template myrelease ./mychart -f custom-values.yaml
undefinedhelm template myrelease ./mychart -f custom-values.yaml
undefined