Helm提供了Hook的机制,允许Chart开发人员在Release的生命周期中的某些节点来进行干预,比如我们可以利用Hooks来做下面的这些事情:
- 在加载Chart的其它资源之前,先加载ConfigMap或Secret。
- 在安装新Chart之前执行作业以备份数据库,然后在升级后执行第二个作业以恢复数据。
- 在删除Release之前运行作业,以便在删除Release之前优雅地停止服务。
Hooks和普通模板一样工作,但是它们具有特殊的注释,可以使Helm以不同的方式使用它们。
Hooks在资源清单中的metadata部分用annotations注解的方式进行声明:
apiVersion: batch/v1
kind: Job
metadata:
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
......
Helm中定义了如下一些可供我们使用的Hooks:
注解值 | 说明 |
---|---|
预安装pre-install | 在渲染模板之后,但在Kubernetes中创建任何资源之前执行 |
安装后post-install | 在所有Kubernetes资源安装到集群后执行 |
预删除pre-delete | 在从Kubernetes删除任何资源之前执行删除请求 |
删除后post-delete | 删除所有Release的资源后执行 |
升级前pre-upgrade |