Ready checks see history edit this page

Talks about: , , and

Ready checks decide when a stage is healthy enough to let the next stage start. They are purely observational — the controller waits and reports, but takes no action (active steps are actions).

By default, with no readyChecks block, the controller waits for every object the stage applied to report ready via kstatus. readyChecks lets you narrow that to specific objects (checks), add custom health for resources kstatus doesn’t understand (exprs, CEL), bound the wait (timeout), or skip it entirely (disableWait). checks and exprs may be set together.

Explicit objects

Wait for named objects only — useful when a stage applies many objects but only a few gate the next stage:

spec:
  stages:
    - name: infrastructure
      sourceRef:
        name: platform
      readyChecks:
        timeout: 5m
        checks:
          - apiVersion: apiextensions.k8s.io/v1
            kind: CustomResourceDefinition
            name: ledgers.payments.example
          - apiVersion: apps/v1
            kind: Deployment
            name: ledger-operator
            namespace: platform-system

Custom health with CEL

For custom resources kstatus doesn’t understand, describe readiness with CEL expressions. The shape matches kustomize-controller’s healthCheckExprs, so expressions are portable.

      readyChecks:
        exprs:
          - apiVersion: db.example/v1
            kind: Database
            current: "status.phase == 'Running'"
            inProgress: "status.phase in ['Pending', 'Provisioning']"
            failed: "status.phase == 'Failed'"

Opting out

To apply a stage without waiting for readiness (fire-and-forget), disable the wait:

      readyChecks:
        disableWait: true