参考文档:https://helm.sh/docs/topics/charts_hooks/
一、介绍
helm hook是一种钩子机制。它可以在helm生成release时对secret或者configmap进行操作,也可以在helm执行前对数据库进行备份或者在执行前删除其他任务等。常见的模式有以下几种:
pre-install 在渲染模板之后但在Kubernetes中创建任何资源之前执行
post-install 将所有资源加载到Kubernetes之后执行
pre-delete 从Kubernetes删除任何资源之前,对删除请求执行
post-delete 在删除所有版本的资源后,对删除请求执行
pre-upgrade 在呈现模板之后但在更新任何资源之前,对升级请求执行
post-upgrade 升级所有资源后执行升级
pre-rollback 在呈现模板之后但在回滚任何资源之前,对回滚请求执行
post-rollback 修改所有资源后,对回滚请求执行
test 在调用Helm test子命令时执行( 查看测试文档)
二、配置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 }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
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 }}"]
针对项目可查看helm仓库chart包信息
[root@xiangys0134-k8s-node01 xc-osp]# helm search repo xc-osp|grep xiangys0134
26458-xiangys0134/xc-osp 0.1.10 1.0 A Helm chart for Kubernetes
留言