Skip to content

Instantly share code, notes, and snippets.

@cbluth
Created January 14, 2019 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cbluth/42fa1bd11dc6ce69bd664f72b008676c to your computer and use it in GitHub Desktop.
Save cbluth/42fa1bd11dc6ce69bd664f72b008676c to your computer and use it in GitHub Desktop.
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: arangodb-storage-db-backup
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: ubuntu:18.04
command:
- /opt/start.sh
envFrom:
- configMapRef:
name: arangodb-storage-db-backup
volumeMounts:
- mountPath: /opt/start.sh
name: start
subPath: start.sh
restartPolicy: OnFailure
volumes:
- configMap:
defaultMode: 420
items:
- key: start.sh
mode: 484
path: start.sh
name: arangodb-storage-db-backup
name: start
---
apiVersion: v1
data:
ENVIRONMENT: DEVELOPMENT
TARGET_DATABASE: mydatabase
ARANGO_ROOT_PASSWORD: my-root-password
BOTO_FILE: "Qk9UTyBGSUxFIENPTlRFTlRTLiBTZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2JvdG8tZ3N1dGlsCg=="
start.sh: |
#!/usr/bin/env bash
echo "Installing supporting tools..."
apt-get update &> /dev/null
apt-get install -yq wget zip curl gnupg file python-minimal &> /dev/null &&\
echo 'Install OK' || ( echo 'Install FAIL' ; exit 1)
echo "Installing gsutil..."
wget -q -O - 'https://storage.googleapis.com/pub/gsutil.tar.gz' |\
tar xfz - -C /usr/local/lib/ &&\
ln -s /usr/local/lib/gsutil/gsutil /usr/local/bin/ &&\
gsutil help &> /dev/null &&\
echo 'Install OK' || ( echo 'Install FAIL' ; exit 1)
echo "Installing boto file..."
echo "${BOTO_FILE}" | base64 -d > /root/.boto &&\
echo 'Install OK' || ( echo 'Install FAIL' ; exit 1)
echo "Installing arangodb tools..."
wget -qO /opt/arangodb3-client.deb 'https://download.arangodb.com/arangodb34/Community/Linux/arangodb3-client_3.4.1-1_amd64.deb' &&\
apt-get install -y /opt/arangodb3-client.deb &> /dev/null &&\
echo 'Install OK' || ( echo 'Install FAIL' ; exit 1)
rm -f /opt/arangodb3-client.deb
# make backup dir
mkdir -p /backup
pushd /backup
# dump database
arangodump \
--output-directory "${TARGET_DATABASE}" \
--overwrite true \
--server.database "${TARGET_DATABASE}" \
--server.endpoint "tcp://arango.database.svc:8529" \
--server.username "root" \
--server.password "${ARANGO_ROOT_PASSWORD}" &&\
echo 'arangodump OK' || ( echo 'arangodump FAIL' ; exit 1)
# backup with gsutil
gsutil -o GSUtil:parallel_composite_upload_threshold=150M -m rsync -r -d "./${TARGET_DATABASE}" "gs://my-bucket-backups/${ENVIRONMENT}/${TARGET_DATABASE}" &&\
echo 'gsutil OK' || ( echo 'gsutil FAIL' ; exit 1)
# remove directory
popd
pushd /
rm -rf /backup
kind: ConfigMap
metadata:
name: arangodb-storage-db-backup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment