美文网首页
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

    调试 几个命令可以帮助进行调试 如果yaml文件没有解析,想看看生成了什么时,检查yaml文件一个简单方法是注释模...

  • Frida初识

    Frida简介 Frida 是一款基于 Python + JavaScript 的 Hook 与调试框架。是一款易...

  • JSON.parse遇到的错误

    调试时到 Error in mounted hook: "SyntaxError: Unexpected toke...

  • 调试iPhone越狱手机app

    调试可以用 Monkeydev (可调试 hook 、class-dump头文件、重签名等) CrackerXI、...

  • DebugValue Hook

    DebugValue Hook useDebugValue:用于将自定义Hook的关联数据显示到调试栏 如果创建的...

  • Android Hook工具之Frida 安装配置教程

    Frida是一款基于Python + JavaScript的Hook调试框架,可以将自己编写的JavaScript...

  • Frida详细安装教程

    1. 概述 Frida是个轻量级别的hook框架 是Python API,但JavaScript调试逻辑 Frid...

  • PLT分析与hook

    PLT分析与hook

  • Android Inline Hook 详解

    前言 网上有几篇关于Android inline hook的文章,这篇尤其不错,还有对应的示例代码。为了方便调试看...

  • Frida 之 Java层Hook

    前言 Frida是个轻量级别的hook框架,是Python API,但JavaScript调试逻辑,它既可以hoo...

网友评论

      本文标题:helm-chart7,调试与hook

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