Describe single or multiple apps in one file. Kustron handles the rest — local k8s cluster, registry, build, deploy.
npm install -g kustron
Requires OrbStack or Docker Desktop, k3d, and kubectl. No Kubernetes knowledge required.
Kustron manages a local k3d cluster with a built-in container registry. You define what to run. It handles the rest.
Create a kustron-env.yaml in your project folder, pre-filled with your app name.
Set ports, add more apps, configure env vars. Or just set the port and move on.
One command spins up the cluster, builds images, and deploys everything.
Add apps, change config, redeploy. The file is the source of truth.
Apps discover each other by name. Exposed apps are available at localhost:<port>.
config:
namespace: kustron-env # all apps share this namespace
apps:
# Build from local source or git repo
- name: api
source: ./services/api # or: git@github.com:org/repo.git
port: 3000
exposed: true # reachable at localhost:3000
ha: true # min 2 replicas, autoscales to 5
env:
NODE_ENV: production
DB_HOST: postgres # 'postgres' resolves via k8s DNS
# Run an existing container image
- name: postgres
image: postgres:15
port: 5432
env:
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
# Deploy a Helm chart
- name: prometheus
helm:
chart: kube-prometheus-stack
repo: https://prometheus-community.github.io/helm-charts
version: "45.0.0"
values:
grafana.enabled: "true"
Every app type shares the same namespace. They reach each other at http://<name>:<port>.
Point to a folder. Kustron uses your Dockerfile if it exists, or Railpack to containerize automatically.
Provide a git SSH URL. Kustron clones it, builds it, and deploys it. SSH access must already be set up.
Use any image from Docker Hub or any registry. Perfect for databases and third-party services.
Install any Helm chart into your environment. Pass values directly from the yaml file.
| env | |
kustron env init |
Create a kustron-env.yaml in the current folder, pre-filled with the
folder name as the app. |
kustron env up |
Bring up the cluster and deploy all apps from kustron-env.yaml.
Idempotent — safe to re-run. |
kustron env reload |
Tear down and rebuild the entire environment. Run this after changing
kustron-env.yaml. |
kustron env down |
Tear everything down. The yaml file is untouched. |
kustron env show-spec |
Pretty-print the full kustron-env.yaml schema with annotations.
|
| apps | |
kustron apps add [flags]
|
Add an app entry to kustron-env.yaml. Then run
kustron env reload to apply. |
kustron apps remove <name>
|
Remove an app entry from kustron-env.yaml. Then run
kustron env reload to apply. |
Kustron checks for these on install and tells you exactly what to do if anything is missing.
Recommended: OrbStack over Docker Desktop. OrbStack starts in ~2 seconds (vs 30+), uses a fraction of the memory, and has native Apple Silicon support. orbstack.dev →
OrbStack (recommended) or Docker Desktop
brew install k3d
· k3d.io/installation
brew install kubectl
Only needed when deploying source without a Dockerfile. railpack.io
Only needed when deploying Helm chart apps. brew install helm
Only needed when deploying from a git SSH URL. Usually pre-installed.
Kustron isn't just for local development. Spin it up on any cloud VM and expose your whole stack — APIs, frontends, databases — to the real internet. No cluster management. No cloud-native complexity.
Any Linux instance works — EC2, DigitalOcean Droplet, Hetzner Cloud, Linode. Even a $6/month box is enough for a real multi-service stack.
Install Docker, k3d, kubectl, and kustron. Add your GitHub (or GitLab) SSH key so kustron can pull private repos directly on the instance.
kustron-env.yamlList your apps with exposed: true for anything
that needs to be public. Kustron maps each port to the VM's network interface.
One command. Cluster, registry, images, deployments — all at once.
Allow the exposed ports in your security group (AWS) or firewall rules. That's it — your stack is live
at <vm-ip>:<port>.
postgres and redis stay internal — never
set exposed: true on
them.