# 1. helm是什么
![在这里插入图片描述](https://img-blog.csdnimg.cn/bcd6b2f1bd1e41a6a0fab0c171537528.png#pic_center)
[helm](https://helm.sh/)是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的[apt](https://blog.csdn.net/xixihahalelehehe/article/details/105641494?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164882428216782248547808%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164882428216782248547808&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-105641494.nonecase&utm_term=apt&spm=1018.2226.3001.4450),centos的yum或python的pip一样,专门负责管理kubernetes应用资源;使用helm可以对kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。
helm利用Chart来封装kubernetes原生应用程序的一些列yaml文件,可以在部署应用的时候自定义应用程序的一些Metadata,以便于应用程序的分发,这是一个[helm charts教程](https://www.bilibili.com/video/BV1TD4y1X7gi?spm_id_from=333.337.search-card.all.click)。
# 2. helm为什么出现
利用Kubernetes部署一个应用,需要Kubernetes原生资源文件如deployment、replicationcontroller、service或pod 等。这些k8s 资源过于分散,不方便进行管理,直接通过 kubectl 来管理一个应用,你会发现这十分蛋疼。
而对于一个复杂的应用,会有很多类似上面的资源描述文件,如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,而Helm可以帮我们解决这些问题:
- 如何统一管理、配置和更新这些分散的 k8s 的应用资源文件
- 如何分发和复用一套应用模板
- 如何将应用的一系列资源当做一个软件包管理
即helm主要作用:
- 应用程序封装
- 版本管理
- 依赖检查
- 便于应用程序分发
# 3. 背景
Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。
Helm 于 2015 年在 Deis 创建,后来被微软收购。现在被称为 Helm Classic 的是在 11 月的首届 KubeCon 上推出的。2016 年 1 月,Helm Classic 与 Google 的 Kubernetes 部署管理器合并到现在是主要 Helm 项目的存储库中。
该项目目前拥有 30,000 多个 GitHub 星,每月从全球获得超过 200 万次下载。2020 年 4 月,Helm 在 CNCF 中[毕业](https://www.cncf.io/announcement/2020/04/30/cloud-native-computing-foundation-announces-helm-graduation/) ,加入 [Fluentd](https://www.fluentd.org/)、[containerd](https://containerd.io/) 等行列。
Helm 的第一次提交是在 2015 年 [10 月 19 日](https://github.com/helm/helm-classic/commit/ecad6e2ef9523a0218864ec552bbfc724f0b9d3d)。从 2018 年 6 月 1 日[加入](https://www.cncf.io/blog/2018/06/01/cncf-to-host-helm/) CNCF 到今天,Helm 补充说:
> 注意:这些统计数据是使用 CNCF 与 CNCF项目社区合作构建的[DevStats工具收集的。](https://envoy.devstats.cncf.io/d/8/dashboards?orgId=1&refresh=15m)“贡献者”被定义为进行审查、评论、提交或创建PR 或问题的人。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ca156466db74d579d09499b3453ece9.png)
# 4. 多样性
Helm 项目起源于 Deis(和 Microsoft),现已发展到包含来自 1,600 多个组织的有意义的代码贡献。像 Helm 这样的高速开源项目获得了供应商和最终用户社区的广泛采用和贡献。因此,Helm 代码贡献来自广泛的公司,促进了用户驱动的创新。
Helm 的贡献者包括许多世界上最大的科技公司,如谷歌、微软、三星 SDS、VMware 和 IBM,以及快速发展的中型公司,如 Datadog。贡献也来自数十家小型企业和初创公司,例如以代码为中心的 AG。
供应商贡献者的多样性也在扩大;自项目启动以来,Bitnami(现在由 VMware 拥有)已成长为 Helm 的第三大贡献者。Helm 的贡献组织在供应商和最终用户之间分布良好,这表明最终用户的创新可以促进和维持快速增长的成功项目。
公司规模和类型(最终用户、供应商、基金会)的多样性(按数字)
截至 2019 年 12 月报告期末,对 Helm 贡献最大的两家公司是微软和 codecentric AG,贡献率分别为 17% 和 6%。在最初的两年里,微软和谷歌为该项目提供了大部分初始代码贡献,但 Helm 项目已经多元化,包括了许多其他公司。
自 Helm 加入 CNCF 以来,贡献代码的公司总数增加了 41%,从 930 家增加到 1,314 家。随着微软在所有贡献中所占的百分比下降,该公司继续贡献大量代码,即使以代码为中心的 AG、Bitnami 和三星 SDS 已经大大增加了它们的贡献。
这表明了一种健康的动态,项目发起者继续贡献大量代码,但鼓励其他组织随着时间的推移贡献更大比例的代码,共享管理权并发展社区。
另一个关键的项目健康指标是贡献者的数量。自项目加入 CNCF 以来,Helm 的个人贡献者在两年内增长了 216%。在加入 CNCF 之前的三年里,Helm 累积了 3642 名贡献者。从那以后的两年里,Helm 增加了 11,514 名贡献者。
# 5. 架构
![helm 架构](https://img-blog.csdnimg.cn/989d3dffde3f4cfda18ba402ab2c48e3.png)