Creating backups

Prerequisites

  1. S3 storage is connected.
  2. 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

ActionPath
One-time backupBackup and Restore → Backups → Add Backup
SchedulerBackup and Restore → Schedulers → Add Scheduler
Screenshots

Creating a backup copy

Selecting objects for backup

Add backup scheduler

Backup status

Backup manifest


Options

FieldManifest parameterDescription
Namemetadata.nameRequired: lowercase Latin letters and numbers, starting with a letter. Does not change after creation.
TTLspec.ttlLifetime of a backup in storage.
Storagespec.storageLocationSelected BackupStorageLocation.
defaultVolumesToFsBackupspec.defaultVolumesToFsBackupBackup 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 labelsmetadata.labelsLabels 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.

FieldManifest parameterDescription
Include cluster resourcesspec.includedClusterScopedResourcesCluster-scoped resource types included in the backup.
Exclude cluster resourcesspec.excludedClusterScopedResourcesCluster-scoped resource types excluded from the backup.
Include namespacesspec.includedNamespacesNamespaces included in the backup.
Exclude namespacesspec.excludedNamespacesNamespaces excluded from the backup.
Include namespaced resourcesspec.includedNamespaceScopedResourcesNamespace-scoped resource types included in the backup.
Exclude namespaced resourcesspec.excludedNamespaceScopedResourcesNamespace-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

Add backup scheduler

FieldManifest parameterDescription
Scheduler namemetadata.nameRequired: lowercase Latin letters and numbers, starting with a letter. Does not change after creation.
Labelsmetadata.labelsLabels placed on the created Schedule object.
Schedulespec.scheduleRequired. 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 timespec.template.ttlLifetime of created backups in storage. Set in hours, minutes, and seconds; default is 720 h.
Storage namespec.template.storageLocationSelected BackupStorageLocation.
defaultVolumesToFsBackupspec.template.defaultVolumesToFsBackupBackup 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.