Helm核心是通过Chart封装多服务、多环境的部署逻辑,再以Release实例化运行态;Chart含模板、配置、依赖,Release支持多实例、升级回滚,仓库实现协作分发。
直接用 Helm 管理复杂应用包,核心是把多服务、多配置、多环境的部署逻辑收束到 Chart 中,再通过 Release 实例化控制运行态。它不是替代 YAML,而是让 YAML 可复用、可参数化、可版本化。
一个 Chart 不只是单个 Deployment,而是整套微服务组合的声明式描述:包括多个工作负载(Deployment/StatefulSet)、服务发现(Service/Ingress)、配置管理(ConfigMap/Secret)、依赖关系(如 MySQL + Redis + API 服务),甚至 CRD 和钩子任务(pre-install job)。目录结构天然支持分层组织:
{{ if .Values.redis.enabled }} 控制是否渲染 Redis 资源prod-values.yaml 或 dev-values.yaml 覆盖即可apiVersion: v2 必须)同一个 Chart 可以在集群中部署多次,每次生成独立 Release,彼此隔离:
helm install myapp-prod ./mychart -f values-prod.yaml --namespace prod 创建生产实例helm install myapp-staging ./mychart -f values-staging.yaml --namespace staging 创建预发实例myapp-prod-1723456789),可通过 helm list -n prod 查看,helm status myapp-prod 查状态,helm upgrade 更新配置或镜像helm rollback myapp-prod 1 回退到上一版本——背后是 Helm 自动保存的历史 Release 清单和渲染后的 YAML 快照复杂应用往往依赖第三方组件(如 Prometheus、Nginx Ingress),不必自己写全套 YAML:
Chart.yaml 或 dependencies 字段声明依赖,例如:
dependencies:
- name: nginx-ingress
version: 4.12.0
repository: https://charts.bitnami.com/bitnami
helm dependency update ./mychart 自动下载并解压到 charts/ 目录helm repo add bitnami https://charts.bitnami.com/bitnami,然后 helm search repo bitnami/nginx 发现可用 Chart复杂 Chart 易出错,需提前验证:
helm template ./mychart --debug 查看渲染后的真实 YAML,不实际提交到集群helm lint ./mychart 检查模板语法、values 结构、Chart.yaml 必填字段等--set-string "auth.password=xxx" 或外部 Secret 引用(.Values.global.existingSecret)注入helm install --atomic,确保 Release 失败时自动回滚,避免半成品残留