Creating backups
Prerequisites
- S3 storage is connected.
- The backup and restore module (shturval-backup) is installed and running (Auto mode), see overview of services.
Backup resource (one-time backup)
Name, TTL, storage, backup labels, and object selector (namespaces, resource types, labels) define what is included. The form selector uses AND logic: selected cluster/namespace objects and objects with matching labels or expressions are included in the backup.
For complex backup configurations, it is recommended to use a YAML manifest. You can load it into the GUI via import manifests.
In the cluster or namespace GUI
| Action | Path |
|---|---|
| One-time backup | Backup and Restore → Backups → Add Backup |
| Scheduler | Backup and Restore → Schedulers → Add Scheduler |
Screenshots





Options
| Field | Manifest parameter | Description |
|---|---|---|
| Name | metadata.name | Required: lowercase Latin letters and numbers, starting with a letter. Does not change after creation. |
| TTL | spec.ttl | Lifetime of a backup in storage. |
| Storage | spec.storageLocation | Selected BackupStorageLocation. |
| defaultVolumesToFsBackup | spec.defaultVolumesToFsBackup | Backup volumes via the pod file system (enabled by default). For a full backup of a cluster with PV, it is recommended to disable to reduce the risk of errors during recovery (see reference). |
| Backup labels | metadata.labels | Labels placed on the created Backup object. |
Selecting resources and namespaces
In a cluster, the following are available: Copying cluster resources, Copying namespaces, Copying namespaced resources. In a namespace, only Copying namespaced resources is available.
The backup contents are set separately for cluster resources, namespaces, and namespaced resources: what to include and what to exclude. The same resource or namespace cannot be included and excluded at the same time.
| Field | Manifest parameter | Description |
|---|---|---|
| Include cluster resources | spec.includedClusterScopedResources | Cluster-scoped resource types included in the backup. |
| Exclude cluster resources | spec.excludedClusterScopedResources | Cluster-scoped resource types excluded from the backup. |
| Include namespaces | spec.includedNamespaces | Namespaces included in the backup. |
| Exclude namespaces | spec.excludedNamespaces | Namespaces excluded from the backup. |
| Include namespaced resources | spec.includedNamespaceScopedResources | Namespace-scoped resource types included in the backup. |
| Exclude namespaced resources | spec.excludedNamespaceScopedResources | Namespace-scoped resource types excluded from the backup. |
On a Schedule resource the same parameters are set in spec.template.
The All cluster resources, All namespaced resources, or All namespaces checkbox selects everything in that list (*All resources or namespaces in the selected block. The manifest receives a single * value) and clears names you already picked. If you then pick a specific resource or namespace, “all” is cleared.
Velero does not allow excluding all namespaces, so the All namespaces checkbox is unavailable in exclude. You can exclude only selected namespaces.
Namespace velero is excluded automatically — restoring it results in an error.
The same list cannot contain both “all” (*) and individual names. That setting cannot be saved.
If you include nothing and exclude nothing, the backup takes everything in that block. The platform still skips the velero namespace and intermediate CSI snapshots.
You can include all resources (*) and exclude selected types. The reverse is not allowed: exclude everything and also include something. If both include and exclude are set to “all” (*), the backup contains nothing.
Dependent objects: when you select PVC among namespaced resources, the associated PV is included in the backup.
Automatic CSI snapshot exclusion: when processing a Backup, the Velero controller (from v1.17.0, in the platform from 2.13.1) adds volumesnapshots.snapshot.storage.k8s.io and volumesnapshotcontents.snapshot.storage.k8s.io to exclusions even if you did not set them in the GUI. Details — backup and restore module (shturval-backup).
Excluding an object by label (Velero)
A separate object can be excluded from the backup using the velero.io/exclude-from-backup=true label (applicable if the object falls under the general selector). Details and command example — Backup Reference (v1.17).
Status and manifest
Completion status is shown on the Backup resource — check the status.phase field. Restore from a specific backup is possible after backup has finished (Completed or PartiallyFailed); see When restore is possible. YAML is available as the manifest of the same resource. You can delete a backup entry from the backup list, the backup detail page, or by deleting the object on the manifest tab. In the cluster and namespace backup lists you can delete one backup or several at once. How to select objects and confirm deletion: Bulk deletion.
Deleting only the Backup CR through kubectl delete backup does not delete data from object storage; complete deletion of data — via velero backup delete <name> (Backup Reference (v1.17)).
After editing a backup or scheduler manifest in the GUI, click Check. If the manifest format is invalid, validation is unavailable.
Example: Backup (YAML)
The name in spec.storageLocation must match the name of the connected storage (BackupStorageLocation).
apiVersion: velero.io/v1
kind: Backup
metadata:
name: backup-my-namespace
namespace: velero
spec:
storageLocation: default
ttl: 720h
includedNamespaces:
- my-app
includedNamespaceScopedResources:
- "*"
excludedNamespaceScopedResources:
- events
defaultVolumesToFsBackup: false
Import: Import manifests.
Schedule resource (scheduler)
The scheduler creates backups on a schedule. Selecting resources and namespaces, CSI snapshot auto-exclusion, and dependent-object rules match the one-time backup. Changes in a saved scheduler apply to new backups; already created ones are not rebuilt. In the cluster and namespace scheduler lists you can delete one scheduler or several at once. How to select objects and confirm deletion: Bulk deletion.
Screenshot: add scheduler

| Field | Manifest parameter | Description |
|---|---|---|
| Scheduler name | metadata.name | Required: lowercase Latin letters and numbers, starting with a letter. Does not change after creation. |
| Labels | metadata.labels | Labels placed on the created Schedule object. |
| Schedule | spec.schedule | Required. Cron or CRON_TZThe schedule can be set in Cron format or with a time zone, for example CRON_TZ=Europe/Moscow 0 3 * * *. When clocks change for daylight saving time, a scheduled run may be skipped or may run twice. Field placeholder: CRON_TZ=Europe/Moscow 0 3 * * *. If the value is not a cron expression alone, the GUI checks the CRON_TZ= prefix and that the time zone is specified with /. |
| Backup retention time | spec.template.ttl | Lifetime of created backups in storage. Set in hours, minutes, and seconds; default is 720 h. |
| Storage name | spec.template.storageLocation | Selected BackupStorageLocation. |
| defaultVolumesToFsBackup | spec.template.defaultVolumesToFsBackup | Backup volumes via the pod file system. Yes — enabled, No — disabled. |
Time zone format — Backup Reference (v1.17).
For complex scheduler configuration, it is recommended to use a YAML manifest. You can load it into the GUI via import manifests.
Example: Schedule (YAML)
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: daily-my-app
namespace: velero
spec:
schedule: "CRON_TZ=Europe/Moscow 0 3 * * *"
template:
ttl: 168h
storageLocation: default
includedNamespaces:
- my-app
includedNamespaceScopedResources:
- "*"
excludedNamespaceScopedResources:
- events
defaultVolumesToFsBackup: false
In case of failures, see Troubleshooting.