Helm 是什么
* Helm 是 Deis 開發(fā)的一個(gè)用于 Kubernetes 應(yīng)用的包管理工具,主要用來管理 Charts。有點(diǎn)類似于 Ubuntu 中的 APT 或
CentOS 中的 YUM。
* Helm Chart 是用來封裝 Kubernetes 原生應(yīng)用程序的一系列 YAML 文件??梢栽谀悴渴饝?yīng)用的時(shí)候自定義應(yīng)用程序的一些
Metadata,以便于應(yīng)用程序的分發(fā)。
對于應(yīng)用發(fā)布者而言,可以通過 Helm 打包應(yīng)用、管理應(yīng)用依賴關(guān)系、管理應(yīng)用版本并發(fā)布應(yīng)用到軟件倉庫。
* 對于使用者而言,使用 Helm 后不用需要編寫復(fù)雜的應(yīng)用部署文件,可以以簡單的方式在 Kubernetes 上查找、安裝、升級、回滾、卸載應(yīng)用程序。
做為 Kubernetes 的一個(gè)包管理工具,Helm具有如下功能:
* 創(chuàng)建新的 chart
* chart 打包成 tgz 格式
* 上傳 chart 到 chart 倉庫或從倉庫中下載 chart
* 在Kubernetes集群中安裝或卸載 chart
* 管理用Helm安裝的 chart 的發(fā)布周期
Helm 組件及相關(guān)術(shù)語
本文中講到的是helm V2最新版本,V3版本也已經(jīng)發(fā)布了beta版,在 Helm 3 中,Tiller 被移除了。
*
Helm
Helm 是一個(gè)命令行下的客戶端工具。主要用于 Kubernetes 應(yīng)用程序 Chart 的創(chuàng)建、打包、發(fā)布以及創(chuàng)建和管理本地和遠(yuǎn)程的 Chart 倉庫。
*
Tiller
Tiller 是 Helm 的服務(wù)端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的請求,并根據(jù) Chart 生成
Kubernetes 的部署文件( Helm 稱為 Release ),然后提交給 Kubernetes 創(chuàng)建應(yīng)用。Tiller 還提供了 Release
的升級、刪除、回滾等一系列功能。
*
Chart
包含了創(chuàng)建Kubernetes的一個(gè)應(yīng)用實(shí)例的必要信息,Helm 的軟件包,采用 TAR 格式。類似于 APT 的 DEB 包或者 YUM 的 RPM
包,其包含了一組定義 Kubernetes 資源相關(guān)的 YAML 文件。
*
Repoistory
Helm 的軟件倉庫,Repository 本質(zhì)上是一個(gè) Web 服務(wù)器,該服務(wù)器保存了一系列的 Chart 軟件包以供用戶下載,并且提供了一個(gè)該
Repository 的 Chart 包的清單文件以供查詢。Helm 可以同時(shí)管理多個(gè)不同的 Repository。
*
Release
是一個(gè) chart 及其配置的一個(gè)運(yùn)行實(shí)例,使用 helm install 命令在 Kubernetes 集群中部署的 Chart 稱為 Release。
Helm 工作流程
*
Chart Install 過程
Helm 從指定的目錄或者 TAR 文件中解析出 Chart 結(jié)構(gòu)信息。
Helm 將指定的 Chart 結(jié)構(gòu)和 Values 信息通過 gRPC 傳遞給 Tiller。
Tiller 根據(jù) Chart 和 Values 生成一個(gè) Release。
Tiller 將 Release 發(fā)送給 Kubernetes 用于生成 Release。
*
Chart Update 過程
Helm 從指定的目錄或者 TAR 文件中解析出 Chart 結(jié)構(gòu)信息。
Helm 將需要更新的 Release 的名稱、Chart 結(jié)構(gòu)和 Values 信息傳遞給 Tiller。
Tiller 生成 Release 并更新指定名稱的 Release 的 History。
Tiller 將 Release 發(fā)送給 Kubernetes 用于更新 Release。
*
Chart Rollback 過程
Helm 將要回滾的 Release 的名稱傳遞給 Tiller。
Tiller 根據(jù) Release 的名稱查找 History。
Tiller 從 History 中獲取上一個(gè) Release。
Tiller 將上一個(gè) Release 發(fā)送給 Kubernetes 用于替換當(dāng)前 Release。
*
Chart 處理依賴說明
Tiller 在處理 Chart 時(shí),直接將 Chart 以及其依賴的所有 Charts 合并為一個(gè) Release,同時(shí)傳遞給
Kubernetes。因此 Tiller 并不負(fù)責(zé)管理依賴之間的啟動(dòng)順序。Chart 中的應(yīng)用需要能夠自行處理依賴關(guān)系。
熱門工具 換一換