什麼是Helm
- Helm是一個用於k8s的包管理器,使用helm以後就不須要了解k8s的yaml語法並編寫應用部署文件,能夠經過helm下載並在k8s上安裝須要的應用。
- Helm還提供了k8s的軟件部署,刪除,升級,回滾應用的強大功能。
相關術語
- Helm: 是一個命令行下的客戶端工具。主要用於 Kubernetes 應用程序 Chart 的建立、打包、發佈以及建立和管理本地和遠程的 Chart 倉庫。
- Tiller: 是 Helm 的服務端,部署在 Kubernetes 集羣中。Tiller 用於接收 Helm 的請求,並根據 Chart 生成 Kubernetes 的部署文件( Helm 稱爲 Release ),而後提交給 Kubernetes 建立應用。Tiller 還提供了 Release 的升級、刪除、回滾等一系列功能。
- Chart:Helm 的軟件包,採用 TAR 格式。相似於 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一組定義 Kubernetes 資源相關的 YAML 文件。
- Repoistory Helm 的軟件倉庫,Repository 本質上是一個 Web 服務器,該服務器保存了一系列的 Chart 軟件包以供用戶下載,而且提供了一個該 Repository 的 Chart 包的清單文件以供查詢。Helm 能夠同時管理多個不一樣的 Repository。
- Release: 使用 helm install 命令在 Kubernetes 集羣中部署的 Chart 稱爲 Release。Helm 中提到的 Release 和咱們一般概念中的版本有所不一樣,這裏的 Release 能夠理解爲 Helm 使用 Chart 包部署的一個應用實例。
Chart Install 過程
- Helm從指定的目錄或者tgz文件中解析出Chart結構信息
- Helm將指定的Chart結構和Values信息經過gRPC傳遞給Tiller
- Tiller根據Chart和Values生成一個Release
- Tiller將Release發送給Kubernetes用於生成Release
Chart Update過程
- Helm從指定的目錄或者tgz文件中解析出Chart結構信息
- Helm將要更新的Release的名稱和Chart結構,Values信息傳遞給Tiller
- Tiller生成Release並更新指定名稱的Release的History
- Tiller將Release發送給Kubernetes用於更新Release
Chart Rollback過程
- Helm將要回滾的Release的名稱傳遞給Tiller
- Tiller根據Release的名稱查找History
- Tiller從History中獲取上一個Release
- Tiller將上一個Release發送給Kubernetes用於替換當前Release
Helm Chart 結構
examples/
Chart.yaml # Yaml文件,用於描述Chart的基本信息,包括名稱版本等
LICENSE # [可選] 協議
README.md # [可選] 當前Chart的介紹
values.yaml # Chart的默認配置文件
requirements.yaml # [可選] 用於存放當前Chart依賴的其它Chart的說明文件
charts/ # [可選]: 該目錄中放置當前Chart依賴的其它Chart
templates/ # [可選]: 部署文件模版目錄,模版使用的值來自values.yaml和由Tiller提供的值
templates/NOTES.txt # [可選]: 放置Chart的使用指南
Chart.yaml 文件
name: [必須] Chart的名稱
version: [必須] Chart的版本號,版本號必須符合 SemVer 2:http://semver.org/
description: [可選] Chart的簡要描述
keywords:
- [可選] 關鍵字列表
home: [可選] 項目地址
sources:
- [可選] 當前Chart的下載地址列表
maintainers: # [可選]
- name: [必須] 名字
email: [可選] 郵箱
engine: gotpl # [可選] 模版引擎,默認值是gotpl
icon: [可選] 一個SVG或PNG格式的圖片地址
資源html
K8s-安裝
K8s-Pod
K8s-應用部署
K8s-Helmbash