Writing Your First Komposer

2 min read

A Komposer defines where Orkestra loads Katalogs from. A Katalog defines what your operator does — a Komposer defines where those Katalogs come from.

You do not need a Komposer to use Orkestra. ork run -f katalog.yaml works without one. Komposers become useful when you want to compose Katalogs from multiple sources or apply overrides.


The Simplest Komposer

apiVersion: orkestra.orkspace.io/v1
kind: Komposer
metadata:
  name: my-komposer

imports:
  files:
    - ./katalog.yaml

Run it the same way:

ork run -f komposer.yaml

Loading Multiple Katalogs

imports:
  files:
    - ./katalogs/app.yaml
    - ./katalogs/database.yaml
    - ./katalogs/cache.yaml

Orkestra merges them. If two Katalogs define the same CRD name, the later one wins — or you can use the spec.crds block in the Komposer itself to override specific fields.


Loading From a Registry

imports:
  registry:
    - url: ghcr.io/orkspace/orkestra-registry/postgres@v14
      oci: true

Pulls the Postgres operator pattern from the OCI registry and merges it with any other sources.


Loading From a Helm Chart

imports:
  helm:
    - repo: https://charts.myorg.io
      chart: platform-crds
      version: 2.1.0

Overriding Fields

The spec.crds block in a Komposer always wins over imported Katalogs. Use it to tune imported patterns:

imports:
  registry:
    - url: ghcr.io/orkspace/orkestra-registry/postgres@v14
      oci: true

spec:
  crds:
    postgres:
      workers: 8
      resync: 30s

Validating Without Running

ork validate -f komposer.yaml

Resolves all sources, merges everything, and reports errors — without touching the cluster.