Stash supports Backblaze B2 as a backend. This tutorial will show you how to configure Restic and storage Secret for B2 backend.
To configure storage secret for this backend, following secret keys are needed:
| Key | Description |
|---|---|
RESTIC_PASSWORD |
Required. Password used to encrypt snapshots by restic |
B2_ACCOUNT_ID |
Required. Backblaze B2 account id |
B2_ACCOUNT_KEY |
Required. Backblaze B2 account key |
Create storage secret as below,
$ echo -n 'changeit' > RESTIC_PASSWORD
$ echo -n '<your-b2-account-id>' > B2_ACCOUNT_ID
$ echo -n '<your-b2-account-key>' > B2_ACCOUNT_KEY
$ kubectl create secret generic b2-secret \
--from-file=./RESTIC_PASSWORD \
--from-file=./B2_ACCOUNT_ID \
--from-file=./B2_ACCOUNT_KEY
secret "b2-secret" created
Verify that the secret has been created with respective keys,
$ kubectl get secret b2-secret -o yaml
apiVersion: v1
data:
B2_ACCOUNT_ID: PHlvdXItYXp1cmUtc3RvcmFnZS1hY2NvdW50LWtleT4=
B2_ACCOUNT_KEY: PHlvdXItYXp1cmUtc3RvcmFnZS1hY2NvdW50LW5hbWU+
RESTIC_PASSWORD: Y2hhbmdlaXQ=
kind: Secret
metadata:
creationTimestamp: 2017-06-28T13:27:16Z
name: b2-secret
namespace: default
resourceVersion: "6809"
selfLink: /api/v1/namespaces/default/secrets/b2-secret
uid: 80f658d1-5c05-11e7-bb52-08002711f4aa
type: Opaque
Now, you have to configure Restic crd to use Backblaze B2. You have to provide previously created storage secret in spec.backend.storageSecretName field.
Following parameters are available for B2 backend.
| Parameter | Description |
|---|---|
b2.bucket |
Required. Name of B2 bucket |
b2.prefix |
Optional. Path prefix into bucket where repository will be created. |
Below, the YAML for Restic crd configured to use Backblaze B2.
apiVersion: stash.appscode.com/v1alpha1
kind: Restic
metadata:
name: b2-restic
namespace: default
spec:
selector:
matchLabels:
app: b2-restic
fileGroups:
- path: /source/data
retentionPolicyName: 'keep-last-5'
backend:
b2:
bucket: stash-qa
prefix: demo
storageSecretName: b2-secret
schedule: '@every 1m'
volumeMounts:
- mountPath: /source/data
name: source-data
retentionPolicies:
- name: 'keep-last-5'
keepLast: 5
prune: true
Now, create the Restic we have configured above for b2 backend,
$ kubectl apply -f https://github.com/stashed/docs/raw/v2020.07.08-beta.0/docs/examples/backends/b2/b2-restic.yaml
restic "b2-restic" created