Runesets
A runeset is a directory (or .runeset.tgz archive) that bundles several Rune resources behind a single template + values surface. Use them when one application is actually 3–10 services, secrets, and configmaps that ship together.
Anatomy
Section titled “Anatomy”my-app/├── runeset.yaml # metadata + value schema├── values.yaml # default values├── templates/│ ├── api.yaml.tmpl│ ├── worker.yaml.tmpl│ └── secrets.yaml.tmpl└── README.mdruneset.yaml:
name: my-appversion: 1.2.0description: API + worker + redismaintainers:values: - name: image.tag type: string default: "1.2.0" - name: api.replicas type: int default: 2A template (templates/api.yaml.tmpl):
service: name: api namespace: {{ .Release.Namespace }} image: ghcr.io/example/api:{{ .Values.image.tag }} scale: {{ .Values.api.replicas }}Render before applying
Section titled “Render before applying”Inspect what will be created:
rune cast ./my-app --renderrune cast ./my-app --render --set=image.tag=1.3.0rune cast ./my-app --render --values=production.values.yamlInstall
Section titled “Install”rune cast ./my-app --release=my-app-prod --values=production.values.yaml--release becomes the runeset’s identity in the cluster. Re-running cast with the same release upgrades in place.
Package and distribute
Section titled “Package and distribute”rune pack ./my-app -o my-app-1.2.0.runeset.tgz --sha256Produces:
my-app-1.2.0.runeset.tgz— the bundle.my-app-1.2.0.runeset.tgz.sha256— checksum for verification.
Install from a URL or local archive:
rune cast https://example.com/my-app-1.2.0.runeset.tgz --release=my-app-prodrune cast ./my-app-1.2.0.runeset.tgz --release=my-app-prodAlso supports git refs:
Values precedence
Section titled “Values precedence”Highest wins:
--set key=value(CLI flags)--values file.yaml(extra files, last one wins)values.yamlinside the runeset (defaults)
Worked example
Section titled “Worked example”examples/runesets in the source tree has a working multi-service runeset you can study.
For a step-by-step walkthrough see Package a runeset.