本次目標
Helm Chart 就像是 Kubernetes 應用程式的包,可將複雜的 Kubernetes 應用程式打包成一個易於管理和部署的單元。可以想像是 apt 安裝一個應用程式,但它專門用於 Kubernetes 環境。
Helm Chart 好處 ?
簡化部署
Helm Chart 可以將多個 Kubernetes YAML 檔案,如 Deployment、Service、Ingress 等打包在一起,並一次性部署,減少了手動操作的錯誤率。
版本控制
就像軟體有版本號一樣,Helm Chart 也有版本號,方便追蹤應用程式的變更歷史,也易於回滾。
重複利用
一個 Helm Chart 可重複使用,只需修改一些參數,就可以部署到不同的環境中。如果使用原生 YAML 多個環境要管理多個 YAML,且容易發生人為錯誤。
共享
Helm Chart 可以共享給其他人,方便團隊協作和應用程式共享。這也表示有 Registry 概念,用於儲存包。需要時使用 helm pull
抓取。
可回滾
Helm Chart 存在著版本控制,表示說可以從歷史進行回滾。
等等。
Helm Chart 的組成基本上是
Chart.yaml
描述 Chart 的元數據,包括名稱、版本、描述、依賴等。
values.yaml
用於配置 Chart 的參數,這些參數會在部署時被替換。
templates
包含各種 Kubernetes 配置檔案的模板,例如 Deployment、Service、Ingress 等。這些模板會根據 values.yaml 中的參數生成實際的配置檔案。
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
更多環境安裝,可參官方提供的安裝流程。
儲存庫是可以存放和共享圖表的地方。
Release 是在 Kubernetes 中執行 Helm Chart 的實例。Chart 通常可以多次安裝到同一個叢集。每次安裝時,都會建立一個版本,且安裝的 Chart 有不同名稱識別。
執行這些時記得要搭配一個 Kubernetes 環境。
下面是在 Artifact Hub 尋找關於 Nginx 的 Chart。
:~$ helm search hub nginx
URL CHART VERSION APP VERSION DESCRIPTION
https://artifacthub.io/packages/helm/cloudnativ... 3.2.0 1.16.0 Chart for the nginx server
https://artifacthub.io/packages/helm/bitnami/nginx 18.1.11 1.27.1 NGINX Open Source is a web server that can be a...
https://artifacthub.io/packages/helm/krakazyabr... 1.0.0 1.19.0 Nginx Helm chart for Kubernetes\
...
如果假設是將團隊的 Chart 存放至 Gitlab 上,則可以新增一個 repo 來源,並針對該 repo 進行 Chart 搜尋。
$ helm repo add gitlab ....
$ helm search repo gitlab
helm show values 用於查看 Chart 中的 values.yaml 配置
helm install 當找到像要部署的 Chart 時,可用此指令安裝。安裝時至少要兩個參數
helm install <RELEASE_NAME> <CHART>
helm status <RELEASE_NAME> # 可察看狀態
如果要覆寫,values.yaml 的設定可以透過 -f
方式指定覆蓋預設 values.yaml 配置或是使用 --set
覆寫。
helm upgrade <RELEASE_NAME> <CHART> -f dev.yaml
rollback
可將當前部署 Chart 回復至某個版本紀錄。helm history <RELEASE_NAME> # 可用於查看當前部署 Chart 擁有的歷史紀錄
helm rollback <RELEASE_NAME> <HISTORY_VERSION>
helm uninstall <RELEASE_NAME>
可搭配參數是 --keep-history
用於保留移除紀錄
helm list -A # -A 表示所有
通常會使用 -n,即指定 Kubernetes 中某個 namespace。
完整的指令操作在官方有整理相關內容。
在操作以上時,預設也是會是讀取 .kube/config
下配置,來與某個 Kubernetes 環境交互,因此操作可以搭配 --kubeconfig
來指定某個 Kubernetes。
下個章節將帶來,Quarkus 與 Helm Chart 整合。