Installation Manual - 58 OADP restore validation drill

Controlled namespace-scoped OADP restore validation for hub-dc-v7 and spoke-dc-v7.

This chapter records the governed OADP restore validation drill for hub-dc-v7 and spoke-dc-v7. The drill used a temporary namespace and marker ConfigMap on each cluster, then proved backup, deletion, restore, marker verification, object-store visibility, and cleanup.

Governance

FieldValue
IssueOP-GF-VAULTRECOVERY-1 / #389
MilestoneWorkspace Governance
ADRADR 0028: Greenfield Vault Replacement After Custody Loss
Existing controlsADR 0016 and ADR 0025

Preflight

ClusterOpenShiftClusterOperatorsDPABSLVeleroExisting Restores
hub-dc-v74.20.18steadyReconciledAvailable1/1none
spoke-dc-v74.20.18steadyReconciledAvailable1/1none

The normal daily schedules were already restored:

ClusterSchedule
hub-dc-v715 2 * * *
spoke-dc-v745 2 * * *

Drill Pattern

The restore drill used this temporary namespace on both clusters:

codex-oadp-restore-20260517225454

The marker was:

ConfigMap/restore-marker

The marker carried:

KeyExpected value
clusterthe cluster name
stamp20260517225454
purposeoadp-restore-validation

Backup Results

ClusterBackupPhaseItemsWarningsErrors
hub-dc-v7codex-oadp-restore-hub-20260517225454Completed16/16nonenone
spoke-dc-v7codex-oadp-restore-spoke-20260517225454Completed18/18nonenone

Each source namespace was deleted before the Restore was created.

Restore Results

ClusterRestorePhaseEstimated itemsWarningsErrors
hub-dc-v7codex-oadp-restore-hub-20260517225454Completed153none
spoke-dc-v7codex-oadp-restore-spoke-20260517225454Completed174none

Restored marker validation:

ClusterMarker clusterMarker stampMarker purpose
hub-dc-v7hub-dc-v720260517225454oadp-restore-validation
spoke-dc-v7spoke-dc-v720260517225454oadp-restore-validation

Warning Classification

The Restore CRs completed with warnings but no errors. The warning details were extracted from Velero restore result artifacts in MinIO.

Hub warnings:

could not restore, ConfigMap:kube-root-ca.crt already exists. Warning: the in-cluster version is different than the backed-up version
could not restore, ConfigMap:openshift-service-ca.crt already exists. Warning: the in-cluster version is different than the backed-up version
could not restore, ClusterServiceVersion:rhacs-operator.v4.10.2 already exists. Warning: the in-cluster version is different than the backed-up version

Spoke warnings:

could not restore, RoleBinding:system:image-builders already exists. Warning: the in-cluster version is different than the backed-up version
could not restore, ConfigMap:kube-root-ca.crt already exists. Warning: the in-cluster version is different than the backed-up version
could not restore, ConfigMap:openshift-service-ca.crt already exists. Warning: the in-cluster version is different than the backed-up version
could not restore, ClusterServiceVersion:cluster-logging.v6.5.0 already exists. Warning: the in-cluster version is different than the backed-up version

Interpretation: these warnings are auto-created namespace resource collisions during namespace recreation, not marker-data loss.

Object Store Validation

Before cleanup:

PrefixObjects
hub-dc-v7/general/backups/codex-oadp-restore-hub-2026051722545412
hub-dc-v7/general/restores/codex-oadp-restore-hub-202605172254545
spoke-dc-v7/general/backups/codex-oadp-restore-spoke-2026051722545412
spoke-dc-v7/general/restores/codex-oadp-restore-spoke-202605172254545

After cleanup, all exact test prefixes had 0 objects.

Cleanup

Cleanup removed:

  • temporary namespaces;
  • test Backup CRs;
  • test Restore CRs;
  • matching DeleteBackupRequests;
  • exact test MinIO prefixes.

Final live state:

ClusterOpenShiftClusterOperatorsBSLVeleroTest namespaceRestoresDeleteBackupRequests
hub-dc-v74.20.18steadyAvailable1/1absentnonenone
spoke-dc-v74.20.18steadyAvailable1/1absentnonenone

Only the scheduled platform-resource-daily-* Backup CRs remain.

Actions Not Taken

  • No full-cluster restore was attempted.
  • No scheduled backup was deleted.
  • No GitOps desired state was changed.
  • No stable Vault DNS cutover was made.
  • No old Vault mutation was made.
  • No secret values were printed.

Next Action

Treat the OADP-specific Vault R1 migration as validated. Continue the replacement Vault work by choosing the next old-Vault consumer class to migrate or rotate.