If you’re familiar with Helm and use several Helm charts to deploy everything on your stack, you certainly already have felt about missing lifecycles. By default, Helm provides Hooks to manage lifecycles. This is excellent when you’re the chart owner, as you can control it.
But something is missing. How do you manage lifecycles when you’re using a community chart? You have to fork the original Chart, add your hooks and maintain them over time (more or less depending on how customized your Hooks are). Quite boring, right?
Also, Hooks require a container to run your code as a job, so you have to create a container only for this purpose, store it on a registry, etc.
Finally, how do you handle exceptions, fallbacks, ensure your app works as expected (in addition to Kubernetes lifecycles)? There are no familiar ways to do that with Helm.
That’s why we decided to build something on top of Helm directly in the Engine, to add a common lifecycle mechanism.
Terraform Helm provider based
In another article, I was talking about why we removed Helm from Terraform. Even if the move was required, the way the Helm provider requested Chart configuration, was pretty good. So we decided to use something close to it with a struct.
Compared to the Helm chart, you can note some differences we support:
Direct YAML content in yaml_files_content, which is sometimes super convenient.
last_breaking_version_requiring_restart: allowing us to uninstall a chart before installing it once again when some major breaking changes are required by community charts (and for sure there are no data associated)
We then decided to create defaults values as it’s very frequent to have common ones:
check_prerequisites: ensuring everything is ok before doing any action
pre_exec: run pre exec code before running any action on a chart
exec: perform an action (deploy/delete) on a chart
on_deploy_failure: run code when an action failed
post_exec: run code after helm action
validate: ensure deployed applications are working as expected
Lifecycles
Let’s dig into what those lifecycles contain.
check_prerequisites
By default, we simply check the prerequisites, like the file permissions on helm values override files:
fn check_prerequisites(&self) -> Result
pre_exec
Pre exec is really useful for some charts, to pre-check/validate/update stuff before going further. Super useful for example for already deployed applications without Helm, and you want to give ownership to Helm by updating annotations (like AWS CNI). by default, nothing is done:
Obviously, this has to be adapted for any deployed solution.
Example of usage
Let’s try with a real use case. Here it’s the Prometheus Operator where we need to change the exec method to be able to manage lifecycle with CRDs (the uninstall phase):
We’ve been using this for production usage at Qovery for more than five months now. From an experienced Kubernetes point of view (+6y of XP on the Kubernetes ecosystem), I finally feel confident on helm chart deployments.
We don’t know if we will move out to a dedicated library. If we receive requests, we’ll consider it.
Share on :
Ready to rethink the way you do DevOps?
Qovery is a DevOps automation platform that enables organizations to deliver faster and focus on creating great products.
PaaS vs. DIY IDP: The Fastest Path to a Self-Service Cloud
Building an Internal Developer Platform (IDP) from scratch seems cheaper, but the maintenance costs add up. Discover why a modern PaaS on your own infrastructure is the faster, smarter path to a self-service cloud.
Mélanie Dallé
Senior Marketing Manager
Heroku
15
minutes
January 22, 2026
Top 10 Heroku Alternatives in 2026: When Simplicity Hits the Scaling Wall
Escape rising Heroku costs & outages. Compare top alternatives that deliver PaaS simplicity on your own cloud and scale without limits.
Mélanie Dallé
Senior Marketing Manager
DevOps
Developer Experience
9
minutes
January 22, 2026
Top 10 DevOps Automation Tools in 2026 to Streamline Mid-Market Infrastructure
Scale your engineering organization without the headcount hit. Compare the top 10 DevOps automation tools for mid-market teams, from IaC leaders like Terraform to unified platforms like Qovery.
Mélanie Dallé
Senior Marketing Manager
Kubernetes
DevOps
minutes
January 16, 2026
Best CI/CD tools for Kubernetes: Streamlining the cluster
Static delivery pipelines are becoming a bottleneck. The best CI/CD tools for Kubernetes are those that move beyond simple code builds to provide total environment orchestration and developer self-service.
Mélanie Dallé
Senior Marketing Manager
DevOps
Cloud
minutes
January 16, 2026
Top 10 vSphere alternatives for modern hybrid cloud orchestration
The Broadcom acquisition of VMware has sent shockwaves through the enterprise world, with many organizations facing license cost increases of 2x to 5x. If you are looking to escape rising TCO and rigid subscription bundles, these are the top vSphere alternatives for a modern hybrid cloud.
Mélanie Dallé
Senior Marketing Manager
DevOps
Heroku
minutes
January 16, 2026
Top 10 Heroku Postgres competitors for production databases
Escape rising Heroku costs and rigid limitations. Discover the best Heroku Postgres competitors that offer high availability, global scaling, and the flexibility to deploy on your own terms.
Mélanie Dallé
Senior Marketing Manager
DevOps
Kubernetes
Heroku
minutes
January 13, 2026
Top 10 GitLab alternatives for DevOps teams
Is GitLab bloat slowing down your engineering team? Compare the top 10 GitLab alternatives for, from GitHub to lightweight automation platforms like Qovery. Escape the monolith and reclaim your velocity.
Mélanie Dallé
Senior Marketing Manager
DevOps
Kubernetes
Heroku
minutes
January 13, 2026
Heroku vs. Kubernetes: A comprehensive comparison
Is the "Heroku Tax" draining your budget? Compare Heroku vs. Kubernetes in 2026. Learn how to solve complex orchestration challenges, like queue-based autoscaling and microservice sprawl, without the DevOps toil.