美文网首页
helm-chart7,调试与hook

helm-chart7,调试与hook

作者: 名白 | 来源:发表于2018-08-27 09:11 被阅读0次

    调试

    几个命令可以帮助进行调试

    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

          本文链接:https://www.haomeiwen.com/subject/vcqjmftx.html