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; defaultfalse
.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.