Configure OpenCloud daily backup to Hetzner Object Storage
- Use existing basicstack-backup bucket with opencloud/ prefix - Configure endpoint: https://hel1.your-objectstorage.com - Add pod affinity to run on same node as OpenCloud (RWO volume requirement) - Schedule: daily at 2:00 AM UTC - Retention: last 7 days - First backup verified successful: 110.611 MiB transferred Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
5e02c64dc4
commit
6cc1df6c66
1 changed files with 18 additions and 6 deletions
|
|
@ -15,6 +15,17 @@ spec:
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
restartPolicy: OnFailure
|
restartPolicy: OnFailure
|
||||||
|
# Run on same node as OpenCloud to allow volume attachment
|
||||||
|
affinity:
|
||||||
|
podAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- opencloud
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
containers:
|
containers:
|
||||||
- name: backup
|
- name: backup
|
||||||
image: rclone/rclone:latest
|
image: rclone/rclone:latest
|
||||||
|
|
@ -27,20 +38,21 @@ spec:
|
||||||
echo "Starting OpenCloud backup at $DATE"
|
echo "Starting OpenCloud backup at $DATE"
|
||||||
|
|
||||||
# Configure rclone for Hetzner S3
|
# Configure rclone for Hetzner S3
|
||||||
|
mkdir -p /root/.config/rclone
|
||||||
cat > /root/.config/rclone/rclone.conf <<EOC
|
cat > /root/.config/rclone/rclone.conf <<EOC
|
||||||
[hetzner-s3]
|
[hetzner-s3]
|
||||||
type = s3
|
type = s3
|
||||||
provider = Other
|
provider = Other
|
||||||
access_key_id = ${S3_ACCESS_KEY}
|
access_key_id = ${S3_ACCESS_KEY}
|
||||||
secret_access_key = ${S3_SECRET_KEY}
|
secret_access_key = ${S3_SECRET_KEY}
|
||||||
endpoint = https://fsn1.your-objectstorage.com
|
endpoint = https://hel1.your-objectstorage.com
|
||||||
region = fsn1
|
region = hel1
|
||||||
acl = private
|
acl = private
|
||||||
EOC
|
EOC
|
||||||
|
|
||||||
# Backup OpenCloud data directory
|
# Backup OpenCloud data directory
|
||||||
echo "Backing up data directory..."
|
echo "Backing up data directory..."
|
||||||
rclone sync /data hetzner-s3:opencloud-backup/data-${DATE} \
|
rclone sync /data hetzner-s3:basicstack-backup/opencloud/data-${DATE} \
|
||||||
--progress \
|
--progress \
|
||||||
--transfers 8 \
|
--transfers 8 \
|
||||||
--checkers 8 \
|
--checkers 8 \
|
||||||
|
|
@ -48,12 +60,12 @@ spec:
|
||||||
|
|
||||||
# Backup configuration
|
# Backup configuration
|
||||||
echo "Backing up configuration..."
|
echo "Backing up configuration..."
|
||||||
rclone copy /config hetzner-s3:opencloud-backup/config-${DATE} \
|
rclone copy /config hetzner-s3:basicstack-backup/opencloud/config-${DATE} \
|
||||||
--progress
|
--progress
|
||||||
|
|
||||||
# Keep only last 7 days of backups
|
# Keep only last 7 days of backups
|
||||||
echo "Cleaning old backups (keeping last 7 days)..."
|
echo "Cleaning old backups (keeping last 7 days)..."
|
||||||
rclone delete hetzner-s3:opencloud-backup \
|
rclone delete hetzner-s3:basicstack-backup/opencloud \
|
||||||
--min-age 7d \
|
--min-age 7d \
|
||||||
--rmdirs
|
--rmdirs
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue