需要在 K8s 組合出服務還真的不容易,但如果今天我想要同個服務只是改個名稱,還要再去複製嗎?今天來介紹非常好用的工具 Helm。
前面簡單介紹 Kubernetes 的設定檔,還有如何基本使用、除錯、查詢 Log 紀錄。
這篇我們要來邁向更高階的設定檔,讓我們隆重介紹 Helm
。
Helm 可以管理 K8s 應用程式。
Helm Charts 訂製、安裝、升級更複雜的 K8s 應用程式。
Charts 可以簡單得建立、版本控管、分享以及發布,開始使用 Helm 並且停止複製貼上。
這是他的官網介紹,看起來很抽象,但我們可以一步一步按照官網上的步驟來實作
安裝步驟:https://helm.sh/docs/intro/install/
# Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Mac
brew install helm
其實只要一行就能完成安裝 Helm 了!
那我們就來照他的 Quickstart 來跑一遍:https://helm.sh/docs/intro/quickstart/
helm repo add bitnami https://charts.bitnami.com/bitnami # 加入 Repo
Repo 相當於 apt 裡面的倉庫,加入倉庫了以後就可以使用 update:
helm repo update
Update 之後我們就可以來試試搜尋套件:
helm search repo bitnami
就會把所有 bitmani 的套件列出來,這裡你可以注意到,他有分 Chart Version 跟 App Version,下一篇會來介紹差異。
那先來嘗試他們的安裝 App
# 自動產生名字
helm install bitnami/mysql --generate-name
# 想要自己指定名字
helm install mysql-test bitnami/mysql
# 指定安裝的 namespace
helm install mysql-test bitnami/mysql -n database
沒有跳出錯誤訊息代表安裝成功,就可以看到安裝的 Application,他們會稱作為 Release:
helm ls
這時候你可以用 kubectl
看看裡面裝了什麼:
kubectl get all
我們可以大概知道裡面裝了 StatefulSet 跟 Service,StatefulSet 的 Pod 卡在 Pending 狀態,這時候學習看一下裡面的原因。
上一篇的 Cheatsheet 看到 Pod 狀態在 Pending 就要用 describe 檢查:
kubectl describe pod mysql-test-0
這裡就可以看到原因,因為 PVC 沒有綁定,所以 K8s 無法分配 Pod 下去。
那我就把 Release 移除掉,就下 uninstall:
# helm uninstall <RELEASE_NAME>
helm uninstall mysql-test
透過 Helm 我們可以找到寫好的 K8s 設定檔,直接部署在 K8s Cluster 裡面,就不需要再複製貼上還有改名設定檔。
Helm Chart 裡面有哪些內容呢?下一篇會介紹它的基本架構。
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!