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