Helm 入门:Kubernetes 包管理器介绍

文章目录

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 改,版本回滚一键搞定,工作效率提升太多,绝对值得。

项目地址:https://github.com/helm/helm

相关推荐
步步为营DotNet几秒前
.NET Aspire 在云原生微服务架构中的深度实践与剖析
云原生·架构·.net
Plastic garden4 分钟前
K8s介绍(1)
云原生·容器·kubernetes
江华森5 分钟前
《网络架构实战:从单机到云原生的全栈思考》博客系列
网络·云原生·架构
小肥君9 小时前
docker无法连接GPU资源解决方案
docker·容器·eureka
liux352810 小时前
K8s存储卷全解析:PV/PVC/StorageClass 关系
kubernetes
江华森12 小时前
从零搭建 Kubernetes 集群并部署 Kuboard v3 管理面板 —— 国内环境完整实战教程
容器·kubernetes
友莘居士14 小时前
KingbaseES Docker速查表
运维·docker·容器
小肥君15 小时前
docker镜像配置
运维·docker·容器
某林21216 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc