1 - Helm
Helm是Kubernetes的包管理器。
通過Helm可以使用一個名爲Chart的資源模板化並打包Kubernetes資源,比如Deployment,Service,ConfigMap,Ingress等。
可以在安裝時使用輸入參數來配置這些資源,也可以使用依賴項實現包安裝時複用現有圖表。
- 創建新的chart包
- 將charts包文件打包壓縮
- 同chart倉庫進行集成,獲取charts文件
- 安裝及卸載charts到kubernetes集羣
- 管理通過helm安裝的charts應用
官方信息
- https://helm.sh/
- https://helm.sh/docs/
- https://helm.sh/docs/intro/quickstart/
- https://github.com/helm
2 - 架構
概念
- chart: 一個 Helm 包,其中包含了運行一個應用所需要的鏡像、依賴和資源定義等,還可能包含 Kubernetes 集羣中的服務定義。
- release:在 Kubernetes 集羣上運行的 Chart 的一個實例。在同一個集羣上,一個 Chart 可以安裝很多次,每次安裝都會創建一個新的 release。
- repository:用於發佈和存儲 Chart 的倉庫,Helm客戶端通過HTTP協議來訪問倉庫中Chart的索引文件和壓縮包。
組件
- Helm CLI: Helm 的客戶端組件,通過 gRPC aAPI 向 Tiller 發送請求
- Tiller: Helm 的服務器端組件,在 Kubernetes 羣集上運行
負載解析客戶端端發送過來的 Chart,並根據 Chart 中的定義在 Kubernetes 中創建出相應的資源,tiller 把 release 相關的信息存入 Kubernetes 的 ConfigMap 中。
3 - Helm存儲庫
Helm存儲庫可以託管用於管理應用程序的Chart。
Helm提供了一個CLI,用於從給定的Helm存儲庫裏安裝應用程序到指定的Kubernetes環境中。
一些衆所周知的軟件應用程序的各種穩定Helm圖表可以在如下鏈接中找到,
- Github存儲庫:https://github.com/kubernetes/charts/tree/master/stable
- Kubeapps Hub:https://hub.kubeapps.com/
4 - 參考信息
- Helm 從入門到實踐: https://www.jianshu.com/p/4bd853a8068b
- 使用Helm管理kubernetes應用: https://www.jianshu.com/p/5db132101a09