Helm Charts 入门实战:从 Chart 结构到应用发布与版本回滚

举报
yd_248750836 发表于 2026/11/12 08:41:03 2026/11/12
【摘要】 Helm Charts 入门实战:从 Chart 结构到应用发布与版本回滚 一、Helm 是什么Helm 是 Kubernetes 的包管理器。把一组 Deployment、Service、ConfigMap 打包成可版本化、可参数化的单元,就叫 Chart。没有 Helm 时,一套应用要维护十几份 YAML,改个镜像版本得全局搜替换,多环境还得复制几套目录。Helm 用「模板 + val...

Helm Charts 入门实战:从 Chart 结构到应用发布与版本回滚

一、Helm 是什么

Helm 是 Kubernetes 的包管理器。把一组 Deployment、Service、ConfigMap 打包成可版本化、可参数化的单元,就叫 Chart。

没有 Helm 时,一套应用要维护十几份 YAML,改个镜像版本得全局搜替换,多环境还得复制几套目录。Helm 用「模板 + values」把这件事变成一次 helm upgrade。

概念 说明
Chart 应用包,含模板与默认配置
Release Chart 的一次安装实例,同集群可装多份
values.yaml 可覆盖参数(镜像、副本数、资源限制…)
Repository Chart 仓库,类似 apt / npm 源
Revision 每次 upgrade 自增,用于回滚

二、创建第一个 Chart

helm create webapp
webapp/
├── Chart.yaml          # 名称、版本、依赖
├── values.yaml         # 默认参数
├── templates/          # Go template 模板
│   ├── deployment.yaml
│   └── _helpers.tpl
└── charts/             # 子 Chart

Chart.yaml 关键字段:apiVersion: v2 / name: webapp / version: 0.1.0(Chart 版本)/ appVersion: "1.0.0"(应用版本)。

三、模板与 values

模板里用 {{ .Values.xxx }} 引用参数:

# templates/deployment.yaml
spec:
  replicas: {{ .Values.replicaCount }}
  containers:
    - name: {{ .Chart.Name }}
      image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
      resources:
        {{- toYaml .Values.resources | nindent 12 }}
# values.yaml
replicaCount: 2
image: { repository: nginx, tag: "1.25" }
resources:
  limits: { cpu: 500m, memory: 256Mi }

发布前必跑三件套:

helm lint webapp                                 # 语法与规范检查
helm template webapp ./webapp                    # 本地渲染,不连集群
helm install webapp ./webapp --dry-run --debug   # 干跑,看最终 YAML

四、安装、升级与回滚

helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update

helm install my-web ./webapp -n demo --create-namespace
helm upgrade my-web ./webapp --set replicaCount=3 --set image.tag=1.26
helm upgrade my-web ./webapp -f values-prod.yaml   # 多环境推荐

helm history my-web
helm rollback my-web 2                             # 回到 revision 2
helm uninstall my-web -n demo

命令行 --set 优先级高于 values.yaml。多环境做法:目录里放 values-dev.yaml / values-prod.yaml,CI 按分支选文件,Chart 本身只有一份。

五、五个常见坑

  • 改了 values 不生效 → 忘记 helm upgrade,或 --set 的嵌套 key 没用点号写全
  • 模板报 nil pointer → 引用了不存在的字段,用 {{ .Values.foo | default "bar" }} 兜底
  • nindent 缩进错乱 → toYaml 后必须配 nindent,数字比上一行多 2
  • 回滚后配置漂移 → 有人 kubectl edit 手工改过;回滚只恢复 Helm 记录的 manifest
  • Secret 提交进 Git → 密码走 --set-string 从 CI 变量注入,或用 helm-secrets 插件

六、小结

Helm 的核心价值是把 K8s 部署从「一堆 YAML」变成「一个可版本化的包」。入门阶段掌握 create → lint/template → install → upgrade → rollback 这条主线,再逐步引入子 Chart 依赖和 CI 自动发布即可。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。