Kubernetes Helm Charts
K8s 包管理器 — 模板清单、values 和 release。
容器高级
为什么
Helm 将 K8s 清单打包为可复用 chart,含模板和 values。一 chart 用不同 values 部署 dev/staging/prod,helm rollback 撤销 release。
Docker is used by 59% of professional developers per the Stack Overflow 2024 survey,Kubernetes 在生产中运行 60% 的容器化工作负载(CNCF 2024 调查)。容器编排通过声明式滚动发布将部署相关事故减少 35%。
何时使用
任何非平凡 K8s 部署用 Helm。简单单清单部署避免。
如何做
1. 创建 — helm create mychart(脚手架)
2. 模板 — templates/*.yaml 配 {{ .Values.* }}
3. Values — values.yaml 默认值
4. 安装 — helm install release mychart -f prod.yaml
5. 升级 — helm upgrade release mychart -f prod.yaml
6. 回滚 — helm rollback release 1
7. 仓库 — helm repo add,helm push
示例
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata: { name: {{ .Release.Name }} }
spec:
replicas: {{ .Values.replicas }}
template:
spec:
containers:
- name: app
image: {{ .Values.image }}
env:
- name: DB_URL
value: {{ .Values.dbUrl | quote }}
# values.yaml
replicas: 3
image: myapp:latest
dbUrl: postgres://...
# 安装和升级
helm install myapp ./mychart -f values-prod.yaml
helm upgrade myapp ./mychart -f values-prod.yaml
helm rollback myapp 1 # 回滚到修订 1
常见问题
- ⚠模板语法错误 — helm lint mychart 安装前验证
- ⚠Values 未覆盖 — -f values-prod.yaml,helm get values 查优先级
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓安装前 helm lint — 早抓模板错误
- ✓Chart.yaml 版本化 chart — semver 安全升级回滚
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求