Alpha · v0.1.0 · View releases →

Zero-Code
Kubernetes Operators

Declare your CRDs in YAML. Orkestra turns them into production-grade operators — no Go, no controller boilerplate, no reconcile loops.

katalog.yaml
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: true

Runs on Kubernetes · Zero dependencies · Apache 2.0

⚙️

The 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.

01

Write a Katalog

Declare your CRDs, the resources they should create, validation rules, and mutation defaults in a single YAML file.

02

Run ork run

Orkestra validates your Katalog, registers CRD informers, starts worker pools, and begins watching for Custom Resources.

03

Apply your CR

Orkestra reconciles the CR, creates declared resources (Deployments, Services, Secrets), adds finalizers, and enables drift correction.

04

Observe everything

Health endpoints, Prometheus metrics, ork status, and the Control Center — all included. No instrumentation required.

New

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
Learn more ork control start
Orkestra Control Center
Runtimes 3 healthy
CRDs managed 24
Reconcile rate 142/min
Queue depth 0
Workers

Up and running in 3 minutes

1

Install

$ brew install orkspace/tap/ork
# or
$ curl -sSL https://install.orkestra.sh | bash
2

Write your Katalog

$ ork init my-operator
✓ Created katalog.yaml
✓ Created crd.yaml
$ ork validate
✓ Katalog valid
3

Run your operator

$ ork run
✓ CRD registered: website
✓ Workers started: 3
✓ Watching namespace: default
✓ Health: http://localhost:8080/health