E2E
E2E is not a Kubernetes CRD
kubectl apply will not work. Orkestra kinds are consumed by the ork CLI and runtime — not by the Kubernetes API server. Your CRD is enough.An E2E is a declarative end-to-end test for a Katalog. It tells Orkestra exactly what to apply, which cluster to use, and what the expected state is after each step.
Motif — smallest reusable unit
↓
Katalog — operator declaration
↓
Komposer — platform declaration
↓
E2E — end-to-end test for a Katalog
ork validate checks the structure. ork e2e runs it.
Wire format
apiVersion: orkestra.orkspace.io/v1
kind: E2E
metadata:
name: hello-website-e2e
description: Deploy a website, verify it comes up, verify cleanup on delete.
spec:
katalog: ./katalog.yaml
crd: ./crd.yaml
cr: ./cr.yaml
cluster:
provider: kind
name: ork-e2e
reuse: false
setup: # optional
apply:
- ./setup.yaml
wait:
- kind: Secret
name: my-secret
namespace: default
timeout: 15s
expect:
- name: Deployment ready
after: cr-applied
timeout: 60s
resources:
- kind: Deployment
name: hello-website
namespace: default
ready: true
- name: Cleanup verified
after: cr-deleted
timeout: 30s
resources:
- kind: Deployment
name: hello-website
namespace: default
count: 0
Lifecycle
cluster ready
↓
CRD applied
↓
setup.apply — prerequisite manifests applied
↓
setup.helm — prerequisite charts installed
↓
setup.wait — block until prerequisites exist/ready
↓
Katalog loaded — operator starts watching
↓
CR applied ← "cr-applied" checkpoints run here
↓
CR deleted ← "cr-deleted" checkpoints run here
↓
Cluster torn down (if reuse: false)
Validation
ork validate -f e2e.yaml
Catches: missing required fields, unknown after values, unknown provider values, unreachable file paths for katalog, crd, cr, and setup.apply entries.
Try it
ork init --pack beginner
cd beginner/01-hello-website
ork e2e
This scaffolds the beginner example pack, moves into the first example, and runs the full E2E test — creates a kind cluster, applies the operator, applies the CR, checks the Deployment is ready, deletes the CR, and verifies cleanup. The whole cycle takes about 90 seconds.
To keep the cluster for inspection after the test:
ork e2e --keep-cluster
Where to go
| Page | Covers |
|---|---|
| 01-spec | katalog, crd, cr, cluster |
| 02-setup | setup.apply, setup.helm, setup.wait |
| 03-expect | expect — resources, commands, after, timeout |