Skip to main content

Authoring a Bundle

A bundle is defined in a bundle.yaml file inside the platform-stacks repository. It describes everything needed to deploy an application into a tenant cluster — inputs, defaults, resource groups, and dependencies between resources.

Bundle Structure

version: 0.0.1
name: aws/superset
slug: aws/superset
category: application
description: ...

spec:
defaults:
namespace: superset

inputs:
- name: cluster
resourceTypeId: aws-eks-cluster
description: Target cluster

groups:
- name: infra
resources:
- name: superset_k8s_namespace
resourceTypeId: k8s-manifest
config: ...

- name: app
resources:
- name: superset_helm_release
resourceTypeId: helm-release
dependsOn: [superset_k8s_namespace]
config: ...

Template Engine

Bundle configs use a three-pass template model:

PassSyntaxResolved ByUsed For
Pass 1${{ }}Server (Nunjucks)Inputs, defaults, structural decisions
Pass 2${{ }}Server (Nunjucks)Dependency outputs wiring (deps.X.outputs.Y)
Pass 3{{ }}Agent (Jinja2)Credentials, cluster context, runtime values

Rule: Use ${{ }} only for structural decisions (conditions, dependency wiring, defaults). Use {{ }} for all content rendering inside resource configs.

Resource Types

TypeWhat It Does
helm-releaseInstalls or upgrades a Helm chart via helm upgrade --install
k8s-manifestApplies a raw Kubernetes YAML manifest via kubectl apply
tofu-moduleClones a git repo and runs tofu apply inside the cluster
flowA sequential pipeline of the above, executed in order

Go Deeper