Skip to content

Commit

Permalink
feat: handle s3 virtual host in backup images
Browse files Browse the repository at this point in the history
  • Loading branch information
this-is-tobi committed Feb 19, 2025
1 parent d5d93be commit 20bd906
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 9 deletions.
10 changes: 5 additions & 5 deletions ci/matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"context": "./docker/pg-backup",
"dockerfile": "./docker/pg-backup/Dockerfile",
"target": "build",
"tag": "1.5.0",
"tag": "1.6.0",
"latest": false
}
},
Expand All @@ -72,7 +72,7 @@
"context": "./docker/pg-backup",
"dockerfile": "./docker/pg-backup/Dockerfile",
"target": "build",
"tag": "2.1.0",
"tag": "2.2.0",
"latest": false
}
},
Expand All @@ -83,7 +83,7 @@
"context": "./docker/pg-backup",
"dockerfile": "./docker/pg-backup/Dockerfile",
"target": "build",
"tag": "3.1.0",
"tag": "3.2.0",
"latest": true
}
},
Expand All @@ -94,7 +94,7 @@
"context": "./docker/s3-backup",
"dockerfile": "./docker/s3-backup/Dockerfile",
"target": "build",
"tag": "1.1.4",
"tag": "1.2.0",
"latest": true
}
},
Expand All @@ -105,7 +105,7 @@
"context": "./docker/vault-backup",
"dockerfile": "./docker/vault-backup/Dockerfile",
"target": "build",
"tag": "1.3.0",
"tag": "1.4.0",
"latest": true
}
}
Expand Down
9 changes: 8 additions & 1 deletion docker/pg-backup/backup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,20 @@ printf "Settings:
> S3_ENDPOINT: ${S3_ENDPOINT}
> S3_BUCKET_NAME: ${S3_BUCKET_NAME}
> S3_BUCKET_PREFIX: ${S3_BUCKET_PREFIX}
> S3_PATH_STYLE: ${S3_PATH_STYLE}
> RETENTION: ${RETENTION}
> MC_EXTRA_ARGS: ${MC_EXTRA_ARGS}\n"


# Add s3 host to minio-cli
printf "\n\nAdd minio alias\n\n"

mc ${MC_EXTRA_ARGS} alias set backup_host "${S3_ENDPOINT}" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
if [ "${S3_PATH_STYLE}" = "false" ]; then
mc ${MC_EXTRA_ARGS} alias set backup_host "$(echo ${S3_ENDPOINT} | sed -E 's|(https?://)([^.]+\.)(.+)|\1\3|')" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
else
mc ${MC_EXTRA_ARGS} alias set backup_host "${S3_ENDPOINT}" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
fi


# Start dump and stream to s3
printf "\n\nStart backup\n\n"
Expand All @@ -27,6 +33,7 @@ PGPASSWORD="${DB_PASS}" pg_dump -Fc -U "${DB_USER}" -h "${DB_HOST}" -p "${DB_POR

printf "\n\nBackup finished\n\n"


# Delete backups older than
if [ ! -z "${RETENTION}" ]; then
printf "\n\nDelete backups older than ${RETENTION} in '${S3_BUCKET_NAME}${S3_BUCKET_PREFIX:+/}${S3_BUCKET_PREFIX}'\n\n"
Expand Down
1 change: 1 addition & 0 deletions docker/pg-backup/cronjob.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ data:
S3_SECRET_KEY: ""
S3_BUCKET_NAME: ""
S3_BUCKET_PREFIX: ""
S3_PATH_STYLE: ""
RETENTION: ""
MC_EXTRA_ARGS: ""

Expand Down
11 changes: 9 additions & 2 deletions docker/s3-backup/backup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,21 @@ printf "Settings:
> TARGET_S3_ENDPOINT: ${TARGET_S3_ENDPOINT}
> TARGET_S3_BUCKET_NAME: ${TARGET_S3_BUCKET_NAME}
> TARGET_S3_BUCKET_PREFIX: ${TARGET_S3_BUCKET_PREFIX}
> S3_PATH_STYLE: ${S3_PATH_STYLE}
> MC_EXTRA_ARGS: ${MC_EXTRA_ARGS}\n"


# Add s3 host to minio-cli
printf "\n\nAdd minio alias\n\n"

mc alias set source_host "${SOURCE_S3_ENDPOINT}" "${SOURCE_S3_ACCESS_KEY}" "${SOURCE_S3_SECRET_KEY}"
mc alias set target_host "${TARGET_S3_ENDPOINT}" "${TARGET_S3_ACCESS_KEY}" "${TARGET_S3_SECRET_KEY}"
if [ "${S3_PATH_STYLE}" = "false" ]; then
mc alias set source_host "$(echo ${SOURCE_S3_ENDPOINT} | sed -E 's|(https?://)([^.]+\.)(.+)|\1\3|')" "${SOURCE_S3_ACCESS_KEY}" "${SOURCE_S3_SECRET_KEY}"
mc alias set target_host "$(echo ${TARGET_S3_ENDPOINT} | sed -E 's|(https?://)([^.]+\.)(.+)|\1\3|')" "${TARGET_S3_ACCESS_KEY}" "${TARGET_S3_SECRET_KEY}"
else
mc alias set source_host "${SOURCE_S3_ENDPOINT}" "${SOURCE_S3_ACCESS_KEY}" "${SOURCE_S3_SECRET_KEY}"
mc alias set target_host "${TARGET_S3_ENDPOINT}" "${TARGET_S3_ACCESS_KEY}" "${TARGET_S3_SECRET_KEY}"
fi


# Start s3 bucket backup
printf "\n\nStart backup\n\n"
Expand Down
1 change: 1 addition & 0 deletions docker/s3-backup/cronjob.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ data:
TARGET_S3_SECRET_KEY: ""
TARGET_S3_BUCKET_NAME: ""
TARGET_S3_BUCKET_PREFIX: ""
S3_PATH_STYLE: ""
MC_EXTRA_ARGS: ""

---
Expand Down
9 changes: 8 additions & 1 deletion docker/vault-backup/backup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,20 @@ printf "Settings:
> S3_ENDPOINT: ${S3_ENDPOINT}
> S3_BUCKET_NAME: ${S3_BUCKET_NAME}
> S3_BUCKET_PREFIX: ${S3_BUCKET_PREFIX}
> S3_PATH_STYLE: ${S3_PATH_STYLE}
> RETENTION: ${RETENTION}
> MC_EXTRA_ARGS: ${MC_EXTRA_ARGS}\n"


# Add s3 host to minio-cli
printf "\n\nAdd minio alias\n\n"

mc ${MC_EXTRA_ARGS} alias set backup_host "${S3_ENDPOINT}" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
if [ "${S3_PATH_STYLE}" = "false" ]; then
mc ${MC_EXTRA_ARGS} alias set backup_host "$(echo ${S3_ENDPOINT} | sed -E 's|(https?://)([^.]+\.)(.+)|\1\3|')" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
else
mc ${MC_EXTRA_ARGS} alias set backup_host "${S3_ENDPOINT}" "${S3_ACCESS_KEY}" "${S3_SECRET_KEY}"
fi


# Start dump and stream to s3
printf "\n\nStart backup\n\n"
Expand All @@ -26,6 +32,7 @@ echo "${VAULT_TOKEN}" | vault login -address=${VAULT_ADDR} -non-interactive ${VA

printf "\n\nBackup finished\n\n"


# Delete backups older than
if [ ! -z "${RETENTION}" ]; then
printf "\n\nDelete backups older than ${RETENTION} in '${S3_BUCKET_NAME}${S3_BUCKET_PREFIX:+/}${S3_BUCKET_PREFIX}'\n\n"
Expand Down
1 change: 1 addition & 0 deletions docker/vault-backup/cronjob.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ data:
S3_SECRET_KEY: ""
S3_BUCKET_NAME: ""
S3_BUCKET_PREFIX: ""
S3_PATH_STYLE: ""
RETENTION: ""
MC_EXTRA_ARGS: ""

Expand Down

0 comments on commit 20bd906

Please sign in to comment.