Kubernetes — Helm額外筆記1

針對Helm使用上的練習筆記

ZONGRU Li
8 min readNov 2, 2021

回顧36篇筆記做得下圖:

簡單快速的練習,首先在起始路徑上建立charts目錄來存放helm chart

並且著手建立my-nginx這個chart的準備,所以再建立該名稱目錄:

接著建立my-nginx這個helm chart的描述檔:Chart.yaml

填入以下描述資訊後儲存:

然後在這個chart內在建立templates目錄:

接著透過kubectl 的dry-run指令在另一個視窗中建立deployment

的基本Configuration file,放進剛剛建立的templates目錄下,執行:

kubectl create deploy my-nginx --image nginx --dry-run=client -o yaml > charts/my-nginx/templates/deployment.yaml

接著透過上述我們建立的紅框檔案,用Helm指令正式成立Helm chart:

先在另一視窗監看deployment物件,執行:

watch -x kubectl get deploy

下面視窗執行的

在於上面視窗/home/ubuntu/charts/my-nginx目錄下執行:

helm install {給這個chart的名稱,不一定要my-nginx} {chart目錄位置可以是個點}

上述最後的"點"代表使用當下目錄的檔案建立:

當上方執行成功後,下方利馬看到跑出deployment元件

官網還有介紹如果有做好的values.yaml也可以用-f代入,或單一值變更用set:

接著確認helm chart執行:

helm list

mynginx是剛剛才建的!

在如上已經建立完chart名為mynginx情況下

我想在該chart的templates內再加入service configuration file:

先確認內容,執行暴露deployment指令:

kubectl expose deploy {剛剛建立的deployment名稱} --port 80 --dry-run=client -o yaml

上述Service內容沒問題,所以重複執行上述指令

但是導入到剛剛chart的templates目錄內:

並且改一下剛剛描述檔(Chart.yaml)內的版本描述:

接著先用另一視窗改監看service物件:

目前有這幾天課程建立的物件:

回到原視窗執行helm更新指令:

helm upgrade {Chart名,我們是mynginx} ../my-nginx

再次執行helm物件確認指令看到:

版本變2

然後還能透過helm做退版,執行:

helm rollback {chart名} {指定的版本數字}

還可以往前退到新版2:

但是再次確認helm物件會看到版本狀態變成:

接著嘗試移除整個chart,執行(新版是用uninstall指令):

helm uninstall {chart name}

接著練習注入values的方式,也就是要撰寫values.yaml檔

在/home/ubuntu/charts/my-nginx目錄下建立values.yaml檔:

嘗試改改Deployment內分裂的Pod數量,也就是replicaCount

所以現在總共有:

接著要讓值可以注入到deployment.yaml內,所以要改寫templates下的該檔

看到我的V是大寫,跟values.yaml不一樣

同時再改改Chart.yaml描述檔!

另一視窗改監視pod:

再次執行安裝指令:

helm install {給這個chart的名稱,不一定要my-nginx} {chart目錄位置可以是個點}

再移除掉chart:

我想快速代入replicaCount值改為2,參考doc範例可以這麼執行:

helm install myngix {chart目錄} --set replicaCount=2

再移除:

並且helm也提供指令可以直接觀看values.yaml內容,執行:

helm show values {chart目錄}

其實真的點也可以...

嘗試在/tmp下也建立不同名稱的values.yaml檔來使用:

改寫一下其內容:

改成3

透過不同位置的values.yaml檔來install chart執行:

helm install myngix {chart目錄} -f {另外的values.yaml檔位置}

未執行前

執行後:

接著隨便玩玩直接upgrade:

所以主要吃set代的數值

接著練習values的巢狀結構:

直接改寫最早的values.yaml檔

所以同理要改寫service.yaml檔:

順便改改描述檔:

另一視窗重新監視service,執行前:

執行後:

同理也可以用set:

最後自建部分先移除:

最後其實也可以透過helm的create指令來做建立chart範本空殼的動作,執行:

我先回到上一個放各個chart的路徑:

執行:

helm create {chart名稱}

往裡面看已經很多目錄都建好好的:

雖說這樣也是種建立方式,但是前面自建則會更乾淨一點

其他有用的參考可見官方的:The Chart Best Practices Guide

該筆記參考reference影片

但是該影片指令有很多都過期了,跟我上面的不太一樣

但是概念都差不多!

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet