KickPolicy API Reference
Group/version: kick.corewire.io/v1alpha1
Kind: KickPolicy
spec.discovery
Two optional label selectors scope the policy. An empty or omitted selector matches everything on its axis.
workloadSelector— which workloads the policy manages (the actors that may be restarted). Omit to match all supported workloads in the namespace.dependencySelector— which consumedSecret/ConfigMapchanges count as a trigger. Omit to treat every discovered dependency as a trigger.
A workload restarts when it consumes a changed dependency, the workload is in
workloadSelector scope, and the changed dependency is in dependencySelector
scope. dependencySelector also scopes freshness: out-of-scope dependencies are
ignored entirely.
spec.schedule
spec.schedule is the KICK-native time gate: pure scheduling, evaluated without
any GitOps provider. Omit it to allow restarts at any time.
windows[]KICK-native restart windowstypeenum:Allow,Deny(required)cron5-field cron expression marking each window start (required)durationhow long the window stays open from each start, e.g.1h(required)timeZoneIANA zone used to evaluate the cron expression (default UTC)
spec.gitOps
spec.gitOps is optional. When omitted, provider defaults to None and KICK
restarts without consulting a GitOps tool (gated only by any native windows).
providerenum:None,Auto,ArgoCD,Flux,Kargo(defaultNone)requireReconcileddefault:true(applies only to a real provider)
Kargo is never auto-detected and must be selected explicitly: Kargo does not
write to workloads, Argo CD does, so a Kargo-managed workload is
indistinguishable from a plain Argo CD one. With Kargo, KICK resolves the
authorised Stage from the owning Application’s
kargo.akuity.io/authorized-stage annotation, blocks while a Promotion for that
Stage is in flight, and then delegates to the Argo CD gate. More than one
authorised stage is treated as ambiguous ownership and blocks.
See Running without GitOps for the None case.
spec.restart
minIntervaldefault:30s
spec
suspendpauses the policy without deleting it (defaultfalse)dryRunevaluates every gate and the freshness check but never patches a workload (defaultfalse). TheKickRequestends in the terminalDryRunphase with the decision recorded in its conditions, so you can see exactly what would have happened.
status
observedGenerationmatchedWorkloadsblockedWorkloadsconditions