feat(backup): add backup script and refactor cron job to use it
This commit is contained in:
@@ -29,6 +29,16 @@ resource "kubernetes_config_map" "rclone_config" {
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_config_map" "backup_script" {
|
||||
metadata {
|
||||
name = "${var.app_name}-backup-script"
|
||||
namespace = var.namespace
|
||||
}
|
||||
data = {
|
||||
"backup.sh" = file("${path.module}/resources/backup.sh")
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_cron_job_v1" "backup_job" {
|
||||
metadata {
|
||||
name = "${var.app_name}-backup"
|
||||
@@ -112,16 +122,10 @@ resource "kubernetes_cron_job_v1" "backup_job" {
|
||||
value = var.bucket_name
|
||||
}
|
||||
command = ["/bin/sh", "-c"]
|
||||
args = [join(";", [
|
||||
"apk update",
|
||||
"apk add gettext",
|
||||
"envsubst</etc/rclone.conf.tmpl>/etc/rclone.conf",
|
||||
"tar -zcvpf /backup/${var.app_name}-files-`date +\"%Y%m%d\"`.tar.gz /files",
|
||||
"find /backup -type f -name '${var.app_name}-files-*.tar.gz' -mtime +${var.retention_days} | xargs --no-run-if-empty rm",
|
||||
"/usr/local/bin/rclone --config=/etc/rclone.conf sync --progress /backup scaleway:$BUCKET_NAME/${var.app_name}-backup"
|
||||
])]
|
||||
args = ["/tmp/scripts/backup.sh"]
|
||||
security_context {
|
||||
allow_privilege_escalation = false
|
||||
read_only_root_filesystem = true
|
||||
}
|
||||
volume_mount {
|
||||
name = "backup-storage"
|
||||
@@ -138,6 +142,15 @@ resource "kubernetes_cron_job_v1" "backup_job" {
|
||||
sub_path = "rclone.conf"
|
||||
read_only = true
|
||||
}
|
||||
volume_mount {
|
||||
name = "backup-script"
|
||||
mount_path = "/tmp/scripts"
|
||||
read_only = true
|
||||
}
|
||||
volume_mount {
|
||||
name = "tmp"
|
||||
mount_path = "/tmp"
|
||||
}
|
||||
}
|
||||
volume {
|
||||
name = "backup-storage"
|
||||
@@ -157,6 +170,17 @@ resource "kubernetes_cron_job_v1" "backup_job" {
|
||||
name = kubernetes_config_map.rclone_config.metadata[0].name
|
||||
}
|
||||
}
|
||||
volume {
|
||||
name = "backup-script"
|
||||
config_map {
|
||||
name = kubernetes_config_map.backup_script.metadata[0].name
|
||||
default_mode = "0755"
|
||||
}
|
||||
}
|
||||
volume {
|
||||
name = "tmp"
|
||||
empty_dir {}
|
||||
}
|
||||
restart_policy = "Never"
|
||||
termination_grace_period_seconds = 30
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user