1. 程式人生 > >helm-chart7,調試與hook

helm-chart7,調試與hook

nta 錯誤 debug lease contain tar 加權 升級 value

調試

幾個命令可以幫助進行調試

helm lint 首選工具,返回錯誤和警告信息。
helm install --dry-run --debug:服務器會渲染你的模板,然後返回結果清單文件。
helm get manifest:這是查看服務器上安裝的模板的方法。

如果yaml文件沒有解析,想看看生成了什麽時,檢查yaml文件一個簡單方法是註釋模板中的問題部分,然後重新運行helm install --dry-run --debug

hooks

hook 機制,為允許在release的生命周期中的某些點進行幹預,執行一些操作,比如 備份數據庫,確保先後順序等。
  

可用的hook 節點:

預安裝pre-install::在模板渲染後執行,但在Kubernetes中創建任何資源之前執行。
安裝後post-install:在所有資源加載到Kubernetes後執行
預刪除pre-delete:在從Kubernetes刪除任何資源之前執行刪除請求。
刪除後post-delete:刪除所有release的資源後執行刪除請求。
升級前pre-upgrade:在模板渲染後,但在任何資源加載到Kubernetes之前執行升級請求(例如,在Kubernetes應用操作之前)。
升級後post-upgrade:在所有資源升級後執行升級。
預回滾pre-rollback:在渲染模板之後,但在任何資源已回滾之前,在回滾請求上執行。
回滾後post-rollback:在修改所有資源後執行回滾請求。

hook 的任務執行的時候,Tiller會阻塞;任務執行失敗,則應用發布失敗。

hook 具有權重,以數字表示,可為負。當一個hook聲明了多個資源時,這些資源將被串行執行。如果他們有hook權重,他們按照加權順序執行。

Hook創建的資源不作為release的一部分進行跟蹤或管理。一旦Tiller驗證hook已經達到其就緒狀態,就不再跟蹤它了,即無法再對其進行操作。所以hook 創建的資源,無法使用 helm delete 刪除。可以在hook 中同時寫上刪除的代碼,或者指定其刪除策略:"helm.sh/hook-delete-policy"

"hook-succeeded": 指定Tiller應該在hook成功執行後刪除hook。
"hook-failed": 指定如果hook在執行期間失敗,Tiller應該刪除hook。
"before-hook-creation": 指定Tiller應在刪除新hook之前刪除以前的hook。
同時制定兩個:"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 資源,任務:起鏡像,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}}"]

一個資源可以有多個hook:

annotations:
"helm.sh/hook": post-install,post-upgrade

helm-chart7,調試與hook