deploy-templates/charts/velero/templates/control-plane-restore-control-plane.tpl (52 lines of code) (raw):
{{- define "restore-script" }}
#!/usr/bin/env bash
if [[ -z "$BACKUP_NAME" ]] || [[ "$BACKUP_NAME" == "REPLACE_IT" ]]; then
echo 'Environment variable with backup_name is missing or value has not change.
Please add/change $BACKUP_NAME to pod parameters'
exit 1
fi
backup_name="$BACKUP_NAME"
backup_secret_name="backup-credentials"
backup_ttl="120h"
edp_project="control-plane"
resource_type="customresourcedefinition"
resource_name="gerritmergerequests.v2.edp.epam.com"
echo "Restoring persistent resources from backup from Velero"
velero restore create --from-backup ${backup_name} --include-resources secrets,configmaps,persistentvolumes,persistentvolumeclaims,roles,rolebindings,clusterrolebindings,clusterroles,podsecuritypolicies --wait
echo "Restoring resources from minio"
minio_endpoint=$(oc get secret $backup_secret_name -n $edp_project -o jsonpath='{.data.backup-s3-like-storage-url}' | base64 -d)
minio_backup_bucket_name=$(oc get secret $backup_secret_name -n $edp_project -o jsonpath='{.data.backup-s3-like-storage-location}' | base64 -d)
minio_access_key=$(oc get secret ${backup_secret_name} -n ${edp_project} -o jsonpath='{.data.backup-s3-like-storage-access-key-id}' | base64 -d)
minio_secret_key=$(oc get secret ${backup_secret_name} -n ${edp_project} -o jsonpath='{.data.backup-s3-like-storage-secret-access-key}' | base64 -d)
mkdir -p ~/.config/rclone
echo "
[minio]
type = s3
env_auth = false
access_key_id = ${minio_access_key}
secret_access_key = ${minio_secret_key}
endpoint = ${minio_endpoint}
region = eu-central-1
location_constraint = EU
acl = bucket-owner-full-control" > ~/.config/rclone/rclone.conf
mkdir -p /tmp/openshift_resources
rclone copy minio:/${minio_backup_bucket_name}/openshift-backups/backups/${backup_name}/openshift-resources /tmp/openshift_resources
oc patch ${resource_type} ${resource_name} --type='json' -p='[{"op":"replace","path":"/spec/versions/0/subresources","value":null}]'
for op_object in $(ls /tmp/openshift_resources); do oc apply -f /tmp/openshift_resources/${op_object};done
oc patch ${resource_type} ${resource_name} --type='json' -p='[{"op":"add","path":"/spec/versions/0/subresources","value":{"status":{}}}]'
rm -rf /tmp/openshift_resources
echo "Restore Jenkins"
velero create restore --from-backup ${backup_name} -l app=jenkins --wait
echo "Restore Gerrit"
velero create restore --from-backup ${backup_name} -l app=gerrit --wait
echo "Chill before next step"
sleep 120
echo "Restore Jenkins Operator"
velero create restore --from-backup ${backup_name} -l app.kubernetes.io/name=jenkins-operator --wait
echo "Restore Gerrit Operator"
velero create restore --from-backup ${backup_name} -l app.kubernetes.io/name=gerrit-operator --wait
echo "Chill before next step"
sleep 120
echo "Restore all resources that left"
velero create restore --from-backup ${backup_name} --exclude-resources secrets,configmaps,persistentvolumes,persistentvolumeclaims,roles,rolebindings,clusterrolebindings,clusterroles,podsecuritypolicies --wait
{{- end }}