調(diào)試
幾個(gè)命令可以幫助進(jìn)行調(diào)試
helm lint 首選工具,返回錯(cuò)誤和警告信息瓦侮。
helm install --dry-run --debug:服務(wù)器會(huì)渲染你的模板艰赞,然后返回結(jié)果清單文件。
helm get manifest:這是查看服務(wù)器上安裝的模板的方法肚吏。
如果yaml文件沒有解析方妖,想看看生成了什么時(shí),檢查yaml文件一個(gè)簡(jiǎn)單方法是注釋模板中的問題部分罚攀,然后重新運(yùn)行helm install --dry-run --debug
hooks
hook 機(jī)制党觅,為允許在release的生命周期中的某些點(diǎn)進(jìn)行干預(yù),執(zhí)行一些操作斋泄,比如 備份數(shù)據(jù)庫(kù)杯瞻,確保先后順序等。
可用的hook 節(jié)點(diǎn):
預(yù)安裝pre-install::在模板渲染后執(zhí)行炫掐,但在Kubernetes中創(chuàng)建任何資源之前執(zhí)行魁莉。
安裝后post-install:在所有資源加載到Kubernetes后執(zhí)行
預(yù)刪除pre-delete:在從Kubernetes刪除任何資源之前執(zhí)行刪除請(qǐng)求。
刪除后post-delete:刪除所有release的資源后執(zhí)行刪除請(qǐng)求募胃。
升級(jí)前pre-upgrade:在模板渲染后旗唁,但在任何資源加載到Kubernetes之前執(zhí)行升級(jí)請(qǐng)求(例如,在Kubernetes應(yīng)用操作之前)痹束。
升級(jí)后post-upgrade:在所有資源升級(jí)后執(zhí)行升級(jí)检疫。
預(yù)回滾pre-rollback:在渲染模板之后,但在任何資源已回滾之前参袱,在回滾請(qǐng)求上執(zhí)行电谣。
回滾后post-rollback:在修改所有資源后執(zhí)行回滾請(qǐng)求秽梅。
hook 的任務(wù)執(zhí)行的時(shí)候抹蚀,Tiller會(huì)阻塞剿牺;任務(wù)執(zhí)行失敗,則應(yīng)用發(fā)布失敗环壤。
hook 具有權(quán)重晒来,以數(shù)字表示,可為負(fù)郑现。當(dāng)一個(gè)hook聲明了多個(gè)資源時(shí)湃崩,這些資源將被串行執(zhí)行。如果他們有hook權(quán)重接箫,他們按照加權(quán)順序執(zhí)行攒读。
Hook創(chuàng)建的資源不作為release的一部分進(jìn)行跟蹤或管理。一旦Tiller驗(yàn)證hook已經(jīng)達(dá)到其就緒狀態(tài)辛友,就不再跟蹤它了薄扁,即無法再對(duì)其進(jìn)行操作。所以hook 創(chuàng)建的資源废累,無法使用 helm delete 刪除邓梅。可以在hook 中同時(shí)寫上刪除的代碼邑滨,或者指定其刪除策略:"helm.sh/hook-delete-policy"
"hook-succeeded": 指定Tiller應(yīng)該在hook成功執(zhí)行后刪除hook日缨。
"hook-failed": 指定如果hook在執(zhí)行期間失敗,Tiller應(yīng)該刪除hook掖看。
"before-hook-creation": 指定Tiller應(yīng)在刪除新hook之前刪除以前的hook匣距。
同時(shí)制定兩個(gè):"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed"
hook 示例:
apiVersion: batch/v1
kind: Job
metadata:
name: "{{.Release.Name}}"
labels:
heritage: {{.Release.Service | quote }}
release: {{.Release.Name | quote }}
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
annotations: # hook 聲明
# This is what defines this resource as a hook. Without this line, the
# job is considered part of the release.
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
spec: # hook hook 資源,任務(wù):起鏡像哎壳,sleep 十秒墨礁。
template:
metadata:
name: "{{.Release.Name}}"
labels:
heritage: {{.Release.Service | quote }}
release: {{.Release.Name | quote }}
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "alpine:3.3"
command: ["/bin/sleep","{{default "10" .Values.sleepyTime}}"]
一個(gè)資源可以有多個(gè)hook:
annotations:
"helm.sh/hook": post-install,post-upgrade