Helm 架構
Helm 架構
此文件概略描述 Helm 架構。
Helm 目的
Helm 是一種用於管理 Kubernetes 套件(稱為圖表)的工具。Helm 可以執行下列動作
- 從頭建置新圖表
- 將圖表封裝成圖表歸檔 (tgz) 檔案
- 與儲存圖表的圖表存放庫互動
- 安裝和解除安裝圖表至現有 Kubernetes 群集
- 管理透過 Helm 安裝圖表的發行週期
對於 Helm,有三個重要的概念
- 圖表是要建立 Kubernetes 應用程式實例的必要資訊組
- config 包含設定資訊,可以合併到封裝的圖表中以建立可發行的物件。
- 發行是 圖表 的執行實例,結合特定的 config。
元件
Helm 是實作到兩個不同部分的可執行檔
Helm Client 是提供給最終使用者的命令列客戶端。客戶端負責下列事項
- 本機圖表開發
- 管理存放庫
- 管理發行
- 與 Helm 函式庫介接
- 傳送圖表準備安裝
- 要求升級或解除安裝現有發行
Helm 函式庫提供執行所有 Helm 作業的邏輯。它會跟 Kubernetes API 伺服器介接並提供下列功能
- 結合圖表和設定以建置發行
- 將圖表安裝到 Kubernetes,並提供後續的發行物件
- 透過與 Kubernetes 互動升級和解除安裝圖表
獨立的 Helm 函式庫封裝了 Helm 邏輯,以便不同的客戶端可以利用它。
實作
Helm 伺服器端程式碼庫和函式庫使用 Go 程式語言撰寫。
此函式庫使用 Kubernetes 伺服器端程式碼庫來與 Kubernetes 進行通訊。目前,此函式庫使用 REST+JSON。它將資訊儲存在位於 Kubernetes 內的 Secrets 中。它不需要自己的資料庫。
在可能的情況下,組態檔都使用 YAML 編寫。