Zero-Code
Kubernetes Operators
Declare your CRDs in YAML. Orkestra turns them into production-grade operators — no Go, no controller boilerplate, no reconcile loops.
metadata:
name: website-operator
crds:
website:
apiTypes:
group: apps.myorg.io
version: v1
kind: Website
validation:
- field: spec.image
prefix: "myorg/"
message: "image must be from myorg"
reconciler:
onCreate:
deployments:
- name: "{{ .metadata.name }}"
image: "{{ .spec.image }}"
replicas: "{{ .spec.replicas }}"
reconcile: true
services:
- name: "{{ .metadata.name }}-svc"
port: "80"
reconcile: trueThe operator problem
Every CRD needs a controller. Every controller means weeks of Go — informers, reconcilers, finalizers, events, metrics. You repeat the same 2,000 lines. Every. Single. Time.
- Weeks of boilerplate per CRD
- Deep Kubernetes client-go expertise required
- Operator sprawl — dozens of binaries to manage
- Testing, observability, and drift correction built from scratch
The Orkestra solution
Write a Katalog YAML. Orkestra generates and runs the operator. All CRDs in one runtime binary. Observability, health, metrics, and events — included.
- One YAML file, multiple declarations
- No Go, no code generation required
- One runtime binary — any number of CRDs
- Built-in drift correction, health API, and Prometheus metrics
Everything you need. Nothing you don't.
Orkestra handles the Kubernetes operator framework so you focus on your domain logic.
Zero-code operators
Write a Katalog YAML — Orkestra runs the full operator. No reconcile loops, no client-go, no controller-runtime registry.
One runtime, many CRDs
Register hundreds of CRDs in a single binary. Each gets its own informer, worker pool, queue, health state, and metrics.
Declarative validation
Enforce field constraints in YAML. Applied at admission time (webhook) and at every reconcile — declared once, enforced everywhere.
Declarative mutation
Set defaults and overrides in the Katalog. Applied at admission and corrected every reconcile without writing Go.
Multi-version CRDs
Declare conversion webhooks in the Katalog. Orkestra handles version negotiation between v1alpha1, v1beta1, and v1.
Dependency ordering
CRDs declare dependsOn. Orkestra resolves the graph, starts workers in topological order, and detects cycles at validation time.
Built-in health API
Every operator exposes /health and /katalog/{crd} endpoints out of the box. No instrumentation required.
Go hooks when you need them
Need custom logic? Register typed Go hooks alongside your Katalog. Called at the right lifecycle point — no framework to fight.
Control Center
Unified observability across multiple Orkestra instances. Live CRD health, worker visualization, reconcile rates — zero config.
How it works
From YAML declaration to running operator in four steps.
Write a Katalog
Declare your CRDs, the resources they should create, validation rules, and mutation defaults in a single YAML file.
Run ork run
Orkestra validates your Katalog, registers CRD informers, starts worker pools, and begins watching for Custom Resources.
Apply your CR
Orkestra reconciles the CR, creates declared resources (Deployments, Services, Secrets), adds finalizers, and enables drift correction.
Observe everything
Health endpoints, Prometheus metrics, ork status, and the Control Center — all included. No instrumentation required.
Orkestra Control Center
Unified observability across every Orkestra runtime. One dashboard. Zero configuration.
- Live health status per CRD and per instance
- Worker pool visualization — see concurrency in real time
- Multi-instance monitoring — watch every cluster at once
- Queue depth, reconcile rates, and error tracking
ork control startUp and running in 3 minutes
Install
$ brew install orkspace/tap/ork
# or
$ curl -sSL https://install.orkestra.sh | bashWrite your Katalog
$ ork init my-operator
✓ Created katalog.yaml
✓ Created crd.yaml
$ ork validate
✓ Katalog validRun your operator
$ ork run
✓ CRD registered: website
✓ Workers started: 3
✓ Watching namespace: default
✓ Health: http://localhost:8080/health