语雀同文笔记:Helm 概念介绍 · 语雀
目录
Helm 和 相关组件
传统服务部署到K8s集群的流程
拉取代码 —>打包编译 —>构建镜像 —> 准 备一堆相关部署的yaml文件(如:deployment、service、 ingress等) —> kubectl apply 部署到 K8s 集群
传统部署引发的问题:
- 随着引用的增多,需要维护大量的yaml文件
- 不能根据一套 yaml文 件 来创建多个环境,需要手动进行修改。
例如:一般环境都分为dev、预生产、生产环境,部署完了dev这套环境,后面再部署预生产和生产环境,还需要复制出两套,并手动修改才行。
Helm 是什么
Helm 是 Kubernetes 的包管理工具,可以方便地发现、共享和构建 Kubernetes 应用,相当于 CentOS 系统中的 yum 工具,可以将一个服务相关的所有资源信息整合到一个 chart 包中,并且可以使用一套资源发布到
多个环境中,可以将应用程序的所有资源和部署信息组合到单个部署包中。
就像 Linux下的 rpm 包管理器,如yum/apt等, 可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。
Helm 相关组件
| Helm 组件 | 组件介绍 |
| Chart | 是 Helm的一个整合后的 chart 包,包含一个应用所有的 Kubernetes声明模版,类似于yum的 rpm 包或者apt的dpkg文件。 理解:Helm 将打包的应用程序部署到 K8s,并将它们构建成 Chart。这些 Chart 将所有预配置的应用程序资源以及所有版本都包含在一个易于管理的包中。 Helm 把 Kubernetes 资源(如 Deployments、Services 或 Ingress等) 打包到一个 Chart中,Chart被保存到chart仓库。通过 Chart 仓库可用来存储和分享 Chart。 |
| Helm Client | Helm 的客户端组件,负责和 K8s apiserver 通信 |
| Repository | 用于发布和存储 Chart 包的仓库,类似 yum 仓库或 docker 仓库 |
| Release | 用 Chart 包部署的一个实例。通过 Chart 在 K8s 中部署的应用都会产生一个唯一的。Release。同一 Chart 部署多次就会产生多个Release。 理解:将这些 Yaml 部署完成后,他也会记录部署时候的一个版本,维护了一个 Release 版本状态,通过 Release 这个实例,他会具体帮我们创建pod,deployment等资源。 |
Helm3 和 Helm2 的区别
Helm3 移除了 Tiller 组件:Helm2 中 Helm 客户端和 K8s 通信是通过 Tiller 组件和 K8s 通信,Helm3 移除了 Tiller 组件,直接使用 kubeconfig 文件和 K8s 的 apiserver 通信。
删除 release 命令变更: helm delete release-name --purge -> helm uninstall release-name
查看 charts 信息命令变更:helm inspect release-name -> helm show release-name
拉取 charts 包命令变更:helm fetch chart-name -> helm pull chart-name
Helm3 中必须指定 Release 名称,如果需要生成一个随机名称,需要加选项 --generate-name, Helm2 中如果不指定release名称, 可以自动生成一个随机名称:helm install
4766

被折叠的 条评论
为什么被折叠?



