Control the Apply Behavior
Timoni allows changing the default apply behaviour of Kubernetes resources
with the action.timoni.sh
annotations.
Annotations
CUE | Generated YAML |
---|---|
timoniv1.Action.Force |
action.timoni.sh/force: enabled |
timoniv1.Action.OneOff |
action.timoni.sh/one-off: enabled |
timoniv1.Action.Keep |
action.timoni.sh/prune: disabled |
timoniv1.Action.DisableWaiting |
action.timoni.sh/wait: disabled |
Force Apply
To recreate immutable resources such as Kubernetes Jobs,
these resources can be annotated with action.timoni.sh/force: "enabled"
.
Example:
package templates
import (
batchv1 "k8s.io/api/batch/v1"
timoniv1 "timoni.sh/core/v1alpha1"
)
#TestJob: batchv1.#Job & {
#config: #Config
apiVersion: "batch/v1"
kind: "Job"
metadata: timoniv1.#MetaComponent & {
#Meta: #config.metadata
#Component: "test"
}
metadata: annotations: timoniv1.Action.Force
spec: {...}
}
One-Off Apply
To apply resources only if they don't exist on the cluster,
these resources can be annotated with action.timoni.sh/one-off: "enabled"
.
Example:
package templates
import (
batchv1 "k8s.io/api/batch/v1"
timoniv1 "timoni.sh/core/v1alpha1"
)
#InstallJob: batchv1.#Job & {
#config: #Config
apiVersion: "batch/v1"
kind: "Job"
metadata: timoniv1.#MetaComponent & {
#Meta: #config.metadata
#Component: "install"
}
metadata: annotations: timoniv1.Action.OneOff
spec: {...}
}
Disable Pruning
To prevent Timoni's garbage collector from deleting certain
resources such as Kubernetes Persistent Volume Claims,
these resources can be annotated with action.timoni.sh/prune: "disabled"
.
Example:
package templates
import (
corev1 "k8s.io/api/core/v1"
timoniv1 "timoni.sh/core/v1alpha1"
)
#DatabasePVC: corev1.#PersistentVolumeClaim & {
#config: #Config
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata: timoniv1.#MetaComponent & {
#Meta: #config.metadata
#Component: "database"
}
metadata: annotations: timoniv1.Action.Keep
spec: {...}
}
Disable Waiting
To prevent Timoni's readiness check from waiting for certain
resources such as Kubernetes Persistent Volumes,
these resources can be annotated with action.timoni.sh/wait: "disabled"
.
Example:
package templates
import (
corev1 "k8s.io/api/core/v1"
timoniv1 "timoni.sh/core/v1alpha1"
)
#DatabasePV: corev1.#PersistentVolume & {
#config: #Config
apiVersion: "v1"
kind: "PersistentVolume"
metadata: timoniv1.#MetaComponent & {
#Meta: #config.metadata
#Component: "database"
}
metadata: annotations: timoniv1.Action.DisableWaiting
spec: {...}
}