helm3自定義chart編寫
阿新 • • 發佈:2021-06-10
當我們安裝好helm之後我們可以開始自定義chart,那麼我們需要先創建出一個模板如下:
helm create myapp
之後我們可以一下目錄結構,目錄的作用我簡要介紹一下:
templates/
目錄包括了模板檔案。當Helm評估chart時,會通過模板渲染引擎將所有檔案傳送到templates/
目錄中。 然後收集模板的結果併發送給Kubernetes。
- _helpers.tpl裡面的內容是定義模板用的,所有模板都可以再這裡定義,然後再任何yaml檔案當中都可以呼叫這個檔案下的模板
NOTES.txt
: chart的"幫助文字"。這會在你的使用者執行helm install
時展示給他們。deployment.yaml
: 建立Kubernetes工作負載的基本清單service.yaml
: 為你的工作負載建立一個service終端基本清單。_helpers.tpl
: 放置可以通過chart複用的模板輔助物件
values.yaml
檔案也匯入到了模板。這個檔案包含了chart的預設值。這些值會在使用者執行helm install
或helm upgrade
時被覆蓋。
Chart.yaml
檔案包含了該chart的描述。你可以從模板中訪問它。charts/
目錄可以包含其他的chart(稱之為子chart)。 指南稍後我們會看到當涉及模板渲染時這些是如何工作的。
$tree myapp/ myapp/ ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── hpa.yaml │ ├── ingress.yaml │ ├── NOTES.txt │ ├── serviceaccount.yaml │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml 3 directories, 10 files
現在展示一下我所建立的chart為例
$tree myapp/ myapp/ ├── charts ├── Chart.yaml ├── templates │ ├── configmap.yaml │ └── _helpers.tpl ├── test.yaml ├── values.yaml └── values.yaml.bak 2 directories, 7 files
其中我修改過的內容如下:
$cat values.yaml favorite: drink: coffee food: pizza pizzaToppings: - mushrooms - cheese - peppers - onions
$cat templates/configmap.yaml {{ $release := "ok" }} apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap labels: {{- include "mychart.labels" . | indent 8 }} data: myvalue: "Hello World" {{- with .Values.favorite }} drink: {{ .drink }} food: {{ .food }} release: {{ $release }} {{- end }} {{- if eq .Values.favorite.drink "coffee" }} {{- nindent 4 "mug: true" }} {{- end }} toppings: |- {{- range $.Values.pizzaToppings }} -{{ . | title | quote }} {{- end }} size: |- {{- range $index,$name := tuple "small" "medium" "large" }} {{ $index }}: {{ $name }} {{- end }}
$cat templates/_helpers.tpl {{/* Generate basic labels */}} {{- define "mychart.labels" }} generator: helm date: {{ now | htmlDate }} chart: {{ .Chart.Name }} version: {{ .Chart.Version }} {{- end }}