Dependent Objects
Dependent objects are the resources managed by the reconciler — in the higher-level
model, the objects returned by a generator’s Generate() method. Under normal
circumstances the framework manages their lifecycle well: it creates and deletes them
in a sensible order and avoids the obvious transient errors.
For finer control, a manifest may carry any of the annotations below. In all cases the
annotation prefix is the reconciler name — the value passed to NewReconciler().
Throughout this page it is written as mycomponent-operator.mydomain.io, but it is a
variable; your operator will use its own prefix.
Annotation values are normalized before being evaluated, so PascalCase, camelCase,
and kebab-case representations are all accepted. For example, IfUnowned,
ifUnowned, and if-unowned are equivalent values for …/adoption-policy.
Annotation reference
…/adoption-policy
How the reconciler reacts if the object exists but has no or a different owner.
never— fail if the object exists and has no or a different ownerif-unowned— adopt the object if it has no owner setalways— adopt the object even if it has a conflicting owner
See Policies → Adoption policy.
…/reconcile-policy
When the object is reconciled.
on-object-change— reconcile whenever the generated manifest changeson-object-or-component-change— reconcile whenever the manifest changes, or the owning component changesonce— reconcile once, then never touch the object again
See Policies → Reconcile policy.
…/update-policy
How an existing object is updated.
replace— regularPUTto the Kubernetes APIssa-merge— server-side apply, leaving foreign non-conflicting fields untouchedssa-override— server-side apply, additionally reclaiming fields owned by field managers such askubectlrecreate— delete and re-create the object instead of updating in place
…/delete-policy
What happens to the object when it becomes redundant or the component is deleted.
delete— send a delete request to the Kubernetes APIorphan— never delete; stop tracking the object in both cases (redundant during apply, and on component deletion)orphan-on-apply— orphan only when the object becomes redundant during applyorphan-on-delete— orphan only when the component itself is deleted
…/apply-order
The wave in which the object is applied. Dependents are reconciled wave by wave in ascending order; the reconciler proceeds to the next wave only once all objects of the previous wave are ready. Value: an integer in -32768 to 32767; unset means 0.
…/purge-order
The wave at the end of which the object is purged (deleted from the cluster while
remaining as a Completed record in the inventory). Useful for ephemeral, hook-like
objects. Value: an integer in -32768 to 32767. Namespaces, CRDs and APIServices
must not set a purge order.
See Completion.
…/delete-order
The wave in which the object is deleted, when it is redundant or the component is being deleted. Deletion proceeds wave by wave in ascending order; the next wave starts only once all objects of previous waves are gone. Value: an integer in -32768 to 32767; unset means 0. The delete order is fully independent of the apply order.
…/reapply-interval
The interval after which the object is force-reapplied even when it appears to be in sync. If unset, the reconciler (or component) default is used. Because a reapply can only happen during a reconciliation, choose a value noticeably larger than the effective requeue interval.
See Drift Detection.
…/status-hint
A comma-separated list of hints that help the framework determine the object’s readiness when vanilla kstatus is insufficient. Supported hints:
has-observed-generation— treat the object as having astatus.observedGenerationfield even if it is not yet set (for controllers that set it lazily)has-ready-condition— require aReadycondition; if absent, treat status asUnknownconditions=<list>— a semicolon-separated list of additional condition types that must all be present with statusTrue
Hints may be combined, e.g.
has-observed-generation,has-ready-condition,conditions=Synced;Healthy.
See Enhanced Status Detection.
…/disable-events
Whether the reconciler emits Kubernetes events on the object (such as created, updated,
or deleted) while managing it. Set to true to suppress events for this particular
object. This is the per-object counterpart of the reconciler-wide
ReconcilerOptions.EnableEvents; if events are already disabled globally, this
annotation has no additional effect.
See Reconciler Options.
Annotations set by the reconciler
The reconciler also writes some annotations/labels (all prefixed with the reconciler
name) that you should not set yourself:
…/owner-id— identifies the managing owner (also stored as a label)…/digest— the digest used for drift detection