Skip to content

Force reconciliation

Force Reconciliation Annotation

Annotation-Based Debugging

Both Order and ArtifactWorkflow resources support manual reconciliation triggering via the arc.opendefense.cloud/force-at annotation:

apiVersion: arc.opendefense.cloud/v1alpha1
kind: Order
metadata:
  name: my-order
  annotations:
    arc.opendefense.cloud/force-at: "1735689600"  # Unix timestamp
spec:
  # ...

Set the annotation as follows:

kubectl annotate --overwrite orders.arc.opendefense.cloud/<order-name> \
"arc.opendefense.cloud/force-at"="$(date +%s)"

Force Reconcile Logic

Controllers force a reconciliation when the annotation is later than .status.lastForceAt, then record the annotation value there, so each value forces exactly once. The force happens as soon as the controller sees the new value: force-at is not a schedule, a future timestamp does not delay the reconciliation until that time. Values that cannot be recorded (past year 9999, e.g. milliseconds instead of seconds) are logged and ignored. For Order, force reconciliation deletes all ArtifactWorkflows to trigger fresh creation. For ArtifactWorkflow, it deletes the Argo Workflow.

Reconciliation Timestamps

Both Order and ArtifactWorkflow resources track reconciliation timestamps in their status:

Field Type Purpose
.status.lastReconcileAt metav1.Time Timestamp of most recent reconciliation
.status.lastForceAt metav1.Time Annotation value last honoured