调试

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

  1. helm lint 首选工具,返回错误和警告信息。
  2. helm install --dry-run --debug:服务器会渲染你的模板,然后返回结果清单文件。
  3. helm get manifest:这是查看服务器上安装的模板的方法。

如果yaml文件没有解析,想看看生成了什么时,检查yaml文件一个简单方法是注释模板中的问题部分,然后重新运行helm install --dry-run --debug

hooks

hook 机制,为允许在release的生命周期中的某些点进行干预,执行一些操作,比如 备份数据库,确保先后顺序等。

  

可用的hook 节点:

  1. 预安装pre-install::在模板渲染后执行,但在Kubernetes中创建任何资源之前执行。
  2. 安装后post-install:在所有资源加载到Kubernetes后执行
  3. 预删除pre-delete:在从Kubernetes删除任何资源之前执行删除请求。
  4. 删除后post-delete:删除所有release的资源后执行删除请求。
  5. 升级前pre-upgrade:在模板渲染后,但在任何资源加载到Kubernetes之前执行升级请求(例如,在Kubernetes应用操作之前)。
  6. 升级后post-upgrade:在所有资源升级后执行升级。
  7. 预回滚pre-rollback:在渲染模板之后,但在任何资源已回滚之前,在回滚请求上执行。
  8. 回滚后post-rollback:在修改所有资源后执行回滚请求。

hook 的任务执行的时候,Tiller会阻塞;任务执行失败,则应用发布失败。

hook 具有权重,以数字表示,可为负。当一个hook声明了多个资源时,这些资源将被串行执行。如果他们有hook权重,他们按照加权顺序执行。

Hook创建的资源不作为release的一部分进行跟踪或管理。一旦Tiller验证hook已经达到其就绪状态,就不再跟踪它了,即无法再对其进行操作。所以hook 创建的资源,无法使用 helm delete 删除。可以在hook 中同时写上删除的代码,或者指定其删除策略:"helm.sh/hook-delete-policy"

  1. "hook-succeeded" 指定Tiller应该在hook成功执行后删除hook
  2. "hook-failed" 指定如果hook在执行期间失败,Tiller应该删除hook
  3. "before-hook-creation" 指定Tiller应在删除新hook之前删除以前的hook
  4. 同时制定两个:"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed"

hook 示例:

  1. apiVersion: batch/v1
  2. kind: Job
  3. metadata:
  4. name: "{{.Release.Name}}"
  5. labels:
  6. heritage: {{.Release.Service | quote }}
  7. release: {{.Release.Name | quote }}
  8. chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  9. annotations:  # hook 声明
  10. # This is what defines this resource as a hook. Without this line, the
  11. # job is considered part of the release.
  12. "helm.sh/hook": post-install
  13. "helm.sh/hook-weight": "-5"
  14. "helm.sh/hook-delete-policy": hook-succeeded
  15. spec:  # hook hook 资源,任务:起镜像,sleep 十秒。
  16. template:
  17. metadata:
  18. name: "{{.Release.Name}}"
  19. labels:
  20. heritage: {{.Release.Service | quote }}
  21. release: {{.Release.Name | quote }}
  22. chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  23. spec:
  24. restartPolicy: Never
  25. containers:
  26. - name: post-install-job
  27. image: "alpine:3.3"
  28. command: ["/bin/sleep","{{default "10" .Values.sleepyTime}}"]

一个资源可以有多个hook:

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

helm-chart7,调试与hook的更多相关文章

  1. 《逆向工程核心原理》——通过调试方式hook Api

    1.附加目标进程, 2.CREATE_PROCESS_DEBUG_EVENT附加事件中将目标api处设置为0xcc(INT 3断点) 3.EXCEPTION_DEBUG_EVENT异常事件中,首先判断 ...

  2. Helm包管理

    Helm Kubernetes 包管理工具 Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义.安装和升级复杂的 Kubernetes 应用程序,Char ...

  3. Win7 x86内核调试与TP反调试的研究

    参考  这两天对某P双机调试的学习及成果 ,非常好的一篇分析贴. 本文在Win7 x86下的分析,在虚拟机中以/DEBUG模式启动TP游戏,系统会自动重启. 0x01 内核调试全局变量  根据软件调试 ...

  4. Linux Hook 笔记

    相信很多人对"Hook"都不会陌生,其中文翻译为"钩子".在编程中, 钩子表示一个可以允许编程者插入自定义程序的地方,通常是打包好的程序中提供的接口. 比如,我 ...

  5. Android 天猫apk聊天数据库解密

    1.使用Android 天猫apk 进行聊天会产生tmallWangXinDB的数据库.2.用sqlite3 工具打开提示加密或者错误.3.需要对该数据库进行解密. 解密流程:1.反编译apk,dex ...

  6. Windows调试工具入门—1

    NetRoc http://www.DbgTech.net 引子 Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明,那么我会使用WinDbg ...

  7. 使用IDA静态分析解密《舰娘Collection》的lua脚本

    好久没写东西了,换工作之后忙得一比.你说创业?风太大没听清啊看了看以前写的东西,觉得以前写得太严肃了,从现在开始要轻松一点,要做一名逗逼码农. 本文不会介绍破解的细节,最终完成破解所编写的代码也不会公 ...

  8. 内存加载DLL

    1.前言 目前很多敏感和重要的DLL(Dynamic-link library) 都没有提供静态版本供编译器进行静态连接(.lib文件),即使提供了静态版本也因为兼容性问题导致无法使用,而只提供DLL ...

  9. java应用破解之破解 jeb mips 2.3.3

    前言 jeb 的新版支持 mips的反编译 ,于是去官网申请一个试用版,试用版的限制还是比较多的,比如 使用时间验证,没法复制粘贴 等,于是想尝试看看能否破解,同时填了 java破解 这个坑. 修改版 ...

随机推荐

  1. linux中的find命令常用场景

    1.find   file.txt            在当前目录下,查找file.txt是否存在 2.find . -name file.txt     在当前目录下,递归查找file.txt文件 ...

  2. dubbo和dubboX与微服务架构(dubbo一)

    一.传统三层架构模式的缺陷 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)web.业务逻辑层(Bu ...

  3. [再寄小读者之数学篇](2014-05-23 $\ln x-ax=0$ 有两个根时的估计)

    已知函数 $f(x)=\ln x-ax$, 其中 $a$ 为常数. 如果 $f(x)$ 有两个零点 $x_1,x_2$. 试证: $x_1x_2>e^2$. 证明: 由 $$\bex \ln x ...

  4. CRMEB客户管理+电商管理系统帮助文档,送给有需要的人

    本项目还在不断开发完善中,如有建议或问题请言

  5. vscode 正则表达式替换

    比如把1.aa2.bbb替换成 1.aa2.bbb则,查找\d+ 替换成 \n$0 $0为查找的正则匹配项editplus为\0

  6. jquery.ajax()详解

    jQuery.ajax() 函数详解 traditional 如果你希望使用传统方式来序列化参数,将该属性设为true. 传递数组时, traditional必须为true var arr = []; ...

  7. android TabLayout设置选中标签字体加粗功能

    实现 TabLayout 选中tab标签字体加粗功能如下: xml文件中定义: <android.support.design.widget.TabLayout android:id=" ...

  8. pyhton之Reportlab模块

    reportlab模块是用python语言生成pdf文件的模块 安装:pip install reportlab 模块默认不支持中文,如果使用中文需要注册 1.注册中文字体 下载自己需要的.ttf字体 ...

  9. js设置document.domain实现跨域

    document.domain 只能实现跨子域的问题 如:xxx.com/a.html 和aaa.xxx.com/b.html 或:bbb,xxx.com/c.html 和ccc.xxx.com/d. ...

  10. php页面编码设置

    php的header来定义一个php页面为utf编码或GBK编码 php页面为utf编码 header("Content-type: text/html; charset=utf-8&quo ...