Velero Operator Charm
| Channel | Revision | Published | Runs on |
|---|---|---|---|
| latest/edge | 421 | 25 Sep 2025 | |
| 1.15/stable | 421 | 16 Oct 2025 | |
| 1.15/candidate | 421 | 16 Oct 2025 | |
| 1.15/edge | 421 | 16 Oct 2025 |
juju deploy velero-operator --channel edge
Deploy universal operators easily with Juju, the Universal Operator Lifecycle Manager.
Platform:
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.