Katalog

2 min read
Katalog is not a Kubernetes CRD
kubectl apply will not work. Orkestra kinds are consumed by the ork CLI and runtime — not by the Kubernetes API server. Your CRD is enough.

A Katalog declares one or more CRDs and defines how Orkestra manages them. It is the unit of operator definition — everything the runtime needs to run an operator from a single YAML file.

Motif     — named inputs + resource blocks. One concern.
Katalog   — operator declaration. Imports Motifs. Defines CRDs.
Komposer  — platform declaration. Composes Katalogs.
E2E       — declarative end-to-end test for a Katalog.

Wire format

apiVersion: orkestra.orkspace.io/v1
kind: Katalog

metadata:
  name: my-operator
  description: string          # optional

spec:
  finalizers:                  # optional — applied to every CRD
    - platform.example.io/cleanup

  crds:                        # required — map of CRD entries by name
    <name>:
      apiTypes:                # GVK declaration
        ...
      operatorBox:             # resource templates and reconcile logic
        ...
      imports:                 # Motif imports
        ...

profiles:                      # optional — user-defined named profiles
  networkPolicies:
    - name: allow-monitoring
      ...
  resourceQuotas:
    - name: team-medium
      ...

security:                      # optional
  ...

notification:                  # optional
  ...

providers:                     # optional
  - ...

Try it

ork init --pack beginner
cd beginner/01-hello-website
ork run

This scaffolds the simplest Katalog — a single CRD that creates a Deployment and Service from a CR apply. The full reference for every field is in the pages below.


Where to go

PageCovers
01-top-levelTop-level Katalog structure — metadata, spec.finalizers, spec.crds
02-crd-entryFields inside spec.crds.<name> — enabled, workers, resync, imports
03-apitypesapiTypes — group, kind, version, plural, typed mode
04-operatorboxoperatorBox — resource templates, reconciliation strategy
05-statusstatus — fields written to CR status after reconcile
06-when-conditionswhen / anyOf — conditional resource creation
07-validationvalidation — admission rules
08-mutationmutation — admission defaults and overrides
09-conversionconversion — multi-version CRD support
10-katalog-securitysecurity block
11-katalog-notificationnotification block
12-katalog-providersproviders block
16-resource-typesSupported Kubernetes resource types
Profiles conceptprofiles: — user-defined named profiles
15-enrichenrich — post-reconcile enrichment
16-resource-typesSupported resource types and placeholder fields