Helm Hooks 是 Helm Chart 的一个强大功能,允许开发人员在 Helm Chart 的生命周期的关键点执行自定义操作。这些操作可以包括安装、升级、删除等事件的前后进行任务,例如数据迁移、备份、测试等。
pre-install
, post-install
, pre-delete
, post-delete
等。helm.sh/hook-delete-policy
注解来管理 hook 执行后资源的删除策略。在此案例中,我们将创建一个 Helm Hook,用于在安装应用之前执行数据库迁移。
定义一个数据库迁移作业
在 Helm 图表中,创建一个 Kubernetes Job 用于数据库迁移。该 Job 被标记为 pre-install
Hook。
# templates/pre-install-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-db-migration"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
template:
spec:
containers:
- name: db-migration
image: my-db-migration-image
command: ["db-migrate", "up"]
restartPolicy: Never
部署 Helm 图表
使用 helm install
部署图表时,Helm 将首先执行这个数据库迁移的 Job。
helm install my-release ./my-chart
在这个案例中,Helm Hook 用于确保在应用完全部署之前完成数据库迁移,这有助于确保应用的部署是顺利且一致的。通过使用 Hooks,Helm 图表可以在 Kubernetes 集群中实现复杂的部署策略和流程控制。