Stash Addons

Stash 0.9.0+ supports extending its functionality through addons. This guide will give you an overview of what is an addon, how addons work and a list of Stash addons.

What is an Addon

Stash 0.9.0+ uses two different models for backup/restore based on target types. One of them is sidecar model where Stash injects a sidecar/init-container into the targeted workload for backup/restore. Another is job model where backup or restore is done via an external job.

The job model is further divided into two categories. In the first category, the targeted resource is well known to Stash (example, a PVC). Hence, the Stash operator itself can create the required job to backup/restore the target. In the second category, Stash follows Function-Task model where the targeted resource is not known to Stash. In this case, the user creates some Function which resembles a step of backup/restore process and a Task which specifies the order of execution of these steps. Stash uses these Function and Task to generate the required job definition to backup/restore the target.

The Function-Task model enables Stash to backup/restore the resources that the operator itself is not aware of. Users can extend Stash by creating respective Function, Task, and docker images for respective Function to backup their desired resources.

A Stash addon is a collection of Functions and a Task to backup & restore a specific resource.

How Addons Work

When a user installs a Stash addon, it creates some Function and Task definitions. Then, when he creates a BackupConfiguration or RestoreSession object to backup/restore his desired resource, Stash operator resolves the Function and Task to create a Job to backup/restore the target. The following diagram shows how addons works in Stash:

  Stash Addon Overview
Fig: Stash Addon Overview

A Function is fundamentally a container specification and Task specifies the execution order of the containers. Stash operator injects all the containers except last one resolved from the Function specified in Task as init-container into the job in the same order they appear in the Task. Then, it injects the last container as the main container of the Job.

Available Addons

The following addons are available for Stash:

AddonsUsageAvailable Versions
stash-elasticsearchStash Elasticsearch plugin5.6.4-v33, 6.2.4-v33, 6.3.0-v33, 6.4.0-v33, 6.5.3-v33, 6.8.0-v33, 7.14.0-v19, 7.2.0-v33, 7.3.2-v33, 8.2.0-v16
stash-mariadbStash Mariadb plugin10.5.8-v27
stash-mongodbStash Mongodb plugin3.4.17-v34, 3.4.22-v34, 3.6.13-v34, 3.6.8-v34, 4.0.11-v34, 4.0.3-v34, 4.0.5-v34, 4.1.13-v34, 4.1.4-v34, 4.1.7-v34, 4.2.3-v34, 4.4.6-v25, 5.0.15-v7, 5.0.3-v22, 6.0.5-v10
stash-mysqlStash Mysql plugin5.7.25-v34, 8.0.14-v33, 8.0.21-v27, 8.0.3-v33
stash-percona-xtradbStash Percona-Xtradb plugin5.7-v28
stash-postgresStash Postgres plugin10.14-v32, 11.9-v32, 12.4-v32, 13.1-v29, 14.0-v21, 15.1-v13, 16.1-v2, 9.6.19-v32, 17.2