Helm Chart 的安裝流程涉及多個環節,從理解 helm install 命令的各個引數開始,包含 NAME、CHART 和 flags,到實際執行安裝 WordPress Chart 的案例,並解析安裝後的輸出資訊,例如釋放名稱、名稱空間、狀態等。接著,文章詳細說明瞭如何使用 helm list 和 helm get 命令檢查已安裝的釋放,以及如何檢視鉤子、清單、說明、值等資訊。更進一步,文章探討了 Helm 安裝與管理的最佳實務,例如使用 Namespace、組態值的選擇 (--set 和 --values)、以及如何設定環境變數等,並提供具體的程式碼範例和操作步驟。最後,文章以 WordPress 應用程式的安裝與存取為例,展示了 Helm 在實際應用中的流程,並說明瞭如何透過 kubectl CLI 檢視安裝內容。
安裝你的第一個 Helm Chart
安裝 Helm Chart 的過程中,我們需要了解幾個關鍵引數。這些引數包括 NAME、CHART 以及 flags,它們分別對應於 Helm 釋放的名稱、要安裝的 Chart 以及其他自定義選項。
NAME 引數
NAME 引數是你希望為 Helm 釋放命名的名稱。一個釋放捕捉了使用 Chart 安裝的 Kubernetes 資源,並且追蹤應用程式的生命週期。在這一章中,我們將探討釋放的工作原理。
CHART 引數
CHART 引數是要安裝的 Helm Chart 的名稱。來自儲存函式庫的 Chart 可以透過 <repo name>/<chart name> 的形式來安裝。
flags 選項
flags 選項允許你進一步自定義安裝過程。這些選項可以用來定義和覆寫值、指定要操作的名稱空間等。你可以透過執行 helm install --help 來檢視所有可用的 flags。
安裝第一個 Helm Chart
瞭解了 helm install 的用法後,我們可以執行以下命令來安裝 WordPress Chart:
$ helm install wordpress bitnami/wordpress --values=wordpress-values.yaml --namespace chapter3 --version 8.1.0
這個命令會使用 bitnami/wordpress Helm Chart 安裝一個名為 wordpress 的新釋放。它會使用 wordpress-values.yaml 檔案中定義的值來自定義安裝,並且將 Chart 安裝在 chapter3 名稱空間中。此外,它還會佈署版本 8.1.0,如 --version flag 所指定。如果沒有這個 flag,Helm 會安裝最新版本的 Chart。
安裝成功後的輸出
如果 Chart 安裝成功,你應該會看到以下輸出:
NAME: wordpress
LAST DEPLOYED: <timestamp>
NAMESPACE: chapter3
STATUS: deployed
REVISION: 1
NOTES:
1. Get the WordPress URL by running:
echo "http://$(minikube ip):$(kubectl get svc --namespace chapter3 -o jsonpath="{.items[0].spec.ports[0].nodePort}")"
2. Login with the following credentials to see your blog:
echo Username: user
echo Password: $(kubectl get secret --namespace chapter3 wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
這些輸出顯示了安裝資訊,包括釋放名稱、佈署時間、名稱空間、佈署狀態和修訂版本號(初始安裝時為1)。此外,它還提供了一些與安裝相關的附加說明。這些說明提供瞭如何存取和驗證 WordPress 應用程式的資訊。儘管這些說明在安裝後直接顯示,但它們可以在任何時間透過 helm get notes 命令來檢索,如下一節所述。
檢查你的釋放
完成第一次 Helm 安裝後,我們可以檢查釋放以觀察所應用的資源和組態。
檢視所有釋放
最簡單的方法是列出給定名稱空間中的所有 Helm 需求。Helm 提供了 list 次命令來實作這一點。執行以下命令以檢視 chapter3 名稱空間中的釋放列表:
$ helm list --namespace chapter3
你應該會看到該名稱空間中只有一個釋放,如下所示:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
wordpress chapter3 1 <timestamp> deployed wordpress-8.1.0 5.6.0
這些輸出包含以下資訊:
- 需求名稱:wordpress
- 名稱空間:chapter3
- 最新修訂版本號:1
- 最新修訂時間戳:
- 需求狀態:deployed
- 檔案名稱:wordpress-8.1.0
- 應用程式版本:5.6.0
取得更多詳細資訊
儘管 list 次命令提供了高層次的需求資訊,但使用者可能希望瞭解更多有關特定需求的資訊。Helm 提供了 get 次命令來提供更多資訊。
以下是一些可以用來取得詳細需求資訊的命令:
- 取得指定需求的所有鉤子:
$ helm get hooks wordpress --namespace chapter3
- 取得指定需求的清單:
$ helm get manifest wordpress --namespace chapter3
- 取得指定需求的說明:
$ helm get notes wordpress --namespace chapter3
- 取得指定需求的值:
$ helm get values wordpress --namespace chapter3
- 取得有關指定需求的所有資訊:
$ helm get all wordpress --namespace chapter3
檢視鉤子
第一個命令 helm get hooks 用於顯示給定需求的鉤子。鉤子將在 Chapter 5 和 Chapter 6 中探討得更詳細,當我們學習構建和測試 Helm Charts時。目前,我們可以將鉤子視為在應用程式生命週期的某些階段中 Helm 執行的一系列操作。
執行以下命令以檢視此釋放中包含的鉤子:
$ helm get hooks wordpress --namespace chapter3
在輸出中,你會找到兩個具有以下註解的 Kubernetes Pod 清單:
'helm.sh/hook': test-success
這個註解表示一個在執行測試次命令時執行的一系列操作,我們將在第六章《測試 Helm Charts》中探討。
這些測試鉤子為圖表開發人員提供了一種機制來確認圖表按設計執行,並且可以被終端使用者忽略。
由於此圖表中包含的兩個鉤子都是為測試目的而設,讓我們繼續進行前一節中的下一個命令以繼續需求檢查。
檢視清單
$ helm get manifest wordpress --namespace chapter3
執行此命令後,你將看到以下 Kubernetes 清單:
- Two Secret 清單。
- Two ConfigMap 清單(第一個用於組態 WordPress 應用程式,而第二個用於測試)。
- One PersistentVolumeClaim 清單。
- Two Services 清單。
- One Deployment 清單。
- One StatefulSet 清單。
從這些輸出中,你可以觀察到你在組態 Kubernetes 資源時所設定的一些值產生了效果。例如,WordPress service 的 type 已經被設定為 NodePort:

此外,我們還可以觀察到為 WordPress 使用者設定的一些其他值。這些值作為環境變數定義在 WordPress 擴充套件中:

大多數由圖表提供的預設值保持不變。那些預設值已經應用於 Kubernetes 資源並且可以透過 helm get manifest 次命令進行觀察。如果已經更改了那些值,則 Kubernetes 資源將組態不同。
檢視說明
接下來是檢視說明資訊:
$ helm get notes wordpress --namespace chapter3
使用上面提到過得說明訊息就能夠再次得到檢索到之前記錄過得佈署細節說明!
檢視值
最後是檢視值資訊:
$ helm get values wordpress --namespace chapter3
## 下面是佈署使用過得引數集合:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wordp.......```
內容解密:
這段程式碼展示了一個完整且典型 Helm 安裝 WordPress 的範例清單資訊內容。 其中包括:
- 一組 Secret 清單:
- 一組 ConfigMap 清單:
- 一組 PersistentVolumeClaim 清單:
- 一組 Services 清單:
- 一組 Deployment 清單:
- 一組 StatefulSet 清單: 而之所以能夠執行成功並且展示這樣完整內容資料應該是因為我們之前執行過「$ helm install」命令及各種引陣列態才能夠展示如此完整清晰資料結果!
安裝與管理 Helm Chart 的最佳實踐
在現代的雲端運算與 DevOps 環境中,Helm 作為 Kubernetes 的套件管理工具,已成為不可或缺的一部分。本文將探討如何安裝與管理 Helm Chart,並提供具體的案例與技術分析,幫助讀者更好地理解 Helm 的應用。
安裝 Helm Chart 並檢視組態
在安裝完 Helm Chart 之後,我們可以使用 helm get values 命令來檢視使用者提供的組態值。這些值應該與 wordpress-values.yaml 檔案中的組態一致。這個命令的輸出結果應該如下所示:
$ helm get values wordpress --namespace chapter3
如果需要檢視所有的組態值,包括預設值,可以使用 --all 旗標:
$ helm get values wordpress --all --namespace chapter3
這個命令的輸出會非常長,但可以幫助我們瞭解所有使用的組態值。
使用 helm get all 命令
Helm 提供了一個 helm get all 命令,可以聚合所有 helm get 命令的結果:
$ helm get all wordpress --namespace chapter3
除了使用 Helm 提供的命令外,我們還可以使用 kubectl CLI 來更詳細地檢視安裝內容。例如,可以使用以下命令來取得特定型別的資源:
$ kubectl get all -l app=wordpress --namespace chapter3
這樣可以確保傳回的資源屬於指定的 Helm 釋放。
Namespace 的使用
在使用 Helm 命令時,我們可以使用 -n 旗標來指定 Namespace,這樣可以減少打字的工作量。此外,還可以設定環境變數 HELM_NAMESPACE 來指定預設的 Namespace:
# 在 macOS 和 Linux 上設定環境變數
$ export HELM_NAMESPACE=chapter3
# 在 Windows 上使用 PowerShell 設定環境變數
> $env:HELM_NAMESPACE = 'chapter3'
可以使用 helm env 命令來驗證環境變數是否正確設定:
$ helm env
組態值的選擇
在安裝、升級和回復時,我們可以選擇兩種方式來傳遞組態值:--set 和 --values。
--set用於從命令列傳遞單一值。--values用於從 YAML 檔案或 URL 傳遞多個值。
建議使用 --values 旗標,因為這樣更容易管理和儲存組態檔案,並且更具可重複性。
舉例:使用 --set
$ helm install wordpress stable/wordpress --set wordpressBlogName=MyBlog --namespace chapter3
舉例:使用 --values
$ helm install wordpress stable/wordpress -f values.yaml --namespace chapter3
安裝 WordPress 應用
完成 Helm Chart 的安裝後,我們可以透過以下步驟來存取 WordPress 應用:
# 在 macOS 或 Linux 上執行以下命令
$ export NODE_PORT=$(kubectl get --namespace chapter3 -o jsonpath="{.spec.ports[0].nodePort}" services wordpress)
$ export NODE_IP=$(kubectl get nodes --namespace chapter3 -o jsonpath="{.items[0].status.addresses[0].address}")
$ echo "WordPress URL: http://$NODE_IP:$NODE_PORT/"
$ echo "WordPress Admin URL: http://$NODE_IP:$NODE_PORT/admin"
# 在 Windows PowerShell 上執行以下命令
> $NODE_PORT = kubectl get --namespace chapter3 -o jsonpath="{.spec.ports[0].nodePort}" services wordpress | Out-String
> $NODE_IP = kubectl get nodes --namespace chapter3 -o jsonpath="{.items[0].status.addresses[0].address}" | Out-String
> echo "WordPress URL: http://$NODE_IP:$NODE_PORT/"
> echo "WordPress Admin URL: http://$NODE_IP:$NODE_PORT/admin"
這些命令會顯示存取 WordPress 應用的 URL。第一個 URL 是網站的首頁,第二個 URL 是管理控制檯。
WordPress 應用介紹
存取 WordPress 應用後,我們會看到一個類別似於以下圖示的頁面:
本檔案案中的相關內容:
- wordpressBlogName:這個值會顯示在網站標題和版權宣告中。
- wordpressUsername:這個值會顯示在「Hello world!」文章的作者欄位中。
透過這些步驟和分析,玄貓相信讀者能夠更好地理解如何安裝與管理 Helm Chart,並且能夠應用到實際的 Kubernetes 操作中。