Index
Welcome
Welcome to the Orkestra documentation — the complete reference for the world’s first zero‑code Kubernetes operator runtime.
Orkestra turns CRDs into operators. This documentation explains how.
What Is Orkestra?
Orkestra is a declarative, zero‑code Kubernetes operator runtime. You declare what you want in a YAML file — a Katalog — and Orkestra manages the full lifecycle of your CRDs: create, reconcile, drift‑correct, delete.
No Go. No code generation. No controller boilerplate.
Why Orkestra?
CRDs were meant to make Kubernetes extensible. But to turn a CRD into an operator, you still write Go code — controllers, informers, reconcilers, finalizers, events, metrics. Every operator repeats the same patterns. Every team rebuilds the same infrastructure.
Orkestra removes that barrier. You write a Katalog. Orkestra builds the operator.
How It Works
Orkestra follows the GitOps pattern of using YAML as the source of truth for operator behavior.
You declare a Katalog — a YAML file that describes your CRDs and the resources they should create (Deployments, Services, Secrets, ConfigMaps, Jobs, CronJobs).
You apply your CRD — Orkestra detects the CRD, creates informers, starts workers, and begins watching for Custom Resources.
You create a Custom Resource — Orkestra reconciles it, creates the declared resources, adds finalizers, and enables drift correction.
You update or delete the CR — Orkestra reconciles changes, corrects drift, or cleans up child resources.
For a quick overview, see the Getting Started guide.
Architecture
Orkestra is implemented as a Kubernetes runtime that watches your CRDs and reconciles according to your Katalog. It runs as a single binary — locally or in the cluster — and manages all your CRDs in one process.
- One runtime, any number of CRDs — each CRD gets its own informer, worker pool, and queue
- Dependency‑aware startup — declare
dependsOn, Orkestra starts CRDs in topological order - Built‑in observability — health endpoints, Prometheus metrics,
ork statusCLI - Per‑CRD tuning — configure workers, resync intervals, and queue depth per CRD
- Drift correction — resources with
reconcile: trueare automatically corrected on every reconcile - No programming language required — just YAML
For additional details, see the Architecture Overview.
Quick Start
# Install Orkestra
brew install orkspace/tap/ork
# or
curl -sSL https://raw.githubusercontent.com/orkestra-sh/orkestra/main/install.sh | bash
For a step‑by‑step walkthrough, see the Getting Started Guide.
Features
- Zero‑code operators — No Go, no Python, no controller boilerplate. Just YAML.
- Any CRD, any resource — Works with custom CRDs and built‑in Kubernetes resources (Pods, Deployments, Secrets)
- Declarative templates — Use Go templates to reference CR spec fields (
{{ .spec.image }}) - Conditional provisioning — Create resources only when conditions are met (
when:) - Dependency ordering — Declare
dependsOn, Orkestra starts CRDs in the right order - Drift correction — Resources with
reconcile: trueare automatically corrected on every reconcile - Admission policy — Declare validation and mutation rules in the Katalog. No webhook server to run, no TLS to manage, no Go to write.
- Multi‑version CRDs — Declarative conversion paths between CRD versions. No conversion functions.
- Per‑CRD workers — Each CRD gets its own worker pool, queue, and resync interval
- Built‑in observability — Health and info endpoints (
/katalog/{crd}/healthand/katalog/{crd}), Prometheus metrics(/metrics),ork status - Komposer composition — Compose Katalogs from files, Helm charts, and remote URLs
- Multi‑source authentication — Support for bearer tokens, GitHub tokens, and basic auth
- Leader election — High availability with warm caches on all replicas
- Graceful shutdown — Drains workers, stops informers, releases leader lease
Development Status
Orkestra is being actively developed. The core runtime is stable and ready for testing. New features are being added regularly.
Adoption
Orkestra is designed for:
- Platform engineers — build internal developer platforms without writing operators
- SREs — manage infrastructure with declarative YAML, not Go code
- Infrastructure teams — replace dozens of operators with one runtime
- Application developers — define their own CRDs without learning Kubernetes controller patterns
Early adopters are using Orkestra to manage:
- Namespace provisioners with quotas and network policies
- Database operators (PostgreSQL, MongoDB) with secrets and backups
- Application operators (Deployment + Service + ConfigMap) with conditional public exposure
- Built‑in resource governance (Pod, Deployment, Secret) with health monitoring
Documentation
| Section | Description |
|---|---|
| Guides | Step‑by‑step instructions for building operators |
| Concepts | Core ideas that define how Orkestra works |
| Reference | Detailed documentation for every part of Orkestra |
| Architecture | How Orkestra works under the hood |
| OrkestraRegistry | The operator standard library |
| Publications | High‑level papers and conceptual documents |
Community
- GitHub Issues — report bugs, request features
- Discussions — ask questions, share ideas
Built with ❤️ for the Kubernetes ecosystem. 🎼