helm-chart7,调试与hook

博客介绍了Helm的调试与hook机制。调试方面,可通过注释模板问题部分,用特定命令检查yaml文件。hook机制允许在release生命周期特定点干预,如备份数据库。hook有执行规则、权重,创建的资源管理特殊,还给出了示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试

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

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

转载于:https://www.cnblogs.com/mingbai/p/helmChart7.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值