Nelm is meant to be a direct Helm 3 replacement, providing first-class Helm-chart support, yet improving on what Helm 3 offers.
Nelm is used as the deployment engine in werf. Standalone Nelm CLI is also available, although it is in active development for now and not recommended for general use.
Nelm is based on Helm 3 — some parts of it improved and some, like the deployment subsystem, are rewritten from scratch to introduce:
terraform plan
-like capabilities- Replacement of 3-Way Merge with Server-Side Apply
- Improved resource tracking built from the ground up
- Advanced resource ordering capabilities
- Flexible resource lifecycle management
- Fixes for numerous issues like this one and other improvements
Standalone Nelm is in active development and is not recommended for production use. Nelm commands, options and their defaults are subject to change.
- Build and install Nelm:
git clone https://github.com/werf/nelm
cd nelm
go build ./cmd/nelm/
sudo install -t /usr/local/bin nelm
- Create new chart:
mkdir ../mychart
cd ../mychart
cat > Chart.yaml <<EOF
apiVersion: v2
name: mychart
version: 1.0.0
dependencies:
- name: cert-manager
version: 1.13.3
repository: https://charts.jetstack.io
EOF
cat > values.yaml <<EOF
cert-manager:
installCRDs: true
startupapicheck:
enabled: false
EOF
helm dependency update
- Check what's going to happen on next release:
nelm plan deploy -n myproject -r myproject
- Deploy new release:
nelm release deploy -n myproject -r myproject
- Download werf v2
- Create new project:
git init myproject
cd myproject
mkdir .helm
cat > .helm/Chart.yaml <<EOF
dependencies:
- name: cert-manager
version: 1.13.3
repository: https://charts.jetstack.io
EOF
cat > .helm/values.yaml <<EOF
cert-manager:
installCRDs: true
startupapicheck:
enabled: false
EOF
cat > werf.yaml <<EOF
configVersion: 1
project: myproject
EOF
cat > .gitignore <<EOF
/.helm/charts/*.tgz
EOF
werf helm dependency update .helm
git add .
git commit -m init
- Check what's going to happen on next release:
werf plan --env dev
- Deploy new release:
werf converge --env dev
- Proceed to werf documentation to learn more.