Skip to content

Perform a manual backup

You’ll verify your scheduled backups are running and trigger a manual backup on demand.

UDS Core runs a daily backup at 03:00 UTC by default (schedule name: velero-udsbackup). Backups exclude the kube-system and velero namespaces and include cluster-scoped resources.

  1. Verify scheduled backups are running

    List recent backups:

    Terminal window
    uds zarf tools kubectl get backup -n velero --sort-by=.status.startTimestamp

    Check the status of the most recent backup:

    Terminal window
    uds zarf tools kubectl get backup -n velero <backup-name> -o jsonpath='{.status.phase}'

    The expected status is Completed. If no backups exist yet, the schedule may not have triggered — proceed to step 2 to create a manual backup.

  2. Trigger a manual backup

    Create a backup that mirrors the default schedule configuration:

    Terminal window
    uds zarf tools kubectl apply -f - <<EOF
    apiVersion: velero.io/v1
    kind: Backup
    metadata:
    name: manual-backup-$(date +%s)
    namespace: velero
    spec:
    csiSnapshotTimeout: 0s
    excludedNamespaces:
    - kube-system
    - velero
    includeClusterResources: true
    snapshotVolumes: false
    ttl: 240h0m0s
    EOF

    Alternatively, if you have the Velero CLI installed:

    Terminal window
    velero backup create --from-schedule velero-udsbackup -n velero
  3. Wait for the backup to complete

    Monitor the backup status:

    Terminal window
    uds zarf tools kubectl get backup -n velero <backup-name> -w

    Once the phase shows Completed, the backup is ready for use.

    If volume snapshots are enabled, verify the snapshot count matches your PVC count. The check differs by provider:

    CSI-based snapshots (vSphere):

    Terminal window
    uds zarf tools kubectl get volumesnapshot -A

    Native AWS EBS plugin:

    Terminal window
    uds zarf tools kubectl get backup -n velero <backup-name> -o jsonpath='{.status.volumeSnapshotsCompleted}'

Success criteria:

  • Backup phase is Completed with no errors
  • If using the native AWS EBS plugin, volumeSnapshotsCompleted matches the number of PVCs in backed-up namespaces
  • If using CSI-based snapshots (vSphere), VolumeSnapshot resources exist for each PVC in backed-up namespaces

To restore from a completed backup, see Restore from a backup.

Symptoms: The backup phase remains InProgress indefinitely.

Solution: Check Velero logs for errors:

Terminal window
uds zarf tools kubectl logs -n velero deploy/velero --tail=50

Common causes include storage connectivity issues and volume snapshot timeouts. If volume snapshots are timing out, check the CSI driver logs and snapshot limit configuration.

Problem: Hitting snapshot limits after many backups

Section titled “Problem: Hitting snapshot limits after many backups”

Symptoms: Backups begin failing after running for several days, with errors about reaching the configured snapshot maximum.

Solution: Velero’s garbage collection runs hourly and removes expired backups based on TTL. Ensure your snapshot limit is high enough to accommodate the number of retained backups. For the default 10-day retention with daily backups, a minimum of 10 snapshots per volume is required (12 recommended). For vSphere environments, see Enable volume snapshots (vSphere CSI) for snapshot limit configuration.

These guides and concepts may be useful to explore next: