You are looking at the documentation of a prior release. To read the documentation of the latest release, please
visit here.
Stash v2022.06.27
supports backup and restore operation of NATS streams. This guide will give you an overview of how NATS stream backup and restore process works in Stash.
The following diagram shows how Stash takes a backup of NATS streams. Open the image in a new tab to see the enlarged version.
The backup process consists of the following steps:
At first, a user creates a secret with access credentials of the backend where the backed up data will be stored.
Then, she creates a Repository
crd that specifies the backend information along with the secret that holds the credentials to access the backend.
Then, she creates a BackupConfiguration
crd targeting the AppBinding crd of the respective NATS server. The BackupConfiguration
object also specifies the Task
to use to backup the NATS streams.
Stash operator watches for BackupConfiguration
crd.
Once Stash operator finds a BackupConfiguration
crd, it creates a CronJob with the schedule specified in BackupConfiguration
object to trigger backup periodically.
On the next scheduled slot, the CronJob triggers a backup by creating a BackupSession
crd.
Stash operator also watches for BackupSession
crd.
When it finds a BackupSession
object, it resolves the respective Task
and Function
and prepares a Job definition to backup.
Then, it creates the Job to backup the targeted NATS server.
The backup Job reads necessary information to connect with the NATS server from the AppBinding
crd. It also reads backend information and access credentials from Repository
crd and Storage Secret respectively.
Then, the Job dumps the targeted streams and uploads the output to the backend. Stash stores the dumped files temporarily before uploading into the backend. Hence, you should provide a PVC template using spec.interimVolumeTemplate
field of BackupConfiguration
crd to use to store those dumped files temporarily. Make sure that the provided PVC size is capable of storing all (or, specified) the NATS streams.
Finally, when the backup is completed, the Job sends Prometheus metrics to the Pushgateway running inside Stash operator pod. It also updates the BackupSession
and Repository
status to reflect the backup procedure.
The following diagram shows how Stash restores backed up data into a NATS streaming server. 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 RestoreSession
crd targeting the AppBinding
of the desired NATS server where the backed up data will be restored. It also specifies the Repository
crd which holds the backend information and the Task
to use to restore the target.
Stash operator watches for RestoreSession
object.
Once it finds a RestoreSession
object, it resolves the respective Task
and Function
and prepares a Job definition to restore.
Then, it creates the Job to restore the target.
The Job reads necessary information to connect with the NATS server from respective AppBinding
crd. It also reads backend information and access credentials from Repository
crd and Storage Secret respectively.
Then, the job downloads the backed up data from the backend and restore the streams. Stash stores the downloaded files temporarily before inserting into the targeted NATS server. Hence, you should provide a PVC template using spec.interimVolumeTemplate
field of RestoreSession
crd to use to store those restored files temporarily. Make sure that the provided PVC size is capable of storing all the backed up NATS streams.
Finally, when the restore process is completed, the Job sends Prometheus metrics to the Pushgateway and update the RestoreSession
status to reflect restore completion.