backup: cut authentik, immich, velero over to Hetzner #25

Merged
k.renner merged 1 commits from hetzner-cutover-rest into master 2026-06-25 13:52:35 +00:00
6 changed files with 30 additions and 23 deletions
@@ -40,7 +40,7 @@ spec:
name: plugins
credentials:
useSecret: true
existingSecret: cloud-credentials
existingSecret: cloud-credentials-hetzner
# Enable CSI feature so snapshots go through VolumeSnapshotClass
# (defined in rook-ceph-cluster/volumesnapshotclass.yaml) and get
# moved to Garage via the built-in data mover.
@@ -62,14 +62,15 @@ spec:
backupStorageLocation:
- name: default
provider: aws
bucket: k8s-velero
bucket: renner-uno-k8s-velero
default: true
config:
region: garage
s3Url: https://s3.nas-1.renner.uno
s3ForcePathStyle: "true"
region: fsn1
s3Url: https://fsn1.your-objectstorage.com
# Hetzner requires virtual-hosted-style addressing.
s3ForcePathStyle: "false"
# Documented workaround for aws-sdk-go-v2 checksum mismatch
# on self-hosted S3 (Ceph, Backblaze). Harmless on Garage.
# on non-AWS S3 (Ceph/Garage/Hetzner). Required on Hetzner.
checksumAlgorithm: ""
volumeSnapshotLocation: []
# Native (non-CSI) VSL snapshots disabled — CSI is the path.
@@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- secret.sops.yaml
- hetzner-creds.sops.yaml
- snapshot-readonly-storageclass.yaml
- node-agent-config.yaml
- helmrelease.yaml
@@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- barman-creds.sops.yaml
- hetzner-creds.sops.yaml
- objectstore.yaml
- cluster.yaml
- scheduled-backup.yaml
+10 -10
View File
@@ -6,25 +6,25 @@ metadata:
namespace: authentik
spec:
configuration:
destinationPath: s3://k8s-cnpg/ak-pg
endpointURL: https://s3.nas-1.renner.uno
# Offsite Hetzner Object Storage (fsn1) — replaces Garage on nas-1.
# No SSE: Hetzner supports only SSE-C, unusable by barman-cloud
# (plugin #646), so at-rest encryption is unavailable; transit is TLS.
destinationPath: s3://renner-uno-k8s-cnpg/ak-pg
endpointURL: https://fsn1.your-objectstorage.com
s3Credentials:
accessKeyId:
name: barman-cloud-creds
name: hetzner-s3-creds
key: ACCESS_KEY_ID
secretAccessKey:
name: barman-cloud-creds
name: hetzner-s3-creds
key: ACCESS_SECRET_KEY
# Garage requires an explicit region — without it boto3's
# HeadBucket call (used by barman-cloud-check-wal-archive during
# CNPG bootstrap.recovery) returns 400 Bad Request.
# Region is required (REGION=fsn1) — without it boto3's HeadBucket
# (barman-cloud-check-wal-archive during bootstrap.recovery) 400s.
region:
name: barman-cloud-creds
name: hetzner-s3-creds
key: REGION
wal:
compression: gzip
encryption: AES256
data:
compression: gzip
encryption: AES256
retentionPolicy: "30d"
@@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- barman-creds.sops.yaml
- hetzner-creds.sops.yaml
- objectstore.yaml
- cluster.yaml
- scheduled-backup.yaml
+10 -7
View File
@@ -6,22 +6,25 @@ metadata:
namespace: immich
spec:
configuration:
destinationPath: s3://k8s-cnpg/im-pg
endpointURL: https://s3.nas-1.renner.uno
# Offsite Hetzner Object Storage (fsn1) — replaces Garage on nas-1.
# No SSE: Hetzner supports only SSE-C, unusable by barman-cloud
# (plugin #646), so at-rest encryption is unavailable; transit is TLS.
destinationPath: s3://renner-uno-k8s-cnpg/im-pg
endpointURL: https://fsn1.your-objectstorage.com
s3Credentials:
accessKeyId:
name: barman-cloud-creds
name: hetzner-s3-creds
key: ACCESS_KEY_ID
secretAccessKey:
name: barman-cloud-creds
name: hetzner-s3-creds
key: ACCESS_SECRET_KEY
# Region is required (REGION=fsn1) — without it boto3's HeadBucket
# (barman-cloud-check-wal-archive during bootstrap.recovery) 400s.
region:
name: barman-cloud-creds
name: hetzner-s3-creds
key: REGION
wal:
compression: gzip
encryption: AES256
data:
compression: gzip
encryption: AES256
retentionPolicy: "30d"