Helm 架構

Helm 架構

此文件概略描述 Helm 架構。

Helm 目的

Helm 是一種用於管理 Kubernetes 套件(稱為圖表)的工具。Helm 可以執行下列動作

  • 從頭建置新圖表
  • 將圖表封裝成圖表歸檔 (tgz) 檔案
  • 與儲存圖表的圖表存放庫互動
  • 安裝和解除安裝圖表至現有 Kubernetes 群集
  • 管理透過 Helm 安裝圖表的發行週期

對於 Helm,有三個重要的概念

  1. 圖表是要建立 Kubernetes 應用程式實例的必要資訊組
  2. config 包含設定資訊,可以合併到封裝的圖表中以建立可發行的物件。
  3. 發行圖表 的執行實例,結合特定的 config

元件

Helm 是實作到兩個不同部分的可執行檔

Helm Client 是提供給最終使用者的命令列客戶端。客戶端負責下列事項

  • 本機圖表開發
  • 管理存放庫
  • 管理發行
  • 與 Helm 函式庫介接
    • 傳送圖表準備安裝
    • 要求升級或解除安裝現有發行

Helm 函式庫提供執行所有 Helm 作業的邏輯。它會跟 Kubernetes API 伺服器介接並提供下列功能

  • 結合圖表和設定以建置發行
  • 將圖表安裝到 Kubernetes,並提供後續的發行物件
  • 透過與 Kubernetes 互動升級和解除安裝圖表

獨立的 Helm 函式庫封裝了 Helm 邏輯,以便不同的客戶端可以利用它。

實作

Helm 伺服器端程式碼庫和函式庫使用 Go 程式語言撰寫。

此函式庫使用 Kubernetes 伺服器端程式碼庫來與 Kubernetes 進行通訊。目前,此函式庫使用 REST+JSON。它將資訊儲存在位於 Kubernetes 內的 Secrets 中。它不需要自己的資料庫。

在可能的情況下,組態檔都使用 YAML 編寫。