Status Management

2 min read

Orkestra writes CR status automatically. Every managed CR gets a machine-readable health signal after every reconcile. For operators that need richer status — replica counts, endpoints, phase strings, child resource state — a declarative status: block in the Katalog provides it without writing a single line of Go.

Status in Orkestra works in three layers, each building on the previous one.


Layer 1 — Standard conditions (automatic)

After every reconcile cycle, Orkestra patches the CR’s /status subresource with a standard Kubernetes Ready condition and observedGeneration. No Katalog declaration required.

On success:

status:
  conditions:
    - type: Ready
      status: "True"
      reason: ReconcileSucceeded
      message: ""
      lastTransitionTime: "2026-03-29T09:02:33Z"
      observedGeneration: 1
  observedGeneration: 1

On failure:

status:
  conditions:
    - type: Ready
      status: "False"
      reason: ReconcileError
      message: "deployment: image pull failed: rpc error..."
      lastTransitionTime: "2026-03-29T09:03:01Z"
      observedGeneration: 1

This makes kubectl get immediately informative. External tools that watch for Ready=True — ArgoCD health checks, dashboards, monitoring scripts — work out of the box.

CRD must declare the status subresource
Layer 1 requires subresources: status: {} in the CRD definition. Without it, Orkestra’s status patch receives a 404 and is silently ignored — reconciliation is not affected.
```yaml
spec:
  versions:
    - name: v1alpha1
      subresources:
        status: {}
```

To opt out of automatic conditions for a specific CRD:

operatorBox:
  status:
    conditions: false

Where to go next