Orkestra Examples
A progressive set of examples — from a single Deployment to multi-source composition, autoscaling, cross-operator dependencies, and full platform stacks built from custom resources.
The fastest way to start
ork init my-operator --pack beginner
cd my-operator/beginner/01-hello-website
ork run --dev
The examples are embedded in the CLI binary — no internet connection needed. They are extracted instantly into your project folder.
Choose your pack
ork init my-operator # defaults to beginner
ork init my-operator --pack beginner # Simple CRDs, Deployments, Services
ork init my-operator --pack intermediate # Multi-resource, conditions, state machines, Komposer
ork init my-operator --pack advanced # Hooks, constructors, validation, registries, autoscale, custom resources
ork init my-operator --pack security # Deletion protection, namespace isolation, admission webhooks
ork init my-operator --pack use-cases # Full-stack, cross-CRD, external gates, multi-region, and more
List all packs:
ork init --list-packs
After init, your examples live at:
my-operator/
└── <pack>/
├── e2e.yaml full suite — runs all examples in one command
└── <example>/
├── README.md step-by-step walkthrough
├── katalog.yaml operator definition
├── crd.yaml the CRD to install
├── cr.yaml sample custom resource
└── e2e.yaml end-to-end test for this example
Learning Path
Beginner — --pack beginner
Start here. No cluster setup beyond the ork CLI.
You know the basics. Now use more of Orkestra's surface.
Advanced — --pack advanced
Production patterns. Admission policy, typed Go operators, autoscaling, custom resources, and more.
Security — --pack security
Protect your cluster from accidental deletions, rogue workloads, and bad input.
Use Cases — --pack use-cases
Real-world patterns combining multiple Orkestra features.
| Example |
What you learn |
| Full-Stack App |
forEach + external + cross + once + anyOf in one CR. |
| Multi-Region Map |
Deploy across regions using forEach over a map. |
| CRD Conversion |
Multi-version CRDs with or without a conversion webhook. |
| Custom Operator |
spec.customOperator: true — use ork e2e as a test harness for any operator. |
| External |
Gate resource creation on upstream health checks. |
| Multi-Tenancy |
Namespace isolation, per-tenant configuration. |
| Enrich |
Inject data from external sources into CR status. |
| Normalize |
Validate and normalise CR fields at reconcile time. |
| Profiles |
Apply different resource configurations based on environment profiles. |
E2E test suites
Every example ships with e2e.yaml. Every pack ships with a root e2e.yaml that runs the full suite.
# Run a single example
cd beginner/01-hello-website && ork e2e
# Run an entire pack
ork e2e -f beginner/e2e.yaml
ork e2e -f intermediate/e2e.yaml
ork e2e -f security/e2e.yaml
# Simulate the full pack (no cluster needed)
ork simulate ./...
Prerequisites
All examples:
ork CLI — curl get.orkestra.sh | bash
- A running Kubernetes cluster (
kind create cluster works for every example here)
kubectl configured
Advanced typed examples (09, 10, 11) also require:
- Go 1.22+
make registry && make build to compile your operator binary before running e2e
Running any example
# 1. Pick a pack and scaffold your project
ork init my-operator --pack beginner
cd my-operator/beginner/01-hello-website
# 2. Start the operator
ork run --dev
# 3. Watch the resources appear
kubectl get websites -n default
# 4. Cleanup
./cleanup.sh
Each example's README.md has the exact commands for that example.