参考文档: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
最后修改日期: 2020年10月12日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。