Skip to content

Commit

Permalink
Updated backup script, added backup PVC for postgreSQL
Browse files Browse the repository at this point in the history
  • Loading branch information
Vazquez,Brais (IT EDP) committed Mar 25, 2024
1 parent 099c685 commit 08bd231
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 9 deletions.
32 changes: 23 additions & 9 deletions sonarqube/backup.sh
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
#!/bin/bash
set -eu

NAMESPACE="ods"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ODS_CORE_DIR=${SCRIPT_DIR%/*}
ODS_CONFIGURATION_DIR="${ODS_CORE_DIR}/../ods-configuration"

NAMESPACE=""
BACKUP_DIR="."
PROGRESS=false
LOCAL=false

function usage {
printf "usage: %s [options]\n" "$0"
printf "usage: %s [options]\n" "$0"
printf "\t-h|--help\tPrints the usage\n"
printf "\t-v|--verbose\tVerbose output\n"
printf "\t-b|--backup-dir\tLocation of backup directory\n"
printf "\t-n|--namespace\tNamespace (defaults to '%s')\n" "${NAMESPACE}"
printf "\t-n|--namespace\tNamespace, optional param as it will be read from ods-core.env if available\n"
printf "\t-p|--progress\tShow progress during transfer (defaults to '%s')\n" "${PROGRESS}"
printf "\t-l|--local-copy\tCopy the database dump in local (defaults to '%s')\n" "${LOCAL}"
}

while [[ "$#" -gt 0 ]]; do case $1 in
Expand All @@ -28,9 +34,16 @@ while [[ "$#" -gt 0 ]]; do case $1 in
-p=*|--progress=*) PROGRESS="${1#*=}";;
-p|--progress) PROGRESS="$2"; shift;;

-l=*|--local-copy=*) LOCAL="${1#*=}";;
-l|--local-copy) LOCAL="$2"; shift;;

*) echo "Unknown parameter passed: $1"; usage; exit 1;;
esac; shift; done

if [ -f "${ODS_CONFIGURATION_DIR}/ods-core.env" ] && [ -z "${NAMESPACE}" ]; then
NAMESPACE=$(../scripts/get-config-param.sh ODS_NAMESPACE)
fi

if ! oc whoami > /dev/null; then
echo "You need to log into OpenShift first"
exit 1
Expand All @@ -39,10 +52,11 @@ fi
# Dump database
podWithPrefix=$(oc get pods -n "${NAMESPACE}" --selector name=sonarqube-postgresql --no-headers -o name)
pod=${podWithPrefix#"pod/"}
oc rsh -n "${NAMESPACE}" "pod/${pod}" bash -c "mkdir -p /var/lib/pgsql/backup && pg_dump sonarqube > /var/lib/pgsql/backup/sonarqube.sql"
# Copy export
oc -n "${NAMESPACE}" rsync --progress=${PROGRESS} "${pod}:/var/lib/pgsql/backup/sonarqube.sql" "${BACKUP_DIR}"
# Delete export in pod
oc rsh -n "${NAMESPACE}" "pod/${pod}" bash -c "rm /var/lib/pgsql/backup/sonarqube.sql"
oc rsh -n "${NAMESPACE}" "pod/${pod}" bash -c "pg_dump sonarqube > /var/lib/pgsql/backups/sonarqube.sql"
echo "Database 'sonarqube' dumped and stored in /var/lib/pgsql/backups/sonarqube.sql."

echo "Database 'sonarqube' backed up to ${destinationFile}."
if [ "${LOCAL}" == true ]; then
# Copy export locally
oc -n "${NAMESPACE}" rsync --progress="${PROGRESS}" "${pod}:/var/lib/pgsql/backups/sonarqube.sql" "${BACKUP_DIR}"
echo "Database 'sonarqube' backed up to ${BACKUP_DIR}."
fi
5 changes: 5 additions & 0 deletions sonarqube/chart/templates/dc-postgresql.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ spec:
volumeMounts:
- mountPath: /var/lib/pgsql/data
name: {{ .Values.global.appName }}-postgresql-data
- mountPath: /var/lib/pgsql/backups
name: {{ .Values.global.appName }}-postgresql-backup
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
Expand All @@ -91,6 +93,9 @@ spec:
- name: {{ .Values.global.appName }}-postgresql-data
persistentVolumeClaim:
claimName: {{ .Values.global.appName }}-postgresql
- name: {{ .Values.global.appName }}-postgresql-backup
persistentVolumeClaim:
claimName: {{ .Values.global.appName }}-postgresql-backup
test: false
triggers:
- type: ConfigChange
18 changes: 18 additions & 0 deletions sonarqube/chart/templates/pvc-postgresql-backup.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
volume.beta.kubernetes.io/storage-provisioner: {{ .Values.global.storageProvisioner }}
finalizers:
- kubernetes.io/pvc-protection
labels:
app: {{ .Values.global.appName }}
name: {{ .Values.global.appName }}-postgresql-backup
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: {{ .Values.global.storageClassData }}
volumeMode: Filesystem

0 comments on commit 08bd231

Please sign in to comment.