Awesome
<!-- markdownlint-configure-file { "MD013": { "code_blocks": false, "tables": false }, "MD033": false, "MD041": false } --> <div align="center" markdown="1">Helmfile
Deploy Kubernetes Helm Charts <br />
</div>English | 简体中文
About
Helmfile is a declarative spec for deploying helm charts. It lets you...
- Keep a directory of chart value files and maintain changes in version control.
- Apply CI/CD to configuration changes.
- Periodically sync to avoid skew in environments.
To avoid upgrades for each iteration of helm
, the helmfile
executable delegates to helm
- as a result, helm
must be installed.
Highlights
Declarative: Write, version-control, apply the desired state file for visibility and reproducibility.
Modules: Modularize common patterns of your infrastructure, distribute it via Git, S3, etc. to be reused across the entire company (See #648)
Versatility: Manage your cluster consisting of charts, kustomizations, and directories of Kubernetes resources, turning everything to Helm releases (See #673)
Patch: JSON/Strategic-Merge Patch Kubernetes resources before helm-install
ing, without forking upstream charts (See #673)
Status
May 2024 Update - We are inviting Helmfile v1 rc testers! Please see the v1 proposal here and the latest rc release in the releases page. Please file feature requests in Discussions and bugs in Issues.
March 2022 Update - The helmfile project has been moved to helmfile/helmfile from the former home roboll/helmfile
. Please see roboll/helmfile#1824 for more information.
Installation
1: Binary Installation
download one of releases
2: Package Manager
- Archlinux: install via
pacman -S helmfile
- openSUSE: install via
zypper in helmfile
assuming you are on Tumbleweed; if you are on Leap you must add the kubic repo for your distribution version once before that command, e.g.zypper ar https://download.opensuse.org/repositories/devel:/kubic/openSUSE_Leap_\$releasever kubic
- Windows (using scoop):
scoop install helmfile
- macOS (using homebrew):
brew install helmfile
3: Container
For more details, see run as a container
Make sure to run
helmfile init
once after installation. Helmfile uses the helm-diff plugin.
Getting Started
Let's start with a simple helmfile
and gradually improve it to fit your use-case!
Suppose the helmfile.yaml
representing the desired state of your helm releases looks like:
repositories:
- name: prometheus-community
url: https://prometheus-community.github.io/helm-charts
releases:
- name: prom-norbac-ubuntu
namespace: prometheus
chart: prometheus-community/prometheus
set:
- name: rbac.create
value: false
Sync your Kubernetes cluster state to the desired one by running:
helmfile apply
Congratulations! You now have your first Prometheus deployment running inside your cluster.
Iterate on the helmfile.yaml
by referencing:
Docs
Please read complete documentation
Contributing
Welcome to contribute together to make helmfile better: contributing doc
Attribution
We use:
- semtag for automated semver tagging. I greatly appreciate the author(pnikosis)'s effort on creating it and their kindness to share it!
Users
Helmfile has been used by many users in production:
For more users, please see: Users