How to Restore a Backup
It’s possible to tell the operator to perform restores either to a PVC or an S3 bucket.
Restore from S3 to S3 bucket
For this you can create a restore object:
apiVersion: backup.appuio.ch/v1alpha1
kind: Restore
metadata:
name: restore-test
spec:
repoPasswordSecretRef:
name: backup-repo
key: password
s3:
endpoint: http://localhost:9000
bucket: restore
accessKeyIDSecretRef:
name: backup-credentials
key: username
secretAccessKeySecretRef:
name: backup-credentials
key: password
backend:
s3:
endpoint: http://localhost:9000
bucket: k8up
accessKeyIDSecretRef:
name: backup-credentials
key: username
secretAccessKeySecretRef:
name: backup-credentials
key: password
yaml
This will trigger a one time job to restore the latest snapshot to S3.
Restore from S3 to PVC
First, create a new PVC to extract the data to:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: restore-test-mfw
# Optional:
#namespace: snapshot-test
annotations:
# set to "true" to include in future backups
k8up.syn.tools/backup: "false"
# Optional:
#labels:
# app: multi-file-writer
spec:
# Optional:
# storageClassName: <YOUR_STORAGE_CLASS_NAME>
accessModes:
- ReadWriteMany
resources:
requests:
# Must be sufficient to hold your data
storage: 250Mi
yaml
Then create a restore job
apiVersion: backup.appuio.ch/v1alpha1
kind: Restore
metadata:
name: restore-test-mfw
namespace: snapshot-test
spec:
repoPasswordSecretRef:
name: backup-repo
key: password
restoreMethod:
folder:
claimName: mfw-restore
backend:
s3:
endpoint: http://minio-service:9000
bucket: k8up
accessKeyIDSecretRef:
name: backup-credentials
key: username
secretAccessKeySecretRef:
name: backup-credentials
key: password
yaml
Manual restore via Restic
To manually restore you’ll need:
-
Linux machine with restic
-
Fuse (Optional for mounting)
Let’s take this backend
example from a schedule:
backend:
s3:
endpoint: http://localhost:9000
bucket: k8up
accessKeyIDSecretRef:
name: backup-credentials
key: username
secretAccessKeySecretRef:
name: backup-credentials
key: password
yaml
You’ll need the credentials from the secrets and the encryption key. With that information you can configure restic:
export RESTIC_REPOSITORY=s3:http://localhost/baas
export RESTIC_PASSWORD=p@assword
export AWS_ACCESS_KEY_ID=8U0UDNYPNUDTUS1LIAF3
export AWS_SECRET_ACCESS_KEY=ip3cdrkXcHmH4S7if7erKPNoxDn27V0vrg6CHHem
bash
Now you can use Restic to browse and restore snapshots:
# List snapshots
restic snapshots
repository dec6d66c opened successfully, password is correct
ID Date Host Tags Directory
----------------------------------------------------------------------
5ed64a2d 2018-06-08 09:18:34 macbook-vshn.local /data
----------------------------------------------------------------------
1 snapshots
restic restore 5ed64a2d --target /restore
# Or mount the repository for convenient restores
restic mount ~/Desktop/mount
repository dec6d66c opened successfully, password is correct
Now serving the repository at /Users/simonbeck/Desktop/mount/
Dont forget to umount after quitting!
ll ~/Desktop/mount
total 0
dr-xr-xr-x 1 simonbeck staff 0 Jun 8 09:21 .
drwx------+ 6 simonbeck staff 192 Jun 8 09:15 ..
dr-xr-xr-x 1 simonbeck staff 0 Jun 8 09:21 hosts
dr-xr-xr-x 1 simonbeck staff 0 Jun 8 09:21 ids
dr-xr-xr-x 1 simonbeck staff 0 Jun 8 09:21 snapshots
dr-xr-xr-x 1 simonbeck staff 0 Jun 8 09:21 tags
bash
Here you can browse all backups by host, ids, snapshots or tags.