Ecosystem

2 min read

How does Orkestra compare to kro?

kro (Kubernetes Resource Orchestrator) was announced in 2024 by Google, Microsoft, and AWS. It allows declaring ResourceGraphDefinitions that compose Kubernetes resources declaratively. The core insight — operator behavior should be a declaration — is the same insight Orkestra is built on.

The differences are significant:

kroOrkestra
Per-CRD isolationNo — shared reconcile contextYes — dedicated informer, queue, workers
Multi-version CRDsNoYes — declarative conversion paths
Registry/distributionNoYes — OCI artifacts, Artifact Hub
Admission webhooksNoYes — validation and mutation
Health APINoYes — per-CRD endpoints and Prometheus
ObservabilityNoYes — Control Center, per-CRD health endpoints, Prometheus
Hooks for external logicNoYes — typed and dynamic Go hooks

kro is a composability layer. Orkestra is a runtime. The fact that three major cloud providers independently arrived at the same insight validates the direction. Orkestra is the complete version of what they were reaching for.


Can Orkestra manage third-party CRDs?

Yes — any CRD that Kubernetes accepts, Orkestra can watch and reconcile. No fork, no reverse engineering, no changes to the CRD definition needed.

- name: prometheus
  apiTypes:
    group: monitoring.coreos.com
    version: v1
    kind: Prometheus
    plural: prometheuses
  operatorBox:
    default: true
    onCreate:
      # governance, companion resources, defaults

This is how governance patterns work — you apply Orkestra’s validation and mutation model to CRDs you did not write and cannot modify.


What is the path to Kubernetes core?

See Declarative Operators: A New Model for Kubernetes Extensibility for the full argument.

The short version: Orkestra is building toward CNCF Sandbox, then a Kubernetes Enhancement Proposal, then alpha/beta/GA integration into kube-controller-manager. The target timeline is five years. The prerequisite is production adoption at multiple organisations, with metrics.

The Katalog and Komposer becoming native Kubernetes kinds — kubectl get katalogs — is the end state. At that point, every cluster ships with a meta-controller that understands declarative operator definitions. Platform teams write Katalogs. Kubernetes manages them.