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.