Configuring Snapshots
This topic provides information about how to configure the Velero Backup resource to enable Replicated KOTS snapshots for an application.
For more information about snapshots, see About Backup and Restore with snapshots.
Configure Snapshots
Add a Velero Backup custom resource (kind: Backup
, apiVersion: velero.io/v1
) to your release and configure it as needed. After configuring the Backup resource, add annotations for each volume that you want to be included in backups.
To configure snapshots for your application:
-
In a new release containing your application files, add a Velero Backup resource (
kind: Backup
andapiVersion: velero.io/v1
):apiVersion: velero.io/v1
kind: Backup
metadata:
name: backup
spec: {} -
Configure the Backup resource to specify the resources that will be included in backups.
For more information about the Velero Backup resource, including limitations, the list of supported fields for snapshots, and an example, see Velero Backup Resource for Snapshots.
-
(Optional) Configure backup and restore hooks. For more information, see Configuring Backup and Restore Hooks for Snapshots.
-
For each volume that requires a backup, add the
backup.velero.io/backup-volumes
annotation. The annotation name isbackup.velero.io/backup-volumes
and the value is a comma separated list of volumes to include in the backup.Why do I need to use the backup annotation?
By default, no volumes are included in the backup. If any pods mount a volume that should be backed up, you must configure the backup with an annotation listing the specific volumes to include in the backup.
Example:
In the following Deployment manifest file,
pvc-volume
is the only volume that is backed up. Thescratch
volume is not included in the backup because it is not listed in annotation on the pod specification.apiVersion: apps/v1
kind: Deployment
metadata:
name: sample
labels:
app: foo
spec:
replicas: 1
selector:
matchLabels:
app: foo
template:
metadata:
labels:
app: foo
annotations:
backup.velero.io/backup-volumes: pvc-volume
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-webserver
volumeMounts:
- name: pvc-volume
mountPath: /volume-1
- name: scratch
mountPath: /volume-2
volumes:
- name: pvc-volume
persistentVolumeClaim:
claimName: test-volume-claim
- name: scratch
emptyDir: {} -
(Optional) Configure manifest exclusions. By default, Velero also includes backups of all of the Kubernetes objects in the namespace.
To exclude any manifest file, add a
velero.io/exclude-from-backup=true
label to the manifest to be excluded. The following example shows the Secret manifest file with thevelero.io/exclude-from-backup
label:apiVersion: apps/v1
kind: Secret
metadata:
name: sample
labels:
velero.io/exclude-from-backup: "true"
stringData:
uri: Secret To Not Include -
If you distribute multiple applications with Replicated, repeat these steps for each application. Each application must have its own Backup resource to be included in a full backup with snapshots.
-
(kURL Only) If your application supports installation with Replicated kURL, Replicated recommends that you include the kURL Velero add-on so that customers do not have to manually install Velero in the kURL cluster. For more information, see Creating a kURL Installer.