前言
helm 是一個 k8s 設定檔管理的一種工具,這邊是紀錄一些比較特別的用法,避免以後忘記。
架構
heml 的架構大概如下
1 | |--Chart.yaml |
基本取值
基本上 templates > deployment.yaml 就是 outline,實際的值都會放在 values.yaml 裡面,而在 template 簡單使用的方式大概有以下兩種。
1 | # deployment.yaml |
對應到 values.yaml 和 Chart.yaml 格式是這樣
1 | # values.yaml |
而在 deployment.yaml 裡面也可以拿 _helpers.tpl
裡面的東西,最簡單的就是透過 include "test.name" .
去拿。
1 | # deployment.yaml |
而在 _helpers.tpl
裡面是這樣宣告的
1 | {{- define "test.name" -}} |
不同 scope
但因為有 array 的關係,所以在 helm 可以這樣用
1 | {{- range .Values.list }} |
對應到 values.yaml
1 | othervalue: cool |
但如果想在這個 range scope 裡面使用 .Values.othervalue
是沒辦法的,因為 scope 關係,所以必須改用 $
這個全域變數取得最上層的 scope,變成 $.Values.othervalue
就可以在 range scope 裡面使用
1 | {{- range .Values.list }} |
而對應到 _helpers.tpl
的話,一樣會有 scope 問題,所以必須把 .
改成 $
才可以正常取值。
1 | {{- range .Values.list }} |
dry-run
另外寫完可以直接在 local 用 dry-run 的方式確認是否設定正確 (在 Chart.yaml 同個目錄下)helm template {name} . --dry-run --debug
也可以指定特定 valueshelm template {name} . --dry-run --debug -f values/staging.yaml
後記
以上簡單記錄使用方式,有遇到更特別再陸續補上。