# 1. helm是什么

[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 或問題的人。

# 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. 架構
