Skip to content

Commit

Permalink
Update README.md to reflect Stash's capability properly (#1060)
Browse files Browse the repository at this point in the history
* Update README.md

Signed-off-by: hossainemruz <[email protected]>

* Update stash intro

Co-authored-by: Tamal Saha <[email protected]>
  • Loading branch information
hossainemruz and tamalsaha authored Mar 2, 2020
1 parent 53513cf commit 3fcbe1b
Showing 1 changed file with 42 additions and 23 deletions.
65 changes: 42 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,65 @@
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fstashed%2Fstash.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fstashed%2Fstash?ref=badge_shield)

# Stash
Stash by AppsCode is a Kubernetes operator for [restic](https://restic.net). If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. `restic` is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around `restic` to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:
- Deployment
- DaemonSet
- ReplicaSet
- ReplicationController
- StatefulSet

[Stash](https://stash.run) by AppsCode is a cloud native data backup and recovery solution for Kubernetes workloads. If you are running production workloads in Kubernetes, you might want to take backup of your disks, databases etc. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. Stash is a Kubernetes operator that uses [restic](https://github.com/restic/restic) or Kubernetes CSI Driver VolumeSnapshotter functionality to address these issues. Using Stash, you can backup Kubernetes volumes mounted in workloads, stand-alone volumes and databases. User may even extend Stash via [addons](https://stash.run/docs/latest/guides/latest/addons/overview/) for any custom workload.

## Features
- Fast, secure, efficient backup of Kubernetes [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) (even in `ReadWriteOnce` mode).
- Automates configuration of `restic` for periodic backup.
- Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.
- Restore backup easily.
- Periodically check integrity of backed up data.
- Take backup in offline mode.
- Support workload initializer for faster backup.
- Prometheus ready metrics for backup process.

| Features | Availability | Scope |
| ------------------------------------------------------------------------------- | :----------: | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Backup & Restore Workload Data | &#10003; | Deployment, DaemonSet, StatefulSet, ReplicaSet, ReplicationController, OpenShift DeploymentConfig |
| Backup & Restore Stand-alone Volume (PVC) | &#10003; | PersistentVolumeClaim, PersistentVolume |
| Backup & Restore databases | &#10003; | PostgreSQL, MySQL, MongoDB, Elasticsearch |
| [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) | &#10003; | CSI Driver must support VolumeSnapshot and Kubernetes Alpha features must be enabled |
| Schedule Backup | &#10003; | Schedule through [cron expression](https://en.wikipedia.org/wiki/Cron) |
| Instant Backup | &#10003; | Use CLI or create BackupSession manually |
| Auto Backup | &#10003; | Using a Template and annotations |
| Batch Backup | &#10003; | Backup multiple co-related targets under a single configuration |
| Pause Scheduled Backup | &#10003; | |
| Support Multiple Storage Provider | &#10003; | AWS S3, Minio, Rook, GCS, Azure, OpenStack Swift, Backblaze B2, Rest Server, any PV/PVC |
| Encryption | &#10003; | AES-256 in counter mode (CTR) (for Restic driver) |
| Deduplication (send only diff) | &#10003; | Uses [Content Defined Chunking (CDC)](https://restic.net/blog/2015-09-12/restic-foundation1-cdc) (for Restic driver) |
| Cleanup old snapshots automatically | &#10003; | Cleanup according to different [retention policies](https://restic.readthedocs.io/en/stable/060_forget.html#removing-snapshots-according-to-a-policy) |
| Prometheus Metrics for Backup & Restore Process | &#10003; | Official Prometheus Server, CoreOS Prometheus Operator |
| Prometheus Metrics for Stash Operator | &#10003; | Official Prometheus Server, CoreOS Prometheus Operator |
| Support RBAC enabled cluster | &#10003; | |
| Support PSP enabled cluster | &#10003; | |
| CLI | &#10003; | `kubectl` plugin (for Kubernetes 1.12+) |
| Extensibility | &#10003; | Extend using `Function` and `Task` |
| Customizability | &#10003; | Customize backup / restore process using `Function` and `Task` |
| Hooks | &#10003; | Execute `httpGet`, `httpPost`, `tcpSocket` and `exec` hooks before and after of backup or restore process. |
| Send Notification to Webhook | &#10003; | Use hooks to send notification to webhooks(i.e. Slack channel) |

## Supported Versions

Please pick a version of Stash that matches your Kubernetes installation.

| Stash Version | Docs | Kubernetes Version |
|-------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|
| [v0.9.0-rc.6](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.6) (uses CRD) | [User Guide](https://stash.run/docs/v0.9.0-rc.6) | 1.11.x+ |
| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://stash.run/docs/0.8.3) | 1.9.x+ |
| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://stash.run/docs/0.7.0) | 1.8.x |
| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://stash.run/docs/0.6.4) | 1.7.x |
| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |
| Stash Version | Docs | Kubernetes Version |
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------ |
| [v0.9.0-rc.6](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.6) (uses CRD) | [User Guide](https://stash.run/docs/v0.9.0-rc.6) | 1.11.x+ |
| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://stash.run/docs/0.8.3) | 1.9.x+ |
| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://stash.run/docs/0.7.0) | 1.8.x |
| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://stash.run/docs/0.6.4) | 1.7.x |
| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |

## Installation

To install Stash, please follow the guide [here](https://stash.run/docs/latest/setup/install).

## Using Stash

Want to learn how to use Stash? Please start [here](https://stash.run/docs/latest/).

## Stash API Clients

You can use Stash api clients to programmatically access its objects. Here are the supported clients:

- Go: [https://github.com/stashed/stash](/client/clientset/versioned)
- Java: https://github.com/stashed/java

## Contribution guidelines

Want to help improve Stash? Please start [here](https://stash.run/docs/latest/welcome/contributing).

---
Expand All @@ -58,13 +75,15 @@ Want to help improve Stash? Please start [here](https://stash.run/docs/latest/we
---

## Acknowledgement
- Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.

- Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.

## Support

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#stash`. To sign up, use our [Slack inviter](https://slack.appscode.com/).

If you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/stash/issues/new).


## License

[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fstashed%2Fstash.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fstashed%2Fstash?ref=badge_large)

0 comments on commit 3fcbe1b

Please sign in to comment.