Velero Operator backup config interface

Backup config interface

The backup config interface enables a client charm to declare what Kubernetes data must be backed up. It delegates the execution to Charmed Velero (no elevated cluster perms on the client). Charmed Velero consumes the spec and creates the corresponding Velero Backup Custom Resource (CR).

Charmed Velero supports multiple concurrent relations from many clients and endpoints, disambiguating by client app, relation name and model.

Data contract

Charmed Velero expects a spec object in the databag from a provider charm. You can find below an overview of the fields in the object, their type and extracted data:

spec fields (all optional unless stated):

  • include_namespaces: list[str] — Only these namespaces are backed up.
  • include_resources: list[str] — Only these resource kinds are included.
  • exclude_namespaces: list[str] — Namespaces to omit.
  • exclude_resources: list[str] — Resource kinds to omit.
  • include_cluster_resources: bool — Include cluster-scoped resources; default false.
  • label_selector: dict — Key/value selector to filter objects (e.g., {"app": "kubeflow"}).
  • ttl: str — Retention, e.g., "72h", "30d" (Velero duration format). If unset, Velero’s default applies.

Lifecycle and behaviour

  • Client sets/updates relation data with its backup spec as soon as the relation is joined/changed.
  • Operator watches relation events; when a backup is triggered (e.g., via action), it renders a Backup CR from the latest spec and submits it to the cluster.

Examples

This is the minimal databag example between the provider charm (client) and the requirer charm (Charmed Velero):

application-data:
  app: kubeflow
  relation_name: profiles-backup
  model: kubeflow-model
  spec:
    include_namespaces: ["kubeflow"]
    include_resources: ["profiles.kubeflow.org"]
    exclude_resources: null
    exclude_namespaces: null
    label_selector: {"app": "kubeflow"}
    include_cluster_resources: false
    ttl: null

Here are some implementation examples of a client charm using the interface and the library provided by Charmed Velero:

For more details, please see the interface specification and the charm library.