From fab5940b12f3da392c4ec90cdea9a34fd6011da2 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Thu, 12 Sep 2024 22:50:45 +0200 Subject: [PATCH] Fix backups for MariaDB and Postgres Signed-off-by: Andrei Kvapil --- Makefile | 2 ++ packages/apps/mysql/Chart.yaml | 2 +- packages/apps/mysql/Makefile | 16 ++++++++++++++++ packages/apps/mysql/images/mariadb-backup.tag | 1 + .../apps/mysql/images/mariadb-backup/Dockerfile | 2 ++ .../apps/mysql/templates/backup-cronjob.yaml | 2 +- packages/apps/postgres/Chart.yaml | 2 +- packages/apps/postgres/Makefile | 16 ++++++++++++++++ .../apps/postgres/images/postgres-backup.tag | 1 + .../postgres/images/postgres-backup/Dockerfile | 2 ++ .../apps/postgres/templates/backup-cronjob.yaml | 2 +- 11 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 packages/apps/mysql/images/mariadb-backup.tag create mode 100644 packages/apps/mysql/images/mariadb-backup/Dockerfile create mode 100644 packages/apps/postgres/images/postgres-backup.tag create mode 100644 packages/apps/postgres/images/postgres-backup/Dockerfile diff --git a/Makefile b/Makefile index 11d73542..49fc1319 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ build: make -C packages/apps/http-cache image + make -C packages/apps/postgres image + make -C packages/apps/mysql image make -C packages/apps/clickhouse image make -C packages/apps/kubernetes image make -C packages/system/cilium image diff --git a/packages/apps/mysql/Chart.yaml b/packages/apps/mysql/Chart.yaml index 4b9ae3c7..ea3d9bc7 100644 --- a/packages/apps/mysql/Chart.yaml +++ b/packages/apps/mysql/Chart.yaml @@ -16,7 +16,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.5.0 +version: 0.5.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/packages/apps/mysql/Makefile b/packages/apps/mysql/Makefile index 264adfcf..d4f4db6c 100644 --- a/packages/apps/mysql/Makefile +++ b/packages/apps/mysql/Makefile @@ -1,4 +1,20 @@ +MARIADB_BACKUP_TAG = $(shell awk '$$1 == "version:" {print $$2}' Chart.yaml) + +include ../../../scripts/common-envs.mk include ../../../scripts/package.mk generate: readme-generator -v values.yaml -s values.schema.json -r README.md + +image: + docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/mariadb-backup \ + --provenance false \ + --tag $(REGISTRY)/mariadb-backup:$(call settag,$(MARIADB_BACKUP_TAG)) \ + --cache-from type=registry,ref=$(REGISTRY)/mariadb-backup:latest \ + --cache-to type=inline \ + --metadata-file images/mariadb-backup.json \ + --push=$(PUSH) \ + --load=$(LOAD) + echo "$(REGISTRY)/mariadb-backup:$(call settag,$(MARIADB_BACKUP_TAG))@$$(yq e '."containerimage.digest"' images/mariadb-backup.json -o json -r)" \ + > images/mariadb-backup.tag + rm -f images/mariadb-backup.json diff --git a/packages/apps/mysql/images/mariadb-backup.tag b/packages/apps/mysql/images/mariadb-backup.tag new file mode 100644 index 00000000..8ebeb09b --- /dev/null +++ b/packages/apps/mysql/images/mariadb-backup.tag @@ -0,0 +1 @@ +ghcr.io/aenix-io/cozystack/mariadb-backup:latest@sha256:793edb25a29cbc00781e40af883815ca36937e736e2b0d202ea9c9619fb6ca11 diff --git a/packages/apps/mysql/images/mariadb-backup/Dockerfile b/packages/apps/mysql/images/mariadb-backup/Dockerfile new file mode 100644 index 00000000..ed56ae5f --- /dev/null +++ b/packages/apps/mysql/images/mariadb-backup/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine:3.20 +RUN apk add --no-cache mariadb-client uuidgen restic diff --git a/packages/apps/mysql/templates/backup-cronjob.yaml b/packages/apps/mysql/templates/backup-cronjob.yaml index 26810f74..97b52208 100644 --- a/packages/apps/mysql/templates/backup-cronjob.yaml +++ b/packages/apps/mysql/templates/backup-cronjob.yaml @@ -27,7 +27,7 @@ spec: restartPolicy: Never containers: - name: mysqldump - image: "{{ index $image "image.name" }}@{{ index $image "containerimage.digest" }}" + image: "{{ $.Files.Get "images/mariadb-backup.tag" | trim }}" command: - /bin/sh - /scripts/backup.sh diff --git a/packages/apps/postgres/Chart.yaml b/packages/apps/postgres/Chart.yaml index 8ada1201..e573113a 100644 --- a/packages/apps/postgres/Chart.yaml +++ b/packages/apps/postgres/Chart.yaml @@ -16,7 +16,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.6.0 +version: 0.6.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/packages/apps/postgres/Makefile b/packages/apps/postgres/Makefile index 264adfcf..8f7e5a49 100644 --- a/packages/apps/postgres/Makefile +++ b/packages/apps/postgres/Makefile @@ -1,4 +1,20 @@ +POSTGRES_BACKUP_TAG = $(shell awk '$$1 == "version:" {print $$2}' Chart.yaml) + +include ../../../scripts/common-envs.mk include ../../../scripts/package.mk generate: readme-generator -v values.yaml -s values.schema.json -r README.md + +image: + docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/postgres-backup \ + --provenance false \ + --tag $(REGISTRY)/postgres-backup:$(call settag,$(POSTGRES_BACKUP_TAG)) \ + --cache-from type=registry,ref=$(REGISTRY)/postgres-backup:latest \ + --cache-to type=inline \ + --metadata-file images/postgres-backup.json \ + --push=$(PUSH) \ + --load=$(LOAD) + echo "$(REGISTRY)/postgres-backup:$(call settag,$(POSTGRES_BACKUP_TAG))@$$(yq e '."containerimage.digest"' images/postgres-backup.json -o json -r)" \ + > images/postgres-backup.tag + rm -f images/postgres-backup.json diff --git a/packages/apps/postgres/images/postgres-backup.tag b/packages/apps/postgres/images/postgres-backup.tag new file mode 100644 index 00000000..42d7a22e --- /dev/null +++ b/packages/apps/postgres/images/postgres-backup.tag @@ -0,0 +1 @@ +ghcr.io/aenix-io/cozystack/postgres-backup:latest@sha256:d2015c6dba92293bda652d055e97d1be80e8414c2dc78037c12812d1a2e2cba1 diff --git a/packages/apps/postgres/images/postgres-backup/Dockerfile b/packages/apps/postgres/images/postgres-backup/Dockerfile new file mode 100644 index 00000000..aa38c323 --- /dev/null +++ b/packages/apps/postgres/images/postgres-backup/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine:3.20 +RUN apk add --no-cache postgresql16-client uuidgen restic diff --git a/packages/apps/postgres/templates/backup-cronjob.yaml b/packages/apps/postgres/templates/backup-cronjob.yaml index 45afb152..3f95cd16 100644 --- a/packages/apps/postgres/templates/backup-cronjob.yaml +++ b/packages/apps/postgres/templates/backup-cronjob.yaml @@ -27,7 +27,7 @@ spec: restartPolicy: Never containers: - name: mysqldump - image: "{{ index $image "image.name" }}@{{ index $image "containerimage.digest" }}" + image: "{{ $.Files.Get "images/postgres-backup.tag" | trim }}" command: - /bin/sh - /scripts/backup.sh