文章目录

Helm 是 Kubernetes 最流行的包管理器,GitHub 星标超过 1.5 万,它让你把 Kubernetes 应用打包成 Chart,一键部署,方便管理版本和依赖,现在 Kubernetes 部署应用基本都用它。
我用 Helm 部署过很多服务,从 Elasticsearch 到 Prometheus,一句话就是省心,不用自己写一堆 YAML,今天聊聊它好用在哪,值得学吗。
Helm 解决了什么问题
Kubernetes 跑应用,要写一堆 YAML 文件,Deployment、Service、Ingress、ConfigMap,好几个文件放一起,管理起来麻烦。应用还有依赖,A 依赖 B,B 依赖 C,一个个手动装太费劲。版本更新回滚也麻烦,要一个个改文件,出问题回滚半天。
Helm 把一个应用所有 YAML 打包成一个 Chart,像压缩包一样,一键安装,版本对了依赖自动装,更新回滚一条命令搞定,太省心。
Artifact Hub 上有很多别人打包好的 Chart,热门软件比如 MySQL、Redis、Nginx,直接搜了就能装,不用自己写 YAML,真的省很多时间。
基础使用例子
安装 Helm,二进制下载就能用:
bash
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
新建一个 Chart 自己用:
bash
helm create myapp
会生成目录结构,里面有模板,改改 values.yaml 就能用。
添加一个 Helm 仓库,装个 nginx:
bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-nginx bitnami/nginx
就装好了,一条命令,Deployment、Service 都给你创建好,访问就能用了。
看一下安装的版本:
bash
helm list
更新版本:
bash
helm upgrade my-nginx bitnami/nginx
回滚到上个版本:
bash
helm rollback my-nginx 1
就是这么简单,一条龙服务,安装更新回滚都搞定。
核心特性
应用打包
把一个应用所有 Kubernetes 资源打包成 Chart,版本化管理,一个包就是一个版本,清晰。
依赖管理
Chart 可以声明依赖,安装的时候自动把依赖也装上,不用你一个个手动装。
配置模板
模板加 values.yaml,不同环境改改配置就能部署,不用复制粘贴改 YAML,干净。
版本管理和回滚
每次升级记录版本,出问题一键回滚,发布风险低很多,不用手忙脚乱改回去。
生态丰富
Artifact Hub 一大堆现成 Chart,热门软件基本都有,拿来就能用,不用自己造轮子。
哪些场景用 Helm
Kubernetes 上部署应用,不管是自己开发的应用还是第三方服务,用 Helm 都方便。部署中间件,Redis、MySQL、Elasticsearch,直接用现成 Chart,一键安装,配置都帮你写好了,改改参数就行。CI/CD 流程,打包应用 Chart,升级回滚自动化,发布流程顺畅很多。多环境部署,dev、test、prod 用不同 values 文件,同一个 Chart 部署不同环境,方便。
Helm 有哪些优缺点
优点,真的省心,不用写一堆 YAML,现成 Chart 拿来就用,版本管理回滚方便,Kubernetes 部署应用现在基本都用它。模板功能强大,同一个模板不同配置适配不同环境,灵活。生态好,热门软件都有,省很多功夫。
缺点,模板语法刚开始有点绕,Go 模板加 Helm 扩展,复杂逻辑写起来有点费劲。权限控制粒度粗,多租户管理不太方便,不过一般企业内部用也够了。Chart 质量参差不齐,第三方 Chart 有的配置不合理,拿到得自己改改。
现在 Helm 发展得怎么样
现在是 CNCF 项目,已经是 Kubernetes 包管理事实标准,版本 3 之后架构很干净,去掉了 Tiller,安全多了,一直稳定更新,用户越来越多,现在基本所有 Kubernetes 安装应用都推荐用 Helm,地位稳。
Artifact Hub 生态越来越大,更多开发者上传 Chart,找软件越来越方便,工具链也成熟,IDE 插件都有,用起来越来越顺。
现在学 Helm 值得吗
用 Kubernetes 开发部署,肯定值得学,现在找 Kubernetes 相关工作,基本都要求会 Helm,不会你还真没法干活。
常用操作不难,add repo、install、upgrade、rollback,一天就能学会常用命令,自己写简单 Chart 也不难,复杂模板慢慢学,够用先。
学会 Helm,部署应用省你半天时间,不用一个个复制 YAML 改,版本回滚一键搞定,工作效率提升太多,绝对值得。
项目地址:https://github.com/helm/helm
杂模板慢慢学,够用先。
学会 Helm,部署应用省你半天时间,不用一个个复制 YAML 改,版本回滚一键搞定,工作效率提升太多,绝对值得。