Helmstack is heavily inspired by helmfile.
helmfile is a great project and way more advanced than helmstack. But I found it difficult to use when dealing with multiple chart versions spanning different environments.
The idea behind helmstack is that you have a basic stack file for which you use overlays to handle different versions in different environments. Thus making it easy to deal with having one version in dev, another in test and disabling the same chart in prod.
pip install helmstack
Default stack file is stackfile.yaml
releases:
- name: web-env
namespace: web
chart: chart/web-env
values:
- web-env.yaml
set:
some: value
yet:
another: value
- name: web-app
namespace: web
chart: chart/web-app
environments: # Optional
dev:
overlay:
- env/dev.yaml
prod:
overlay:
- env/prod.yaml
repositories: # Optional
- name: chart
url: https://chartmuseum.somewhere.dk
helmDefaults: # Optional
recreatePods: true
force: true
releases:
web-env:
version: 1.7.0
set:
some: new-value
web-app:
version: 1.39.0
ignore: true
virtualenv venv
source venv/bin/activate
pip install --editable .
python setup.py sdist bdist_wheel
python -m twine upload dist/*
So far this is a POC but tests should be written
Support .env files and regular environment variables
Support some sort of templating language... Maybe
Either stop supporting multiple overlay files or rename key to overlays
environment: dev context: ml-dev some: thing
stacks:
- name: sud url: git...
- name: elk url: git...
helmstack ... -f elk.yaml -f whoami.yaml sync
Parse *.yaml.gotmpl files and use the output as value files This could be handy when inlining xml, certs and other kind of files
https://github.com/powerman/gotmpl https://github.com/subfuzion/envtpl
variables: name: value
And then use the above as ${name}?