调试

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

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的更多相关文章

  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. codeforces-1141 (div3)

    A.算2,3的因子个数即可 #include <map> #include <set> #include <ctime> #include <cmath> ...

  2. Chrome浏览器中autocomplete="off"不起作用解决方案

    多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录. 如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocompl ...

  3. Newton's Dark Secrets《牛顿探索》

    1643年1月4日,在英格兰林肯郡小镇沃尔索浦的一个自耕农家庭里,牛顿诞生了.牛顿是一个早产儿,出生时只有三磅重,接生婆和他的亲人都担心他能否活下来.谁也没有料到这个看起来微不足道的小东西会成为了一位 ...

  4. 部署自己的服务器ubuntu

    一直都是在公司的服务器上工作,想搞点自己的idea比较不方便,所以近期租了要给自己的阿里云服务器. 以下为必要的软件的安装流程: jdk+jre: 1.去官网下载 jdk-linux版本: 2.解压压 ...

  5. python 实现简单卷积网络框架

    第一步定义卷积核类: class Filter(object): # 滤波器类 对卷积核进行初始化 def __init__(self,width,height,depth): # initializ ...

  6. JS实现定时任务,每隔N秒请求后台——setInterval定时和ajax请求

    DiGui = function (param) { $.ajax({ success: function (returnValue) { window.setInterval("fnSet ...

  7. python的线程和进程

    1.线程的基本概念 概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程 ...

  8. 人体姿势识别,Convolutional pose machines文献阅读笔记。

    开源实现 https://github.com/shihenw/convolutional-pose-machines-release(caffe版本) https://github.com/psyc ...

  9. Django目录

    app和ORM的操作与介绍 框架简介 中间件 form介绍 Django自带用户认证 cookie和session 模版 模板2 ORM操作 所有ORM操作(第二版) Django请求生命周期 Dja ...

  10. storage和memory

    memory:使用的是值传递,默认使用的是memory,传递的是值 storage:引用传递,传过来的是指针,后面一定要加上internal,private pragma solidity ^; co ...