Skip to content

Helm Plugin

The @stacksolo/plugin-helm transforms Kubernetes resource definitions into production-ready Helm charts, enabling multi-environment deployments and GitOps workflows.

Terminal window
# Generate Helm chart (preview)
stacksolo deploy --helm --preview
# Generate and deploy via Helm
stacksolo deploy --helm

Add Helm settings in your stacksolo.config.json:

{
"project": {
"backend": "kubernetes",
"kubernetes": {
"helm": {
"chartVersion": "1.0.0",
"appVersion": "v1.2.3"
}
}
}
}
.stacksolo/helm-chart/
├── Chart.yaml # Chart metadata
├── values.yaml # Default values
└── templates/
├── _helpers.tpl # Template helpers
├── namespace.yaml
├── configmap.yaml
├── deployment.yaml
├── service.yaml
└── ingress.yaml

Create environment-specific values files:

values-dev.yaml

replicaCount: 1
deployments:
api:
image:
tag: "dev-latest"
ingress:
host: "api.dev.example.com"

values-prod.yaml

replicaCount: 3
deployments:
api:
image:
tag: "v1.2.0"
resources:
limits:
cpu: 1000m
memory: 1Gi
ingress:
host: "api.example.com"

Deploy to environments:

Terminal window
# Development
helm install myapp .stacksolo/helm-chart \
-f values-dev.yaml -n dev
# Production
helm install myapp .stacksolo/helm-chart \
-f values-prod.yaml -n production
KeyDefaultDescription
replicaCount1Default replicas
image.pullPolicyIfNotPresentPull policy
resources.limits.cpu500mCPU limit
resources.limits.memory512MiMemory limit
KeyDefaultDescription
ingress.enabledtrueEnable ingress
ingress.classNamenginxIngress class
ingress.host-Hostname
ingress.annotations{}Annotations

Under deployments.<name>:

KeyDefaultDescription
enabledtrueEnable deployment
image.repository-Image repository
image.taglatestImage tag
port8080Container port
env{}Environment vars
Terminal window
# Preview generated manifests
helm template myapp .stacksolo/helm-chart
# Upgrade with new image
helm upgrade myapp .stacksolo/helm-chart \
--set deployments.api.image.tag=v2.0.0
# Rollback
helm rollback myapp 1
# Uninstall
helm uninstall myapp

ArgoCD

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
spec:
source:
path: .stacksolo/helm-chart
helm:
valueFiles:
- values-prod.yaml

Flux

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: myapp
spec:
chart:
spec:
chart: .stacksolo/helm-chart