k8s~helm的(de)介(jie)紹
Helm 是什么
- Helm 是 Deis 開發的一個用于 Kubernetes 應用的包管理工具,主要用來管理 Charts。有點類似于 Ubuntu 中的 APT 或 CentOS 中的 YUM。
- Helm Chart 是用來封裝 Kubernetes 原生應用程序的一系列 YAML 文件。可以在你部署應用的時候自定義應用程序的一些 Metadata,以便于應用程序的分發。
對于應用發布者而言,可以通過 Helm 打包應用、管理應用依賴關系、管理應用版本并發布應用到軟件倉庫。 - 對于使用者而言,使用 Helm 后不用需要編寫復雜的應用部署文件,可以以簡單的方式在 Kubernetes 上查找、安裝、升級、回滾、卸載應用程序。
做為(wei) Kubernetes 的一個包(bao)管理工具,Helm具有(you)如下功能:
- 創建新的 chart
- chart 打包成 tgz 格式
- 上傳 chart 到 chart 倉庫或從倉庫中下載 chart
- 在Kubernetes集群中安裝或卸載 chart
- 管理用Helm安裝的 chart 的發布周期
Helm 組件及相關術語
本文中(zhong)講到的是helm V2最新版(ban)本,V3版(ban)本也已經(jing)發(fa)布了beta版(ban),在 Helm 3 中(zhong),Tiller 被移除了。
-
Helm
Helm 是(shi)一個命令行(xing)下的(de)客戶端工具。主要(yao)用于 Kubernetes 應用程序 Chart 的(de)創建、打包、發布以及創建和管理(li)本(ben)地和遠程的(de) Chart 倉庫(ku)。 -
Tiller
Tiller 是(shi) Helm 的服務端(duan),部署在 Kubernetes 集(ji)群中(zhong)。Tiller 用(yong)于接收 Helm 的請(qing)求,并根據 Chart 生成(cheng) Kubernetes 的部署文件( Helm 稱為 Release ),然后提(ti)交給 Kubernetes 創建應用(yong)。Tiller 還提(ti)供了 Release 的升(sheng)級(ji)、刪除、回滾等一系列功(gong)能。 -
Chart
包含(han)了創建Kubernetes的(de)(de)(de)(de)(de)一(yi)個應(ying)用實例的(de)(de)(de)(de)(de)必要信(xin)息,Helm 的(de)(de)(de)(de)(de)軟(ruan)件包,采用 TAR 格式。類似于 APT 的(de)(de)(de)(de)(de) DEB 包或者 YUM 的(de)(de)(de)(de)(de) RPM 包,其(qi)包含(han)了一(yi)組(zu)定義(yi) Kubernetes 資源(yuan)相關(guan)的(de)(de)(de)(de)(de) YAML 文件。 -
Repoistory
Helm 的(de)軟件倉庫(ku),Repository 本質上是一(yi)個 Web 服(fu)(fu)務(wu)器(qi),該服(fu)(fu)務(wu)器(qi)保存了一(yi)系列的(de) Chart 軟件包以供用(yong)戶(hu)下(xia)載,并(bing)且提供了一(yi)個該 Repository 的(de) Chart 包的(de)清單文(wen)件以供查詢。Helm 可以同時管(guan)理(li)多(duo)個不(bu)同的(de) Repository。 -
Release
是一(yi)個 chart 及其配(pei)置的(de)一(yi)個運行實例,使用 helm install 命令在 Kubernetes 集(ji)群中(zhong)部署的(de) Chart 稱為 Release。
Helm 工作流程
-
Chart Install 過程
Helm 從指定的目錄或者 TAR 文件中解析出 Chart 結構信息。
Helm 將指定的 Chart 結構和 Values 信息通過 gRPC 傳遞給 Tiller。
Tiller 根據 Chart 和 Values 生成一個 Release。
Tiller 將(jiang) Release 發送給 Kubernetes 用于生成 Release。 -
Chart Update 過程
Helm 從指定的目錄或者 TAR 文件中解析出 Chart 結構信息。
Helm 將需要更新的 Release 的名稱、Chart 結構和 Values 信息傳遞給 Tiller。
Tiller 生成 Release 并更新指定名稱的 Release 的 History。
Tiller 將 Release 發送(song)給 Kubernetes 用于更新 Release。 -
Chart Rollback 過程
Helm 將要回滾的 Release 的名稱傳遞給 Tiller。
Tiller 根據 Release 的名稱查找 History。
Tiller 從 History 中獲取上一個 Release。
Tiller 將上一個 Release 發送給(gei) Kubernetes 用于替換當前 Release。 -
Chart 處理依賴說明
Tiller 在處(chu)(chu)理(li) Chart 時,直接將 Chart 以及其(qi)依賴的所有 Charts 合(he)并(bing)為一個 Release,同時傳遞(di)給(gei) Kubernetes。因此 Tiller 并(bing)不負(fu)責管理(li)依賴之間的啟動(dong)順序。Chart 中(zhong)的應(ying)用需要能(neng)夠自行處(chu)(chu)理(li)依賴關系。