Try   HackMD

cluster install

https://mobb.ninja/docs/rosa/sts/

oadp rosa sts master doc

https://mobb.ninja/docs/misc/oadp/rosa-sts/

setup vars

export CLUSTER_NAME=wdh07052023d
export ROSA_CLUSTER_ID=$(rosa describe cluster -c ${CLUSTER_NAME} --output json | jq -r .id)
export REGION=$(rosa describe cluster -c ${CLUSTER_NAME} --output json | jq -r .region.id)
export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed  's|^https://||')
export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text`
export CLUSTER_VERSION=`rosa describe cluster -c ${CLUSTER_NAME} -o json | jq -r .version.raw_id | cut -f -2 -d '.'`
export ROLE_NAME="${CLUSTER_NAME}-openshift-oadp-aws-cloud-credentials"
export AWS_PAGER=""
export SCRATCH="/tmp/${CLUSTER_NAME}/oadp"
mkdir -p ${SCRATCH}
echo "Cluster ID: ${ROSA_CLUSTER_ID}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"

prepare aws account ( had to change this 4.9 -> 4.12)

  • OCP 4.13 has not been tested yet. OCP 4.12.22 used for this test
POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='RosaOadp'].{ARN:Arn}" --output text)
if [[ -z "${POLICY_ARN}" ]]; then
cat << EOF > ${SCRATCH}/policy.json
{
"Version": "2012-10-17",
"Statement": [
  {
    "Effect": "Allow",
    "Action": [
      "s3:CreateBucket",
      "s3:DeleteBucket",
      "s3:PutBucketTagging",
      "s3:GetBucketTagging",
      "s3:PutEncryptionConfiguration",
      "s3:GetEncryptionConfiguration",
      "s3:PutLifecycleConfiguration",
      "s3:GetLifecycleConfiguration",
      "s3:GetBucketLocation",
      "s3:ListBucket",
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject",
      "s3:ListBucketMultipartUploads",
      "s3:AbortMultipartUpload",
      "s3:ListMultipartUploadParts",
      "ec2:DescribeSnapshots",
      "ec2:CreateTags",
      "ec2:CreateVolume",
      "ec2:CreateSnapshot",
      "ec2:DeleteSnapshot"
    ],
    "Resource": "*"
  }
 ]}
EOF
POLICY_ARN=$(aws iam create-policy --policy-name "RosaOadp" \
--policy-document file:///${SCRATCH}/policy.json --query Policy.Arn \
--tags Key=rosa_openshift_version,Value=4.12 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-oadp Key=operator_name,Value=openshift-oadp \
--output text)
fi
echo ${POLICY_ARN}

storage classes

oc get storageclass

NAME                PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp2                 kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   93m
gp2-csi (default)   ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   89m
gp3                 ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   93m
gp3-csi             ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   89m

volumeSnapShotClass

oc get volumesnapshotclass csi-aws-vsc -o yaml

apiVersion: snapshot.storage.k8s.io/v1
deletionPolicy: Delete
driver: ebs.csi.aws.com
kind: VolumeSnapshotClass
metadata:
  annotations:
    snapshot.storage.kubernetes.io/is-default-class: "true"
  creationTimestamp: "2023-07-06T02:02:42Z"
  generation: 1
  labels:
    velero.io/csi-volumesnapshot-class: "true"
  name: csi-aws-vsc
  resourceVersion: "77674"
  uid: 43b16ade-0435-4431-bb01-003c4a566fad

OADP install

cat << EOF | oc create -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  generateName: openshift-adp-
  namespace: openshift-adp
  name: oadp
spec:
  targetNamespaces:
  - openshift-adp
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: redhat-oadp-operator
  namespace: openshift-adp
spec:
  channel: stable-1.2
  installPlanApproval: Automatic
  name: redhat-oadp-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF

DPA

[whayutin@thinkdoe mysql-persistent]$ oc get dpa wdh07052023d-dpa -n openshift-adp -oyaml
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
  creationTimestamp: "2023-07-06T02:45:45Z"
  generation: 1
  name: wdh07052023d-dpa
  namespace: openshift-adp
  resourceVersion: "72888"
  uid: 9cea0c77-7718-4c70-b1f7-7e4442a51d74
spec:
  backupLocations:
  - bucket:
      cloudStorageRef:
        name: wdh07052023d-oadp
      credential:
        key: credentials
        name: cloud-credentials
      default: true
  configuration:
    restic:
      enable: false
    velero:
      defaultPlugins:
      - openshift
      - aws
status:
  conditions:
  - lastTransitionTime: "2023-07-06T02:45:46Z"
    message: Reconcile complete
    reason: Complete
    status: "True"
    type: Reconciled

generated BSL

[whayutin@thinkdoe mysql-persistent]$ oc get bsl -n openshift-adp -o yaml
apiVersion: v1
items:
- apiVersion: velero.io/v1
  kind: BackupStorageLocation
  metadata:
    creationTimestamp: "2023-07-06T02:45:45Z"
    generation: 18
    name: wdh07052023d-dpa-1
    namespace: openshift-adp
    ownerReferences:
    - apiVersion: oadp.openshift.io/v1alpha1
      blockOwnerDeletion: true
      controller: true
      kind: DataProtectionApplication
      name: wdh07052023d-dpa
      uid: 9cea0c77-7718-4c70-b1f7-7e4442a51d74
    resourceVersion: "80757"
    uid: 078d25e2-b210-4dad-ae83-77c0742992a7
  spec:
    config:
      enableSharedConfig: "true"
    credential:
      key: credentials
      name: cloud-credentials
    default: true
    objectStorage:
      bucket: wdh07052023d-oadp
    provider: aws
  status:
    lastSyncedTime: "2023-07-06T02:55:26Z"
    lastValidationTime: "2023-07-06T02:56:15Z"
    phase: Available
kind: List
metadata:
  resourceVersion: ""

first backup ( worked )

[whayutin@thinkdoe mysql-persistent]$ cat mysql-backup.yaml 
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: mysql-persistent-sts-1
  namespace: openshift-adp
spec:
  includedNamespaces:
  - mysql-persistent
  storageLocation: wdh07052023d-dpa-1
  ttl: 720h0m0s

backup details

[whayutin@thinkdoe mysql-persistent]$ velero backup describe mysql-persistent-sts-1 --details
Name:         mysql-persistent-sts-1
Namespace:    openshift-adp
Labels:       velero.io/storage-location=wdh07052023d-dpa-1
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.25.10+8c21020
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=25

Phase:  Completed


Namespaces:
  Included:  mysql-persistent
  Excluded:  <none>

Resources:
  Included:        *
  Excluded:        <none>
  Cluster-scoped:  auto

Label selector:  <none>

Storage Location:  wdh07052023d-dpa-1

Velero-Native Snapshot PVs:  auto

TTL:  720h0m0s

CSISnapshotTimeout:    10m0s
ItemOperationTimeout:  1h0m0s

Hooks:  <none>

Backup Format Version:  1.1.0

Started:    2023-07-06 03:00:52 +0000 UTC
Completed:  2023-07-06 03:01:00 +0000 UTC

Expiration:  2023-08-05 03:00:52 +0000 UTC

Resource List:
  apiextensions.k8s.io/v1/CustomResourceDefinition:
    - clusterserviceversions.operators.coreos.com
  apps.openshift.io/v1/DeploymentConfig:
    - mysql-persistent/todolist
  apps/v1/Deployment:
    - mysql-persistent/mysql
  apps/v1/ReplicaSet:
    - mysql-persistent/mysql-7bc95589b4
  authorization.openshift.io/v1/RoleBinding:
    - mysql-persistent/admin-dedicated-admins
    - mysql-persistent/admin-system:serviceaccounts:dedicated-admin
    - mysql-persistent/alert-routing-edit-dedicated-admins
    - mysql-persistent/dedicated-admins-project-dedicated-admins
    - mysql-persistent/dedicated-admins-project-system:serviceaccounts:dedicated-admin
    - mysql-persistent/system:deployers
    - mysql-persistent/system:image-builders
    - mysql-persistent/system:image-pullers
  discovery.k8s.io/v1/EndpointSlice:
    - mysql-persistent/mysql-zct5q
    - mysql-persistent/todolist-hs78d
  operators.coreos.com/v1alpha1/ClusterServiceVersion:
    - mysql-persistent/observability-operator.v0.0.22
    - mysql-persistent/route-monitor-operator.v0.1.502-ae88886
  rbac.authorization.k8s.io/v1/RoleBinding:
    - mysql-persistent/admin-dedicated-admins
    - mysql-persistent/admin-system:serviceaccounts:dedicated-admin
    - mysql-persistent/alert-routing-edit-dedicated-admins
    - mysql-persistent/dedicated-admins-project-dedicated-admins
    - mysql-persistent/dedicated-admins-project-system:serviceaccounts:dedicated-admin
    - mysql-persistent/system:deployers
    - mysql-persistent/system:image-builders
    - mysql-persistent/system:image-pullers
  route.openshift.io/v1/Route:
    - mysql-persistent/todolist-route
  security.openshift.io/v1/SecurityContextConstraints:
    - mysql-persistent-scc
  v1/ConfigMap:
    - mysql-persistent/kube-root-ca.crt
    - mysql-persistent/openshift-service-ca.crt
  v1/Endpoints:
    - mysql-persistent/mysql
    - mysql-persistent/todolist
  v1/Event:
    - mysql-persistent/applog.176f27a452f9dd21
    - mysql-persistent/applog.176f27a51986fab8
    - mysql-persistent/applog.176f27a5198b2b09
    - mysql-persistent/applog.176f27a5dbf6585f
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27a446427a5b
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27a57e4c8bef
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27a607cca262
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27a7ed647dad
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27a7eebdde98
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27aab8b34063
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27aac37bd8d0
    - mysql-persistent/mysql-7bc95589b4-29rwg.176f27aac6835459
    - mysql-persistent/mysql-7bc95589b4.176f27a4461b5ef1
    - mysql-persistent/mysql.176f27a442d56937
    - mysql-persistent/mysql.176f27a4509a098f
    - mysql-persistent/mysql.176f27a48f7ace32
    - mysql-persistent/mysql.176f27a48f7cc03e
    - mysql-persistent/mysql.176f27a558784d50
    - mysql-persistent/todolist-1-deploy.176f27a44f207eef
    - mysql-persistent/todolist-1-deploy.176f27a46fe6ff85
    - mysql-persistent/todolist-1-deploy.176f27a4711a2970
    - mysql-persistent/todolist-1-deploy.176f27a503cc8264
    - mysql-persistent/todolist-1-deploy.176f27a50d61d2ac
    - mysql-persistent/todolist-1-deploy.176f27a50ee7ad24
    - mysql-persistent/todolist-1-nwlp8.176f27a6082149d5
    - mysql-persistent/todolist-1-nwlp8.176f27a68fbf8c02
    - mysql-persistent/todolist-1-nwlp8.176f27a7fa5d7de8
    - mysql-persistent/todolist-1-nwlp8.176f27a7fbb7c804
    - mysql-persistent/todolist-1-nwlp8.176f27a97ad5ca1e
    - mysql-persistent/todolist-1-nwlp8.176f27a983b71650
    - mysql-persistent/todolist-1-nwlp8.176f27a984e55196
    - mysql-persistent/todolist-1-nwlp8.176f27abe8e942ab
    - mysql-persistent/todolist-1-nwlp8.176f27accd7003b3
    - mysql-persistent/todolist-1-nwlp8.176f27acd86a56f3
    - mysql-persistent/todolist-1-nwlp8.176f27acdb1ca62b
    - mysql-persistent/todolist-1.176f27a518e13a5a
    - mysql-persistent/todolist.176f27a44c379959
  v1/Namespace:
    - mysql-persistent
  v1/PersistentVolume:
    - pvc-1e516450-296d-434f-887f-019c15980b98
    - pvc-bf8f4285-534a-4270-816e-43002d70bbb4
  v1/PersistentVolumeClaim:
    - mysql-persistent/applog
    - mysql-persistent/mysql
  v1/Pod:
    - mysql-persistent/mysql-7bc95589b4-29rwg
    - mysql-persistent/todolist-1-deploy
    - mysql-persistent/todolist-1-nwlp8
  v1/ReplicationController:
    - mysql-persistent/todolist-1
  v1/Secret:
    - mysql-persistent/builder-dockercfg-c98xh
    - mysql-persistent/builder-token-sb2vw
    - mysql-persistent/default-dockercfg-c7tdb
    - mysql-persistent/default-token-4g2b9
    - mysql-persistent/deployer-dockercfg-ggqbp
    - mysql-persistent/deployer-token-8nmgd
    - mysql-persistent/mysql-persistent-sa-dockercfg-9mhrw
    - mysql-persistent/mysql-persistent-sa-token-djsvc
  v1/Service:
    - mysql-persistent/mysql
    - mysql-persistent/todolist
  v1/ServiceAccount:
    - mysql-persistent/builder
    - mysql-persistent/default
    - mysql-persistent/deployer
    - mysql-persistent/mysql-persistent-sa

Velero-Native Snapshots: <none included>

backup cr

[whayutin@thinkdoe mysql-persistent]$ oc get backup mysql-persistent-sts-1 -n openshift-adp -o yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  annotations:
    velero.io/source-cluster-k8s-gitversion: v1.25.10+8c21020
    velero.io/source-cluster-k8s-major-version: "1"
    velero.io/source-cluster-k8s-minor-version: "25"
  creationTimestamp: "2023-07-06T03:00:52Z"
  generation: 4
  labels:
    velero.io/storage-location: wdh07052023d-dpa-1
  name: mysql-persistent-sts-1
  namespace: openshift-adp
  resourceVersion: "84612"
  uid: b0dca6a5-9b0f-4b2b-98bf-ec35324ad6fa
spec:
  csiSnapshotTimeout: 10m0s
  defaultVolumesToFsBackup: false
  includedNamespaces:
  - mysql-persistent
  itemOperationTimeout: 1h0m0s
  storageLocation: wdh07052023d-dpa-1
  ttl: 720h0m0s
status:
  completionTimestamp: "2023-07-06T03:01:00Z"
  expiration: "2023-08-05T03:00:52Z"
  formatVersion: 1.1.0
  phase: Completed
  startTimestamp: "2023-07-06T03:00:52Z"
  version: 1

s3 details

[whayutin@thinkdoe mysql-persistent]$ s3cmd ls s3://wdh07052023d-oadp/backups/
                          DIR  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/
[whayutin@thinkdoe mysql-persistent]$ s3cmd ls s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/
2023-07-06 03:01           29  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-csi-volumesnapshotclasses.json.gz
2023-07-06 03:01           29  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-csi-volumesnapshotcontents.json.gz
2023-07-06 03:01           29  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-csi-volumesnapshots.json.gz
2023-07-06 03:01           27  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-itemoperations.json.gz
2023-07-06 03:01        12181  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-logs.gz
2023-07-06 03:01           29  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-podvolumebackups.json.gz
2023-07-06 03:01         1088  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-resource-list.json.gz
2023-07-06 03:01           49  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-results.gz
2023-07-06 03:01           29  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1-volumesnapshots.json.gz
2023-07-06 03:01       216382  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/mysql-persistent-sts-1.tar.gz
2023-07-06 03:01         2547  s3://wdh07052023d-oadp/backups/mysql-persistent-sts-1/velero-backup.json
[whayutin@thinkdoe mysql-persistent]$ 

backup logs

https://termbin.com/30cae

delete

[whayutin@thinkdoe mysql-persistent]$ oc get all -n mysql-persistent
NAME                         READY   STATUS      RESTARTS   AGE
pod/mysql-7bc95589b4-29rwg   1/1     Running     0          19m
pod/todolist-1-deploy        0/1     Completed   0          19m
pod/todolist-1-nwlp8         1/1     Running     0          19m

NAME                               DESIRED   CURRENT   READY   AGE
replicationcontroller/todolist-1   1         1         1       19m

NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/mysql      ClusterIP   172.30.231.7     <none>        3306/TCP   19m
service/todolist   ClusterIP   172.30.236.103   <none>        8000/TCP   19m

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mysql   1/1     1            1           19m

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/mysql-7bc95589b4   1         1         1       19m

NAME                                          REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.apps.openshift.io/todolist   1          1         1         config

NAME                                      HOST/PORT                                                                     PATH   SERVICES   PORT    TERMINATION   WILDCARD
route.route.openshift.io/todolist-route   todolist-route-mysql-persistent.apps.wdh07052023d.zjej.p1.openshiftapps.com   /      todolist   <all>                 None
[whayutin@thinkdoe mysql-persistent]$ oc delete namespace mysql-persistent
namespace "mysql-persistent" deleted
[whayutin@thinkdoe mysql-persistent]$ 
[whayutin@thinkdoe mysql-persistent]$ oc get all -n mysql-persistent
No resources found in mysql-persistent namespace.
[whayutin@thinkdoe mysql-persistent]$ 

restore

apiVersion: velero.io/v1
kind: Restore
metadata:
  name: mysql-persistent
  namespace: openshift-adp
spec:
  backupName: mysql-persistent-sts-1
  restorePVs: true

status

[whayutin@thinkdoe mysql-persistent]$ velero restore get
NAME               BACKUP                   STATUS      STARTED                         COMPLETED                       ERRORS   WARNINGS   CREATED                         SELECTOR
mysql-persistent   mysql-persistent-sts-1   Completed   2023-07-06 03:15:06 +0000 UTC   2023-07-06 03:15:31 +0000 UTC   0        24         2023-07-06 03:15:06 +0000 UTC   <none>

[whayutin@thinkdoe mysql-persistent]$ velero restore describe mysql-persistent --details
Name:         mysql-persistent
Namespace:    openshift-adp
Labels:       <none>
Annotations:  <none>

Phase:                       Completed
Total items to be restored:  52
Items restored:              52

Started:    2023-07-06 03:15:06 +0000 UTC
Completed:  2023-07-06 03:15:31 +0000 UTC

Warnings:
  Velero:     <none>
  Cluster:  could not restore, CustomResourceDefinition "clusterserviceversions.operators.coreos.com" already exists. Warning: the in-cluster version is different than the backed-up version.
            could not restore, SecurityContextConstraints "mysql-persistent-scc" already exists. Warning: the in-cluster version is different than the backed-up version.
  Namespaces:
    mysql-persistent:  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 "observability-operator.v0.0.22" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, ClusterServiceVersion "route-monitor-operator.v0.1.502-ae88886" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, Endpoints "mysql" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, Endpoints "todolist" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "admin-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "admin-system:serviceaccounts:dedicated-admin" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "alert-routing-edit-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "dedicated-admins-project-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "dedicated-admins-project-system:serviceaccounts:dedicated-admin" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:deployers" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:image-builders" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:image-pullers" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "admin-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "admin-system:serviceaccounts:dedicated-admin" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "alert-routing-edit-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "dedicated-admins-project-dedicated-admins" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "dedicated-admins-project-system:serviceaccounts:dedicated-admin" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:deployers" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:image-builders" already exists. Warning: the in-cluster version is different than the backed-up version.
                       could not restore, RoleBinding "system:image-pullers" already exists. Warning: the in-cluster version is different than the backed-up version.

Backup:  mysql-persistent-sts-1

Namespaces:
  Included:  all namespaces found in the backup
  Excluded:  <none>

Resources:
  Included:        *
  Excluded:        nodes, events, events.events.k8s.io, backups.velero.io, restores.velero.io, resticrepositories.velero.io, csinodes.storage.k8s.io, volumeattachments.storage.k8s.io, backuprepositories.velero.io
  Cluster-scoped:  auto

Namespace mappings:  <none>

Label selector:  <none>

Restore PVs:  true

Existing Resource Policy:   <none>
ItemOperationTimeout:       1h0m0s

Preserve Service NodePorts:  auto

Resource List:
  apiextensions.k8s.io/v1/CustomResourceDefinition:
    - clusterserviceversions.operators.coreos.com(failed)
  apps.openshift.io/v1/DeploymentConfig:
    - mysql-persistent/todolist(created)
  apps/v1/Deployment:
    - mysql-persistent/mysql(created)
  apps/v1/ReplicaSet:
    - mysql-persistent/mysql-7bc95589b4(skipped)
  authorization.openshift.io/v1/RoleBinding:
    - mysql-persistent/admin-dedicated-admins(failed)
    - mysql-persistent/admin-system:serviceaccounts:dedicated-admin(failed)
    - mysql-persistent/alert-routing-edit-dedicated-admins(failed)
    - mysql-persistent/dedicated-admins-project-dedicated-admins(failed)
    - mysql-persistent/dedicated-admins-project-system:serviceaccounts:dedicated-admin(failed)
    - mysql-persistent/system:deployers(failed)
    - mysql-persistent/system:image-builders(failed)
    - mysql-persistent/system:image-pullers(failed)
  discovery.k8s.io/v1/EndpointSlice:
    - mysql-persistent/mysql-zct5q(created)
    - mysql-persistent/todolist-hs78d(created)
  operators.coreos.com/v1alpha1/ClusterServiceVersion:
    - mysql-persistent/observability-operator.v0.0.22(failed)
    - mysql-persistent/route-monitor-operator.v0.1.502-ae88886(failed)
  rbac.authorization.k8s.io/v1/RoleBinding:
    - mysql-persistent/admin-dedicated-admins(failed)
    - mysql-persistent/admin-system:serviceaccounts:dedicated-admin(failed)
    - mysql-persistent/alert-routing-edit-dedicated-admins(failed)
    - mysql-persistent/dedicated-admins-project-dedicated-admins(failed)
    - mysql-persistent/dedicated-admins-project-system:serviceaccounts:dedicated-admin(failed)
    - mysql-persistent/system:deployers(failed)
    - mysql-persistent/system:image-builders(failed)
    - mysql-persistent/system:image-pullers(failed)
  route.openshift.io/v1/Route:
    - mysql-persistent/todolist-route(created)
  security.openshift.io/v1/SecurityContextConstraints:
    - mysql-persistent-scc(failed)
  v1/ConfigMap:
    - mysql-persistent/kube-root-ca.crt(failed)
    - mysql-persistent/openshift-service-ca.crt(failed)
  v1/Endpoints:
    - mysql-persistent/mysql(failed)
    - mysql-persistent/todolist(failed)
  v1/Namespace:
    - mysql-persistent(created)
  v1/PersistentVolume:
    - pvc-1e516450-296d-434f-887f-019c15980b98(skipped)
    - pvc-bf8f4285-534a-4270-816e-43002d70bbb4(skipped)
  v1/PersistentVolumeClaim:
    - mysql-persistent/applog(created)
    - mysql-persistent/mysql(created)
  v1/Pod:
    - mysql-persistent/mysql-7bc95589b4-29rwg(skipped)
    - mysql-persistent/todolist-1-nwlp8(skipped)
  v1/ReplicationController:
    - mysql-persistent/todolist-1(skipped)
  v1/Secret:
    - mysql-persistent/builder-dockercfg-c98xh(created)
    - mysql-persistent/builder-token-sb2vw(skipped)
    - mysql-persistent/default-dockercfg-c7tdb(created)
    - mysql-persistent/default-token-4g2b9(skipped)
    - mysql-persistent/deployer-dockercfg-ggqbp(created)
    - mysql-persistent/deployer-token-8nmgd(skipped)
    - mysql-persistent/mysql-persistent-sa-dockercfg-9mhrw(created)
    - mysql-persistent/mysql-persistent-sa-token-djsvc(skipped)
  v1/Service:
    - mysql-persistent/mysql(created)
    - mysql-persistent/todolist(created)
  v1/ServiceAccount:
    - mysql-persistent/builder(skipped)
    - mysql-persistent/default(skipped)
    - mysql-persistent/deployer(skipped)
    - mysql-persistent/mysql-persistent-sa(created)

[whayutin@thinkdoe mysql-persistent]$ oc get all -n mysql-persistent
NAME                         READY   STATUS      RESTARTS   AGE
pod/mysql-7bc95589b4-cf2jw   1/1     Running     0          2m53s
pod/todolist-1-deploy        0/1     Completed   0          2m53s
pod/todolist-1-svq6d         1/1     Running     0          2m52s

NAME                               DESIRED   CURRENT   READY   AGE
replicationcontroller/todolist-1   1         1         1       2m54s

NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/mysql      ClusterIP   172.30.24.187   <none>        3306/TCP   2m54s
service/todolist   ClusterIP   172.30.156.86   <none>        8000/TCP   2m54s

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mysql   1/1     1            1           2m54s

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/mysql-7bc95589b4   1         1         1       2m54s

NAME                                          REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.apps.openshift.io/todolist   1          1         1         config

NAME                                      HOST/PORT                                                                     PATH   SERVICES   PORT    TERMINATION   WILDCARD
route.route.openshift.io/todolist-route   todolist-route-mysql-persistent.apps.wdh07052023d.zjej.p1.openshiftapps.com   /      todolist   <all>                 None
[whayutin@thinkdoe mysql-persistent]$ 

restore logs

https://termbin.com/qko0

VSL backup

vsl

oc get vsl wdh07052023d-dpa-1  -n openshift-adp -o yaml
apiVersion: velero.io/v1
kind: VolumeSnapshotLocation
metadata:
  creationTimestamp: "2023-07-06T17:58:46Z"
  generation: 1
  name: wdh07052023d-dpa-1
  namespace: openshift-adp
  ownerReferences:
  - apiVersion: oadp.openshift.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: DataProtectionApplication
    name: wdh07052023d-dpa
    uid: 9cea0c77-7718-4c70-b1f7-7e4442a51d74
  resourceVersion: "738007"
  uid: 211fc05d-ccd7-4277-9f3b-fd04485b2207
spec:
  config:
    profile: default
    region: us-west-2
  provider: aws
status: {}

setup

oc create -f minimal-3csivol.yaml 
namespace/minimal-3csivol created
deployment.apps/minimal-3csivol created
persistentvolumeclaim/volume1 created
persistentvolumeclaim/volume2 created
persistentvolumeclaim/volume3 created
[whayutin@thinkdoe minimal-8csivol]$ oc get all -n minimal-3csivol
NAME                                   READY   STATUS    RESTARTS   AGE
pod/minimal-3csivol-565559fbcd-dhmrh   1/1     Running   0          14s

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/minimal-3csivol   1/1     1            1           15s

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/minimal-3csivol-565559fbcd   1         1         1       16s
[whayutin@thinkdoe minimal-8csivol]$ oc get pvc -n minimal-3csivol
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
volume1   Bound    pvc-871dd219-c75b-43f1-b969-cfeea0421e5d   1Gi        RWO            gp2            22s
volume2   Bound    pvc-c072e2dc-d096-4ce9-ba94-158589596bea   1Gi        RWO            gp2            21s
volume3   Bound    pvc-936a5b1e-1976-432f-85e5-d2ebc3cd4b11   1Gi        RWO            gp2            21s
[whayutin@thinkdoe minimal-8csivol]$ oc get storageclass
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   16h
gp2-csi         ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   16h
gp3             ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   16h
gp3-csi         ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   16h

backup w/ vsl

cat minimal-3csivol-backup.yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: minimal-3csivol-vsl-1
  namespace: openshift-adp
spec:
  includedNamespaces:
  - minimal-3csivol
  storageLocation: wdh07052023d-dpa-1
  ttl: 720h0m0s