How KubeStash Backups Kubernetes Resources
KubeStash v2024.12.9
supports taking backup of Kubernetes resource YAMLs. You can backup the YAML definition of the resources of entire cluster, a particular namespace, or only an application. In this guide, we are going to show you how Kubernetes resource backup works in KubeStash.
How Backup Works
The following diagram shows how KubeStash takes backup of the Kubernetes resources. 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
. This secret holds the credentials to access the backend where the backed up data will be stored.Then, she creates a
BackupStorage
custom resource that specifies the backend information, along with theSecret
containing the credentials needed to access the backend.KubeStash operator watches for
BackupStorage
custom resources. When it finds aBackupStorage
object, it initializes theBackupStorage
by uploading themetadata.yaml
file to the target storage.Then, she creates a
BackupConfiguration
custom resource that specifies the target, the Addon info with a specified task, etc. It also provides information about one or more repositories, each indicating a path and aBackupStorage
for storing the backed-up data.KubeStash operator watches for
BackupConfiguration
custom resources.Once the KubeStash operator finds a
BackupConfiguration
object, it createsRepository
with the information specified in the BackupConfiguration.KubeStash operator watches for
Repository
custom resources. When it finds theRepository
object, it InitializesRepository
by uploadingrepository.yaml
file into thespec.sessions[*].repositories[*].directory
path specified inBackupConfiguration
.Then, it creates a
CronJob
for each session with the schedule specified inBackupConfiguration
to trigger backup periodically.On the next scheduled slot, the
CronJob
triggers a backup by creating aBackupSession
custom resource.KubeStash operator watches for
BackupSession
custom resources.When it finds a
BackupSession
object, it creates aSnapshot
custom resource for eachRepository
specified in the respective session of theBackupConfiguration
.Then, it resolves the respective
Addon
andFunction
and prepares a backupJob
definition.Then, it creates the
Job
to backup the desired resource YAMLs.Then, the Job dumps the Kubernetes Resource YAML, and store them temporarily in a directory. Then, it uploads the content of the directory file to the target storage.
After the backup process is completed, the backup
Job
updates thestatus.components[*]
field of theSnapshot
resources.