Chart Hooks

Chart Hooks 概述

参考:官方文档

Helm 提供了一种** Hook(钩子) **机制可以在一个 release 的生命周期内进行干预,比如:

安装任何资源之前,提前先安装 ConfigMap 或者 Secret

在安装一个新的 Chart 执行,执行一个 Job 以备份数据库,然后在升级后执行第二个 Job 以还原数据。

在删除一个 Release 之前,运行一个 Job,以便在删除服务之前优雅得停止服务。

等等等

说白了:就是让我们在操作 Chart 中的资源时,可以运行一个 Job 或某些资源(比如删除 operator 之前,运行一个 job 先删除所有 CRD 资源)。有点类似与就类似 crds 目录 的作用一样,但并不完全一样。

Hooks 种类

pre-install # 在渲染模板之后、创建资源之前,执行安装

post-install # 在 Chart 中所有资源创建之后(并不用等待 running),执行安装

pre-delete # 在从 Kubernetes 删除任何资源之前,执行安装

post-delete # 删除所有 releases 资源后,执行安装

pre-upgrade # 在渲染模板之后,在任何资源更新之前,执行安装

post-upgrade # 在所有资源都升级后,执行安装

pre-rollback # Executes on a rollback request after templates are rendered, but before any resources are rolled back

post-rollback # Executes on a rollback request after all resources have been modified

test Executes when the Helm test subcommand is invoked ( view test docs)

Release 的生命周期

运行 helm install myapp

The Helm library install API is called

经过一些验证后,开始渲染 myapp 的模板

渲染后生成的资源加载到 Kubernetes 中

library 将 release 的数据返回给客户端

客户端退出

等待钩子准备好意味着什么? 这取决于挂钩中声明的资源。 如果资源是 Job 或 Pod 类型,Helm 将等待直到成功运行完成为止。 如果挂钩失败,释放将失败。 这是一项阻止操作,因此 Helm 客户端将在 Job 运行时暂停。

使用 Hooks

Helm 会读取 manifest 文件中的 .annotations."helm.sh/hook"annotations."helm.sh/hook-weight"annotations."helm.sh/hook-delete-policy"这三个字段,来为具有这三个字段的资源执行 Hooks 功能。


最后修改 March 23, 2023: 整理,减少顶级目录 (8b75fa89)