110 lines
4.7 KiB
Markdown
110 lines
4.7 KiB
Markdown
<!-- markdownlint-configure-file {
|
|
"MD013": {
|
|
"code_blocks": false,
|
|
"tables": false
|
|
},
|
|
"MD033": false,
|
|
"MD041": false
|
|
} -->
|
|
|
|
<div align="center" markdown="1">
|
|
|
|
# Helmfile
|
|
|
|
[](https://github.com/helmfile/helmfile/actions/workflows/ci.yaml?query=branch%3Amain)
|
|
[](https://github.com/helmfile/helmfile/pkgs/container/helmfile)
|
|
[](https://slack.sweetops.com)
|
|
[](https://helmfile.readthedocs.io/en/latest/)
|
|
|
|
Deploy Kubernetes Helm Charts
|
|
<br />
|
|
|
|
</div>
|
|
|
|
## 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 delega
|
|
tes 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](https://github.com/roboll/helmfile/pull/648))
|
|
|
|
**Versatility**: Manage your cluster consisting of charts, [kustomizations](https://github.com/kubernetes-sigs/kustomize), and directories of Kubernetes resources, turning everything to Helm releases (See [#673](https://github.com/roboll/helmfile/pull/673))
|
|
|
|
**Patch**: JSON/Strategic-Merge Patch Kubernetes resources before `helm-install`ing, without forking upstream charts (See [#673](https://github.com/roboll/helmfile/pull/673))
|
|
|
|
## Status
|
|
|
|
March 2022 Update - The helmfile project has been moved to [helmfile/helmfile](https://github.com/helmfile/helmfile) from the former home `roboll/helmfile`. Please see roboll/helmfile#1824 for more information.
|
|
|
|
Even though Helmfile is used in production environments [across multiple organizations](users.md), it is still in its early stage of development, hence versioned 0.x.
|
|
|
|
Helmfile complies to Semantic Versioning 2.0.0 in which v0.x means that there could be backward-incompatible changes for every release.
|
|
|
|
Note that we will try our best to document any backward incompatibility. And in reality, helmfile had no breaking change for a year or so.
|
|
|
|
|
|
## Installation
|
|
|
|
* download one of [releases](https://github.com/helmfile/helmfile/releases) or
|
|
* [run as a container](https://helmfile.readthedocs.io/en/latest/#running-as-a-container) or
|
|
* Archlinux: install via `pacman -S helmfile` or from [AUR](https://aur.archlinux.org/packages/kubernetes-helmfile-bin/) or
|
|
* openSUSE: install via `zypper in helmfile` assuming you are on Tumbleweed; if you are on Leap you must add the [kubic](https://download.opensuse.org/repositories/devel:/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`, or
|
|
* Windows (using [scoop](https://scoop.sh/)): `scoop install helmfile`
|
|
* macOS (using [homebrew](https://brew.sh/)): `brew install helmfile`
|
|
|
|
## 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:
|
|
|
|
```yaml
|
|
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:
|
|
|
|
```console
|
|
helmfile apply
|
|
```
|
|
|
|
Congratulations! You now have your first Prometheus deployment running inside
|
|
your cluster.
|
|
|
|
Iterate on the `helmfile.yaml` by referencing:
|
|
|
|
* [Configuration](https://helmfile.readthedocs.io/en/latest/#configuration)
|
|
* [CLI reference](https://helmfile.readthedocs.io/en/latest/#cli-reference)
|
|
* [Helmfile Best Practices Guide](https://github.com/roboll/helmfile/blob/master/docs/writing-helmfile.md)
|
|
|
|
## Docs
|
|
|
|
Please read [complete documentation](https://helmfile.readthedocs.io/)
|
|
|
|
## Contributing
|
|
|
|
Welcome to contribute together to make helmfile better: [contributing doc](https://helmfile.readthedocs.io/en/latest/contributing/)
|
|
|
|
## Attribution
|
|
|
|
We use:
|
|
|
|
* [semtag](https://github.com/pnikosis/semtag) for automated semver tagging.
|
|
I greatly appreciate the author(pnikosis)'s effort on creating it and their
|
|
kindness to share it! |