deploy-templates/charts/velero/templates/control-plane-backup-scripts.tpl (42 lines of code) (raw):
{{- define "backup-script" }}
#!/usr/bin/env bash
backup_secret_name="backup-credentials"
backup_ttl=$(({{ .Values.backup.controlPlane.expires_in_days | default 5 }}*24))
edp_project="control-plane"
declare -a openshift_resources=("service" "gerrit" "jenkins" "codebase" "gerritmergerequest")
execution_time=$(date '+%Y-%m-%d-%H-%M-%S')
backup_name="${edp_project}-${execution_time}"
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_username=$(oc get secret ${backup_secret_name} -n ${edp_project} -o jsonpath='{.data.backup-s3-like-storage-access-key-id}' | base64 -d)
minio_password=$(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_username}
secret_access_key = ${minio_password}
endpoint = ${minio_endpoint}
region = eu-central-1
location_constraint = EU
acl = bucket-owner-full-control" > ~/.config/rclone/rclone.conf
echo "Backup $edp_project namespace with velero"
velero backup create ${backup_name} --include-namespaces ${edp_project} --ttl ${backup_ttl}h --wait
echo "Backup Openshift resources_kind to Minio"
mkdir -p /tmp/openshift-resources
for resources_kind in "${openshift_resources[@]}"
do
for name in $(oc get ${resources_kind} -n ${edp_project} --no-headers -o custom-columns="NAME:.metadata.name" | sed 'N;s/\n/ /g')
do
echo ${resources_kind}/${name}
if [[ $resources_kind =~ "gerritmergerequest" ]]; then
oc get ${resources_kind}/${name} -n ${edp_project} -o json | jq 'del(.metadata.resourceVersion,.metadata.uid,.metadata.selfLink,.metadata.managedFields,.metadata.creationTimestamp,.metadata.annotations,.metadata.generation,.metadata.ownerReferences)' > /tmp/openshift-resources/${resources_kind}-${name}.json
else
oc get ${resources_kind}/${name} -n ${edp_project} -o yaml > /tmp/openshift-resources/${resources_kind}-${name}.yaml
fi
done
done
rclone copy /tmp/openshift-resources minio:/${minio_backup_bucket_name}/openshift-backups/backups/${backup_name}/openshift-resources
rm -rf /tmp/openshift-resources
{{- end }}