Storage Backend Examples
Ready-to-use StorageBackend and Secret manifests for common storage providers. Retour uses rclone for data transfer and supports any S3-compatible backend. Examples below cover providers from the rclone S3 documentation (excluding Russian providers). See YAML Files for downloadable .yaml files.
AWS S3
apiVersion: v1
kind: Secret
metadata:
name: s3-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-access-key"
secret-access-key: "your-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: s3-production
namespace: retour
spec:
type: s3
description: "Production AWS S3 bucket"
s3:
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: s3-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
MinIO (S3-compatible)
apiVersion: v1
kind: Secret
metadata:
name: minio-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: minio
secret-access-key: minio123
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: minio
namespace: retour
spec:
type: s3
s3:
endpoint: https://minio.example.com
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: minio-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
S3 with IRSA (EKS, no secrets)
When using IAM Roles for Service Accounts on EKS, credentials are injected via environment variables.
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: s3-aws-irsa
namespace: retour
spec:
type: s3
s3:
bucket: retour-backups
region: us-east-1
useSSL: true
envAuth: true
Ceph RGW (S3-compatible)
apiVersion: v1
kind: Secret
metadata:
name: ceph-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "ceph-access-key"
secret-access-key: "ceph-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: ceph-rgw
namespace: retour
spec:
type: s3
s3:
endpoint: https://rgw.ceph.example.com
bucket: retour-backups
region: default
useSSL: true
secretRef:
name: ceph-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Azure Blob Storage
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: azure-production
namespace: retour
spec:
type: azureblob
azureblob:
account: retourstorage
container: retour-backups
secretRef:
name: azure-credentials
keys:
accountKey: account-key # or sasToken: sas-url
Under Azure Workload Identity or a managed identity, drop secretRef and set
envAuth: true.
Google Cloud Storage
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: gcs-production
namespace: retour
spec:
type: gcs
gcs:
bucket: retour-backups
secretRef:
name: gcs-credentials
keys:
serviceAccountKey: service-account-json
The secret holds the service-account JSON document itself. Under GKE Workload
Identity, drop secretRef and set envAuth: true.
Encrypted (Crypt over S3)
Encrypt backups at rest using rclone crypt. The underlying backend is S3.
apiVersion: v1
kind: Secret
metadata:
name: crypt-credentials
namespace: retour
type: Opaque
stringData:
password: "encryption-password"
access-key-id: "minio"
secret-access-key: "minio123"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: s3-encrypted
namespace: retour
spec:
type: crypt
crypt:
backend: s3
s3:
endpoint: http://minio.retour.svc.cluster.local:9000
bucket: retour-backups
region: us-east-1
useSSL: false
secretRef:
name: crypt-credentials
keys:
password: password
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Custom Secret Keys
When your Secret uses different key names:
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: s3-custom-keys
namespace: retour
spec:
type: s3
s3:
bucket: retour-backups
region: us-east-1
secretRef:
name: my-credentials
keys:
accessKeyID: aws_access_key_id
secretAccessKey: aws_secret_access_key
Secret in Different Namespace
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: s3-cross-ns
namespace: retour
spec:
type: s3
s3:
bucket: retour-backups
region: us-east-1
secretRef:
name: s3-credentials
namespace: secrets
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Cloudflare R2
S3-compatible object storage with zero egress fees. Replace YOUR_ACCOUNT_ID with your Cloudflare account ID from the R2 dashboard.
apiVersion: v1
kind: Secret
metadata:
name: r2-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-r2-access-key-id"
secret-access-key: "your-r2-secret-access-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: cloudflare-r2
namespace: retour
spec:
type: s3
description: "Cloudflare R2 - zero egress"
s3:
endpoint: https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
bucket: retour-backups
region: auto
useSSL: true
secretRef:
name: r2-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
DigitalOcean Spaces
S3-compatible object storage. Use your Space region (e.g., nyc3, ams3, sgp1) in the endpoint and region.
apiVersion: v1
kind: Secret
metadata:
name: do-spaces-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-spaces-key"
secret-access-key: "your-spaces-secret"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: digitalocean-spaces
namespace: retour
spec:
type: s3
description: "DigitalOcean Spaces"
s3:
endpoint: https://nyc3.digitaloceanspaces.com
bucket: retour-backups
region: nyc3
useSSL: true
secretRef:
name: do-spaces-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Wasabi
S3-compatible low-cost object storage. Use region-specific endpoints for EU or APAC.
apiVersion: v1
kind: Secret
metadata:
name: wasabi-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-wasabi-access-key"
secret-access-key: "your-wasabi-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: wasabi
namespace: retour
spec:
type: s3
description: "Wasabi US East"
s3:
endpoint: https://s3.wasabisys.com
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: wasabi-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Linode Object Storage
S3-compatible object storage. Use your cluster region (e.g., us-east-1, eu-central-1).
apiVersion: v1
kind: Secret
metadata:
name: linode-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-linode-access-key"
secret-access-key: "your-linode-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: linode-object-storage
namespace: retour
spec:
type: s3
description: "Linode Object Storage"
s3:
endpoint: https://us-east-1.linodeobjects.com
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: linode-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Scaleway Object Storage
S3-compatible object storage. Regions: fr-par, nl-ams, pl-waw.
apiVersion: v1
kind: Secret
metadata:
name: scaleway-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-scaleway-access-key"
secret-access-key: "your-scaleway-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: scaleway
namespace: retour
spec:
type: s3
description: "Scaleway Object Storage"
s3:
endpoint: https://s3.fr-par.scw.cloud
bucket: retour-backups
region: fr-par
useSSL: true
secretRef:
name: scaleway-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Hetzner Object Storage
S3-compatible object storage. Create a bucket in the Hetzner Cloud Console and use the provided endpoint (e.g., fsn1.your-objectstorage.com).
apiVersion: v1
kind: Secret
metadata:
name: hetzner-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-hetzner-access-key"
secret-access-key: "your-hetzner-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: hetzner
namespace: retour
spec:
type: s3
description: "Hetzner Object Storage"
s3:
endpoint: https://fsn1.your-objectstorage.com
bucket: retour-backups
region: eu-central-1
useSSL: true
secretRef:
name: hetzner-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Storj (Decentralized S3)
S3-compatible decentralized object storage via S3 gateway. Use the gateway URL from your Storj project.
apiVersion: v1
kind: Secret
metadata:
name: storj-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-storj-access-key"
secret-access-key: "your-storj-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: storj
namespace: retour
spec:
type: s3
description: "Storj decentralized storage"
s3:
endpoint: https://gateway.storjshare.io
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: storj-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
OVHcloud Object Storage
S3-compatible object storage. Use region-specific endpoints (e.g., s3.eu.cloud.ovh.net, s3.ca.cloud.ovh.net).
apiVersion: v1
kind: Secret
metadata:
name: ovh-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-ovh-access-key"
secret-access-key: "your-ovh-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: ovhcloud
namespace: retour
spec:
type: s3
description: "OVHcloud Object Storage"
s3:
endpoint: https://s3.eu.cloud.ovh.net
bucket: retour-backups
region: eu
useSSL: true
secretRef:
name: ovh-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
IONOS Object Storage
S3-compatible object storage for IONOS Cloud.
apiVersion: v1
kind: Secret
metadata:
name: ionos-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-ionos-access-key"
secret-access-key: "your-ionos-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: ionos
namespace: retour
spec:
type: s3
description: "IONOS Object Storage"
s3:
endpoint: https://s3.eu-central-1.ionos.com
bucket: retour-backups
region: eu-central-1
useSSL: true
secretRef:
name: ionos-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
IBM Cloud Object Storage
S3-compatible IBM COS. Use the endpoint for your bucket's region and cross-region/cross-regional setting.
apiVersion: v1
kind: Secret
metadata:
name: ibm-cos-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-ibm-cos-access-key"
secret-access-key: "your-ibm-cos-secret-key"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: ibm-cos
namespace: retour
spec:
type: s3
description: "IBM Cloud Object Storage"
s3:
endpoint: https://s3.us.cloud-object-storage.appdomain.cloud
bucket: retour-backups
region: us
useSSL: true
secretRef:
name: ibm-cos-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key
Dreamhost DreamObjects
S3-compatible object storage. Uses Wasabi-compatible API.
apiVersion: v1
kind: Secret
metadata:
name: dreamhost-credentials
namespace: retour
type: Opaque
stringData:
access-key-id: "your-dreamobjects-key"
secret-access-key: "your-dreamobjects-secret"
---
apiVersion: retour.thebackup.company/v1
kind: StorageBackend
metadata:
name: dreamhost-dreamobjects
namespace: retour
spec:
type: s3
description: "Dreamhost DreamObjects"
s3:
endpoint: https://objects-us-east-1.dream.io
bucket: retour-backups
region: us-east-1
useSSL: true
secretRef:
name: dreamhost-credentials
keys:
accessKeyID: access-key-id
secretAccessKey: secret-access-key