Helm 指南
Chart 结构
myapp/
├── Chart.yaml # Chart 元数据
├── values.yaml # 默认配置值
├── values.prod.yaml # 环境覆盖配置
├── charts/ # Chart 依赖
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ └── _helpers.tpl # 模板辅助函数
└── .helmignore
values.yaml
replicaCount: 3
image:
repository: registry.example.com/myapp
tag: "v1.2.3"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
host: app.example.com
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
模板语法
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "myapp.fullname" . }}
labels:
{{- include "myapp.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{- if .Values.env }}
env:
{{- range $key, $val := .Values.env }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end }}
{{- end }}
安装 / 升级 / 回滚
# 安装 Chart
helm install myrelease ./myapp \
--namespace production \
--create-namespace \
-f values.prod.yaml \
--set image.tag=v1.3.0
# 试运行(预览)
helm install myrelease ./myapp --dry-run --debug
# 升级
helm upgrade myrelease ./myapp \
--namespace production \
-f values.prod.yaml \
--atomic --timeout 5m
# 回滚
helm rollback myrelease 0 # 0 = 上一版本
# 列出 Release
helm list --all-namespaces
helm history myrelease -n production