https://github.com/Qovery/helm-freeze
Freeze your charts in the wished versions
https://github.com/Qovery/helm-freeze
helm kubernetes
Last synced: 13 days ago
JSON representation
Freeze your charts in the wished versions
- Host: GitHub
- URL: https://github.com/Qovery/helm-freeze
- Owner: Qovery
- License: apache-2.0
- Created: 2020-08-27T19:54:07.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-24T16:28:43.000Z (11 months ago)
- Last Synced: 2025-04-20T21:12:24.024Z (13 days ago)
- Topics: helm, kubernetes
- Language: Go
- Homepage:
- Size: 412 KB
- Stars: 58
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - Qovery/helm-freeze - Freeze your charts in the wished versions (Go)
README
# helm-freeze
[](https://goreportcard.com/report/github.com/Qovery/helm-freeze)
[](https://www.qovery.com)
![]()
Freeze your charts in the wished versions. Helm freeze helps you to declare the charts
you want to use in a desired version and download them locally. This to freeze/lock them
directly in your Git repository.The advantages are:
* Follow GitOps philosophy
* Know exactly what has changed between 2 charts version with a `git diff`
* One place to list them all
* Works well with monorepo
* Declarative configuration (YAML file)
* Supports git repositories in addition to charts repositories## Installation
### Mac OS
On Mac, you need to have [brew](https://brew.sh/) installed, then you can run those commands:
```bash
brew tap Qovery/helm-freeze
brew install helm-freeze
```### Arch Linux
An AUR package exists called `helm-freeze`, you can install it with `yay`:
```bash
yay helm-freeze
```### Others
You can download binaries from the [release section](https://github.com/Qovery/helm-freeze/releases).## Usage
To use helm-freeze, you need a configuration file. You can generate a default file like this:```shell script
helm-freeze init
```
A minimal file named `helm-freeze.yaml` will be generated. Here is an example of a more complex one:```yaml
charts:
# Chart name
- name: cert-manager
# Chart version
version: v1.7.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: cert-manager
# Chart version
version: v1.8.0
# The repo to use (declared below in the repos section)
repo_name: jetstack
# Override the folder path
dest_folder_override: cert-manager-1.8
- 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
- name: pleco
repo_name: git-repo
# When using a git repo, chart_path is mandatory, you need to specify the chart folder path
chart_path: /charts/pleco
dest: custom
# Set git reference
version: 5e05faddb0fde1f5ddd822c3d3ba72925f094e67repos:
# Stable is the default one
- name: stable
url: https://charts.helm.sh/stable
- name: jetstack
url: https://charts.jetstack.io
- name: lifen
url: https://honestica.github.io/lifen-charts
- name: git-repo
url: https://github.com/Qovery/pleco.git
# If you want to directly use a chart folder in a git repo, set type to git
type: gitdestinations:
- name: default
path: /my/absolute/path
- name: custom
path: ./my/relative/path
```Then use `sync` arg to locally download the declared versions, here is an example:
```bash
$ helm-freeze sync[+] Adding helm repos
-> stable
-> aws
-> git-repo[+] Updating helm repos
[+] Downloading charts
-> stable/nginx-ingress 1.35.0
-> stable/prometheus-operator 8.15.12
-> stable/elasticsearch-curator 2.1.5
-> aws/aws-node-termination-handler 0.8.0
-> aws/aws-vpc-cni 1.0.9
-> git/pleco 5e05faddb0fde1f5ddd822c3d3ba72925f094e67Sync succeed!
```If you update a chart, launch `sync` and you'll be able to see the differences with `git diff`.