https://github.com/topfreegames/helm-generate
Helm-generate is a generator command to be used with FluxCD. It recursively generates several Helm charts by rendering the Charts to STDOUT.
https://github.com/topfreegames/helm-generate
flux fluxcd generator helm
Last synced: 2 months ago
JSON representation
Helm-generate is a generator command to be used with FluxCD. It recursively generates several Helm charts by rendering the Charts to STDOUT.
- Host: GitHub
- URL: https://github.com/topfreegames/helm-generate
- Owner: topfreegames
- License: apache-2.0
- Created: 2020-07-09T18:22:59.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-09-20T15:08:44.000Z (about 3 years ago)
- Last Synced: 2025-06-04T09:00:17.995Z (4 months ago)
- Topics: flux, fluxcd, generator, helm
- Language: Go
- Homepage:
- Size: 141 KB
- Stars: 8
- Watchers: 10
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING
- License: LICENSE
Awesome Lists containing this project
README
# helm-generate
Recursively generates Kubernetes manifests from a folder using Helm. This project began as a [generator command](https://docs.fluxcd.io/en/1.20.0/references/fluxyaml-config-files/) for using with Flux.## Docker
Available at: [Docker Hub](https://hub.docker.com/r/tfgco/helm-generate) and [Quay.io](https://quay.io/repository/tfgco/helm-generate).## Requirements
* Helm
## Overview [](https://godoc.org/github.com/topfreegames/helm-generate)
Helm-generate renders Helm Charts recursively from a folder. It don't actually install any Chart, only render them, similar to `helm template`. Helm repositories must be managed through helm cli, as helm-generate uses the same configuration as your helm binary.
How it works:
* Helm-generate transverse folders and subfolders searching for `values.yaml` files.
* If a values.yaml file is found, the Chart configuration is defined by the following precende:
* 1) Existing .helm.yaml file on the same folder as the values.yaml.
* 2) --default-chart and --default-chart-version flags.
* 3) HELM_DEFAULT_CHART and HELM_DEFAULT_CHART_VERSION environment variables.
* The Namespace manifest for that chart is rendered.
* The Chart is rendered using the `values.yaml` file.
* All generated manifests are printed to STDOUT.Helm-generate also handles the namespace injection on the manifests, as `helm template` don't handle this this and we don't want to have a requirement for charts to have namespace defined.
There are two required keys on `values.yaml`: namespace and releaseName. Those are internally used by helm-generate to correctly render the desired charts.
It is possible to inject `(key -> value)` pairs to the top level of the values map through the CLI, using the flag `--set my_key=my_value`. This flag is parsed as `[]string`, therefore it can be passed multiple times to inject multiple pairs. This flag overrides the values from `values.yaml`.
## .helm.yaml
This is a special control file designed to change the behavior of helm-generate for a specific folder, this don't apply to any subfolders.
The current keys available at .helm.yaml are:
```
chart: repository/chart-name
chartVersion: 1.x.x
postRenderBinary: path-to-binary
```
If no `.helm.yaml` is present at the same folder as a `values.yaml` file, the default values are used.## Install
```
Go module:
go get github.com/topfreegames/helm-generateBuild from source:
git clone github.com/topfreegames/helm-generate
cd helm-generate
make all
```## Example
```
Usage:
helm-generate docs/examples/multiple-apps --default-chart=example-chart --default-chart-version=1.0.0
```