iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

本次目標

  1. 認識 Helm Charts
  2. Helm Chart 安裝
  3. Helm Chart 概念
  4. Helm Chart 操作

Helm Chart 就像是 Kubernetes 應用程式的包,可將複雜的 Kubernetes 應用程式打包成一個易於管理和部署的單元。可以想像是 apt 安裝一個應用程式,但它專門用於 Kubernetes 環境。

Helm Chart 好處 ?

  1. 簡化部署
    Helm Chart 可以將多個 Kubernetes YAML 檔案,如 Deployment、Service、Ingress 等打包在一起,並一次性部署,減少了手動操作的錯誤率。

  2. 版本控制
    就像軟體有版本號一樣,Helm Chart 也有版本號,方便追蹤應用程式的變更歷史,也易於回滾。

  3. 重複利用
    一個 Helm Chart 可重複使用,只需修改一些參數,就可以部署到不同的環境中。如果使用原生 YAML 多個環境要管理多個 YAML,且容易發生人為錯誤。

  4. 共享
    Helm Chart 可以共享給其他人,方便團隊協作和應用程式共享。這也表示有 Registry 概念,用於儲存包。需要時使用 helm pull 抓取。

  5. 可回滾
    Helm Chart 存在著版本控制,表示說可以從歷史進行回滾。

等等。

Helm Chart 的組成基本上是

  1. Chart.yaml
    描述 Chart 的元數據,包括名稱、版本、描述、依賴等。

  2. values.yaml
    用於配置 Chart 的參數,這些參數會在部署時被替換。

  3. templates

包含各種 Kubernetes 配置檔案的模板,例如 Deployment、Service、Ingress 等。這些模板會根據 values.yaml 中的參數生成實際的配置檔案。

Helm Chart 安裝

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

更多環境安裝,可參官方提供的安裝流程

Helm Chart 概念

  1. Repository

儲存庫是可以存放和共享圖表的地方。

  1. Release

Release 是在 Kubernetes 中執行 Helm Chart 的實例。Chart 通常可以多次安裝到同一個叢集。每次安裝時,都會建立一個版本,且安裝的 Chart 有不同名稱識別。

Helm Chart 操作

執行這些時記得要搭配一個 Kubernetes 環境。

  1. helm search 尋找 Chart

下面是在 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
  1. helm show values 用於查看 Chart 中的 values.yaml 配置

  2. helm install 當找到像要部署的 Chart 時,可用此指令安裝。安裝時至少要兩個參數

helm install <RELEASE_NAME> <CHART>
helm status <RELEASE_NAME> # 可察看狀態

如果要覆寫,values.yaml 的設定可以透過 -f 方式指定覆蓋預設 values.yaml 配置或是使用 --set 覆寫。

  1. helm upgrade 用於更新已經被部署的 Chart,無論是變更版本或是更新變數。
 helm upgrade <RELEASE_NAME> <CHART> -f dev.yaml 
  1. helm rollback 每當執行 install 或是 upgrade 都會有版本紀錄,而透過 rollback 可將當前部署 Chart 回復至某個版本紀錄。
helm history <RELEASE_NAME> # 可用於查看當前部署 Chart 擁有的歷史紀錄
helm rollback <RELEASE_NAME> <HISTORY_VERSION>
  1. helm uninstall 將安裝的 Chart 進行移除
helm uninstall <RELEASE_NAME>

可搭配參數是 --keep-history 用於保留移除紀錄

  1. helm list 查看被安裝的 Chart
helm list -A # -A 表示所有

通常會使用 -n,即指定 Kubernetes 中某個 namespace。

完整的指令操作在官方有整理相關內容

在操作以上時,預設也是會是讀取 .kube/config 下配置,來與某個 Kubernetes 環境交互,因此操作可以搭配 --kubeconfig 來指定某個 Kubernetes。

下個章節將帶來,Quarkus 與 Helm Chart 整合。


上一篇
Quarkus 實現 Hot-reload 之 Downward API 與 RBAC - 續
下一篇
為 Quarkus 建立 Helm Chart
系列文
當 Quarkus 想要騎乘駱駝並用8腳章魚掌控舵手 31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言