Helm Chart Hooks
In the Kubernetes environment, you can use the hooks for event-based chart upgrade, downgrade and delete operation.
Helm supports a lot of hooks that related to events, those are pre-install, post-install, pre-delete and etc. For example, if you want to ensure, the deployment process occurred after secrets are created successfully on the Kubernetes environment you can use `pre-install` annotation on your helm chart.
You can get more information about where to use these helm chart hooks from there: https://helm.sh/docs/topics/charts_hooks/
Today I will show you a simple example for pre-delete annotations let’s start a story.
Design of the Story
Suppose that, you are planning to use MongoDB on your Kubernetes Cluster with a helm chart, but you want to backup a specific database while you upgrade or delete the MongoDB helm chart.
This example is not to have production-grade compliance, but it can give ideas for you.
For these requirements, the helm presents a capability to catch those events like delete
, upgrade
.. etc.
You can catch the delete event in this annotation shown below.
annotations:
"helm.sh/hook": "pre-delete"
This annotation is defined on a pod manifest file, and when the delete event occurred, the pod starts and makes what it should do. In my case, designed a pod to take the snapshot of my MongoDB pod.
command: ['sh', '-c', 'mongodump --host {{ .Release.Name }}-mongodb {{ .Values.backup.targetDb}}--port 27017']
As a summary, when I run helm delete mychart
command and then these annotations catch the event and run the pod.
In this blogpost, I just wanted to tell a story about the concept, but you can use this annotation for a lot of use cases like you can be sure configmap is successfully created before your pods like this annotation :
annotations:
"helm.sh/hook": "pre-install"
If you want to learn more information about helm hook annotations you can check the official link from there:
You can check the example in this repository :