Helm 基本概念

已完成

部署、版本設定和更新應用程式時,您必須確定擁有正確的軟體程式庫和組態版本,以便應用程式如預期般運作。

假設您的開發小組決定將寵物商店公司網站部署至 Kubernetes。 在程序中,小組會建立部署、服務及輸入 YAML 式檔案。 您可以手動針對每個目標環境硬式編碼並維護每個檔案中的資訊。 不過,為每個環境維護三個檔案既繁瑣,且會隨著應用程式成長而增加複雜度。

A diagram that shows a container deployed to a Kubernetes node using a deployment, a service, and an ingress YAML file.

您可使用 Helm 來簡化應用程式部署程序,並避免硬式編碼部署變數及設定。

什麼是 Helm?

Helm 是一種適用於 Kubernetes 的套件管理員,其會將所有應用程式資源和部署資訊合併成單一部署套件。

A diagram shows a containerized app deployed to a Kubernetes cluster using a Helm chart.

您可以將 Helm 想成與 Windows 上的 Windows 套件管理員、Linux 上的進階套件工具 (APT) 或 macOS 上的 Homebrew 類似。 您可指定所要安裝、更新或移除的應用程式名稱,Helm 會負責其程序。

有了 Helm,您一次不只可以安裝單一應用程式。 Helm 可供建立人類可讀的範本化 YAML 指令檔來管理應用程式的部署。 這些範本檔案可供指定所有成功部署應用程式會使用到的必要相依性、設定對應,以及祕密。

Helm 會使用四個元件來管理 Kubernetes 叢集上的應用程式部署:

  • Helm 用戶端
  • Helm 圖表
  • Helm 版本
  • Helm 存放庫

什麼是 Helm 用戶端?

Helm 用戶端是一種由用戶端安裝的二進位檔,其負責建立及提交部署 Kubernetes 應用程式所需要的資訊清單檔。 用戶端會負責使用者和 Kubernetes 叢集之間的互動。

A diagram shows the communication between three Helm components to create a Helm release; the client, chart, and repository.

Helm 用戶端適用於所有主要作業系統,且會安裝在用戶端電腦上。 在 Azure 中,Helm 用戶端會預先安裝在 Cloud Shell 內,且支援所有 Kubernetes 的安全性、身分識別和授權功能。

注意

此課程模組假設使用 Helm v3。 您可執行 helm version 命令來檢查在用戶端裝置上執行的 Helm 版本。 若您正在執行 Helm v2,請記住本課程模組中的一部分命令參數會有所不同。

什麼是 Helm 圖表?

Helm 圖表是範本化的部署套件,其描述 Kubernetes 資源的相關集合。 其中包含所有建置和部署應用程式資訊清單檔,以在 Kubernetes 叢集上執行所需要的資訊。

Helm 圖表是由數個描述圖表的檔案和資料夾組成。 有些元件是必要項目,有些則為選擇性。 您選擇要包含在其中的項目會以應用程式設定需求為基礎。

下列清單描述 Helm 圖表的檔案和資料夾元件,並以粗體顯示所需的項目:

檔案 / 資料夾 描述
Chart.yaml 包含圖表資訊的 YAML 檔案。
values.yaml 圖表的預設設定值。
templates/ 包含圖表部署範本的資料夾。
LICENSE 包含圖表授權的純文字檔案。
README.md 包含如何使用圖表說明的 Markdown 檔案。
values.schema.json** 用來在 values.yaml 檔案上套用結構的結構描述檔。
charts/ 包含所有主要圖表子圖表的資料夾。
crds/ 自訂資源定義。
templates/Notes.txt 包含範本使用方式注意事項的文字檔。

什麼是 Helm 版本?

Helm 版本是使用圖表部署的應用程式或應用程式群組。 每次安裝圖表時,都會在叢集上建立新的應用程式執行個體。 每個執行個體都會具備版本名稱,其可供與特定的應用程式執行個體互動。

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The release is highlighted.

例如,假設您已使用圖表將兩個 Nginx 執行個體安裝到 Kubernetes 叢集。 稍後,您決定升級第一個 Nginx 執行個體,但不升級第二個。 由於這兩個版本不同,您可在不影響第二個版本的情況下升級第一個版本。

什麼是 Helm 存放庫?

Helm 存放庫是一部專用的 HTTP 伺服器,其可儲存 Helm 圖表上的資訊。 伺服器會裝載檔案,描述圖表及下載每個圖表的位置。

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The repository is highlighted.

Helm 專案會裝載許多公用圖表,以及包含可重複使用圖表的許多現有存放庫。 Helm 存放庫會簡化 Helm 套件的可探索性和再使用性。

使用 Helm 的優點

Helm 引進許多優點,可簡化應用程式部署及改善雲端原生應用程式開發和部署生命週期中的生產力。 透過 Helm,您即可擁有具備下列特性的應用程式版本:

  • 可重複、
  • 可靠、
  • 可在多個及複雜的環境中進行管理,以及
  • 可跨不同的開發小組重複使用。

Helm 圖表會使用集合輸入值所參數化封裝範本邏輯來標準化應用程式的部署。 此範本驅動套件設計提供無關環境的方法來部署和共用雲端原生應用程式。