The nself helm command group generates Helm charts from your ɳSelf stack and provides shortcuts for chart installation, upgrades, and release management. It works alongside nself k8s — Helm is the preferred deployment method when you need templated values across multiple environments.
values.yaml files# 1. Build your stack first
nself build
# 2. Generate the Helm chart
nself helm generate --output ./charts/nself
# 3. Install to your cluster
nself helm install --release my-nself --namespace production
# Or use helm CLI directly
helm install my-nself ./charts/nself -f charts/nself/values.prod.yamlGenerate a Helm chart from the current ɳSelf stack.
nself helm generate [options]
# Options:
# --output <dir> Output directory (default: nself-chart/)
# --name <name> Chart name (default: nself)
# --version <version> Chart version (default: CLI version)
# --env <env> Source environment for default values
# Examples
nself helm generate
nself helm generate --output ./charts --name myapp
nself helm generate --version 1.0.0 --env stagingnself-chart/
├── Chart.yaml
├── values.yaml # Merged from active .env
├── values.dev.yaml # Dev overrides
├── values.staging.yaml # Staging overrides
├── values.prod.yaml # Production overrides
└── templates/
├── NOTES.txt
├── _helpers.tpl # Named templates
├── configmap.yaml # Non-secret config
├── secret.yaml # Kubernetes Secret
├── namespace.yaml
├── postgres/
│ ├── statefulset.yaml
│ ├── service.yaml
│ └── pvc.yaml
├── hasura/
│ ├── deployment.yaml
│ └── service.yaml
├── auth/
│ ├── deployment.yaml
│ └── service.yaml
├── nginx/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── configmap.yaml
│ └── ingress.yaml
└── plugins/
└── ai/
├── deployment.yaml
└── service.yamlInstall the ɳSelf chart to a cluster. Wraps helm install with ɳSelf defaults.
nself helm install [options]
# Options:
# --release <name> Helm release name (default: nself)
# --namespace <ns> Kubernetes namespace (default: nself)
# --env <env> Values file to overlay (staging, prod, etc.)
# --chart <dir> Chart directory (default: nself-chart/)
# --dry-run Template without installing
# Examples
nself helm install --release myapp --namespace production --env prod
nself helm install --dry-run # Preview rendered templatesUpgrade an existing Helm release. Safe to run repeatedly.
nself helm upgrade [options]
# Options:
# --release <name> Helm release name (default: nself)
# --namespace <ns> Namespace (default: nself)
# --env <env> Values overlay
# --atomic Roll back automatically on upgrade failure
# Examples
nself helm upgrade --release myapp --env prod
nself helm upgrade --release myapp --env prod --atomicShow what would change before upgrading. Requires the helm-diff plugin.
nself helm diff [options]
# Options:
# --release <name> Helm release name
# --env <env> Values overlay
# Example
nself helm diff --release myapp --env prodShow the status of a deployed Helm release.
nself helm status [options]
# Options:
# --release <name> Release name (default: nself)
# --namespace <ns> Namespace (default: nself)
# Output:
# Release: myapp
# Namespace: production
# Status: deployed
# Revision: 5
# Deployed: 2026-05-01 10:30 UTC
#
# Resources:
# Deployment/hasura 2/2 running
# StatefulSet/postgres 1/1 runningList the history of a Helm release (all revisions).
nself helm history [options]
# Options:
# --release <name> Release name
# --max <n> Max revisions to show (default: 10)
# Output:
# REVISION UPDATED STATUS CHART DESCRIPTION
# 5 2026-05-07 10:30 deployed nself-1.0.4 Upgrade complete
# 4 2026-05-01 08:00 superseded nself-1.0.3 Upgrade complete
# 3 2026-04-22 16:45 superseded nself-1.0.2 Upgrade completeRoll back to a previous Helm release revision.
nself helm rollback [revision] [options]
# Options:
# --release <name> Release name (default: nself)
# --namespace <ns> Namespace (default: nself)
# Examples
nself helm rollback # Roll back one revision
nself helm rollback 3 # Roll back to revision 3Remove a Helm release from the cluster. This does not delete PersistentVolumeClaims by default, so your data survives.
nself helm uninstall [options]
# Options:
# --release <name> Release name (default: nself)
# --namespace <ns> Namespace (default: nself)
# --purge-data Also delete PVCs (IRREVERSIBLE)
# Example
nself helm uninstall --release myappKey values in the generated values.yaml:
# values.yaml (excerpt)
global:
domain: myapp.example.com
environment: production
storageClass: standard
postgres:
image: postgres:16-alpine
resources:
requests: { memory: 512Mi, cpu: 250m }
limits: { memory: 2Gi, cpu: 1000m }
storage: 20Gi
hasura:
replicas: 2
resources:
requests: { memory: 256Mi, cpu: 100m }
limits: { memory: 1Gi, cpu: 500m }
nginx:
replicas: 2
ingress:
class: nginx
tls: true
plugins:
ai:
enabled: true
replicas: 1| Variable | Description | Default |
|---|---|---|
| NSELF_HELM_RELEASE | Default Helm release name | nself |
| NSELF_HELM_NAMESPACE | Default Kubernetes namespace | nself |
| NSELF_HELM_OUTPUT | Chart output directory | nself-chart/ |