Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Mongo DB backups proper implementation #52

Merged
merged 10 commits into from
Nov 23, 2023
2 changes: 1 addition & 1 deletion drydock_backups/README.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Drydock-backuyps
Drydock-backups
================

This is a tutor plugin used to easily store backups of mysql and mongodb databases through k8s cronjobs. It backups the databases and stores them in a bucket.
Expand Down
38 changes: 21 additions & 17 deletions drydock_backups/patches/drydock-multipurpose-jobs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ spec:
value: '{{ BACKUP_MYSQL_USERNAME }}'
- name: MYSQL_ROOT_PASSWORD
value: '{{ BACKUP_MYSQL_PASSWORD }}'
{% if BACKUP_STORAGE_SERVICE == "aws-s3" %}
- name: BACKUP_STORAGE_SERVICE
value: '{{ BACKUP_STORAGE_SERVICE }}'
{%- if BACKUP_STORAGE_SERVICE == "aws-s3" %}
- name: AWS_ACCESS_KEY_ID
value: '{{ BACKUP_AWS_ACCESS_KEY }}'
- name: AWS_SECRET_ACCESS_KEY
Expand All @@ -42,26 +44,27 @@ spec:
value: '{{ BACKUP_BUCKET_NAME }}'
- name: BUCKET_PATH
value: '{{ BACKUP_BUCKET_PATH }}'
- name: BACKUP_STORAGE_SERVICE
marbonilla marked this conversation as resolved.
Show resolved Hide resolved
value: '{{ BACKUP_STORAGE_SERVICE }}'
{% elif BACKUP_STORAGE_SERVICE == "azure-blob" %}
- name: AZURE_CONTAINER_NAME
value: '{{ BACKUP_AZURE_CONTAINER_NAME }}'
- name: AZURE_CONTAINER_SAS_TOKEN
value: '{{ BACKUP_AZURE_CONTAINER_SAS_TOKEN }}'
- name: AZURE_ACCOUNT_NAME
value: '{{ BACKUP_AZURE_ACCOUNT_NAME }}'
{% endif %}
{% if BACKUP_CUSTOM_STORAGE_ENDPOINT %}
{% endif -%}
{%- if BACKUP_CUSTOM_STORAGE_ENDPOINT %}
- name: BACKUP_CUSTOM_STORAGE_ENDPOINT
value: '{{ BACKUP_CUSTOM_STORAGE_ENDPOINT }}'
{% endif %}
{% if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
{% endif -%}
{%- if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
volumeMounts:
- mountPath: /data/
name: backup-volume
{% endif %}
args:
- mysql
{% if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
command: ['mysql']
{%- if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
volumes:
- name: backup-volume
ephemeral:
Expand Down Expand Up @@ -109,8 +112,10 @@ spec:
- name: MONGODB_PASSWORD
value: '{{ BACKUP_MONGO_PASSWORD }}'
- name: MONGODB_DATABASES
value: '{{ BACKUP_MONGODB_DATABASE }}'
{% if BACKUP_STORAGE_SERVICE == "aws-s3" %}
value: '{{ MONGODB_DATABASE }}'
- name: BACKUP_STORAGE_SERVICE
value: '{{ BACKUP_STORAGE_SERVICE }}'
{%- if BACKUP_STORAGE_SERVICE == "aws-s3" %}
- name: AWS_ACCESS_KEY_ID
value: '{{ BACKUP_AWS_ACCESS_KEY }}'
- name: AWS_SECRET_ACCESS_KEY
Expand All @@ -119,26 +124,25 @@ spec:
value: '{{ BACKUP_BUCKET_NAME }}'
- name: BUCKET_PATH
value: '{{ BACKUP_BUCKET_PATH }}'
{% if BACKUP_CUSTOM_STORAGE_ENDPOINT %}
{%- if BACKUP_CUSTOM_STORAGE_ENDPOINT %}
- name: BACKUP_CUSTOM_STORAGE_ENDPOINT
value: '{{ BACKUP_CUSTOM_STORAGE_ENDPOINT }}'
{% endif %}
{% endif -%}
{% elif BACKUP_STORAGE_SERVICE == "azure-blob" %}
- name: AZURE_CONTAINER_NAME
value: '{{ BACKUP_AZURE_CONTAINER_NAME }}'
- name: AZURE_CONTAINER_SAS_TOKEN
value: '{{ BACKUP_AZURE_CONTAINER_SAS_TOKEN }}'
- name: AZURE_ACCOUNT_NAME
value: '{{ BACKUP_AZURE_ACCOUNT_NAME }}'
{% endif %}
{% if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
{% endif -%}
{%- if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
volumeMounts:
- mountPath: /data/
name: backup-volume
{% endif %}
args:
- mongo
{% if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
command: ['mongo']
{%- if BACKUP_K8S_USE_EPHEMERAL_VOLUMES %}
volumes:
- name: backup-volume
ephemeral:
Expand Down
2 changes: 1 addition & 1 deletion drydock_backups/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"VERSION": __version__,
"IMAGE": "ednxops/shipyard-utils:v1.1.0",
"CRON_SCHEDULE": '0 2 * * *',
"BACKUP_STORAGE_SERVICE": "aws-s3",
"STORAGE_SERVICE": "aws-s3",
marbonilla marked this conversation as resolved.
Show resolved Hide resolved
"AWS_ACCESS_KEY": "",
"AWS_SECRET_KEY": "",
"BUCKET_NAME": "",
Expand Down