Blog
Engineering
4
minutes

helm-freeze - manage Helm Charts and Repositories with ease

Since the beginning of Kubernetes, a lot of different tools have emerged to manage Kubernetes deployments. They all propose their mindset, workflow, and usage.
Pierre Mavro
CTO & Co-founder
Summary
Twitter icon
linkedin icon

Here is a small list of the most well-known:

Dozens of solutions exist, they all have their pros and cons, but Helm and Kustomize look to be the two favorites chosen by the community.

Kustomize has been integrated directly into kubectl binary and allows to override some part of existing Kubernetes YAML files since the 1.14 version. Helm allows creating "Charts" (a set of Kubernetes YAML template files) to ease the deployment process and easily share them with community members with Helm Hub (https://hub.helm.sh/).

The pain of managing helm charts

More than 1k Helm repositories and charts exist. Such a large amount of Helm configuration files is painful to maintain for a DevOps team. More especially when this team starts to use a couple of them. In my previous experiences, I saw many ways of managing Helm Charts. Often as git submodules, coping the whole chart content in a git repo, or having a custom script to manage them.

In any case, a tool was missing to maintain them easily. With Helm, you can manage dependencies in a given chart but not pin the chart version you want to use. Like what we can do in most of the programming languages. Here is an example in Rust with Cargo (the dependency manager):

[dependencies]
chrono = "0.4.11"
cmd_lib = "0.7.8"
git2 = "0.13.8"
walkdir = "2.3.1"
itertools = "0.9.0"
base64 = "0.12.3"
...

E.g.: here, we are using a lib called "base64" in the "0.12.3" version. Everything is explicit, and no surprises can happen.

Plus, combined with a VCS like Git, it helps to track changes over time. Which is convenient in case of non-working/not expected (delete as appropriate) changes.

Helm-freeze to the rescue

I created helm-freeze to manage Helm Charts and repositories seamlessly.

The project is Open Source for anyone who is experiencing the same problem as us. Feel free to contribute.

Helm-freeze in action

You can install helm-freeze with Brew (MacOSx), with Yay (Arch Linux), or directly download the binary on GitHub.

Then, to initialize it and create its configuration file in the repository you want your charts to be stored in, run init:

helm-freeze init

The configuration file will look like this:

charts:
- name: prometheus-operator
version: 9.3.1

repos:
- name: stable
url: https://kubernetes-charts.storage.googleapis.com

destinations:
- name: default
path: ./

In three points:

  • charts: list of charts with their associated version
  • repos: name of repos, and their URL (stable is the default one)
  • destination: the path where you want your charts to be stored

Now see a complete configuration example:

charts:
# Chart name
- name: cert-manager
# Chart version
version: v0.16.0
# The repo to use (declared below in the repos section)
repo_name: jetstack
# No destinations is declared, the default one will be used
comment: "You can add comments"
- name: fluent-bit
repo_name: lifen
version: 2.8.0
# If you temporary want to stop syncing a specific chart
no_sync: true
- name: nginx-ingress
# No repo_name is specified, stable will be used
version: 1.35.0
# Change the destination to another one (declared in destinations section)
dest: custom

repos:
# Stable is the default one
- name: stable
url: https://kubernetes-charts.storage.googleapis.com
- name: jetstack
url: https://charts.jetstack.io
- name: lifen
url: https://honestica.github.io/lifen-charts

destinations:
- name: default
path: /my/absolute/path
- name: custom
path: ./my/relative/path

The remaining command to sync locally the charts is:

helm-freeze sync

That's it. You can now commit everything to keep track of changes. To get a new version of a chart, update the version number and run again "helm-freeze sync".

charts:
- name: cert-manager
version: v0.16.1

Conclusion

Managing charts is now easy with "helm-freeze". In our day to day job, it solves several issues we encountered in the past:

  • Follow GitOps philosophy
  • Know exactly what has changed between 2 charts versions with a git diff
  • One place to manage them all
  • Works well with monorepo
  • Declarative configuration (YAML file)

See helm-freeze on Github

I hope it will help you as it helps us at Qovery

Share on :
Twitter icon
linkedin icon
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.
Book a demo

Suggested articles

DevOps
 minutes
The Top 10 Porter Alternatives: Finding a More Flexible DevOps Platform

Looking for a Porter alternative? Discover why Qovery stands out as the #1 choice. Compare features, pros, and cons of the top 10 platforms to simplify your deployment strategy and empower your team.

Mélanie Dallé
Senior Marketing Manager
AWS
Deployment
 minutes
AWS App Runner Alternatives: Top 10 Choices for Effortless Container Deployment

AWS App Runner limits control and locks you into AWS. See the top 10 alternatives, including Qovery, to gain crucial customization, cost efficiency, and multi-cloud flexibility for containerized application deployment.

Mélanie Dallé
Senior Marketing Manager
Kubernetes
 minutes
Kubernetes Management: Best Practices & Tools for Managing Clusters and Optimizing Costs

Master Kubernetes management and cut costs with essential best practices and tools. Learn about security, reliability, autoscaling, GitOps, and FinOps to simplify cluster operations and optimize cloud spending.

Mélanie Dallé
Senior Marketing Manager
AWS
GCP
Azure
Cloud
Business
10
 minutes
10 Best AWS Elastic Beanstalk Alternatives

AWS Elastic Beanstalk is often rigid and slow. This guide details the top 10 Elastic Beanstalk alternatives—including Heroku, Azure App Service, and Qovery—comparing the pros, cons, and ideal use cases for achieving superior flexibility, faster deployments, and better cost control.

Morgan Perry
Co-founder
Kubernetes
DevOps
7
 minutes
Kubernetes Cloud Migration Strategy: Master the Shift, Skip the Disaster

Master your Kubernetes migration strategy with this expert guide. Learn the critical planning phases, mitigate major risks (data, security, dependencies), and see how Qovery simplifies automation and compliance for a fast, successful, and reliable transition.

Morgan Perry
Co-founder
SecurityAndCompliance
DevSecOps
 minutes
Qovery Achieves SOC 2 Type II Compliance

Qovery is officially SOC 2 Type II compliant with an Unqualified Opinion. Get the highest assurance of continuously verified security controls for enterprise-grade application deployments and simplify due diligence.

Pierre Mavro
CTO & Co-founder
Product
Observability
 minutes
Troubleshoot Faster with the New Log Search and Filtering in Qovery Observe

Following the launch of Qovery Observe, we’re progressively adding new capabilities to help you better monitor, debug, and understand your applications. Today, we’re excited to announce a major improvement to the Logs experience: you can now search and filter directly within your application logs.

Alessandro Carrano
Lead Product Manager
Platform Engineering
DevOps
Terraform
7
 minutes
Top 5 Crossplane Alternatives & Competitors

Go beyond Crossplane. Discover Qovery, the #1 DevOps automation tool, and 4 other IaC alternatives (Terraform, Pulumi) for simplified multi-cloud infrastructure management and deployment.

Morgan Perry
Co-founder

It’s time to rethink
the way you do DevOps

Say goodbye to DevOps overhead. Qovery makes infrastructure effortless, giving you full control without the trouble.