- Velero backup with
labelSelector no longer has degraded performance during resource discovery
-
Before this update, a performance regression in the resource discovery phase caused Velero to issue an excessive number of API list calls when a backup combined includedNamespaces: '*', includeClusterResources: true, labelSelector, and a large excludedResources list. As a consequence, backups that completed before in seconds took about 18 minutes to back up as few as 8 resources. With this release, the resource discovery logic is optimized so that unnecessary API list calls are eliminated during the item collection phase. As a result, backup performance is restored to expected levels, completing in seconds.
- CSI snapshot early frequent polling can be configured in the DPA CR
-
Before this update, a Velero change introduced 1-second Container Storage Interface (CSI) snapshot readiness polling for the first 10 seconds of every backup, designed specifically for Microsoft Volume Shadow Copy Service (VSS) workloads on Windows. OADP did not expose this behavior as a configurable option in the DataProtectionApplication (DPA) custom resource (CR). As a consequence, all CSI-enabled backups used the earlier polling behavior regardless of whether VSS compatibility was needed, and you had no way to disable or control this behavior through OADP. This release adds a new enableCSISnapshotEarlyFrequentPolling field under configuration.velero in the DPA CR. By default, this feature is disabled. If your workloads require this frequent polling behavior, you must enable it.
- Controller-manager no longer enters a
CrashLoopBackOff loop on single-node OpenShift clusters without Console CRD
-
Before this update, the controller-manager entered a CrashLoopBackOff loop due to unconditional interaction with a missing ConsoleCLIDownload custom resource definition (CRD) on clusters without Console capability. As a consequence, you experienced pod crashes on single-node OpenShift clusters due to the missing ConsoleCLIDownload CRD. With this release, the OADP Operator skips CLI download setup when the Console CRD is not available. As a result, the controller-manager no longer enters a CrashLoopBackOff loop on single-node OpenShift clusters, improving its stability.
- DPA no longer reports an error when the
podConfig value is empty and nodeAgent affinity is specified
-
Before this update, DataProtectionApplication (DPA) custom resource reported an error due to an empty podConfig with specified nodeAgent affinity. This caused DPA to fail to reconcile. With this release, DPA reports error only when nodeAgent.podConfig.nodeSelector does not match spec.configuration.nodeAgent.LoadAffinityConfig when podConfig is explicitly set.
- Backup phase
Queued and ReadyToStart no longer cause reconcile issues in nonAdminController
-
Before this update, the Queued and ReadyToStart backup phases in nonAdminController caused reconcile issues due to their unsupported status. With this release, the Queued and ReadyToStart no longer cause reconcile issues in nonAdminController.
- CSI
VolumeGroupSnapshot restore no longer fails with Ceph RBD storage class
-
Before this update, restoring a VolumeGroupSnapshot (VGS) backed up from Ceph RBD storage failed with a cannot find the group snapshot for VolumeSnapshot error message. This error occurred because Velero deleted the VolumeGroupSnapshotContent after backup, leaving no matching resource during restore. Also the VolumeSnapshotClassName was deleted from restored VolumeSnapshotContent, preventing the Container Storage Interface (CSI) controller from authenticating to verify snapshots. With this update, Velero preserves the group snapshot handle as an annotation during backup, recreates a stub VolumeGroupSnapshotContent during restores, and restores the correct VolumeSnapshotClass reference. As a result, VGS restores with Ceph RBD complete successfully. Note that VGS is a Technology Preview feature.
- SCC map is synchronized in
ServiceAccount
-
Before this update, the ServiceAccount backup plugin failed with a PartiallyFailed error due to unsynchronized access to the security context constraints (SCC) map. As a consequence, backup failures occurred, affecting data integrity in multiple namespaces. With this release, the SCC map is synchronized in the ServiceAccount plugin, preventing its crash during backup execution.
PrepareQueueLength is present in DPA
-
The PrepareQueueLength field is a configuration setting for the node agent that limits the number of intermediate resources created during backup and restore processes. Before this update, PrepareQueueLength was missing in the LoadConcurrency field in the DataProtectionApplication (DPA) configuration. As a consequence, you encountered an error while configuring PrepareQueueLength, causing the configuration to be removed. With this release, the PrepareQueueLength field is added to LoadConcurrency in the DPA configuration.
BackupRepository maintenance jobs no longer fail when the repository name exceeds 63 characters
-
Before this update, the BackupRepository name was used directly as a Kubernetes label value for repository maintenance jobs. As a consequence, when the BackupRepository name exceeded the 63-character Kubernetes label limit, the maintenance job failed to build, preventing scheduled repository maintenance from running. With this release, the BackupRepository name is hashed before being used as a label value, ensuring it always fits within the 63-character limit. As a result, repository maintenance jobs are created and completed successfully regardless of the BackupRepository name length.
- Restore transitions to
Completed only after PodVolumeRestores completes
-
Before this update, restores were marked as completed prematurely before all PodVolumeRestores. With this release, restores complete only after PodVolumeRestores.
- Node agent pod restart no longer cancels
DataUploads across the entire cluster
-
Before this update, when any node agent pod restarted, Data Mover canceled all DataUploads in Accepted status across all node agent pods, regardless of which pod was handling them. As a consequence, backup operations failed and the backup queue could be blocked for extended periods even when the remaining node agent pods were healthy. With this release, the controller only cancels DataUploads that were accepted by the specific node agent pod that restarted, leaving DataUploads on other nodes unaffected. As a result, backups handled by healthy node agent pods complete successfully and the backup queue is no longer blocked by an unrelated pod restart.
- Improved volume policy performance for clusters with many pods and PVCs
-
Before this update, the volume policy check required scanning every pod in the namespace for every individual persistent volume claim (PVC). As a consequence, backup performance degraded significantly in clusters with large numbers of pods and PVCs. With this release, a PVC-to-Pod cache is added to eliminate redundant pod listings and reduce iteration overhead. As a result, all PV snapshot checks complete within the same second, improving performance for backup operations that were taking excessively long.
- Custom labels and annotations are supported on DPA resources
-
Before this update, the DataProtectionApplication (DPA) custom resource did not support custom labels or annotations, and it was not possible to propagate them to child resources managed by the OADP Operator. As a consequence, it was not possible to exclude these child resources from external reconciliation tools at the DPA level, causing unnecessary reconciliation loops and high CPU usage. With this release, the DPA includes resourceLabels and resourceAnnotations fields that propagate user-defined labels and annotations to all Operator-managed resources. As a result, you can control reconciliation behavior for all managed resources from a single configuration point, reducing unnecessary processing and CPU usage.
- File system backup works on clusters requiring privileged pod security context
-
Before this update, Velero did not provide an option to run file system backup in a privileged security context. As a consequence, file system backups failed with permission errors on OpenShift clusters that require privileged security context to access mount paths. With this release, a new --privileged-fs-backup install and node agent server option was added, allowing file system backup pods to run in privileged mode independently of the existing node agent privileged flag. As a result, file system backups complete successfully on clusters that require privileged pod security context.
- OADP removes OVN-K and Multus CNI annotations during pod restore
-
Before this update, pod network annotations injected by OVN-K and Multus container network interface (CNI) were restored during backup. As a consequence, this caused conflicts with the CNI and required manual intervention. With this release, OADP removes OVN-K and Multus CNI annotations during pod restore.
- Kopia
BackupRepository no longer displays wrong resticIdentifier path
-
Before this update, creating a backup with Kopia generated a BackupRepository resource that contained a resticIdentifier field referencing a Restic path instead of the actual Kopia repository path. As a consequence, this caused user confusion during troubleshooting. With this release, the resticIdentifier field is removed from Kopia-type BackupRepository resources, as it was only relevant for Restic repositories.
- AWS S3 bucket region is auto-detected in
BackupStorageLocation configuration
-
Before this update, the AWS bucket region was missing in the DataProtectionApplication configuration when using S3 BackupStorageLocation (BSL) with snapshotLocations. As a consequence, backups failed due to missing region in AWS S3 bucket. With this release, AWS S3 bucket regions are automatically detected in BSL.
- BSL status message returns an error when an Azure storage bucket does not exist
-
Before this update, when a DataProtectionApplication was configured with a non-existing Azure storage bucket, the BackupStorageLocation (BSL) validation returned a raw HTTP response in the status.message field. As a consequence, the BSL status was unclear. With this release, the BSL status.message field returns a concise, human-readable error such as ContainerNotFound: The specified container does not exist.
- OADP Data Mover restore operations honor
loadAffinity node selection
-
Before this update, the node agent loadAffinity setting was implemented only for backup operations, not for restore operations. As a consequence, when nodeSelector was configured in the DataProtectionApplication specification, the Data Mover pod could be scheduled to a node without a running node agent during a restore. This caused the restore to hang indefinitely. With this release, the loadAffinity configuration is applied to both backup and restore operations. As a result, Data Mover restore pods are correctly scheduled on nodes with running node agents, preventing restore hangs and PartiallyFailed errors.
- Kopia cache no longer persists on worker nodes after backup and restore operations
-
Before this update, during file system restore, the /var partition on worker nodes increased because the cache was not deleted after backup completion. Only a node agent restart cleared the cache. As a consequence, unintended disk space consumption occurred on worker nodes after file system restore. With this release, the cache for Kopia operation stored in ephemeral-storage is cleared after restore operation.
- Data Mover restore no longer fails when
nodeSelector is used
-
Before this update, when a DataProtectionApplication (DPA) custom resource was created with the nodeSelector field set in the nodeAgent parameter, nodeSelector was not properly handled for the Data Mover restore action. As a consequence, Data Mover restore actions partially failed because they were scheduled on a wrong node. With this release, nodeSelector is correctly handled for Data Mover restore actions. As a result, restore operations complete successfully when the field is configured in the DPA.
- Velero CLI automatically uses the CA certificate from
BackupStorageLocation
-
Before this update, running Velero containers did not store the certificate authority (CA) certificate as a file. As a consequence, you had to manually pass the --cacert flag with a path to a CA certificate file on every Velero command-line interface (CLI) command, or download the Velero binary and CA certificate bundle to your workstation. This made the experience inefficient in environments with custom or self-signed certificates.
With this release, the Velero CLI automatically reads the CA certificate from the BackupStorageLocation (BSL) configuration, and gracefully falls back to the caCert of the BSL if a --cacert flag is provided but points to an invalid path. As a result, you can run Velero CLI commands through the oc exec alias without manually specifying --cacert, significantly simplifying day-to-day backup and restore operations in environments that use custom CA certificates.
- Velero no longer restores unnecessary restore-wait init containers
-
Before this update, Velero did not check whether the restore-wait init container was necessary during a restore operation. As a consequence, when a namespace was backed up with CSI or native Data Mover and then was restored, Velero incorrectly injected the restore-wait init container into the application pod spec. With this release, Velero skips restoring the restore-wait init container when it is not required by the backup method used.
- The
defaultVolumesToFSBackup flag matches defaultVolumesToFsBackup
-
Before this update, the dpa.spec.configuration.velero.defaultVolumesToFSBackup flag used different casing than the backup.spec.defaultVolumesToFsBackup flag. As a consequence, the inconsistency between the two flags could cause confusion when configuring pod volume file system backup settings. With this release, the two flags are identical.
- OADP CLI automatically inherits the CA certificate from
BackupStorageLocation
-
Before this update, the OADP command-line interface (CLI) did not inherit the certificate authority (CA) certificate from the BackupStorageLocation (BSL) when retrieving backup logs. As a consequence, you were unable to retrieve backup logs by using oc oadp backup logs, even though the backup itself completed successfully and the DataProtectionApplication (DPA) custom resource was correctly configured with a valid CA certificate. With this release, the OADP CLI automatically uses the CA certificate from the BSL when retrieving backup logs. As a result, backup log retrieval works correctly when a valid CA certificate is present in the BSL.
- PVC no longer retains stale CSI snapshot labels after a file system restore
-
Before this update, during a Container Storage Interface (CSI) backup, Velero added a velero.io/volume-snapshot-name label to the persistent volume claim (PVC), and this label was not removed when next file system backup and restore was performed. With this release, PVCs no longer contain leftover velero.io/volume-snapshot-name labels after a successful file system restore.
PodVolumeBackup and PodVolumeRestore CRs are marked as failed when the parent backup or restore fails
-
Before this update, when the backup or restore CR failed, the associated PodVolumeBackup and PodVolumeRestore custom resources (CRs) continued their data transfer. As a consequence, this led to an inconsistent state where individual volume CRs reported Completed while the parent operation was Failed. With this release, PodVolumeBackup and PodVolumeRestore CRs are properly canceled and marked as Failed when the parent backup or restore CR fails. As a result, volume-level CR statuses are consistent with the parent operation status.