《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 14 Helm 簡介&安裝

本篇大綱

需要在 K8s 組合出服務還真的不容易,但如果今天我想要同個服務只是改個名稱,還要再去複製嗎?今天來介紹非常好用的工具 Helm。

內文

前面簡單介紹 Kubernetes 的設定檔,還有如何基本使用、除錯、查詢 Log 紀錄。

這篇我們要來邁向更高階的設定檔,讓我們隆重介紹 Helm

day14-01.png

Helm

Helm 可以管理 K8s 應用程式。

Helm Charts 訂製、安裝、升級更複雜的 K8s 應用程式。

Charts 可以簡單得建立、版本控管、分享以及發布,開始使用 Helm 並且停止複製貼上。

這是他的官網介紹,看起來很抽象,但我們可以一步一步按照官網上的步驟來實作

安裝步驟:https://helm.sh/docs/intro/install/

1
2
3
4
# Linux 
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Mac
brew install helm

day14-02.png

其實只要一行就能完成安裝 Helm 了!

那我們就來照他的 Quickstart 來跑一遍:https://helm.sh/docs/intro/quickstart/

1
helm repo add bitnami https://charts.bitnami.com/bitnami # 加入 Repo

Repo 相當於 apt 裡面的倉庫,加入倉庫了以後就可以使用 update:

1
helm repo update

day14-03.png

Update 之後我們就可以來試試搜尋套件:

1
helm search repo bitnami

day14-04.png

就會把所有 bitmani 的套件列出來,這裡你可以注意到,他有分 Chart Version 跟 App Version,下一篇會來介紹差異。

那先來嘗試他們的安裝 App

1
2
3
4
5
6
# 自動產生名字
helm install bitnami/mysql --generate-name
# 想要自己指定名字
helm install mysql-test bitnami/mysql
# 指定安裝的 namespace
helm install mysql-test bitnami/mysql -n database

day14-05.png

沒有跳出錯誤訊息代表安裝成功,就可以看到安裝的 Application,他們會稱作為 Release:

1
helm ls

day14-06.png

這時候你可以用 kubectl 看看裡面裝了什麼:

1
kubectl get all

day14-07.png

我們可以大概知道裡面裝了 StatefulSet 跟 Service,StatefulSet 的 Pod 卡在 Pending 狀態,這時候學習看一下裡面的原因。

上一篇的 Cheatsheet 看到 Pod 狀態在 Pending 就要用 describe 檢查:

1
kubectl describe pod mysql-test-0

day14-08.png

這裡就可以看到原因,因為 PVC 沒有綁定,所以 K8s 無法分配 Pod 下去。

那我就把 Release 移除掉,就下 uninstall:

1
2
# helm uninstall <RELEASE_NAME>
helm uninstall mysql-test

day14-09.png

透過 Helm 我們可以找到寫好的 K8s 設定檔,直接部署在 K8s Cluster 裡面,就不需要再複製貼上還有改名設定檔。

Helm Chart 裡面有哪些內容呢?下一篇會介紹它的基本架構。

本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!

Source


《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 14 Helm 簡介&安裝
https://blog.yangjerry.tw/2022/09/29/it2022-day14/
作者
Jerry Yang
發布於
2022年9月29日
許可協議