E2E

2 min read
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

PageCovers
01-speckatalog, crd, cr, cluster
02-setupsetup.apply, setup.helm, setup.wait
03-expectexpect — resources, commands, after, timeout