Hooks
Hooks
- 在加载任何其他
chart 之前,在安装过程中加载ConfigMap 或Secret 。 - 在安装新
chart 之前执行作业以备份数据库,然后在升级后执行第二个作业以恢复数据。 - 在删除
release 之前运行作业,以便在删除release 之前优雅地停止服务。
可用的Hooks
定义了以下
- 预安装
pre-install: :在模板渲染后执行,但在Kubernetes 中创建任何资源之前执行。 - 安装后
post-install :在所有资源加载到Kubernetes 后执行 - 预删除
pre-delete :在从Kubernetes 删除任何资源之前执行删除请求。 - 删除后
post-delete :删除所有release 的资源后执行删除请求。 - 升级前
pre-upgrade :在模板渲染后,但在任何资源加载到Kubernetes 之前执行升级请求(例如,在Kubernetes 应用操作之前) 。 - 升级后
post-upgrade :在所有资源升级后执行升级。 - 预回滚
pre-rollback :在渲染模板之后,但在任何资源已回滚之前,在回滚请求上执行。 - 回滚后
post-rollback :在修改所有资源后执行回滚请求。
Hook 声明
apiVersion: batch/v1
kind: Job
metadata:
name: "{{.Release.Name}}"
labels:
app.kubernetes.io/managed-by: {{.Release.Service | quote}}
app.kubernetes.io/instance: {{.Release.Name | quote}}
helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
annotations:
# 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:
template:
metadata:
name: "{{.Release.Name}}"
labels:
app.kubernetes.io/managed-by: {{.Release.Service | quote}}
app.kubernetes.io/instance: {{.Release.Name | quote}}
helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "alpine:3.3"
command: ["/bin/sleep","{{default"10".Values.sleepyTime}}"]
注释使这个模板成为
annotations:
"helm.sh/hook": post-install
一个资源可以部署多个
annotations:
"helm.sh/hook": post-install,post-upgrade
同样,实现一个给定的
子
可以为一个
annotations:
"helm.sh/hook-weight": "5"
pre-install
post-install
还可以定义确定何时删除相应的
annotations:
"helm.sh/hook-delete-policy": hook-succeeded
可以选择一个或多个定义的注释值:
- “hook-succeeded” 指定
Tiller 应该在hook 成功执行后删除hook 。 - “hook-failed” 指定如果
hook 在执行期间失败,Tiller 应该删除hook 。 - “before-hook-creation” 指定
Tiller 应在删除新hook 之前删除以前的hook 。