Skip to content

Annotations and controller selection

Annotations are Kubernetes string values. Place them on the resource named below; a controller-selection annotation on a Pod is not equivalent to one on its ScaledObject.

Chart settings are listed in Helm configuration; resource fields are listed in the Kubernetes API catalog.

Annotation / fieldResource and valuesEffect / precedence
autoscaling.kedify.io/classScaledObject; "hpa" or "kpa"Overrides installation default. KEDA owns generated HPA/KPA transition. ScalingGroup membership requires HPA; see the fallback task.
autoscaling.kedify.io/sync-period-secondsKPA-selected ScaledObject; integer string from "1" through "3600"Cannot be below the configured KPA minimum (documented default 5 seconds). Without it, the controller-wide period applies (documented default 15 seconds). Distinct from KEDA polling/activation.
prp.kedify.io/reconcileTarget Pod/template; "enabled"Opts into PRP when annotated pods are required.
pra.kedify.io/reconcileTarget Pod/template; "enabled"Opts into PRA when its annotation requirement is enabled. PRA’s spec.paused is an API field, not an annotation.
autoscaling.keda.sh/pausedScaledObject, ScaledJob; "true"Pauses the applicable scaling controller under the versioned KEDA contract. On ScalingPolicy, pauses policy application rather than its targets directly.
autoscaling.keda.sh/paused-replicasScaledObject; integer stringPins paused replica behavior under the selected KEDA version; account for workload capacity.
keda.kedify.io/pause-resume-atPaused target; RFC3339 timestamp stringResume at an absolute time, including timezone.
keda.kedify.io/pause-resume-afterPaused target; Go-duration string such as "1h"Relative resume delay; controller resolves an absolute time. Not a stable repeated GitOps schedule.
keda.kedify.io/paused-reasonPaused target; text stringContext for maintenance; removed when resumed.
metadata:
annotations:
autoscaling.kedify.io/class: "kpa"
autoscaling.kedify.io/sync-period-seconds: "15"

Use select KPA, HPA rollback, and ScalingGroup fallback for the complete transition. Do not manually author a generated KPA.

metadata:
annotations:
autoscaling.keda.sh/paused: "true"
keda.kedify.io/pause-resume-after: "1h"
keda.kedify.io/paused-reason: "Planned maintenance"

If both resume-at and resume-after are present, the documented controller uses the earlier time. Follow pause and resume scaling to verify removal and recovery. A source owner that continually restores a pause annotation can defeat the intended resume; coordinate reconciliation ownership.

For PRP setup, add opt-in to the pod template when required so replacement pods inherit it. For PRA, use the enablement task and its API pause field.