So far, we have been using Helm to help us generate the resources our applications need to be submitted to Kubernetes. In the ideal world, this would be all that we would need a tool like Helm to do. Kubernetes aims to be declarative; in other words, we submit resources describing what we want the state of the cluster to look like, and Kubernetes handles the rest.
Unfortunately, in the real world, sometimes we still need to explicitly take some actions to get our applications running correctly. Perhaps when you install your application, you need to run a script to initialize a database schema or set up some default users. Perhaps when you install a new version of an application, you need to run a script to migrate the schema of your database to be compatible with the new version of the application.
Helm provides a hook mechanism that allows us to take actions at eight specific...