You are looking at the documentation of a prior release. To read the documentation of the latest release, please
visit here.
How VolumeSnapshot works in Stash
This guide will show you how Stash takes snapshot of PersistentVolumeClaims and restore them from snapshot using Kubernetes VolumeSnapshot API.
Before You Begin
At first, you need to have a Kubernetes cluster and ensure that a CSI driver that implements snapshots is deployed on your cluster. You can find a list of CSI drivers that supports snapshots here. In this guide we are going to use GCE Persistent Disk CSI Driver.
You need to enable the Kubernetes
VolumeSnapshotDataSourcealpha feature via Kubernetes feature gates--feature-gates=VolumeSnapshotDataSource=true
Install
Stashin your cluster following the steps here.You should be familiar with the following Stash concepts:
You should be also familiar with the following Kubernetes concepts:
How Backup Process Works?
The following diagram shows how Stash creates VolumeSnapshot via Kubernetes native API. Open the image in a new tab to see the enlarged version.
The VolumeSnapshot process consists of the following steps:
At first, a user creates a
BackupConfigurationcrd which specifies the targeted workload or targeted PVC.Stash operator watches for
BackupConfigurationcrd.When it finds a
BackupConfigurationcrd, it creates aCronJobto take a periodic backup of the target volumes.The
CronJobtriggers backup on each scheduled time slot by creating aBackupSessioncrd.Stash operator watches for
BackupSessioncrd.When it finds a
BackupSessioncrd, it creates a volume snapshotterJobto take snapshot of the targeted volumes.The volume snapshotter
JobcreatesVolumeSnapshotcrd for each PVC of the target and waits for the CSI driver to complete snapshotting. TheseVolumeSnasphotcrd names follow the following format:
<PVC name>-<BackupSession creation timestamp in Unix epoch seconds>
CSI
external-snapshottercontroller watches forVolumeSnapshot.When it finds a
VolumeSnapshotobject, it backupsVolumeSnapshotin the respective cloud storage.Once the snapsotting is completed, Stash Operator updates the
status.phasefield of theBackupSessioncrd.
How Restore Process Works?
The following diagram shows how Stash restores PersistentVolumeClaims from snapshot using Kubernetes VolumeSnapshot API. Open the image in a new tab to see the enlarged version.
The restore process consists of the following steps:
At first, a user creates a
RestoreSessioncrd which specifies thevolumeClaimTemplates.VolumeClaimTemplateshold the information aboutVolumeSnapshot.Stash operator watches for
RestoreSessioncrd.When it finds a
RestoreSessioncrd, it creates a RestoreJobto restore PVC from the snapshot.The restore
Jobcreates PVC withspec.dataSourcefield set to the respective VolumeSnapshot name.CSI
external-snapshottercontroller watches for PVC.When it finds a new PVC with
spec.dataSourcefield set, it reads the information about theVolumeSnapshot.The controller downloads the respective data from the cloud and populate the PVC with it.
Once restore process is completed, the Stash operator updates the
status.phasefield of theBackupSessioncrd.






