1. 三大核心要素
mychart/ ├── charts/ # 子Chart依赖 ├── templates/ # 模板文件(Deployment/Service等) ├── Chart.yaml # Chart元数据 └── values.yaml # 默认配置值
2. Helm 3 vs Helm 2核心区别
1. 安装与初始化
# 最新版安装(Mac/Linux) curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # 验证版本 helm version --short # v3.12.1+gf6c4b3d
2. 添加企业级仓库
# 添加Bitnami官方仓库(生产推荐) helm repo add bitnami https://charts.bitnami.com/bitnami # 添加阿里云镜像(国内加速) helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
3. 部署第一个生产应用(Redis集群)
# 搜索Chart helm search repo redis # 查看可配置参数 helm show values bitnami/redis > values-prod.yaml # 自定义生产配置(部分) vim values-prod.yaml
## values-prod.yaml architecture: replication auth: password: "V3ryS3cretP@ss" # 生产必须修改! master: persistence: size: 100Gi replica: replicaCount: 3
4. 执行安全部署
# 创建独立命名空间 kubectl create ns redis-prod # 安装Release(命名规范:<环境>-<应用>-<版本>) helm install prod-redis bitnami/redis \ -n redis-prod \ -f values-prod.yaml \ --atomic \ # 失败自动回滚 --timeout 10m # 超时时间
1. 创建标准化Chart
helm create myapp-chart tree myapp-chart
myapp-chart ├── Chart.yaml ├── charts ├── templates │ ├── NOTES.txt # 安装后提示 │ ├── _helpers.tpl # 模板助手 │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── service.yaml │ └── tests # 测试用例 └── values.yaml
2. 模板进阶技巧
# 条件渲染(根据环境启用Ingress) {{- if .Values.ingress.enabled }} apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ include "myapp-chart.fullname" . }} annotations: {{- toYaml .Values.ingress.annotations | nindent 4 }} ... {{- end }}
3. 多环境配置管理
# 目录结构 config/ ├── dev-values.yaml # 开发环境 ├── staging-values.yaml └── prod-values.yaml # 部署命令示例 helm upgrade myapp ./myapp-chart \ -n myapp-prod \ -f config/prod-values.yaml \ --set image.tag=v1.2.3
版本锁定:始终指定Chart版本
helm install myapp bitnami/nginx --version 13.2.1
敏感信息处理:
CI/CD集成:
# GitLab CI示例 deploy: stage: deploy script: - helm upgrade --install ${APP} ${CHART} -f ${ENV_VALUES} only: - main
依赖管理:
# 添加子Chart依赖
helm dependency update myapp-chart
安全扫描:
helm plugin install https://github.com/helm/helm-plugin-secrets
helm secrets enc values-prod.yaml # 加密敏感文件
监控告警:
灾备策略:
# 定期备份Release状态 helm get manifest prod-redis > backup.yaml # 快速恢复 helm install prod-redis-restore -f backup.yaml
坑1:变量覆盖导致配置错误
✅ 正确做法:
# 使用--set优先级最高 helm upgrade ... --set replicaCount=3
坑2:未清理残留资源
✅ 解决方案:
# 查看孤儿资源 helm ls --all --pending # 强制清理 helm uninstall <release> --keep-history=false
坑3:Chart版本污染
✅ 正确做法:
# 每次修改生成新版本 helm package --version 1.2.3+$(date +%s)
坑4:忽略依赖更新
✅ 正确流程:
# 更新依赖 helm dependency update # 检查差异 helm dependency list
坑5:未处理PV回收
✅ 应对策略:
persistence: enabled: true storageClass: "retain-sc" # 使用保留策略
1. 可视化管理
helm plugin install https://github.com/komodorio/helm-dashboard helm dashboard
2. 智能提示
# 启用Zsh自动补全 echo 'source <(helm completion zsh)' >> ~/.zshrc
3. Diff三剑客
# 查看变更 helm diff upgrade myapp ./chart # 与线上对比 helm get manifest myapp > current.yaml helm template myapp ./chart > new.yaml diff current.yaml new.yaml
适用场景:
替代方案:
掌握Helm,你将获得:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!