diff --git a/content/docs/v2024.8.27/CHANGELOG-0.1.md b/content/docs/v2024.8.27/CHANGELOG-0.1.md new file mode 100644 index 0000000000..861e3581d7 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.1.md @@ -0,0 +1,171 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.1 + name: Changelog-0.1 + parent: welcome + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.1/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.1/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.1.0](https://github.com/appscode/stash/tree/0.1.0) (2017-06-27) +**Implemented enhancements:** + +- Allow modifying the cron expression [\#21](https://github.com/appscode/stash/issues/21) +- Use RBAC objects for operator. [\#64](https://github.com/appscode/stash/issues/64) +- Support Azure as backup destination [\#35](https://github.com/appscode/stash/issues/35) +- Support GCS as backup destination [\#34](https://github.com/appscode/stash/issues/34) +- Change Destination definition to point to S3 [\#33](https://github.com/appscode/stash/issues/33) +- TODOs [\#22](https://github.com/appscode/stash/issues/22) +- Send performance stats to Prometheus [\#9](https://github.com/appscode/stash/issues/9) + +**Fixed bugs:** + +- Bubble up errors to the caller. [\#24](https://github.com/appscode/stash/issues/24) +- Fix registration of wrong group [\#39](https://github.com/appscode/stash/pull/39) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Add /snapshots endpoint in operator [\#81](https://github.com/appscode/stash/issues/81) +- CLI: restic-ctl [\#8](https://github.com/appscode/stash/issues/8) +- Sanitize metric labels [\#68](https://github.com/appscode/stash/issues/68) +- Mount an empty directory to write local files. [\#61](https://github.com/appscode/stash/issues/61) +- Support BackBlaze as backup destination [\#60](https://github.com/appscode/stash/issues/60) +- Support Swift as backup destination [\#59](https://github.com/appscode/stash/issues/59) +- Add e2e tests using Ginkgo [\#57](https://github.com/appscode/stash/issues/57) +- Review analytics [\#55](https://github.com/appscode/stash/issues/55) +- Support updated Kube object versions [\#42](https://github.com/appscode/stash/issues/42) +- Update restic to 0.6.x [\#32](https://github.com/appscode/stash/issues/32) +- Add analytics [\#31](https://github.com/appscode/stash/issues/31) +- HTTP api to exposing restic repository data [\#7](https://github.com/appscode/stash/issues/7) +- Provision new restic repositories [\#6](https://github.com/appscode/stash/issues/6) +- Proposal: Imeplement Restic TPR Resource for Kubernetes [\#1](https://github.com/appscode/stash/issues/1) + +**Merged pull requests:** + +- Add e2e tests for major cloud providers [\#84](https://github.com/appscode/stash/pull/84) ([tamalsaha](https://github.com/tamalsaha)) +- Add /snapshots endpoint in operator [\#82](https://github.com/appscode/stash/pull/82) ([tamalsaha](https://github.com/tamalsaha)) +- Handle update conflicts [\#78](https://github.com/appscode/stash/pull/78) ([tamalsaha](https://github.com/tamalsaha)) +- Test e2e tests [\#76](https://github.com/appscode/stash/pull/76) ([tamalsaha](https://github.com/tamalsaha)) +- Delete old testify tests [\#75](https://github.com/appscode/stash/pull/75) ([tamalsaha](https://github.com/tamalsaha)) +- Create a cli wrapper for restic [\#74](https://github.com/appscode/stash/pull/74) ([tamalsaha](https://github.com/tamalsaha)) +- Revise EnsureXXXSidecar methods [\#73](https://github.com/appscode/stash/pull/73) ([tamalsaha](https://github.com/tamalsaha)) +- Add ginkgo based e2e tests [\#70](https://github.com/appscode/stash/pull/70) ([tamalsaha](https://github.com/tamalsaha)) +- Push metrics to Prometheus push gateway [\#67](https://github.com/appscode/stash/pull/67) ([tamalsaha](https://github.com/tamalsaha)) +- Use go-sh to execute restic commands [\#63](https://github.com/appscode/stash/pull/63) ([tamalsaha](https://github.com/tamalsaha)) +- Add scratchDir & prefixHostname flags [\#62](https://github.com/appscode/stash/pull/62) ([tamalsaha](https://github.com/tamalsaha)) +- Support remote backends [\#58](https://github.com/appscode/stash/pull/58) ([tamalsaha](https://github.com/tamalsaha)) +- Organize backup code. [\#54](https://github.com/appscode/stash/pull/54) ([tamalsaha](https://github.com/tamalsaha)) +- Synchronize scheduler reconfiguration [\#53](https://github.com/appscode/stash/pull/53) ([tamalsaha](https://github.com/tamalsaha)) +- Fix unit tests [\#51](https://github.com/appscode/stash/pull/51) ([tamalsaha](https://github.com/tamalsaha)) +- Check docker image tag before starting operator [\#45](https://github.com/appscode/stash/pull/45) ([tamalsaha](https://github.com/tamalsaha)) +- Expose metrics from operator [\#44](https://github.com/appscode/stash/pull/44) ([tamalsaha](https://github.com/tamalsaha)) +- Add analytics [\#41](https://github.com/appscode/stash/pull/41) ([aerokite](https://github.com/aerokite)) +- Use V1alpha1SchemeGroupVersion for Restik [\#40](https://github.com/appscode/stash/pull/40) ([aerokite](https://github.com/aerokite)) +- Fix status update [\#38](https://github.com/appscode/stash/pull/38) ([saumanbiswas](https://github.com/saumanbiswas)) +- Upgrade restic version to 0.6.1 [\#37](https://github.com/appscode/stash/pull/37) ([tamalsaha](https://github.com/tamalsaha)) +- Change api version to v1alpha1 [\#30](https://github.com/appscode/stash/pull/30) ([tamalsaha](https://github.com/tamalsaha)) +- Rename function and structure [\#29](https://github.com/appscode/stash/pull/29) ([saumanbiswas](https://github.com/saumanbiswas)) +- Rename Backup into Restik [\#28](https://github.com/appscode/stash/pull/28) ([saumanbiswas](https://github.com/saumanbiswas)) +- Move api from k8s-addons [\#27](https://github.com/appscode/stash/pull/27) ([saumanbiswas](https://github.com/saumanbiswas)) +- Bubble up errors to caller [\#26](https://github.com/appscode/stash/pull/26) ([saumanbiswas](https://github.com/saumanbiswas)) +- Allow modifying the cron expression [\#25](https://github.com/appscode/stash/pull/25) ([saumanbiswas](https://github.com/saumanbiswas)) +- Use unversioned time [\#23](https://github.com/appscode/stash/pull/23) ([tamalsaha](https://github.com/tamalsaha)) +- Restik chart [\#20](https://github.com/appscode/stash/pull/20) ([saumanbiswas](https://github.com/saumanbiswas)) +- example added [\#19](https://github.com/appscode/stash/pull/19) ([saumanbiswas](https://github.com/saumanbiswas)) +- Move restik api and client to k8s-addons [\#18](https://github.com/appscode/stash/pull/18) ([saumanbiswas](https://github.com/saumanbiswas)) +- Error print fix [\#17](https://github.com/appscode/stash/pull/17) ([saumanbiswas](https://github.com/saumanbiswas)) +- Check group registration [\#16](https://github.com/appscode/stash/pull/16) ([saumanbiswas](https://github.com/saumanbiswas)) +- Restik docs [\#15](https://github.com/appscode/stash/pull/15) ([saumanbiswas](https://github.com/saumanbiswas)) +- Restik unit test, e2e test [\#14](https://github.com/appscode/stash/pull/14) ([saumanbiswas](https://github.com/saumanbiswas)) +- Restik create delete initial implementation [\#12](https://github.com/appscode/stash/pull/12) ([saumanbiswas](https://github.com/saumanbiswas)) +- Build docker image [\#11](https://github.com/appscode/stash/pull/11) ([tamalsaha](https://github.com/tamalsaha)) +- Clone skeleton from appscode/k3pc [\#10](https://github.com/appscode/stash/pull/10) ([tamalsaha](https://github.com/tamalsaha)) +- Fix e2e tests [\#83](https://github.com/appscode/stash/pull/83) ([tamalsaha](https://github.com/tamalsaha)) +- Mount scratchDir with operator [\#80](https://github.com/appscode/stash/pull/80) ([tamalsaha](https://github.com/tamalsaha)) +- Fix scheduler [\#79](https://github.com/appscode/stash/pull/79) ([tamalsaha](https://github.com/tamalsaha)) +- Create RBAC objects for operator [\#69](https://github.com/appscode/stash/pull/69) ([tamalsaha](https://github.com/tamalsaha)) +- Mount labels using Downward api [\#66](https://github.com/appscode/stash/pull/66) ([tamalsaha](https://github.com/tamalsaha)) +- Vendor go-sh dependency [\#65](https://github.com/appscode/stash/pull/65) ([tamalsaha](https://github.com/tamalsaha)) +- Update e2e tests [\#52](https://github.com/appscode/stash/pull/52) ([tamalsaha](https://github.com/tamalsaha)) +- Run watchers for preferred api group version kind [\#50](https://github.com/appscode/stash/pull/50) ([tamalsaha](https://github.com/tamalsaha)) +- Build restic from source by default [\#49](https://github.com/appscode/stash/pull/49) ([tamalsaha](https://github.com/tamalsaha)) +- Watch individual object types. [\#48](https://github.com/appscode/stash/pull/48) ([tamalsaha](https://github.com/tamalsaha)) +- Various code cleanup [\#47](https://github.com/appscode/stash/pull/47) ([tamalsaha](https://github.com/tamalsaha)) +- Reorganize cron controller [\#46](https://github.com/appscode/stash/pull/46) ([tamalsaha](https://github.com/tamalsaha)) +- Run push gateway as a side-car for restik operator. [\#43](https://github.com/appscode/stash/pull/43) ([tamalsaha](https://github.com/tamalsaha)) +- Use client-go [\#36](https://github.com/appscode/stash/pull/36) ([tamalsaha](https://github.com/tamalsaha)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.2.md b/content/docs/v2024.8.27/CHANGELOG-0.2.md new file mode 100644 index 0000000000..92d6988dd9 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.2.md @@ -0,0 +1,128 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.2 + name: Changelog-0.2 + parent: welcome + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.2/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.2/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.2.0](https://github.com/appscode/stash/tree/0.2.0) (2017-06-30) +[Full Changelog](https://github.com/appscode/stash/compare/0.1.0...0.2.0) + +**Implemented enhancements:** + +- Don't run forget if missing retention policy [\#100](https://github.com/appscode/stash/issues/100) +- Move prefix-hostname to Restic tpr [\#96](https://github.com/appscode/stash/issues/96) + +**Fixed bugs:** + +- Mount source volume [\#112](https://github.com/appscode/stash/issues/112) +- Test restic URL is generated correctly when optional parts are missing [\#98](https://github.com/appscode/stash/issues/98) +- Handle updated restic selectors [\#95](https://github.com/appscode/stash/issues/95) + +**Closed issues:** + +- Link to sidecar flags. [\#109](https://github.com/appscode/stash/issues/109) +- Link back to tutorial from docs pages. [\#107](https://github.com/appscode/stash/issues/107) +- Document various implications of Restic update [\#103](https://github.com/appscode/stash/issues/103) +- Add retention policy options [\#101](https://github.com/appscode/stash/issues/101) +- Handle updating local backend. [\#105](https://github.com/appscode/stash/issues/105) +- Set Temp dir ENV var [\#102](https://github.com/appscode/stash/issues/102) +- Cleanup documentation [\#86](https://github.com/appscode/stash/issues/86) +- Updating Local backend does not update pods. [\#71](https://github.com/appscode/stash/issues/71) + +**Merged pull requests:** + +- Part 6 - Update docs [\#121](https://github.com/appscode/stash/pull/121) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs [\#120](https://github.com/appscode/stash/pull/120) ([tamalsaha](https://github.com/tamalsaha)) +- Various bug fixes [\#118](https://github.com/appscode/stash/pull/118) ([tamalsaha](https://github.com/tamalsaha)) +- Update pitch [\#117](https://github.com/appscode/stash/pull/117) ([tamalsaha](https://github.com/tamalsaha)) +- Part 5 - User Guide [\#114](https://github.com/appscode/stash/pull/114) ([tamalsaha](https://github.com/tamalsaha)) +- Part 4- User Guide [\#113](https://github.com/appscode/stash/pull/113) ([tamalsaha](https://github.com/tamalsaha)) +- Part 3 - User Guide [\#110](https://github.com/appscode/stash/pull/110) ([tamalsaha](https://github.com/tamalsaha)) +- Update user guide [\#94](https://github.com/appscode/stash/pull/94) ([tamalsaha](https://github.com/tamalsaha)) +- Create separate restic for each type of backend. [\#92](https://github.com/appscode/stash/pull/92) ([tamalsaha](https://github.com/tamalsaha)) +- Remove selectors so that `template.metadata.labels` are used [\#91](https://github.com/appscode/stash/pull/91) ([tamalsaha](https://github.com/tamalsaha)) +- Update Stash chart [\#89](https://github.com/appscode/stash/pull/89) ([tamalsaha](https://github.com/tamalsaha)) +- Various changes to RetentionPolicy [\#116](https://github.com/appscode/stash/pull/116) ([tamalsaha](https://github.com/tamalsaha)) +- Set TMPDIR env var for restic [\#115](https://github.com/appscode/stash/pull/115) ([tamalsaha](https://github.com/tamalsaha)) +- Part - 2 of User guide [\#99](https://github.com/appscode/stash/pull/99) ([tamalsaha](https://github.com/tamalsaha)) +- Update Prometheus job name to use restic ns & name [\#93](https://github.com/appscode/stash/pull/93) ([tamalsaha](https://github.com/tamalsaha)) +- Add docs for commands [\#90](https://github.com/appscode/stash/pull/90) ([tamalsaha](https://github.com/tamalsaha)) +- Fix dev guide [\#88](https://github.com/appscode/stash/pull/88) ([tamalsaha](https://github.com/tamalsaha)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.3.md b/content/docs/v2024.8.27/CHANGELOG-0.3.md new file mode 100644 index 0000000000..297bf6d3a6 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.3.md @@ -0,0 +1,110 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.3 + name: Changelog-0.3 + parent: welcome + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.3/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.3/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.3.1](https://github.com/appscode/stash/tree/0.3.1) (2017-07-04) +[Full Changelog](https://github.com/appscode/stash/compare/0.3.0...0.3.1) + +**Merged pull requests:** + +- Add tests for swift [\#130](https://github.com/appscode/stash/pull/130) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.3.0](https://github.com/appscode/stash/tree/0.3.0) (2017-07-04) +[Full Changelog](https://github.com/appscode/stash/compare/0.2.0...0.3.0) + +**Fixed bugs:** + +- Fix GCS [\#122](https://github.com/appscode/stash/issues/122) + +**Closed issues:** + +- Support resource [\#128](https://github.com/appscode/stash/issues/128) +- Document FindRestic will match first one [\#119](https://github.com/appscode/stash/issues/119) +- Document e2e test setup process. [\#108](https://github.com/appscode/stash/issues/108) +- Fix charts [\#87](https://github.com/appscode/stash/issues/87) + +**Merged pull requests:** + +- Support setting compute resources for sidecar [\#129](https://github.com/appscode/stash/pull/129) ([tamalsaha](https://github.com/tamalsaha)) +- Fix RBAC docs [\#127](https://github.com/appscode/stash/pull/127) ([tamalsaha](https://github.com/tamalsaha)) +- Document swift [\#124](https://github.com/appscode/stash/pull/124) ([tamalsaha](https://github.com/tamalsaha)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.4.md b/content/docs/v2024.8.27/CHANGELOG-0.4.md new file mode 100644 index 0000000000..cbff0125c6 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.4.md @@ -0,0 +1,117 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.4 + name: Changelog-0.4 + parent: welcome + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.4/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.4/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.4.2](https://github.com/appscode/stash/tree/0.4.2) (2017-11-03) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.1...0.4.2) + +**Merged pull requests:** + +- Upgrade restic binary to 0.7.3 [\#209](https://github.com/appscode/stash/pull/209) ([tamalsaha](https://github.com/tamalsaha)) +- Fix RBAC permission for release 0.4 [\#208](https://github.com/appscode/stash/pull/208) ([tamalsaha](https://github.com/tamalsaha)) +- Change `k8s.io/api/core/v1` pkg alias to core [\#204](https://github.com/appscode/stash/pull/204) ([tamalsaha](https://github.com/tamalsaha)) +- Use client-go 5.0 [\#203](https://github.com/appscode/stash/pull/203) ([tamalsaha](https://github.com/tamalsaha)) +- Add recovery CRD [\#201](https://github.com/appscode/stash/pull/201) ([diptadas](https://github.com/diptadas)) + + +## [0.4.1](https://github.com/appscode/stash/tree/0.4.1) (2017-07-19) +[Full Changelog](https://github.com/appscode/stash/compare/0.4.0...0.4.1) + +**Fixed bugs:** + +- Fix Fake restic resource Url [\#137](https://github.com/appscode/stash/pull/137) ([sadlil](https://github.com/sadlil)) + +## [0.4.0](https://github.com/appscode/stash/tree/0.4.0) (2017-07-07) +[Full Changelog](https://github.com/appscode/stash/compare/0.3.1...0.4.0) + +**Closed issues:** + +- Use osm as the bucket manipulator [\#3](https://github.com/appscode/stash/issues/3) +- Update restic [\#133](https://github.com/appscode/stash/issues/133) +- Document required RBAC permissions [\#123](https://github.com/appscode/stash/issues/123) + +**Merged pull requests:** + +- Rename RepositorySecretName to StorageSecretName [\#135](https://github.com/appscode/stash/pull/135) ([tamalsaha](https://github.com/tamalsaha)) +- Rename Volume to VolumeSource [\#134](https://github.com/appscode/stash/pull/134) ([tamalsaha](https://github.com/tamalsaha)) +- Use VolumeSource instead of Volume for Local backend. [\#132](https://github.com/appscode/stash/pull/132) ([tamalsaha](https://github.com/tamalsaha)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.5.md b/content/docs/v2024.8.27/CHANGELOG-0.5.md new file mode 100644 index 0000000000..ceb35aabe5 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.5.md @@ -0,0 +1,203 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.5 + name: Changelog-0.5 + parent: welcome + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.5/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.5/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.5.1](https://github.com/appscode/stash/tree/0.5.1) (2017-10-10) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.0...0.5.1) + +**Fixed bugs:** + +- invalid header field value for key Authorization - DO s3 bucket [\#189](https://github.com/appscode/stash/issues/189) +- Kops + AWS: cannot unmarshal array into Go value of type types.ContainerJSON [\#147](https://github.com/appscode/stash/issues/147) + +**Closed issues:** + +- Cut a new release with restic 0.7.1 [\#145](https://github.com/appscode/stash/issues/145) +- Use fixed Hostname for ReplicaSet etc [\#165](https://github.com/appscode/stash/issues/165) +- Update docs for restic tags [\#143](https://github.com/appscode/stash/issues/143) +- Document how to use with kubectl [\#142](https://github.com/appscode/stash/issues/142) + +**Merged pull requests:** + +- Correctly detect "default" service account [\#200](https://github.com/appscode/stash/pull/200) ([tamalsaha](https://github.com/tamalsaha)) +- Clarify that --tag foo,tag bar style tags are not supported. [\#199](https://github.com/appscode/stash/pull/199) ([tamalsaha](https://github.com/tamalsaha)) +- Set hostname based on resource type [\#198](https://github.com/appscode/stash/pull/198) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to detect operator version [\#196](https://github.com/appscode/stash/pull/196) ([tamalsaha](https://github.com/tamalsaha)) +- Manage RoleBinding for rbac enabled cluster [\#197](https://github.com/appscode/stash/pull/197) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.5.0](https://github.com/appscode/stash/tree/0.5.0) (2017-10-10) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.0-beta.3...0.5.0) + +**Closed issues:** + +- Apply restic.appscode.com/config annotations on Pod templates [\#141](https://github.com/appscode/stash/issues/141) + +**Merged pull requests:** + +- Revendor forked robfig/cron [\#139](https://github.com/appscode/stash/pull/139) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.5.0-beta.3](https://github.com/appscode/stash/tree/0.5.0-beta.3) (2017-10-10) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.0-beta.2...0.5.0-beta.3) + +**Merged pull requests:** + +- Use workqueue for scheduler [\#194](https://github.com/appscode/stash/pull/194) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.5.0-beta.2](https://github.com/appscode/stash/tree/0.5.0-beta.2) (2017-10-09) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.0-beta.1...0.5.0-beta.2) + +**Merged pull requests:** + +- Add tests for DO [\#193](https://github.com/appscode/stash/pull/193) ([tamalsaha](https://github.com/tamalsaha)) +- Update tutorial [\#186](https://github.com/appscode/stash/pull/186) ([diptadas](https://github.com/diptadas)) + +## [0.5.0-beta.1](https://github.com/appscode/stash/tree/0.5.0-beta.1) (2017-10-09) +[Full Changelog](https://github.com/appscode/stash/compare/0.5.0-beta.0...0.5.0-beta.1) + +**Fixed bugs:** + +- \[Bug\] Success/Fail prometheus metrics inverted condition [\#175](https://github.com/appscode/stash/issues/175) + +**Closed issues:** + +- `should backup new DaemonSet` failed [\#155](https://github.com/appscode/stash/issues/155) +- Use DaemonSet update \(1.6\) [\#154](https://github.com/appscode/stash/issues/154) + +**Merged pull requests:** + +- Fix prometheus metrics collection [\#192](https://github.com/appscode/stash/pull/192) ([tamalsaha](https://github.com/tamalsaha)) +- Fix StatefulSet tests [\#190](https://github.com/appscode/stash/pull/190) ([tamalsaha](https://github.com/tamalsaha)) +- Replace reflect.Equal with github.com/google/go-cmp [\#188](https://github.com/appscode/stash/pull/188) ([tamalsaha](https://github.com/tamalsaha)) +- Skip ReplicaSet owned by Deployments [\#187](https://github.com/appscode/stash/pull/187) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.5.0-beta.0](https://github.com/appscode/stash/tree/0.5.0-beta.0) (2017-10-09) +[Full Changelog](https://github.com/appscode/stash/compare/0.4.1...0.5.0-beta.0) + +**Implemented enhancements:** + +- Migrate TPR to CRD [\#160](https://github.com/appscode/stash/pull/160) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Error in request: v1.ListOptions is not suitable for converting to "v1" [\#153](https://github.com/appscode/stash/issues/153) +- Fix client-go updates [\#159](https://github.com/appscode/stash/pull/159) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Switch to CustomResourceDefinitions [\#97](https://github.com/appscode/stash/issues/97) +- Use client-go 4.0.0 [\#56](https://github.com/appscode/stash/issues/56) + +**Merged pull requests:** + +- Prepare docs for 5.0.0-beta.0 [\#185](https://github.com/appscode/stash/pull/185) ([tamalsaha](https://github.com/tamalsaha)) +- Set namespaceIndex as indexer [\#184](https://github.com/appscode/stash/pull/184) ([tamalsaha](https://github.com/tamalsaha)) +- Fix e2e tests [\#183](https://github.com/appscode/stash/pull/183) ([tamalsaha](https://github.com/tamalsaha)) +- Use workqueue [\#182](https://github.com/appscode/stash/pull/182) ([tamalsaha](https://github.com/tamalsaha)) +- Use Deployment from apps/v1beta1 [\#181](https://github.com/appscode/stash/pull/181) ([tamalsaha](https://github.com/tamalsaha)) +- Delete \*.generated.go files for ugorji [\#180](https://github.com/appscode/stash/pull/180) ([tamalsaha](https://github.com/tamalsaha)) +- Use WaitForCRDReady from kutil [\#179](https://github.com/appscode/stash/pull/179) ([tamalsaha](https://github.com/tamalsaha)) +- Only watch apps/v1beta1 Deployment [\#178](https://github.com/appscode/stash/pull/178) ([tamalsaha](https://github.com/tamalsaha)) +- Move kutil to client package [\#177](https://github.com/appscode/stash/pull/177) ([tamalsaha](https://github.com/tamalsaha)) +- Generate ugorji stuff [\#176](https://github.com/appscode/stash/pull/176) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 0.5.0 [\#174](https://github.com/appscode/stash/pull/174) ([tamalsaha](https://github.com/tamalsaha)) +- Install stash as a critical addon [\#173](https://github.com/appscode/stash/pull/173) ([tamalsaha](https://github.com/tamalsaha)) +- Set RESTIC\_VER to 0.7.3 [\#172](https://github.com/appscode/stash/pull/172) ([tamalsaha](https://github.com/tamalsaha)) +- Refresh charts to match recent convention [\#171](https://github.com/appscode/stash/pull/171) ([tamalsaha](https://github.com/tamalsaha)) +- Update kutil [\#170](https://github.com/appscode/stash/pull/170) ([tamalsaha](https://github.com/tamalsaha)) +- Fix deployment name in tutorial [\#169](https://github.com/appscode/stash/pull/169) ([the-redback](https://github.com/the-redback)) +- Fix command in Developer-guide [\#168](https://github.com/appscode/stash/pull/168) ([the-redback](https://github.com/the-redback)) +- Use apis/v1alpha1 instead of internal version [\#167](https://github.com/appscode/stash/pull/167) ([tamalsaha](https://github.com/tamalsaha)) +- Remove resource:path [\#166](https://github.com/appscode/stash/pull/166) ([tamalsaha](https://github.com/tamalsaha)) +- Move analytics collector to root command [\#164](https://github.com/appscode/stash/pull/164) ([tamalsaha](https://github.com/tamalsaha)) +- Use kubernetes/code-generator [\#163](https://github.com/appscode/stash/pull/163) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor k8s.io/apiextensions-apiserver [\#162](https://github.com/appscode/stash/pull/162) ([tamalsaha](https://github.com/tamalsaha)) +- Update kutil dependency [\#158](https://github.com/appscode/stash/pull/158) ([tamalsaha](https://github.com/tamalsaha)) +- Use CheckAPIVersion\(\) [\#157](https://github.com/appscode/stash/pull/157) ([tamalsaha](https://github.com/tamalsaha)) +- Use PATCH api instead of UPDATE [\#156](https://github.com/appscode/stash/pull/156) ([tamalsaha](https://github.com/tamalsaha)) +- Check version using semver library [\#152](https://github.com/appscode/stash/pull/152) ([tamalsaha](https://github.com/tamalsaha)) +- Support adding Sidecar containers for StatefulSet. [\#151](https://github.com/appscode/stash/pull/151) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to 4.0.0 [\#150](https://github.com/appscode/stash/pull/150) ([tamalsaha](https://github.com/tamalsaha)) +- Update build commands for restic. [\#149](https://github.com/appscode/stash/pull/149) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to 3.0.0 from 3.0.0-beta [\#148](https://github.com/appscode/stash/pull/148) ([tamalsaha](https://github.com/tamalsaha)) +- Add uninstall.sh script [\#144](https://github.com/appscode/stash/pull/144) ([tamalsaha](https://github.com/tamalsaha)) +- Fix typos of tutorial.md file [\#138](https://github.com/appscode/stash/pull/138) ([sajibcse68](https://github.com/sajibcse68)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.6.md b/content/docs/v2024.8.27/CHANGELOG-0.6.md new file mode 100644 index 0000000000..8f39aae05e --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.6.md @@ -0,0 +1,277 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.6 + name: Changelog-0.6 + parent: welcome + weight: 60 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.6/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.6/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.6.4](https://github.com/appscode/stash/tree/0.6.4) (2018-02-20) +[Full Changelog](https://github.com/appscode/stash/compare/0.6.3...0.6.4) + +**Fixed bugs:** + +- Backup count rises even when backup/init fails [\#293](https://github.com/appscode/stash/issues/293) + +**Closed issues:** + +- Document HTTP endpoints [\#111](https://github.com/appscode/stash/issues/111) +- Support updating version of resitc side-car [\#72](https://github.com/appscode/stash/issues/72) + +**Merged pull requests:** + +- Update docs for 0.6.4 [\#344](https://github.com/appscode/stash/pull/344) ([tamalsaha](https://github.com/tamalsaha)) +- Don't block deletion of owner by default [\#343](https://github.com/appscode/stash/pull/343) ([tamalsaha](https://github.com/tamalsaha)) +- Don't block deletion of owner by default [\#342](https://github.com/appscode/stash/pull/342) ([tamalsaha](https://github.com/tamalsaha)) +- Skip generating UpdateStatus method [\#341](https://github.com/appscode/stash/pull/341) ([tamalsaha](https://github.com/tamalsaha)) +- Remove internal types [\#340](https://github.com/appscode/stash/pull/340) ([tamalsaha](https://github.com/tamalsaha)) +- Use rbac/v1 apis [\#339](https://github.com/appscode/stash/pull/339) ([tamalsaha](https://github.com/tamalsaha)) +- Add user roles [\#338](https://github.com/appscode/stash/pull/338) ([tamalsaha](https://github.com/tamalsaha)) +- Use restic 0.8.2 [\#337](https://github.com/appscode/stash/pull/337) ([tamalsaha](https://github.com/tamalsaha)) +- Use official code generator scripts [\#336](https://github.com/appscode/stash/pull/336) ([tamalsaha](https://github.com/tamalsaha)) +- Update charts to support api registration [\#334](https://github.com/appscode/stash/pull/334) ([tamalsaha](https://github.com/tamalsaha)) +- Fix e2e tests after webhook merger [\#333](https://github.com/appscode/stash/pull/333) ([tamalsaha](https://github.com/tamalsaha)) +- Ensure stash can be run locally [\#332](https://github.com/appscode/stash/pull/332) ([tamalsaha](https://github.com/tamalsaha)) +- Vendor client-go auth pkg [\#331](https://github.com/appscode/stash/pull/331) ([tamalsaha](https://github.com/tamalsaha)) +- Update Grafana dashboard [\#330](https://github.com/appscode/stash/pull/330) ([galexrt](https://github.com/galexrt)) +- Merge admission webhook and operator into one binary [\#329](https://github.com/appscode/stash/pull/329) ([tamalsaha](https://github.com/tamalsaha)) +- Merge uninstall script into the stash.sh script [\#328](https://github.com/appscode/stash/pull/328) ([tamalsaha](https://github.com/tamalsaha)) +- Implement informer factory for backup scheduler [\#325](https://github.com/appscode/stash/pull/325) ([hossainemruz](https://github.com/hossainemruz)) +- Fixed abnormal pod recreation when Restic is deleted [\#322](https://github.com/appscode/stash/pull/322) ([hossainemruz](https://github.com/hossainemruz)) +- Copy generic-admission-server into pkg [\#318](https://github.com/appscode/stash/pull/318) ([tamalsaha](https://github.com/tamalsaha)) +- Use shared infromer factory [\#317](https://github.com/appscode/stash/pull/317) ([tamalsaha](https://github.com/tamalsaha)) +- Use GetBaseVersion method from kutil [\#316](https://github.com/appscode/stash/pull/316) ([tamalsaha](https://github.com/tamalsaha)) +- Implement Pause Restic [\#315](https://github.com/appscode/stash/pull/315) ([hossainemruz](https://github.com/hossainemruz)) +- Fix webhook command description [\#314](https://github.com/appscode/stash/pull/314) ([tamalsaha](https://github.com/tamalsaha)) +- Use rbac/v1beta1 api. [\#313](https://github.com/appscode/stash/pull/313) ([tamalsaha](https://github.com/tamalsaha)) +- Support Create & Update operations in admission webhook [\#312](https://github.com/appscode/stash/pull/312) ([tamalsaha](https://github.com/tamalsaha)) +- Merge webhook plugins into one. [\#311](https://github.com/appscode/stash/pull/311) ([tamalsaha](https://github.com/tamalsaha)) +- Support private docker registry in installer [\#310](https://github.com/appscode/stash/pull/310) ([tamalsaha](https://github.com/tamalsaha)) +- Compress go binaries [\#309](https://github.com/appscode/stash/pull/309) ([tamalsaha](https://github.com/tamalsaha)) +- Rename --initializer flag to --enable-initializer [\#308](https://github.com/appscode/stash/pull/308) ([tamalsaha](https://github.com/tamalsaha)) +- Remove STASH\_ROLE\_TYPE from installer scripts [\#307](https://github.com/appscode/stash/pull/307) ([tamalsaha](https://github.com/tamalsaha)) +- Use rbac/v1 api [\#306](https://github.com/appscode/stash/pull/306) ([tamalsaha](https://github.com/tamalsaha)) +- Use kubectl auth reconcile [\#305](https://github.com/appscode/stash/pull/305) ([tamalsaha](https://github.com/tamalsaha)) +- Add --initializer flag to installer [\#304](https://github.com/appscode/stash/pull/304) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 0.7.0-alpha.0 [\#302](https://github.com/appscode/stash/pull/302) ([tamalsaha](https://github.com/tamalsaha)) +- Change installer script [\#301](https://github.com/appscode/stash/pull/301) ([tamalsaha](https://github.com/tamalsaha)) +- Added support for private docker registry [\#300](https://github.com/appscode/stash/pull/300) ([diptadas](https://github.com/diptadas)) +- Add ValidatingAdmissionWebhook for Stash CRDs [\#299](https://github.com/appscode/stash/pull/299) ([tamalsaha](https://github.com/tamalsaha)) +- Remove TPR to CRD migrator [\#298](https://github.com/appscode/stash/pull/298) ([tamalsaha](https://github.com/tamalsaha)) +- Update dependencies to Kubernetes 1.9 [\#297](https://github.com/appscode/stash/pull/297) ([tamalsaha](https://github.com/tamalsaha)) +- Write restic stderror in error events [\#296](https://github.com/appscode/stash/pull/296) ([diptadas](https://github.com/diptadas)) +- Fixed backup count [\#295](https://github.com/appscode/stash/pull/295) ([diptadas](https://github.com/diptadas)) +- Support self-signed ca cert for backends [\#294](https://github.com/appscode/stash/pull/294) ([hossainemruz](https://github.com/hossainemruz)) + +## [0.6.3](https://github.com/appscode/stash/tree/0.6.3) (2018-01-18) +[Full Changelog](https://github.com/appscode/stash/compare/0.6.2...0.6.3) + +**Implemented enhancements:** + +- Add Stash Backup Grafana dashboard to monitoring docs [\#285](https://github.com/appscode/stash/issues/285) +- Added Grafana Stash overview dashboard [\#286](https://github.com/appscode/stash/pull/286) ([galexrt](https://github.com/galexrt)) + +**Fixed bugs:** + +- PushGateURL not given to sidecar container [\#283](https://github.com/appscode/stash/issues/283) +- Fix inline volumeSource marshalling for LocalSpec [\#289](https://github.com/appscode/stash/pull/289) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Test Failed: Invalid argument error in sidecar container [\#290](https://github.com/appscode/stash/issues/290) + +**Merged pull requests:** + +- Cleanup headless service [\#292](https://github.com/appscode/stash/pull/292) ([diptadas](https://github.com/diptadas)) +- Fixed parsing argument error [\#291](https://github.com/appscode/stash/pull/291) ([diptadas](https://github.com/diptadas)) +- Pass through logger flags [\#287](https://github.com/appscode/stash/pull/287) ([tamalsaha](https://github.com/tamalsaha)) +- Pass --pushgateway-url for injected containers. [\#284](https://github.com/appscode/stash/pull/284) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.6.2](https://github.com/appscode/stash/tree/0.6.2) (2018-01-05) +[Full Changelog](https://github.com/appscode/stash/compare/0.6.1...0.6.2) + +**Fixed bugs:** + +- Created stash-sidecar clusterrole is missing statefulsets permission [\#272](https://github.com/appscode/stash/issues/272) +- Garbage collect s/a and rolebindings for \*Jobs [\#271](https://github.com/appscode/stash/issues/271) +- Fix RBAC roles in chart [\#276](https://github.com/appscode/stash/pull/276) ([tamalsaha](https://github.com/tamalsaha)) +- Garbage collect service-accounts and role-bindings for jobs [\#275](https://github.com/appscode/stash/pull/275) ([diptadas](https://github.com/diptadas)) +- Fix new restic format in upgrade docs [\#274](https://github.com/appscode/stash/pull/274) ([tamalsaha](https://github.com/tamalsaha)) +- Add statefulsets to stash-sidecar ClusterRole creation [\#273](https://github.com/appscode/stash/pull/273) ([galexrt](https://github.com/galexrt)) + +**Closed issues:** + +- Image kubectl not found because of Kubernetes version [\#266](https://github.com/appscode/stash/issues/266) + +**Merged pull requests:** + +- Prepare docs for 0.6.2 release [\#278](https://github.com/appscode/stash/pull/278) ([tamalsaha](https://github.com/tamalsaha)) +- Update Helm chart to use newer 'fullname' template that avoids duplicate \(e.g. 'stash-stash-...'\) resource names [\#277](https://github.com/appscode/stash/pull/277) ([whereisaaron](https://github.com/whereisaaron)) +- Reduce operator permissions for service accounts [\#270](https://github.com/appscode/stash/pull/270) ([tamalsaha](https://github.com/tamalsaha)) +- Fix formatting of uninstall.md [\#269](https://github.com/appscode/stash/pull/269) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.6.1](https://github.com/appscode/stash/tree/0.6.1) (2018-01-03) +[Full Changelog](https://github.com/appscode/stash/compare/0.6.0...0.6.1) + +**Fixed bugs:** + +- Error while running restic [\#256](https://github.com/appscode/stash/issues/256) + +**Closed issues:** + +- Unable to use non-aws S3 backend [\#226](https://github.com/appscode/stash/issues/226) + +**Merged pull requests:** + +- Prepare docs for 0.6.1 [\#268](https://github.com/appscode/stash/pull/268) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.6.0](https://github.com/appscode/stash/tree/0.6.0) (2018-01-03) +[Full Changelog](https://github.com/appscode/stash/compare/0.4.2...0.6.0) + +**Implemented enhancements:** + +- Feature: Support offline consistent backups [\#225](https://github.com/appscode/stash/issues/225) +- Collect ideas on how to improve recovery process [\#131](https://github.com/appscode/stash/issues/131) +- Use log.LEVEL\(\) instead of fmt.Printf\(\) [\#252](https://github.com/appscode/stash/pull/252) ([galexrt](https://github.com/galexrt)) + +**Fixed bugs:** + +- Fix ConfigMap Name in Leader Election [\#227](https://github.com/appscode/stash/issues/227) +- StatefulSet: Forbidden: pod updates may not add or remove containers [\#191](https://github.com/appscode/stash/issues/191) +- Events are not recording for Recovery [\#219](https://github.com/appscode/stash/issues/219) +- \[0.5.0\] Record backup event on kubernetes failure [\#212](https://github.com/appscode/stash/issues/212) +- Fix kubectl version parsing generation in GKE [\#267](https://github.com/appscode/stash/pull/267) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Replace fmt.Print\* with log statements [\#248](https://github.com/appscode/stash/issues/248) +- Dynamically create stash-sidecar ClusterRole in operator [\#220](https://github.com/appscode/stash/issues/220) +- LeaderElection part -2 [\#218](https://github.com/appscode/stash/issues/218) +- Reimplement CheckRecoveryJob using Job watcher [\#216](https://github.com/appscode/stash/issues/216) +- Enable --cache-dir [\#238](https://github.com/appscode/stash/issues/238) +- Upgrade procedure for 0.5.1 -\> 0.6.0 [\#237](https://github.com/appscode/stash/issues/237) +- Test RBAC setup [\#224](https://github.com/appscode/stash/issues/224) +- Record recovery status for individual FileGroup [\#213](https://github.com/appscode/stash/issues/213) +- Periodically run restic check [\#195](https://github.com/appscode/stash/issues/195) +- Handle Deployment etc with replicas \> 1 [\#140](https://github.com/appscode/stash/issues/140) +- Support Backblaze B2 as backend [\#125](https://github.com/appscode/stash/issues/125) +- Turn Stash operator into an Initializer [\#5](https://github.com/appscode/stash/issues/5) + +**Merged pull requests:** + +- Detect analytics client id using env vars [\#265](https://github.com/appscode/stash/pull/265) ([tamalsaha](https://github.com/tamalsaha)) +- Repare docs for 0.6.0 release [\#264](https://github.com/appscode/stash/pull/264) ([tamalsaha](https://github.com/tamalsaha)) +- Reorganize docs [\#263](https://github.com/appscode/stash/pull/263) ([tamalsaha](https://github.com/tamalsaha)) +- Add support for B2 [\#262](https://github.com/appscode/stash/pull/262) ([tamalsaha](https://github.com/tamalsaha)) +- Update restic website link [\#261](https://github.com/appscode/stash/pull/261) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs for unified LocalSpec [\#260](https://github.com/appscode/stash/pull/260) ([diptadas](https://github.com/diptadas)) +- Unify LocalSpec and RecoveredVolume [\#259](https://github.com/appscode/stash/pull/259) ([diptadas](https://github.com/diptadas)) +- Remove restic-dependency from recovery [\#258](https://github.com/appscode/stash/pull/258) ([diptadas](https://github.com/diptadas)) +- Update restic version to 0.8.1 [\#257](https://github.com/appscode/stash/pull/257) ([tamalsaha](https://github.com/tamalsaha)) +- Use cmp methods from kutil [\#255](https://github.com/appscode/stash/pull/255) ([tamalsaha](https://github.com/tamalsaha)) +- Remove TryPatch methods [\#254](https://github.com/appscode/stash/pull/254) ([tamalsaha](https://github.com/tamalsaha)) +- Log operator version on start [\#253](https://github.com/appscode/stash/pull/253) ([galexrt](https://github.com/galexrt)) +- Use verb type for mutation [\#251](https://github.com/appscode/stash/pull/251) ([tamalsaha](https://github.com/tamalsaha)) +- Use CreateOrPatchCronJob from kutil [\#250](https://github.com/appscode/stash/pull/250) ([tamalsaha](https://github.com/tamalsaha)) +- Indicate mutation in PATCH helper method return [\#249](https://github.com/appscode/stash/pull/249) ([tamalsaha](https://github.com/tamalsaha)) +- Simplify clientID generation for analytics [\#247](https://github.com/appscode/stash/pull/247) ([tamalsaha](https://github.com/tamalsaha)) +- Set analytics clientID [\#246](https://github.com/appscode/stash/pull/246) ([tamalsaha](https://github.com/tamalsaha)) +- Reorganize docs [\#245](https://github.com/appscode/stash/pull/245) ([tamalsaha](https://github.com/tamalsaha)) +- Upgrade procedure for 0.5.1 to 0.6.0 [\#243](https://github.com/appscode/stash/pull/243) ([diptadas](https://github.com/diptadas)) +- Fix retentionPolicyName not found error [\#242](https://github.com/appscode/stash/pull/242) ([diptadas](https://github.com/diptadas)) +- Enable Restic cahce-dir flag [\#241](https://github.com/appscode/stash/pull/241) ([diptadas](https://github.com/diptadas)) +- Use lower case workload.kind in prefix [\#240](https://github.com/appscode/stash/pull/240) ([diptadas](https://github.com/diptadas)) +- Use RegisterCRDs helper [\#239](https://github.com/appscode/stash/pull/239) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs [\#236](https://github.com/appscode/stash/pull/236) ([diptadas](https://github.com/diptadas)) +- Change left\_menu -\> menu\_name [\#235](https://github.com/appscode/stash/pull/235) ([sajibcse68](https://github.com/sajibcse68)) +- Revendor dependencies [\#234](https://github.com/appscode/stash/pull/234) ([tamalsaha](https://github.com/tamalsaha)) +- Add aliases for README file in front matter [\#233](https://github.com/appscode/stash/pull/233) ([sajibcse68](https://github.com/sajibcse68)) +- Update bundles restic to 0.8.0 [\#232](https://github.com/appscode/stash/pull/232) ([tamalsaha](https://github.com/tamalsaha)) +- Add Docs Front Matter for 0.5.1 [\#231](https://github.com/appscode/stash/pull/231) ([sajibcse68](https://github.com/sajibcse68)) +- Revendor kutil [\#230](https://github.com/appscode/stash/pull/230) ([tamalsaha](https://github.com/tamalsaha)) +- Implement offline backup [\#229](https://github.com/appscode/stash/pull/229) ([diptadas](https://github.com/diptadas)) +- Fix Configmap Name in Leader Election [\#228](https://github.com/appscode/stash/pull/228) ([diptadas](https://github.com/diptadas)) +- Run `restic check` once every 3 days [\#223](https://github.com/appscode/stash/pull/223) ([tamalsaha](https://github.com/tamalsaha)) +- Record recovery status for individual FileGroup [\#222](https://github.com/appscode/stash/pull/222) ([tamalsaha](https://github.com/tamalsaha)) +- Dynamically create stash-sidecar ClusterRole in operator [\#221](https://github.com/appscode/stash/pull/221) ([tamalsaha](https://github.com/tamalsaha)) +- Make stash chart namespaced [\#210](https://github.com/appscode/stash/pull/210) ([tamalsaha](https://github.com/tamalsaha)) +- Implement workload initializer in stash operator [\#207](https://github.com/appscode/stash/pull/207) ([diptadas](https://github.com/diptadas)) +- Leader election for deployment, replica set and rc [\#206](https://github.com/appscode/stash/pull/206) ([diptadas](https://github.com/diptadas)) +- Revise RetentionPolicy in Restic Api [\#205](https://github.com/appscode/stash/pull/205) ([diptadas](https://github.com/diptadas)) +- Implement Recovery for Restic Backup [\#202](https://github.com/appscode/stash/pull/202) ([diptadas](https://github.com/diptadas)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.7.md b/content/docs/v2024.8.27/CHANGELOG-0.7.md new file mode 100644 index 0000000000..d6d5a0a1b7 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.7.md @@ -0,0 +1,303 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.7 + name: Changelog-0.7 + parent: welcome + weight: 70 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.7/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.7/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.7.0](https://github.com/appscode/stash/tree/0.7.0) (2018-05-29) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.5...0.7.0) + +**Implemented enhancements:** + +- Support custom CA cert with backend [\#288](https://github.com/appscode/stash/issues/288) + +**Fixed bugs:** + +- Pod restart after each backup when Mutating Webhook enabled [\#396](https://github.com/appscode/stash/issues/396) +- Sidecar RoleBinding is not being created when Mutating Webhook is enabled [\#395](https://github.com/appscode/stash/issues/395) +- Recovery to PVC restores data in subdirectory instead of root directory [\#392](https://github.com/appscode/stash/issues/392) +- Forget panics in 0.7.0-rc.0 [\#373](https://github.com/appscode/stash/issues/373) + +**Closed issues:** + +- Resource type "snapshot" not registered [\#499](https://github.com/appscode/stash/issues/499) +- Support Repository deletion [\#416](https://github.com/appscode/stash/issues/416) +- Docs TODO [\#414](https://github.com/appscode/stash/issues/414) +- Convert Initializer to MutationWebhook [\#326](https://github.com/appscode/stash/issues/326) +- Use informer factory for backup scheduler [\#321](https://github.com/appscode/stash/issues/321) +- Show repository snapshot list [\#319](https://github.com/appscode/stash/issues/319) +- Verbosity \(--v\) flag not inherited to backup sidecars [\#282](https://github.com/appscode/stash/issues/282) +- Double Deployment patch when deleting a Restic CRD? [\#281](https://github.com/appscode/stash/issues/281) +- Consider a simple 'enabled' switch for Restic CRD [\#279](https://github.com/appscode/stash/issues/279) +- offline backup is not supported for workload kind `Deployment`, `Replicaset` and `ReplicationController` with `replicas \> 1` [\#244](https://github.com/appscode/stash/issues/244) +- Recover specific snapshot ID [\#215](https://github.com/appscode/stash/issues/215) + +**Merged pull requests:** + +- Prepare docs for 0.7.0 release. [\#502](https://github.com/appscode/stash/pull/502) ([tamalsaha](https://github.com/tamalsaha)) +- Set RollingUpdate for DaemonSet [\#349](https://github.com/appscode/stash/pull/349) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.5](https://github.com/appscode/stash/tree/0.7.0-rc.5) (2018-05-23) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.4...0.7.0-rc.5) + +**Fixed bugs:** + +- Fix storage implementation for snapshots [\#497](https://github.com/appscode/stash/pull/497) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Prepare docs for 0.7.0-rc.5 [\#498](https://github.com/appscode/stash/pull/498) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#495](https://github.com/appscode/stash/pull/495) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.4](https://github.com/appscode/stash/tree/0.7.0-rc.4) (2018-05-22) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.3...0.7.0-rc.4) + +**Fixed bugs:** + +- Restic sidecar not properly working because of image tag error [\#443](https://github.com/appscode/stash/issues/443) +- Removed owner reference from repo-reader role-binding [\#484](https://github.com/appscode/stash/pull/484) ([hossainemruz](https://github.com/hossainemruz)) +- Permit stash operator to perform pods/exec [\#433](https://github.com/appscode/stash/pull/433) ([tamalsaha](https://github.com/tamalsaha)) +- Add missing batch jobs get RBAC permission [\#419](https://github.com/appscode/stash/pull/419) ([galexrt](https://github.com/galexrt)) + +**Closed issues:** + +- Stash restore pod fails with istio sidecar [\#475](https://github.com/appscode/stash/issues/475) +- Stash stores GCS credentials in /tmp with 644 permissions [\#470](https://github.com/appscode/stash/issues/470) +- Update minio doc for 1.10? [\#467](https://github.com/appscode/stash/issues/467) +- Fix docs for StatefulSet [\#444](https://github.com/appscode/stash/issues/444) + +**Merged pull requests:** + +- Delete user roles on purge. [\#494](https://github.com/appscode/stash/pull/494) ([tamalsaha](https://github.com/tamalsaha)) +- Add app: stash label to user roles. [\#493](https://github.com/appscode/stash/pull/493) ([tamalsaha](https://github.com/tamalsaha)) +- Use post-install hooks to install admission controller in chart [\#492](https://github.com/appscode/stash/pull/492) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#491](https://github.com/appscode/stash/pull/491) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid creating apiservice when webhooks are not used. [\#490](https://github.com/appscode/stash/pull/490) ([tamalsaha](https://github.com/tamalsaha)) +- Install correct version of stash chart [\#489](https://github.com/appscode/stash/pull/489) ([tamalsaha](https://github.com/tamalsaha)) +- Use wait-until instead of fixed delay [\#488](https://github.com/appscode/stash/pull/488) ([hossainemruz](https://github.com/hossainemruz)) +- Concourse [\#486](https://github.com/appscode/stash/pull/486) ([tahsinrahman](https://github.com/tahsinrahman)) +- Prepare docs for 0.7.0-rc.4 [\#483](https://github.com/appscode/stash/pull/483) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor [\#481](https://github.com/appscode/stash/pull/481) ([tamalsaha](https://github.com/tamalsaha)) +- Fix enableRBAC flag for sidecar [\#480](https://github.com/appscode/stash/pull/480) ([hossainemruz](https://github.com/hossainemruz)) +- Typo \(`Weclome` → `Welcome`\) in page title [\#479](https://github.com/appscode/stash/pull/479) ([eliasp](https://github.com/eliasp)) +- Add support for initial backoff to the apiserver call on recover [\#476](https://github.com/appscode/stash/pull/476) ([farcaller](https://github.com/farcaller)) +- Support recovering from repository in different namespace [\#474](https://github.com/appscode/stash/pull/474) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs \(run minio in v1.9.4+ cluster and add example yaml files in respective backends\) [\#473](https://github.com/appscode/stash/pull/473) ([hossainemruz](https://github.com/hossainemruz)) +- Limit the GCS file permissions to owner only [\#472](https://github.com/appscode/stash/pull/472) ([farcaller](https://github.com/farcaller)) +- Fix a typo [\#471](https://github.com/appscode/stash/pull/471) ([farcaller](https://github.com/farcaller)) +- Don't panic if admission options is nil [\#469](https://github.com/appscode/stash/pull/469) ([tamalsaha](https://github.com/tamalsaha)) +- Disable admission controllers for webhook server [\#468](https://github.com/appscode/stash/pull/468) ([tamalsaha](https://github.com/tamalsaha)) +- Use new UpdateRecoveryStatus method [\#466](https://github.com/appscode/stash/pull/466) ([tamalsaha](https://github.com/tamalsaha)) +- Add Update\*\*\*Status helpers [\#465](https://github.com/appscode/stash/pull/465) ([tamalsaha](https://github.com/tamalsaha)) +- Added SSL support for deleting restic repository from Minio backend [\#464](https://github.com/appscode/stash/pull/464) ([hossainemruz](https://github.com/hossainemruz)) +- Update client-go to 7.0.0 [\#463](https://github.com/appscode/stash/pull/463) ([tamalsaha](https://github.com/tamalsaha)) +- Rename webhook files in chart [\#460](https://github.com/appscode/stash/pull/460) ([tamalsaha](https://github.com/tamalsaha)) +- Update workload api [\#459](https://github.com/appscode/stash/pull/459) ([tamalsaha](https://github.com/tamalsaha)) +- Remove stash crds before uninstalling operator [\#458](https://github.com/appscode/stash/pull/458) ([tamalsaha](https://github.com/tamalsaha)) +- Export kube-ca only if required [\#457](https://github.com/appscode/stash/pull/457) ([tamalsaha](https://github.com/tamalsaha)) +- Improve installer [\#456](https://github.com/appscode/stash/pull/456) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#455](https://github.com/appscode/stash/pull/455) ([tamalsaha](https://github.com/tamalsaha)) +- Various installer fixes [\#454](https://github.com/appscode/stash/pull/454) ([tamalsaha](https://github.com/tamalsaha)) +- Update workload client [\#453](https://github.com/appscode/stash/pull/453) ([tamalsaha](https://github.com/tamalsaha)) +- Update workload client [\#452](https://github.com/appscode/stash/pull/452) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor workload client [\#451](https://github.com/appscode/stash/pull/451) ([tamalsaha](https://github.com/tamalsaha)) +- Update workload api [\#450](https://github.com/appscode/stash/pull/450) ([tamalsaha](https://github.com/tamalsaha)) +- Fixes RBAC permission for scaledownCronJob [\#449](https://github.com/appscode/stash/pull/449) ([hossainemruz](https://github.com/hossainemruz)) +- Used Snapshot to verify successful backup [\#447](https://github.com/appscode/stash/pull/447) ([hossainemruz](https://github.com/hossainemruz)) +- Some cleanup [\#446](https://github.com/appscode/stash/pull/446) ([tamalsaha](https://github.com/tamalsaha)) +- Update StatefulSet doc [\#445](https://github.com/appscode/stash/pull/445) ([hossainemruz](https://github.com/hossainemruz)) +- pkg/util: fix error found by vet [\#442](https://github.com/appscode/stash/pull/442) ([functionary](https://github.com/functionary)) +- Move Stash swagger.json to top level folder [\#441](https://github.com/appscode/stash/pull/441) ([tamalsaha](https://github.com/tamalsaha)) +- Fix go\_vet error [\#440](https://github.com/appscode/stash/pull/440) ([hossainemruz](https://github.com/hossainemruz)) +- Delete restic repository from backend if Repository CRD is deleted [\#438](https://github.com/appscode/stash/pull/438) ([hossainemruz](https://github.com/hossainemruz)) +- Recover specific snapshot [\#437](https://github.com/appscode/stash/pull/437) ([hossainemruz](https://github.com/hossainemruz)) +- Use Repository data in Recovery CRD [\#436](https://github.com/appscode/stash/pull/436) ([hossainemruz](https://github.com/hossainemruz)) +- Increase qps and burst limits [\#435](https://github.com/appscode/stash/pull/435) ([tamalsaha](https://github.com/tamalsaha)) +- Add RBAC instructions for GKE cluster [\#432](https://github.com/appscode/stash/pull/432) ([tamalsaha](https://github.com/tamalsaha)) +- Update charts location [\#431](https://github.com/appscode/stash/pull/431) ([tamalsaha](https://github.com/tamalsaha)) +- Add docs for GKE and Rook [\#430](https://github.com/appscode/stash/pull/430) ([hossainemruz](https://github.com/hossainemruz)) +- concourse configs [\#429](https://github.com/appscode/stash/pull/429) ([tahsinrahman](https://github.com/tahsinrahman)) +- Skip lock while listing snapshots [\#428](https://github.com/appscode/stash/pull/428) ([hossainemruz](https://github.com/hossainemruz)) +- Purge repository objects in installer [\#427](https://github.com/appscode/stash/pull/427) ([tamalsaha](https://github.com/tamalsaha)) +- Support installing from local installer scripts [\#426](https://github.com/appscode/stash/pull/426) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed Repository yaml in doc [\#425](https://github.com/appscode/stash/pull/425) ([hossainemruz](https://github.com/hossainemruz)) +- Add delete method for snapshots to swagger.json [\#424](https://github.com/appscode/stash/pull/424) ([tamalsaha](https://github.com/tamalsaha)) +- Generate swagger.json [\#423](https://github.com/appscode/stash/pull/423) ([tamalsaha](https://github.com/tamalsaha)) +- Add install pkg for stash crds [\#422](https://github.com/appscode/stash/pull/422) ([tamalsaha](https://github.com/tamalsaha)) +- Fix openapi spec for stash crds [\#421](https://github.com/appscode/stash/pull/421) ([tamalsaha](https://github.com/tamalsaha)) +- Expose swagger.json [\#420](https://github.com/appscode/stash/pull/420) ([tamalsaha](https://github.com/tamalsaha)) +- Show repository snapshot list [\#417](https://github.com/appscode/stash/pull/417) ([hossainemruz](https://github.com/hossainemruz)) +- Add registry skeleton for snapshots [\#415](https://github.com/appscode/stash/pull/415) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart readme [\#413](https://github.com/appscode/stash/pull/413) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.3](https://github.com/appscode/stash/tree/0.7.0-rc.3) (2018-04-03) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.2...0.7.0-rc.3) + +**Fixed bugs:** + +- Use separate registry key for docker images [\#410](https://github.com/appscode/stash/pull/410) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor webhook util and jsonpatch fixes [\#400](https://github.com/appscode/stash/pull/400) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- hack/deploy/stash.sh: $? check does not work with set -e [\#403](https://github.com/appscode/stash/issues/403) + +**Merged pull requests:** + +- Add frontmatter for repository crd [\#412](https://github.com/appscode/stash/pull/412) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 0.7.0-rc.3 [\#411](https://github.com/appscode/stash/pull/411) ([tamalsaha](https://github.com/tamalsaha)) +- Add test for recovery [\#409](https://github.com/appscode/stash/pull/409) ([hossainemruz](https://github.com/hossainemruz)) +- Skip setting ListKind [\#407](https://github.com/appscode/stash/pull/407) ([tamalsaha](https://github.com/tamalsaha)) +- Add CRD Validation [\#406](https://github.com/appscode/stash/pull/406) ([tamalsaha](https://github.com/tamalsaha)) +- Generate openapi spec for stash api [\#405](https://github.com/appscode/stash/pull/405) ([tamalsaha](https://github.com/tamalsaha)) +- Fix install script for minikube 0.24.x \(Kube 1.8.0\) [\#404](https://github.com/appscode/stash/pull/404) ([tamalsaha](https://github.com/tamalsaha)) +- Skip downloading onessl if already installed [\#401](https://github.com/appscode/stash/pull/401) ([tamalsaha](https://github.com/tamalsaha)) +- Use Restic spec hash instead of resource version to restart pods [\#399](https://github.com/appscode/stash/pull/399) ([tamalsaha](https://github.com/tamalsaha)) +- Check for valid owner object [\#397](https://github.com/appscode/stash/pull/397) ([tamalsaha](https://github.com/tamalsaha)) +- Create repository crd for each Restic repository [\#394](https://github.com/appscode/stash/pull/394) ([hossainemruz](https://github.com/hossainemruz)) +- Revendor webhook library [\#393](https://github.com/appscode/stash/pull/393) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.2](https://github.com/appscode/stash/tree/0.7.0-rc.2) (2018-03-24) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.1...0.7.0-rc.2) + +**Fixed bugs:** + +- Fix --enable-analytics flag [\#387](https://github.com/appscode/stash/pull/387) ([tamalsaha](https://github.com/tamalsaha)) +- Fix flag parsing in tests [\#386](https://github.com/appscode/stash/pull/386) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Prepare docs for 0.7.0-rc.2 [\#391](https://github.com/appscode/stash/pull/391) ([tamalsaha](https://github.com/tamalsaha)) +- Add variable for dockerRegistry [\#390](https://github.com/appscode/stash/pull/390) ([tamalsaha](https://github.com/tamalsaha)) +- Reorg objects deleted in uninstall command [\#389](https://github.com/appscode/stash/pull/389) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Statefulset Example [\#385](https://github.com/appscode/stash/pull/385) ([rzcastilho](https://github.com/rzcastilho)) +- Rename --analytics to --enable-analytics [\#384](https://github.com/appscode/stash/pull/384) ([tamalsaha](https://github.com/tamalsaha)) +- Use separated appscode/kubernetes-webhook-util package [\#383](https://github.com/appscode/stash/pull/383) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.1](https://github.com/appscode/stash/tree/0.7.0-rc.1) (2018-03-21) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0-rc.0...0.7.0-rc.1) + +**Fixed bugs:** + +- Don't enable mutator for StatefulSet updates [\#381](https://github.com/appscode/stash/pull/381) ([tamalsaha](https://github.com/tamalsaha)) +- Stop using field selectors for CRDs [\#379](https://github.com/appscode/stash/pull/379) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- "DeprecatedServiceAccount not present in src" while converting unversioned StatefulSet to v1beta1.StatefulSet [\#371](https://github.com/appscode/stash/issues/371) +- \[0.6.x\] Helm chart broken due to undocumented '--docker-registry' and other arguments [\#354](https://github.com/appscode/stash/issues/354) +- \[0.7.0-rc.0\] Fails on start-up with 'cluster doesn't provide requestheader-client-ca-file' [\#353](https://github.com/appscode/stash/issues/353) +- Ability to backup volumes with ReadWriteOnce access mode [\#350](https://github.com/appscode/stash/issues/350) +- Recovery not working! [\#303](https://github.com/appscode/stash/issues/303) + +**Merged pull requests:** + +- Update the image tag in operator.yaml [\#382](https://github.com/appscode/stash/pull/382) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs to 0.7.0-rc.1 [\#380](https://github.com/appscode/stash/pull/380) ([tamalsaha](https://github.com/tamalsaha)) +- Add types for Repository apigroup [\#377](https://github.com/appscode/stash/pull/377) ([tamalsaha](https://github.com/tamalsaha)) +- Add missing front matter [\#376](https://github.com/appscode/stash/pull/376) ([tamalsaha](https://github.com/tamalsaha)) +- Check for check job before creating it [\#375](https://github.com/appscode/stash/pull/375) ([galexrt](https://github.com/galexrt)) +- Add travis.yaml [\#370](https://github.com/appscode/stash/pull/370) ([tamalsaha](https://github.com/tamalsaha)) +- Add --purge flag [\#369](https://github.com/appscode/stash/pull/369) ([tamalsaha](https://github.com/tamalsaha)) +- Make it clear that installer is a single command [\#365](https://github.com/appscode/stash/pull/365) ([tamalsaha](https://github.com/tamalsaha)) +- Update installer [\#364](https://github.com/appscode/stash/pull/364) ([tamalsaha](https://github.com/tamalsaha)) +- Replace initializers with mutation webhook for workloads [\#363](https://github.com/appscode/stash/pull/363) ([hossainemruz](https://github.com/hossainemruz)) +- Update chart to match RBAC best practices for charts [\#362](https://github.com/appscode/stash/pull/362) ([tamalsaha](https://github.com/tamalsaha)) +- Add checks to installer script [\#361](https://github.com/appscode/stash/pull/361) ([tamalsaha](https://github.com/tamalsaha)) +- Use admission hook helpers from kutil [\#360](https://github.com/appscode/stash/pull/360) ([tamalsaha](https://github.com/tamalsaha)) +- Fix admission webhook flag [\#359](https://github.com/appscode/stash/pull/359) ([tamalsaha](https://github.com/tamalsaha)) +- Support --enable-admission-webhook=false [\#358](https://github.com/appscode/stash/pull/358) ([tamalsaha](https://github.com/tamalsaha)) +- Support multiple webhooks of same apiversion [\#357](https://github.com/appscode/stash/pull/357) ([tamalsaha](https://github.com/tamalsaha)) +- Sync chart to stable charts repo [\#356](https://github.com/appscode/stash/pull/356) ([tamalsaha](https://github.com/tamalsaha)) +- Use restic 0.8.3 [\#355](https://github.com/appscode/stash/pull/355) ([tamalsaha](https://github.com/tamalsaha)) +- Update README.md [\#352](https://github.com/appscode/stash/pull/352) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.7.0-rc.0](https://github.com/appscode/stash/tree/0.7.0-rc.0) (2018-02-20) +[Full Changelog](https://github.com/appscode/stash/compare/0.6.4...0.7.0-rc.0) + +**Merged pull requests:** + +- Document user roles [\#348](https://github.com/appscode/stash/pull/348) ([tamalsaha](https://github.com/tamalsaha)) +- Add changelog for 0.7.0-rc.0 [\#347](https://github.com/appscode/stash/pull/347) ([tamalsaha](https://github.com/tamalsaha)) +- Add a parameter to allow disabling initializers [\#346](https://github.com/appscode/stash/pull/346) ([mcanevet](https://github.com/mcanevet)) +- Update readme to point to 0.6.4 [\#345](https://github.com/appscode/stash/pull/345) ([tamalsaha](https://github.com/tamalsaha)) +- Implement offline backup for multiple replica [\#335](https://github.com/appscode/stash/pull/335) ([hossainemruz](https://github.com/hossainemruz)) + diff --git a/content/docs/v2024.8.27/CHANGELOG-0.8.md b/content/docs/v2024.8.27/CHANGELOG-0.8.md new file mode 100644 index 0000000000..832e7c7c43 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.8.md @@ -0,0 +1,250 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.8 + name: Changelog-0.8 + parent: welcome + weight: 80 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.8/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.8/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [0.8.3](https://github.com/appscode/stash/tree/0.8.3) (2019-02-19) +[Full Changelog](https://github.com/appscode/stash/compare/0.8.2...0.8.3) + +**Closed issues:** + +- Instance label in pushgateway is deprecated - Not use HostnameGroupingKey\(\) [\#670](https://github.com/appscode/stash/issues/670) +- Design review [\#616](https://github.com/appscode/stash/issues/616) +- Rename Restic to Backup [\#320](https://github.com/appscode/stash/issues/320) + +**Merged pull requests:** + +- Update dependencies [\#681](https://github.com/appscode/stash/pull/681) ([tamalsaha](https://github.com/tamalsaha)) +- Don't add hostname label to Prometheus metrics. [\#680](https://github.com/appscode/stash/pull/680) ([tamalsaha](https://github.com/tamalsaha)) +- Pass pod annotation to deployment [\#679](https://github.com/appscode/stash/pull/679) ([tamalsaha](https://github.com/tamalsaha)) +- Fix the case for deploying using MINGW64 for windows [\#678](https://github.com/appscode/stash/pull/678) ([tamalsaha](https://github.com/tamalsaha)) +- Use onessl 0.10.0 [\#677](https://github.com/appscode/stash/pull/677) ([tamalsaha](https://github.com/tamalsaha)) +- s/rook/azure/ in possible copy/paste error. [\#669](https://github.com/appscode/stash/pull/669) ([lastcoolnameleft](https://github.com/lastcoolnameleft)) +- Fix builtin monitoring doc [\#668](https://github.com/appscode/stash/pull/668) ([hossainemruz](https://github.com/hossainemruz)) +- Don't use priority class when operator namespace is not kube-system [\#666](https://github.com/appscode/stash/pull/666) ([hossainemruz](https://github.com/hossainemruz)) +- Separate type definitions into individual files [\#646](https://github.com/appscode/stash/pull/646) ([hossainemruz](https://github.com/hossainemruz)) + +## [0.8.2](https://github.com/appscode/stash/tree/0.8.2) (2019-01-02) +[Full Changelog](https://github.com/appscode/stash/compare/0.8.1...0.8.2) + +**Fixed bugs:** + +- Fix typo in installer [\#638](https://github.com/appscode/stash/pull/638) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Backend configuration doc link broken [\#640](https://github.com/appscode/stash/issues/640) +- Architecture questions [\#635](https://github.com/appscode/stash/issues/635) +- Restart operator pod on update [\#611](https://github.com/appscode/stash/issues/611) + +**Merged pull requests:** + +- Prepare docs for 0.8.2 release [\#644](https://github.com/appscode/stash/pull/644) ([tamalsaha](https://github.com/tamalsaha)) +- Update copyright notice for 2019 [\#643](https://github.com/appscode/stash/pull/643) ([tamalsaha](https://github.com/tamalsaha)) +- Use stash.labels template in chart [\#642](https://github.com/appscode/stash/pull/642) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed broken link for bakend [\#641](https://github.com/appscode/stash/pull/641) ([hossainemruz](https://github.com/hossainemruz)) +- Only mount stash apiserver `tls.crt` into Prometheus [\#639](https://github.com/appscode/stash/pull/639) ([hossainemruz](https://github.com/hossainemruz)) +- Fix monitoring in helm + update doc to match with third-party-tools tutorial [\#637](https://github.com/appscode/stash/pull/637) ([hossainemruz](https://github.com/hossainemruz)) +- Add certificate health checker [\#636](https://github.com/appscode/stash/pull/636) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart readme [\#632](https://github.com/appscode/stash/pull/632) ([tamalsaha](https://github.com/tamalsaha)) +- Update webhook error message format for Kubernetes 1.13+ [\#631](https://github.com/appscode/stash/pull/631) ([tamalsaha](https://github.com/tamalsaha)) +- Fix typos [\#630](https://github.com/appscode/stash/pull/630) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.8.1](https://github.com/appscode/stash/tree/0.8.1) (2018-12-09) +[Full Changelog](https://github.com/appscode/stash/compare/0.8.0...0.8.1) + +**Fixed bugs:** + +- Stash chart is throwing error [\#627](https://github.com/appscode/stash/issues/627) + +**Merged pull requests:** + +- Prepare docs for 0.8.1 release [\#629](https://github.com/appscode/stash/pull/629) ([tamalsaha](https://github.com/tamalsaha)) +- Add missing validator for repository resource in chart [\#628](https://github.com/appscode/stash/pull/628) ([tamalsaha](https://github.com/tamalsaha)) + +## [0.8.0](https://github.com/appscode/stash/tree/0.8.0) (2018-12-08) +[Full Changelog](https://github.com/appscode/stash/compare/0.7.0...0.8.0) + +**Fixed bugs:** + +- Delete snapshot command does not check for snapshot's existence [\#549](https://github.com/appscode/stash/issues/549) +- Backup not triggered [\#461](https://github.com/appscode/stash/issues/461) +- Service name hardcoded in func PushgatewayURL, no metrics available [\#596](https://github.com/appscode/stash/issues/596) +- Fix extended apiserver issues with Kubernetes 1.11 [\#536](https://github.com/appscode/stash/pull/536) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly handle ignored openapi prefixes [\#533](https://github.com/appscode/stash/pull/533) ([tamalsaha](https://github.com/tamalsaha)) +- Add rbac permissions for snapshots [\#531](https://github.com/appscode/stash/pull/531) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Problem creating backups [\#588](https://github.com/appscode/stash/issues/588) +- Issue while installing stash kubernetes 1.11.2 [\#587](https://github.com/appscode/stash/issues/587) +- Hardcoded cleaner kubectl image in Helm chart [\#583](https://github.com/appscode/stash/issues/583) +- Deployed latest helm chart and getting error during sidecar creation [\#556](https://github.com/appscode/stash/issues/556) +- Minio backup fails: 'net/http: invalid header field value "..." for key Authorization' [\#547](https://github.com/appscode/stash/issues/547) +- Repository overwrite for different workload with same name in different namespace [\#539](https://github.com/appscode/stash/issues/539) +- Unexpected behavior in offline backup [\#535](https://github.com/appscode/stash/issues/535) +- Offline backup not working \(permissions\) [\#534](https://github.com/appscode/stash/issues/534) +- Support node selector for recovery job [\#515](https://github.com/appscode/stash/issues/515) +- Clarify that hostpaths are just example [\#514](https://github.com/appscode/stash/issues/514) +- Internal error occurred: failed calling admission webhook "deployment.admission.stash.appscode.com": the server could not find the requested resource [\#510](https://github.com/appscode/stash/issues/510) +- GKE page missing front matter [\#505](https://github.com/appscode/stash/issues/505) +- Could not list snapshots on kubernetes 1.8.4 [\#503](https://github.com/appscode/stash/issues/503) +- Admission webhook denied rquest: Rolebindings not found [\#501](https://github.com/appscode/stash/issues/501) +- Incorrect image name for sidecar container [\#485](https://github.com/appscode/stash/issues/485) +- Using Stash with TLS secured Minio Server Can't succeed [\#478](https://github.com/appscode/stash/issues/478) +- Add cluster name in repo path [\#374](https://github.com/appscode/stash/issues/374) +- Stash don't pass `nodeSelector` from Recovery crd to recovery Job. [\#617](https://github.com/appscode/stash/issues/617) +- Recovery task is not working [\#613](https://github.com/appscode/stash/issues/613) +- Permissions problem with the Helm chart in master branch [\#592](https://github.com/appscode/stash/issues/592) +- Add Prometheus config sample for pushgateway [\#582](https://github.com/appscode/stash/issues/582) +- Handle security context [\#566](https://github.com/appscode/stash/issues/566) +- \[Request\] Add backup details to "kubectl get" for stash objects on K8s 1.11 [\#525](https://github.com/appscode/stash/issues/525) +- matchLabels on Restic CRD not working when using hyphens in keys [\#521](https://github.com/appscode/stash/issues/521) + +**Merged pull requests:** + +- Prepare docs for 0.8.0 release [\#626](https://github.com/appscode/stash/pull/626) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs \(Minio, Rook, NFS\) [\#625](https://github.com/appscode/stash/pull/625) ([hossainemruz](https://github.com/hossainemruz)) +- Use flags.DumpAll to dump flags [\#624](https://github.com/appscode/stash/pull/624) ([tamalsaha](https://github.com/tamalsaha)) +- Set periodic analytics [\#623](https://github.com/appscode/stash/pull/623) ([tamalsaha](https://github.com/tamalsaha)) +- Fix e2e test [\#622](https://github.com/appscode/stash/pull/622) ([hossainemruz](https://github.com/hossainemruz)) +- Recovery Job: Use nodeName for DaemonSet and nodeSelector for other workloads [\#620](https://github.com/appscode/stash/pull/620) ([hossainemruz](https://github.com/hossainemruz)) +- Pass --enable-\*\*\*-webhook flags to operator [\#619](https://github.com/appscode/stash/pull/619) ([tamalsaha](https://github.com/tamalsaha)) +- Add validation webhook xray [\#618](https://github.com/appscode/stash/pull/618) ([tamalsaha](https://github.com/tamalsaha)) +- Use dynamic pushgateway url [\#614](https://github.com/appscode/stash/pull/614) ([hossainemruz](https://github.com/hossainemruz)) +- Add docs for AKS and EKS [\#609](https://github.com/appscode/stash/pull/609) ([hossainemruz](https://github.com/hossainemruz)) +- Improve monitoring facility [\#606](https://github.com/appscode/stash/pull/606) ([hossainemruz](https://github.com/hossainemruz)) +- Pass image pull secrets for cleaner job in chart [\#598](https://github.com/appscode/stash/pull/598) ([tamalsaha](https://github.com/tamalsaha)) +- Update kubernetes client libraries to 1.12.0 [\#597](https://github.com/appscode/stash/pull/597) ([tamalsaha](https://github.com/tamalsaha)) +- Support LogLevel in chart [\#594](https://github.com/appscode/stash/pull/594) ([tamalsaha](https://github.com/tamalsaha)) +- Check if Kubernetes version is supported before running operator [\#593](https://github.com/appscode/stash/pull/593) ([tamalsaha](https://github.com/tamalsaha)) +- Enable webhooks by default in chart [\#591](https://github.com/appscode/stash/pull/591) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart readme for cleaner values [\#590](https://github.com/appscode/stash/pull/590) ([tamalsaha](https://github.com/tamalsaha)) +- Fix \#583 and pushgateway version [\#584](https://github.com/appscode/stash/pull/584) ([sebastien-prudhomme](https://github.com/sebastien-prudhomme)) +- Use --pull flag with docker build [\#581](https://github.com/appscode/stash/pull/581) ([tamalsaha](https://github.com/tamalsaha)) +- Use kubernetes-1.11.3 [\#578](https://github.com/appscode/stash/pull/578) ([tamalsaha](https://github.com/tamalsaha)) +- Update CertStore [\#576](https://github.com/appscode/stash/pull/576) ([tamalsaha](https://github.com/tamalsaha)) +- Use apps/v1 apigroup in installer scripts [\#574](https://github.com/appscode/stash/pull/574) ([tamalsaha](https://github.com/tamalsaha)) +- Support pod annotations in chart [\#573](https://github.com/appscode/stash/pull/573) ([tamalsaha](https://github.com/tamalsaha)) +- Set serviceAccount for clearner job [\#572](https://github.com/appscode/stash/pull/572) ([tamalsaha](https://github.com/tamalsaha)) +- Set SecurityContext for stash sidecar [\#570](https://github.com/appscode/stash/pull/570) ([tamalsaha](https://github.com/tamalsaha)) +- Cleanup webhooks when chart is deleted [\#569](https://github.com/appscode/stash/pull/569) ([tamalsaha](https://github.com/tamalsaha)) +- Use IntHash as status.observedGeneration [\#568](https://github.com/appscode/stash/pull/568) ([tamalsaha](https://github.com/tamalsaha)) +- fix success list in grafana dashboard [\#567](https://github.com/appscode/stash/pull/567) ([unteem](https://github.com/unteem)) +- Update pipeline [\#565](https://github.com/appscode/stash/pull/565) ([tahsinrahman](https://github.com/tahsinrahman)) +- Add observedGenerationHash field [\#564](https://github.com/appscode/stash/pull/564) ([tamalsaha](https://github.com/tamalsaha)) +- fix uninstall for concourse [\#563](https://github.com/appscode/stash/pull/563) ([tahsinrahman](https://github.com/tahsinrahman)) +- Fix chart values file [\#562](https://github.com/appscode/stash/pull/562) ([tamalsaha](https://github.com/tamalsaha)) +- Improve Helm chart options [\#561](https://github.com/appscode/stash/pull/561) ([tamalsaha](https://github.com/tamalsaha)) +- Refactor concourse scripts [\#554](https://github.com/appscode/stash/pull/554) ([tahsinrahman](https://github.com/tahsinrahman)) +- Add AlreadyObserved methods [\#553](https://github.com/appscode/stash/pull/553) ([tamalsaha](https://github.com/tamalsaha)) +- Add categories support to crds [\#552](https://github.com/appscode/stash/pull/552) ([tamalsaha](https://github.com/tamalsaha)) +- Improve logging [\#551](https://github.com/appscode/stash/pull/551) ([hossainemruz](https://github.com/hossainemruz)) +- Improve doc [\#550](https://github.com/appscode/stash/pull/550) ([hossainemruz](https://github.com/hossainemruz)) +- Check for snapshot existence before delete [\#548](https://github.com/appscode/stash/pull/548) ([hossainemruz](https://github.com/hossainemruz)) +- Enable status sub resource for crd yamls [\#546](https://github.com/appscode/stash/pull/546) ([tamalsaha](https://github.com/tamalsaha)) +- Retry UpdateStatus calls [\#544](https://github.com/appscode/stash/pull/544) ([tamalsaha](https://github.com/tamalsaha)) +- Move crds to api folder [\#543](https://github.com/appscode/stash/pull/543) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor objectstore api [\#542](https://github.com/appscode/stash/pull/542) ([tamalsaha](https://github.com/tamalsaha)) +- Use kmodules.xyz/objectstore-api [\#541](https://github.com/appscode/stash/pull/541) ([tamalsaha](https://github.com/tamalsaha)) +- Fix offline backup [\#537](https://github.com/appscode/stash/pull/537) ([hossainemruz](https://github.com/hossainemruz)) +- Rename dev script [\#532](https://github.com/appscode/stash/pull/532) ([tamalsaha](https://github.com/tamalsaha)) +- Use version and additional columns for crds [\#530](https://github.com/appscode/stash/pull/530) ([tamalsaha](https://github.com/tamalsaha)) +- Don't add admission/v1beta1 group as a prioritized version [\#529](https://github.com/appscode/stash/pull/529) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to v8.0.0 [\#528](https://github.com/appscode/stash/pull/528) ([tamalsaha](https://github.com/tamalsaha)) +- Format shell scripts [\#526](https://github.com/appscode/stash/pull/526) ([tamalsaha](https://github.com/tamalsaha)) +- Enable status subresource for crds [\#524](https://github.com/appscode/stash/pull/524) ([tamalsaha](https://github.com/tamalsaha)) +- Upgrade to restic 0.9.1 [\#522](https://github.com/appscode/stash/pull/522) ([tamalsaha](https://github.com/tamalsaha)) +- Move openapi-spec to api folder [\#513](https://github.com/appscode/stash/pull/513) ([tamalsaha](https://github.com/tamalsaha)) +- Deploy operator in kube-system namespace via Helm [\#511](https://github.com/appscode/stash/pull/511) ([tamalsaha](https://github.com/tamalsaha)) +- Add togglable tabs for Installation: Script & Helm [\#509](https://github.com/appscode/stash/pull/509) ([sajibcse68](https://github.com/sajibcse68)) +- Revendor dependencies [\#508](https://github.com/appscode/stash/pull/508) ([tamalsaha](https://github.com/tamalsaha)) +- Added front matter [\#507](https://github.com/appscode/stash/pull/507) ([hossainemruz](https://github.com/hossainemruz)) +- Improve installer [\#504](https://github.com/appscode/stash/pull/504) ([tamalsaha](https://github.com/tamalsaha)) +- Use apps/v1 apigroup [\#555](https://github.com/appscode/stash/pull/555) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart installation instruction for Kubernetes 1.11 [\#527](https://github.com/appscode/stash/pull/527) ([tamalsaha](https://github.com/tamalsaha)) +- Remove status from crd.yaml [\#523](https://github.com/appscode/stash/pull/523) ([tamalsaha](https://github.com/tamalsaha)) +- Upgrade to prom/pushgateway:v0.5.2 [\#519](https://github.com/appscode/stash/pull/519) ([tamalsaha](https://github.com/tamalsaha)) +- Remove ops-address port [\#518](https://github.com/appscode/stash/pull/518) ([tamalsaha](https://github.com/tamalsaha)) +- Set cpu limits to 100m [\#517](https://github.com/appscode/stash/pull/517) ([tamalsaha](https://github.com/tamalsaha)) +- Support node selector for recovery job [\#516](https://github.com/appscode/stash/pull/516) ([tamalsaha](https://github.com/tamalsaha)) +- Fix concourse test [\#496](https://github.com/appscode/stash/pull/496) ([hossainemruz](https://github.com/hossainemruz)) diff --git a/content/docs/v2024.8.27/CHANGELOG-0.9.md b/content/docs/v2024.8.27/CHANGELOG-0.9.md new file mode 100644 index 0000000000..9d2c32a34c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-0.9.md @@ -0,0 +1,445 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-0.9 + name: Changelog-0.9 + parent: welcome + weight: 90 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-0.9/ +aliases: +- /docs/v2024.8.27/CHANGELOG-0.9/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Change Log + +## [v0.9.0-rc.2](https://github.com/stashed/stash/tree/v0.9.0-rc.2) + +[Full Changelog](https://github.com/stashed/stash/compare/v0.9.0-rc.1...v0.9.0-rc.2) + +Stash `v0.9.0-rc.2` comes with some bug fixes and improvements since `v0.9.0-rc.1` release. Please, try it and give us your valuable feedback. To install, please follow the guide [here](https://stash.run/docs/v0.9.0-rc.2/setup/install/). + +## Significant Changes + +- **Retention Policy for VolumeSnapshot:** We have implemented retention policy for VolumeSnapshot. Now, your old VolumeSnapshots will be automatically garbage collected according to retention policy. Ref: [stashed/stash#926](https://github.com/stashed/stash/pull/926). + +- **Fix Argument Passing:** We have fixed argument passing to database backup/restore commands. Ref: [stashed/mongodb#5](https://github.com/stashed/mongodb/pull/5), [stashed/postgres#17](https://github.com/stashed/postgres/pull/17), [stashed/elasticsearch#8](https://github.com/stashed/elasticsearch/pull/8), [stashed/mysql#9](https://github.com/stashed/mysql/pull/9). + +- **BackupSession API Revision:** Now a `BackupSession` can be triggered via `spec.invoker` instead of `spec.backupConfiguration` field. This breaking api change is done in preparation for upcoming `BackupBatch` crd support. Ref: [stashed/stash#890](https://github.com/stashed/stash/pull/890), [stashed/stash#931](https://github.com/stashed/stash/pull/931), [stashed/docs#44](https://github.com/stashed/docs/pull/44). + +## Issue Fixed + +- Implement retention policy for VolumeSnapshot [#808](https://github.com/stashed/stash/issues/808) +- Support elasticsearch backups [#894](https://github.com/stashed/stash/issues/) +- Chart "stash-postgres" not found in appscode index [#898](https://github.com/stashed/stash/issues/894) +- Support mysql backups [#892](https://github.com/stashed/stash/issues/892) +- Support mongodb backups [#893](https://github.com/stashed/stash/issues/893) +- RestoreSession stuck running [#895](https://github.com/stashed/stash/issues/895) +- Stash restore job fails [#914](https://github.com/stashed/stash/issues/914) + +## Pull Request Merged + +**[stashed/stash](https://github.com/stashed/stash):** + +- Add release checklist issue template [#934](https://github.com/stashed/stash/pull/934) +- Volume e2e test github action [#933](https://github.com/stashed/stash/pull/933) +- Fix BackupSession additional print column [#932](https://github.com/stashed/stash/pull/932) +- Remove spec.backupConfiguration from BackupSession [#931](https://github.com/stashed/stash/pull/931) +- Update e2e tests to run on GitHub actions [#917](https://github.com/stashed/stash/pull/917) +- Enable make ci [#928](https://github.com/stashed/stash/pull/928) +- Don't restart workload on backup pause+Use ImagePullPolicy: "Always" for Function-Task model [#929](https://github.com/stashed/stash/pull/929) +- Add status.observedGeneration [#927](https://github.com/stashed/stash/pull/927) +- Implement RetentionPolicy for VolumeSnapshot [#926](https://github.com/stashed/stash/pull/926) +- Verify generated files are up to date [#925](https://github.com/stashed/stash/pull/925) +- Update and rename go.yml to ci.yml [#922](https://github.com/stashed/stash/pull/922) +- Add probe and BackupBatch api [#890](https://github.com/stashed/stash/pull/890) +- Use core package from k8s.io/api repo [#921](https://github.com/stashed/stash/pull/921) + +**[stashed/docs](https://github.com/stashed/docs):** + +- Use `spec.invoker` instead of `spec.backupConfiguration` in BackupSession [stashed/docs#44](https://github.com/stashed/docs/pull/44) + +**[stashed/installer](https://github.com/stashed/installer):** + +- Prepare for release v0.9.0-rc.2 [stashed/installer#16](https://github.com/stashed/installer/pull/16) +- Remove --enable-status-subresource flag [stashed/installer#15](https://github.com/stashed/installer/pull/15) +- Add delete permission to VS ClusterRole [stashed/installer#13](https://github.com/stashed/installer/pull/13) +- Ignore error while delete resources from uninstaller script [stashed/installer#14](https://github.com/stashed/installer/pull/14) + +**[stashed/catalog](https://github.com/stashed/catalog):** + +- Fix catalog installer (when helm is not installed) [stashed/catalog#10](https://github.com/stashed/catalog/pull/10) + +**[stashed/postgres](https://github.com/stashed/postgres):** + +- Fix BackupSession's Print Columns [stashed/postgres#20](https://github.com/stashed/postgres/pull/20) +- Enable make ci [stashed/postgres#19](https://github.com/stashed/postgres/pull/19) +- Remove `--enable-status-subresource` flag [stashed/postgres#18](https://github.com/stashed/postgres/pull/18) +- Fix arguments passing [stashed/postgres#17](https://github.com/stashed/postgres/pull/17) + +**[stashed/mongodb](https://github.com/stashed/mongodb):** + +- Fix BackupSession's Print Columns [stashed/mongodb#9](https://github.com/stashed/mongodb/pull/9) +- Enable make ci [stashed/mongodb#8](https://github.com/stashed/mongodb/pull/8) +- Remove `--enable-status-subresource` flag [stashed/mongodb#7](https://github.com/stashed/mongodb/pull/7) +- Update totalHosts from backup/restore process [stashed/mongodb#6](https://github.com/stashed/mongodb/pull/6) +- Fix argument passing [stashed/mongodb#5](https://github.com/stashed/mongodb/pull/5) + +**[stashed/mysql](https://github.com/stashed/mysql):** + +- Fix BackupSession's Print Columns [stashed/mysql#12](https://github.com/stashed/mysql/pull/12) +- Enable make ci [stashed/mysql#11](https://github.com/stashed/mysql/pull/11) +- Remove `--enable-status-subresource` flag [stashed/mysql#10](https://github.com/stashed/mysql/pull/10) +- Fix argument passing [stashed/mysql#9](https://github.com/stashed/mysql/pull/9) + +**[stashed/elasticsearch](https://github.com/stashed/elasticsearch):** + +- Fix BackupSession's Print Columns [stashed/elasticsearch#11](https://github.com/stashed/elasticsearch/pull/11) +- Enable make ci [stashed/elasticsearch#10](https://github.com/stashed/elasticsearch/pull/10) +- Remove --enable-status-subresource flag [stashed/elasticsearch#9](https://github.com/stashed/elasticsearch/pull/9) +- Fix argument passing [stashed/elasticsearch#8](https://github.com/stashed/elasticsearch/pull/8) + +## [v0.9.0-rc.1](https://github.com/stashed/stash/tree/v0.9.0-rc.1) + +[Full Changelog](https://github.com/stashed/stash/compare/v0.9.0-rc.0...v0.9.0-rc.1) + +Stash `v0.9.0-rc.1` comes with documentation and respective charts for addons to backup databases. It also comes with some bug fixes since `v0.9.0-rc.0` release. We have also introduced a `kubectl` plugin for Stash in this release. Please, try it and give us your valuable feedback. To install, please follow the guide [here](https://stash.run/docs/v0.9.0-rc.1/setup/install/). + +## Significant Changes + +- **Addon Support:** Stash addons enable users to extend it's functionality to backup/restore any type of custom workloads. This release includes respective documentations and charts for `PostgreSQL`, `MySQL`, `MongoDB`, and `Elasticsearch` databases. This enables Stash to backup various [KubeDB](https://kubedb.com/) supported databases. You can also write your own addon to backup your custom target. We will include a guide on how to build addon for Stash in a future release. + +- **Stash `kubectl` Plugin (Alpha):** We have introduced an experimental Stash `kubectl` plugin. This will help you to unlock repository, trigger instant backup and copy various Stash resources between namespace and more. + +- **Introduce BackupHistoryLimit:** Now, you can configure how many `BackupSession` and associate resources (Job, PVC etc) to keep for each backup target. By default, Stash will keep only the history of last backup for debugging purpose. You can configure it using `spec.backupHistoryLimit` field of `BackupConfiguration`. + +- **Introduce InterimVolumeTemplate:** We have introduced a new field called `InterimVolumeTemplate` that can be used to pass a PVC template for storing temporary backup/restore data before uploading to backup or injecting into target. For more details, please visit [here](https://stash.run/docs/v0.9.0-rc.1/concepts/crds/backupconfiguration/). + +- **Allow `subPath` in Auto-Backup Annotation:** Now, you can provide `subPath` in auto-backup annotation. For more details, please check [here](https://stash.run/docs/v0.9.0-rc.1/guides/latest/auto-backup/workload/). + +- **Use Kubebuilder to Generate CRDs:** We have moved to [kubernetes-sigs/kubebuilder](https://github.com/kubernetes-sigs/kubebuilder) for generating CRDs for Stash. + +## Issues Fixed + +- subPath stash autobackup annotation [#868](https://github.com/stashed/stash/issues/868) +- GKE Alpha cluster need to run as "fsGroup: 65535" [#873](https://github.com/stashed/stash/issues/873) +- Can't evaluate field version in AppBinding [#876](https://github.com/stashed/stash/issues/876) +- Neither --kubeconfig nor --master was specified [#878](https://github.com/stashed/stash/issues/878) +- Prometheus metrics missing source of the backup [#869](https://github.com/stashed/stash/issues/869) +- Waiting until stash apiservice is available on GKE with private nodes [#875](https://github.com/stashed/stash/issues/875) +- nice` and `ionice` is missing in distroless image [#882](https://github.com/stashed/stash/issues/882) +- BackupBlueprint not creating Repository or BackupConfiguration [#877](https://github.com/stashed/stash/issues/877) +- mysql stash backup error: unexpected end of JSON input [#880](https://github.com/stashed/stash/issues/880) +- How do I override the folder name stash recovers from [#861](https://github.com/stashed/stash/issues/861) +- Cannot pull image stashed/stash-mysql:8.0.14 [#879](https://github.com/stashed/stash/issues/879) +- Nil pointer check is missing in metric handling [#881](https://github.com/stashed/stash/issues/881) +- [0.9.0-rc.0] Cannot list snapshots [#901](https://github.com/stashed/stash/issues/901) +- Support interim data volume in BackupConfiguration [#906](https://github.com/stashed/stash/issues/906) +- Stash not backing up all files [#899](https://github.com/stashed/stash/issues/899) +- [feature] clean up objects [#867](https://github.com/stashed/stash/issues/867) +- Stash addon doc organization [#856](https://github.com/stashed/stash/issues/856) +- Generate swagger.json for v1beta1 [#896](https://github.com/stashed/stash/issues/896) +- Stash restore job fails [#914](https://github.com/stashed/stash/issues/914) +- RestoreSession stuck running [#895](https://github.com/stashed/stash/issues/895) +- Support mongodb backups [#893](https://github.com/stashed/stash/issues/893) +- Support mysql backups [#892](https://github.com/stashed/stash/issues/892) + +## Pull Request Merged + +- Bring back dependency to github.com/golang/protobuf@v1.2.0 [#918](https://github.com/stashed/stash/pull/918) +- Run e2e tests using GitHub actions [#909](https://github.com/stashed/stash/pull/909) +- Generate swagger.json for v1beta1 [#916](https://github.com/stashed/stash/pull/916) +- Add release pipeline [#915](https://github.com/stashed/stash/pull/915) +- Fix Restore PVC using Task Function method [#897](https://github.com/stashed/stash/pull/897) +- Fix VolumeSnapshot Issues [#912](https://github.com/stashed/stash/pull/912) +- Add Kubebuilder annotations [#911](https://github.com/stashed/stash/pull/911) +- Use kubebuilder to generate crd yamls [#843](https://github.com/stashed/stash/pull/843) +- Introduce InterimVolumeTemplate and BackupHistoryLimit field. [#907](https://github.com/stashed/stash/pull/907) +- Make RetentionPolicy required in v1beta1 api [#905](https://github.com/stashed/stash/pull/905) +- Enable GitHub actions [#903](https://github.com/stashed/stash/pull/903) +- Fix snapshot listing for local backend [#902](https://github.com/stashed/stash/pull/902) +- Improve Error Handling + Code refactor [#891](https://github.com/stashed/stash/pull/891) +- Add `NICE` and `IONICE` into distroless image [#883](https://github.com/stashed/stash/pull/883) +- Improve metrics handling + make update status uniform [#872](https://github.com/stashed/stash/pull/872) +- Use default fsGroup: 65535 [#874](https://github.com/stashed/stash/pull/874) +- Add DumpEnv func to Restic Config file [#870](https://github.com/stashed/stash/pull/870) +- Allow to specify subPath in auto-backup annotation + use default mounts and target paths for PVC [#871](https://github.com/stashed/stash/pull/871) + +## [v0.9.0-rc.0](https://github.com/stashed/stash/tree/v0.9.0-rc.0) + +[Full Changelog](https://github.com/stashed/stash/compare/0.8.3...v0.9.0-rc.0) + +We are very excited to announce Stash `v0.9.0-rc.0`. This release introduces `v1beta1` API and a design overhaul. The new API and design enable Stash to support the use cases that were not possible before. This makes Stash more powerful, transparent, extensible and customizable. We are expecting that this new API will graduate to GA after some maturity. Check out the new architecture from [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/what-is-stash/architecture.md). + +### What's New + +This release introduces lots of new features and changes. A summary of these new features is given below: + +#### New Custom Resources + +The following custom resources have been introduced in this release: + +- [BackupConfiguration](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/backupconfiguration.md). +- [BackupSession](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/backupsession.md). +- [RestoreSession](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/restoresession.md). +- [Function](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/function.md). +- [Task](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/task.md). +- [BackupBlueprint](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/backupblueprint.md). +- [AppBinding](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/crds/appbinding.md). + +#### New Features + +In addition to improving existing features, this release introduces the following new features: + +- **Backup & Restore Stand-alone PVC :** + Stash now supports taking backup of a stand-alone PVC. To learn more about how Stash takes backup of a stand-alone PVC, please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/volumes/overview.md). + +- **Backup & Restore Databases :** + Stash now can backup PostgreSQL, MongoDB, Elasticsearch and MySQL databases in both stand-alone and clustered mode. To learn more about how Stash takes backup of a database, please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/databases/overview.md). + +- **VolumeSnapshot :** + Now, you can take a scheduled snapshot of the volumes of a workload using Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) API. Check out how volume snapshotting works in Stash from [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/volumesnapshot/overview.md). + +- **Instant Backup :** + You can now trigger a backup instantly. To learn how, please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/volumesnapshot/overview.md). + +- **Auto Backup :** + Now, Stash will let you configure a common template to backup similar types of target. You will require to add just a few annotations to the targeted workload to enable backup for it. Want to know how? Please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/auto-backup/overview.md). + +- **Support PSP Enabled Cluster :** + Stash now supports PSP enabled cluster. + +- **Improved Prometheus Metrics :** + We have improved Prometheus metrics in this release. Check out the new metrics from [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/monitoring/overview.md). + +- **Support REST Server as Backend :** + Stash now supports REST server as backend. To learn how to configure REST backend, please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/guides/latest/backends/rest.md). + +- **KubeDB Integration :** + Stash now seemingly integrates with [KubeDB](https://kubedb.com/). It is now recommended tool to backup & restore KubeDB supported databases. + +For a complete feature list of this release, please visit [here](https://github.com/stashed/docs/blob/v0.9.0-rc.0/docs/concepts/what-is-stash/overview.md). + +### Significant Changes + +- Stash now has been moved from [appscode](https://github.com/appscode) Github organization to its own organization. New home for Stash is [stashed](https://github.com/stashed) organization. +- We have split the original `appscode/stash` repository into multiple repositories ([stashed/stash](https://github.com/stashed/stash), [stashed/installer](https://github.com/stashed/installer), [stashed/docs](https://github.com/stashed/docs)). This enables us to push emergency fixes to installer and docs without requiring to cut a new release. +- Now Stash uses a more industry-standard `Makefile` based build process. This makes building Stash from source code simple and easy ([\#800](https://github.com/stashed/stash/pull/800)). +- We have added ARM architecture support in this release. Thanks to @carlosedp ([\#802](https://github.com/stashed/stash/pull/802)). +- We now use [Docker manifest](https://docs.docker.com/engine/reference/commandline/manifest/) to build Stash docker images. Hence, Stash docker images are now platform aware. You don't have to worry about your platform architecture. Docker will take care of it ([\#802](https://github.com/stashed/stash/pull/802)). +- We have updated [restic](https://restic.net/) version from `0.8.3` to `0.9.5` ([\#789](https://github.com/stashed/stash/pull/789)). +- We have upgraded Kubernetes client to `v1.14.0` ([\#775](https://github.com/stashed/stash/pull/775)). +- Now Stash uses `failurePolicy: Ignore` in webhooks for Kubernetes official resources. So, Stash will no longer cause any problem for creating new Kubernetes resources when it is not ready ([\#726](https://github.com/stashed/stash/pull/726)). +- As RBAC is now default in most of the Kubenetes cluster and creating RBAC resources in an RBAC disabled cluster does not cause any problem, we have removed `--rbac` flag. Now, Stash will always start in RBAC enabled mode ([\#761](https://github.com/stashed/stash/pull/761)). +- We have moved to [go mod](https://github.com/golang/go/wiki/Modules) from [glide](https://github.com/Masterminds/glide) for dependency management ([\#775](https://github.com/stashed/stash/pull/775)). +- We have changed Stash package path to `stash.appscode.dev/stash` ([\#776](https://github.com/stashed/stash/pull/776)). + +### Upgrading from 0.8.3 + +If you are upgrading Stash from `0.8.3` to this version, pay attention to the following things: + +**What will work:** +- Exiting scheduled backup will continue to work. +- Scheduling new backup using Restic crd will work. +- Restoring the already backed up data using Recovery crd will work. + +**What will not work:** +- Restoring the data that was backed up using old API (`Restic`) with the new API (`RestoreSession`) will not work. +- Restoring the data that was backed up using new API (`BackupConfiguration`) with the old API (`Recovery`) will not work. +- Using new API (`BackupConfiguration` ) to backup into already existing Repository will not work. Stash will upload all targeted data again into the backend. Old snapshots will not be usable any more. +- Old Grafana dashboard will not work with new metrics. + +### Issues Fixed + +- Sidecar RoleBinding is not being created when Mutating Webhook is enabled [\#395](https://github.com/stashed/stash/issues/395) +- Cannot deploy stash with helm@3 [\#822](https://github.com/stashed/stash/issues/822) +- Restore PVCs from templates using Restic [\#784](https://github.com/stashed/stash/issues/784) +- Handle restored files permission properly [\#733](https://github.com/stashed/stash/issues/733) +- Use restic 0.9.5 [\#781](https://github.com/stashed/stash/issues/781) +- Support PSP or SCC (openshift) enabled clusters [\#462](https://github.com/stashed/stash/issues/462) +- Configure environment variables (or proxy settings) on restic and recovery CRDs [#621](https://github.com/stashed/stash/issues/621) +- Proposal: Move cluster backup part from Kubed to Stash [\#601](https://github.com/stashed/stash/issues/601) +- error: unable to retrieve the complete list of server APIs: admission.stash.appscode.com/v1alpha1: the server is currently unable to handle the request, repositories.stash.appscode.com/v1alpha1: the server is currently unable to handle the request [\#785](https://github.com/stashed/stash/issues/785) +- Internal error occurred: failed calling webhook "deployment.admission.stash.appscode.com": the server is currently unable to handle the request [\#692](https://github.com/stashed/stash/issues/692) +- MutatingWebhooks must be without side-effect [\#758](https://github.com/stashed/stash/issues/758) +- Targeted Workload stuck in terminating state after deleted a Restic CRD [\#672](https://github.com/stashed/stash/issues/672) +- OSM config and file permission issue [\#766](https://github.com/stashed/stash/issues/766) +- Remove `--rbac` flag [\#705](https://github.com/stashed/stash/issues/705) +- Use FailurePolicy ignore for K8s resource webhooks? [\#709](https://github.com/stashed/stash/issues/709) +- FR: Add possibility to change settings of Restic [\#545](https://github.com/stashed/stash/issues/545) +- Allow setting `nice` and `ionice` for backup command [\#366](https://github.com/stashed/stash/issues/366) +- Cleanup old cache after backup [\#703](https://github.com/stashed/stash/issues/703) +- Support Restic Rest server as backend. [\#126](https://github.com/stashed/stash/issues/126) + +### Pull Request Summary + +- Remove the `bs` short name for BackupSession [\#859](https://github.com/stashed/stash/pull/859) ([tamalsaha](https://github.com/tamalsaha)) +- Use github.com/golang/protobuf@v1.2.0 [\#855](https://github.com/stashed/stash/pull/855) ([tamalsaha](https://github.com/tamalsaha)) +- Fix resolving Task when volumeClaimTemplate is specified in RestoreSession [\#852](https://github.com/stashed/stash/pull/852) ([hossainemruz](https://github.com/hossainemruz)) +- Use POD_ORDINAL env var to restore using PVC template [\#849](https://github.com/stashed/stash/pull/849) ([suaas21](https://github.com/suaas21)) +- Pass replicas from RestoreSession to Function [\#848](https://github.com/stashed/stash/pull/848) ([hossainemruz](https://github.com/hossainemruz)) +- Rename BackupConfigurationTemplate to BackupBlueprint [\#847](https://github.com/stashed/stash/pull/847) ([hossainemruz](https://github.com/hossainemruz)) +- Use variable for version in BackupConfigurationTemplate name [\#846](https://github.com/stashed/stash/pull/846) ([hossainemruz](https://github.com/hossainemruz)) +- New variable from type field of AppBinding + Fix RoleBinding name conflict with KubeDB [\#845](https://github.com/stashed/stash/pull/845) ([hossainemruz](https://github.com/hossainemruz)) +- Fix Platforms Issue [\#844](https://github.com/stashed/stash/pull/844) ([suaas21](https://github.com/suaas21)) +- Add support to restore using volumeClaimTemplate in Function-Task model [\#841](https://github.com/stashed/stash/pull/841) ([hossainemruz](https://github.com/hossainemruz)) +- Add GetSnapshotSize() function [\#839](https://github.com/stashed/stash/pull/839) ([hossainemruz](https://github.com/hossainemruz)) +- Fix travis build [\#837](https://github.com/stashed/stash/pull/837) ([tamalsaha](https://github.com/tamalsaha)) +- Update azure-sdk-for-go dependencies [\#836](https://github.com/stashed/stash/pull/836) ([tamalsaha](https://github.com/tamalsaha)) +- Fix RestoreSession replicas logic [\#835](https://github.com/stashed/stash/pull/835) ([suaas21](https://github.com/suaas21)) +- Use robfig/cron@v3 [\#834](https://github.com/stashed/stash/pull/834) ([tamalsaha](https://github.com/tamalsaha)) +- Add support for parallel backup & restore [\#833](https://github.com/stashed/stash/pull/833) ([hossainemruz](https://github.com/hossainemruz)) +- Fix restore Job parallel execution [\#832](https://github.com/stashed/stash/pull/832) ([suaas21](https://github.com/suaas21)) +- Remove unused code [\#829](https://github.com/stashed/stash/pull/829) ([tamalsaha](https://github.com/tamalsaha)) +- Generate docs files inside docs repo [\#828](https://github.com/stashed/stash/pull/828) ([tamalsaha](https://github.com/tamalsaha)) +- Add License notice to makefile [\#825](https://github.com/stashed/stash/pull/825) ([tamalsaha]https://github.com/tamalsaha()) +- Create default Functions and Tasks from operator [\#824](https://github.com/stashed/stash/pull/824) ([hossainemruz](https://github.com/hossainemruz)) +- Fix default securityContext passing to restore init-container/job [\#823](https://github.com/stashed/stash/pull/823) ([hossainemruz](https://github.com/hossainemruz)) +- Fix restore job RBAC [\#821](https://github.com/stashed/stash/pull/821) ([hossainemruz](https://github.com/hossainemruz)) +- Fixed volumeSnapshot Error Issue [\#819](https://github.com/stashed/stash/pull/819) ([suaas21](https://github.com/suaas21)) +- Always attempt to pull a newer image for `make container` [\#818](https://github.com/stashed/stash/pull/818) ([tamalsaha](https://github.com/tamalsaha)) +- Make --image-tag a required flag. [\#817](https://github.com/stashed/stash/pull/817 ) ([tamalsaha](https://github.com/tamalsaha)) +- Add PusgatewayURL input for Functions [\#816](https://github.com/stashed/stash/pull/816) ([hossainemruz](https://github.com/hossainemruz)) +- Add TARGET_RESOURCE variable for BackupConfigurationTemplate [\#814](https://github.com/stashed/stash/pull/814) ([hossainemruz](https://github.com/hossainemruz)) +- Add make install, uninstall, purge commands [\#813](https://github.com/stashed/stash/pull/813) ([tamalsaha](https://github.com/tamalsaha)) +- Move chart & deploy scripts to github.com/stashed/installer [\#811](https://github.com/stashed/stash/pull/811) ([tamalsaha](https://github.com/tamalsaha)) +- Move docs to github.com/stashed/docs repo [\#810](https://github.com/stashed/stash/pull/810) ([tamalsaha](https://github.com/tamalsaha)) +- Restore PVCs from templates using Restic [\#809](https://github.com/stashed/stash/pull/809) ([hossainemruz](https://github.com/hossainemruz)) +- Move HandleResticError to util package [\#806](https://github.com/stashed/stash/pull/806) ([tamalsaha](https://github.com/tamalsaha)) +- Remove canary support [\#805](https://github.com/stashed/stash/pull/805) ([tamalsaha]https://github.com/tamalsaha()) +- Fix travis build [\#804](https://github.com/stashed/stash/pull/804) ([tamalsaha](https://github.com/tamalsaha)) +- Update Version.go [\#803](https://github.com/stashed/stash/pull/803) ([tamalsaha](https://github.com/tamalsaha)) +- Added ARM64 support to the install script and manifest [\#802](https://github.com/stashed/stash/pull/802) ([tamalsaha](https://github.com/tamalsaha)) +- Pass labels to offshoot + add generic offshoot labels [\#801](https://github.com/stashed/stash/pull/801) ([hossainemruz](https://github.com/hossainemruz)) +- Add Makefile [\#800](https://github.com/stashed/stash/pull/800) ([tamalsaha](https://github.com/tamalsaha)) +- Skip BackupSession creation if target does not exist + use timestamp … [\#797](https://github.com/stashed/stash/pull/797) ([hossainemruz](https://github.com/hossainemruz)) +- Use absolute path as aliases for reference docs. [\#796](https://github.com/stashed/stash/pull/796) ([tamalsaha](https://github.com/tamalsaha)) +- Remove importance of order of rule in RestoreSession [\#795](https://github.com/stashed/stash/pull/795) ([hossainemruz](https://github.com/hossainemruz)) +- Use restic 0.9.5 [\#789](https://github.com/stashed/stash/pull/789) ([hossainemruz](https://github.com/hossainemruz)) +- VolumeSnapshot [\#787](https://github.com/stashed/stash/pull/787) ([suaas21](https://github.com/suaas21)) +- Fix: User and group creation of stash for mongodb and mysql [\#786](https://github.com/stashed/stash/pull/786) ([the-redback](https://github.com/the-redback)) +- Update backup manager [\#782](https://github.com/stashed/stash/pull/782) ([tamalsaha]https://github.com/tamalsaha()) +- Configure Env variables for Functions [\#780](https://github.com/stashed/stash/pull/780) ([tamalsaha](https://github.com/tamalsaha)) +- Fix rest backend for workloads + add more authentication method for swift backend [\#778](https://github.com/stashed/stash/pull/778) ([hossainemruz](https://github.com/hossainemruz)) +- Update package path to stash.appscode.dev/stash [\#776](https://github.com/stashed/stash/pull/776) ([tamalsaha](https://github.com/tamalsaha)) +- Update to k8s 1.14.0 client libraries using go.mod [\#775](https://github.com/stashed/stash/pull/775) ([tamalsaha](https://github.com/tamalsaha)) +- MutatingWebhooks must be without side-effect [\#773](https://github.com/stashed/stash/pull/773) ([suaas21](https://github.com/suaas21)) +- Introduce VolumeSnapshot APIs [\#772](https://github.com/stashed/stash/pull/772) ([hossainemruz](https://github.com/hossainemruz)) +- Use osm pkg from kmodules/objectstore-api [\#770](https://github.com/stashed/stash/pull/770) ([tamalsaha](https://github.com/tamalsaha)) +- Remove --rbac flag [\#761](https://github.com/stashed/stash/pull/761) ([suaas21](https://github.com/suaas21)) +Skip creating/processing backup-session when backup-config is paused [\#759](https://github.com/stashed/stash/pull/759) ([diptadas](https://github.com/diptadas)) +- Add "Supported Backends" doc to new guides [\#756](https://github.com/stashed/stash/pull/756) ([hossainemruz](https://github.com/hossainemruz)) +- Add guides template for new design [\#755](https://github.com/stashed/stash/pull/755) ([hossainemruz](https://github.com/hossainemruz)) +- Run restic commands using docker [\#754](https://github.com/stashed/stash/pull/754) ([diptadas](https://github.com/diptadas)) +- Stash v1beta1 E2E test for PVC [\#753](https://github.com/stashed/stash/pull/753) ([suaas21](https://github.com/suaas21)) +- Update Kubernetes client libraries to 1.13.5 [\#752](https://github.com/stashed/stash/pull/752) [https://github.com/stashed/stash/pull/752] ([tamalsaha](https://github.com/tamalsaha)) +- Enable pipefail and update restore yamls [\#750](https://github.com/stashed/stash/pull/750) ([diptadas](https://github.com/diptadas)) +- Implement snapshots for v1beta1 api [\#749](https://github.com/stashed/stash/pull/749) ([diptadas](https://github.com/diptadas)) +- Stash v1beta1 E2E test for ReplicaSet [\#747](https://github.com/stashed/stash/pull/747) ([suaas21](https://github.com/suaas21)) +- Apply nice/ionice settings from env [\#746](https://github.com/stashed/stash/pull/746) ([diptadas](https://github.com/diptadas)) +- Fixed scratch-dir, output-dir and hostname in functions/tasks yamls [\#744](https://github.com/stashed/stash/pull/744) ([diptadas](https://github.com/diptadas)) +- Stash v1beta1 E2E test for ReplicationController [#742](https://github.com/stashed/stash/pull/742) ([suaas21](https://github.com/suaas21)) +- Stash v1beta1 E2E test for DaemonSet [\#741](https://github.com/stashed/stash/pull/741) ([suaas21](https://github.com/suaas21)) +- Update concept doc [\#739](https://github.com/stashed/stash/pull/739) ([hossainemruz](https://github.com/hossainemruz)) +- Stash V1beta1 E2E test for StatefulSet [\#737](https://github.com/stashed/stash/pull/737) ([suaas21](https://github.com/suaas21)) +- Attach volume for local backend [\#736](https://github.com/stashed/stash/pull/736) ([diptadas](https://github.com/diptadas)) +- Add Stash CLI [\#734](https://github.com/stashed/stash/pull/734) ([diptadas](https://github.com/diptadas)) +- Fix openapi path prefixes for validators and mutators [\#732](https://github.com/stashed/stash/pull/732) ([tamalsaha](https://github.com/tamalsaha)) +- Add max-connections for GCS, Azure, B2 backend [\#730](https://github.com/stashed/stash/pull/730) ([diptadas](https://github.com/diptadas)) +- Support PSP enabled cluster [\#729](https://github.com/stashed/stash/pull/729) ([hossainemruz](https://github.com/hossainemruz)) +- Use FailurePolicy ignore for K8s resource webhooks [\#726](https://github.com/stashed/stash/pull/726) ([diptadas](https://github.com/diptadas)) +- Rename admission webhooks to avoid name collision [\#725](https://github.com/stashed/stash/pull/725) ([diptadas](https://github.com/diptadas)) +- Don't write secret data inside temp dir [\#724](https://github.com/stashed/stash/pull/724) ([diptadas](https://github.com/diptadas)) +- Add support for backup cluster resources YAML [\#721](https://github.com/stashed/stash/pull/721) ([hossainemruz](https://github.com/hossainemruz)) +- Add TempDir and PSP settings for Function [\#720](https://github.com/stashed/stash/pull/720) ([tamalsaha](https://github.com/tamalsaha)) +- Apply EmptyDir settings to TmpDir [\#719](https://github.com/stashed/stash/pull/719) ([diptadas](https://github.com/diptadas)) +- Use cleanup-cache flag [\#717](https://github.com/stashed/stash/pull/717) ([diptadas](https://github.com/diptadas)) +- Use ionice and nice with Restic CMD [\#716](https://github.com/stashed/stash/pull/716) ([diptadas](https://github.com/diptadas)) +- Add support for OpenShift DeploymentConfig [\#714](https://github.com/stashed/stash/pull/714) ([hossainemruz](https://github.com/hossainemruz)) +- Add support for rest backend [\#713](https://github.com/stashed/stash/pull/713) ([diptadas](https://github.com/diptadas)) +- Stash V1beta1 E2E test for Deployment [\#710](https://github.com/stashed/stash/pull/710) ([suaas21](https://github.com/suaas21)) +- Backup and restore Elasticsearch [\#702](https://github.com/stashed/stash/pull/702) ([diptadas](https://github.com/diptadas)) +- Add BackupSession Controller for Sidecar [\#701](https://github.com/stashed/stash/pull/701) ([suaas21](https://github.com/suaas21)) +- Backup and restore Mongo DB [\#699](https://github.com/stashed/stash/pull/699) ([diptadas](https://github.com/diptadas)) +- Backup and restore MySQL DB [\#696](https://github.com/stashed/stash/pull/696) ([diptadas](https://github.com/diptadas)) +- Backup and restore Postgres DB [\#695](https://github.com/stashed/stash/pull/695) ([diptadas](https://github.com/diptadas)) +- Backup from stdin and dump to stdout [\#694](https://github.com/stashed/stash/pull/694) ([diptadas](https://github.com/diptadas)) +- Post backup/restore status update [\#691](https://github.com/stashed/stash/pull/691) ([diptadas](https://github.com/diptadas)) +- Use ContainerRuntimeSettings in Function spec [\#689](https://github.com/stashed/stash/pull/689) ([diptadas](https://github.com/diptadas)) +- Fix v1beta1 api for BackupConfigurationTemplate [\#688](https://github.com/stashed/stash/pull/688) ([hossainemruz](https://github.com/hossainemruz)) +- Update Kubernetes client libraries to 1.13.0 [\#687](https://github.com/stashed/stash/pull/687) ([tamalsaha](https://github.com/tamalsaha)) +- Backup and restore PVC [\#676](https://github.com/stashed/stash/pull/676) ([diptadas](https://github.com/diptadas)) +- Update workload controller for new design [\#675](https://github.com/stashed/stash/pull/675) ([hossainemruz](https://github.com/hossainemruz)) +- Resolve tasks for backup/restore sessions [\#674](https://github.com/stashed/stash/pull/674) ([diptadas](https://github.com/diptadas)) +- Add restic wrapper library [\#673](https://github.com/stashed/stash/pull/673) ([hossainemruz](https://github.com/hossainemruz)) +- Add BackupConfiguration Controller [\#671](https://github.com/stashed/stash/pull/671) ([suaas21](https://github.com/suaas21)) +- Introduce v1beta1 api [\#647](https://github.com/stashed/stash/pull/647) ([hossainemruz](https://github.com/hossainemruz)) diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.07.08-beta.0.md b/content/docs/v2024.8.27/CHANGELOG-v2020.07.08-beta.0.md new file mode 100644 index 0000000000..da57cdf0b2 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.07.08-beta.0.md @@ -0,0 +1,1205 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.07.08-beta.0 + name: Changelog-v2020.07.08-beta.0 + parent: welcome + weight: 20200708 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.07.08-beta.0/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.07.08-beta.0/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.07.08-beta.0 (2020-07-08) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0-beta.0](https://github.com/stashed/apimachinery/releases/tag/v0.10.0-beta.0) + +- [843421e4](https://github.com/stashed/apimachinery/commit/843421e4) Show AppsCode in copyright file header (#26) +- [ad462cc4](https://github.com/stashed/apimachinery/commit/ad462cc4) Update to Kubernetes v1.18.3 (#25) +- [28d53699](https://github.com/stashed/apimachinery/commit/28d53699) Update update-release-tracker.sh +- [34624044](https://github.com/stashed/apimachinery/commit/34624044) Update update-release-tracker.sh +- [5f5de63c](https://github.com/stashed/apimachinery/commit/5f5de63c) Fix openapi path (#24) +- [6e0ad5f8](https://github.com/stashed/apimachinery/commit/6e0ad5f8) Add script to update release tracker on pr merge (#23) +- [cbf9b376](https://github.com/stashed/apimachinery/commit/cbf9b376) Update .kodiak.toml +- [d12b3d4b](https://github.com/stashed/apimachinery/commit/d12b3d4b) Update to Kubernetes v1.18.3 (#21) +- [1956a312](https://github.com/stashed/apimachinery/commit/1956a312) Update to Kubernetes v1.18.3 +- [c3966002](https://github.com/stashed/apimachinery/commit/c3966002) Unwrap top level api folder (#20) +- [5ba03fb5](https://github.com/stashed/apimachinery/commit/5ba03fb5) Update to Kubernetes v1.18.3 (#19) +- [abeb620e](https://github.com/stashed/apimachinery/commit/abeb620e) Update to Kubernetes v1.18.3 +- [6fdf8a60](https://github.com/stashed/apimachinery/commit/6fdf8a60) Enable https://kodiakhq.com (#13) +- [479258ed](https://github.com/stashed/apimachinery/commit/479258ed) Update dev scripts (#12) +- [a85ced99](https://github.com/stashed/apimachinery/commit/a85ced99) Merge pull request #11 from stashed/k8s-gomod-refresher-1591208266 +- [82df6f26](https://github.com/stashed/apimachinery/commit/82df6f26) Update to Kubernetes v1.18.3 +- [788f6921](https://github.com/stashed/apimachinery/commit/788f6921) Add default annotation for Snapshotter (#9) +- [d2f3f5d4](https://github.com/stashed/apimachinery/commit/d2f3f5d4) Remove defaults from crd v1beta1 YAML (#8) +- [1a09ffde](https://github.com/stashed/apimachinery/commit/1a09ffde) Update dependencies +- [58525b4b](https://github.com/stashed/apimachinery/commit/58525b4b) Update dependencies +- [c34c2ec1](https://github.com/stashed/apimachinery/commit/c34c2ec1) Generate both v1beta1 and v1 CRD YAML (#7) +- [e81205a3](https://github.com/stashed/apimachinery/commit/e81205a3) Bring back mistakenly removed SetRecoveryStats +- [5f8cf3a6](https://github.com/stashed/apimachinery/commit/5f8cf3a6) Merge pull request #6 from stashed/k-1.18.3 +- [723f4de9](https://github.com/stashed/apimachinery/commit/723f4de9) Add context to crd utils +- [59478af4](https://github.com/stashed/apimachinery/commit/59478af4) Update to Kubernetes 1.18.3 +- [e83b90a7](https://github.com/stashed/apimachinery/commit/e83b90a7) Merge pull request #3 from stashed/wait-for-target +- [a5b9a011](https://github.com/stashed/apimachinery/commit/a5b9a011) Simplify targetMatched() function +- [58948bd9](https://github.com/stashed/apimachinery/commit/58948bd9) Refactor +- [5568cb90](https://github.com/stashed/apimachinery/commit/5568cb90) Add RestoreSession conditions +- [906c5910](https://github.com/stashed/apimachinery/commit/906c5910) Add TypeMeta to invoker +- [22843fdb](https://github.com/stashed/apimachinery/commit/22843fdb) Use Go 1.14.3 +- [238d1bd0](https://github.com/stashed/apimachinery/commit/238d1bd0) Add backup invoker condition transion reasons +- [275965f9](https://github.com/stashed/apimachinery/commit/275965f9) Introduce conditions for BackupConfiguration and BackupBatch +- [35159c81](https://github.com/stashed/apimachinery/commit/35159c81) Merge pull request #5 from stashed/fix-updatestatus +- [f1d78326](https://github.com/stashed/apimachinery/commit/f1d78326) Fix helper methods +- [dbb02873](https://github.com/stashed/apimachinery/commit/dbb02873) Fix UpdateStatus() function +- [a7bd75ad](https://github.com/stashed/apimachinery/commit/a7bd75ad) Update crazy-max/ghaction-docker-buildx flag +- [1d65a7d4](https://github.com/stashed/apimachinery/commit/1d65a7d4) Use recommended kubernetes app labels (#4) +- [5b322e9f](https://github.com/stashed/apimachinery/commit/5b322e9f) Add Enum markers to api types +- [e6017151](https://github.com/stashed/apimachinery/commit/e6017151) Trigger the workflow on push or pull request +- [54097441](https://github.com/stashed/apimachinery/commit/54097441) Use kubectl v1.17 (#1) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.07.08-beta.0](https://github.com/stashed/catalog/releases/tag/v2020.07.08-beta.0) + + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0-beta.0](https://github.com/stashed/cli/releases/tag/v0.10.0-beta.0) + +- [3728110](https://github.com/stashed/cli/commit/3728110) Prepare for release v0.10.0-beta.0 (#26) +- [e7111a5](https://github.com/stashed/cli/commit/e7111a5) Update License +- [7fe1e07](https://github.com/stashed/cli/commit/7fe1e07) Update to Kubernetes v1.18.3 (#25) +- [66b3b46](https://github.com/stashed/cli/commit/66b3b46) Shorten command name for cli (#24) +- [b913cfc](https://github.com/stashed/cli/commit/b913cfc) Add workflow to update docs (#23) +- [1881c64](https://github.com/stashed/cli/commit/1881c64) Update update-release-tracker.sh +- [0548bdc](https://github.com/stashed/cli/commit/0548bdc) Update update-release-tracker.sh +- [b1b28ff](https://github.com/stashed/cli/commit/b1b28ff) Use GITHUB_BASE_REF to detect target branch +- [1e16b99](https://github.com/stashed/cli/commit/1e16b99) Add script to update release tracker on pr merge (#21) +- [f91bf33](https://github.com/stashed/cli/commit/f91bf33) Make release non-draft +- [d29bdb6](https://github.com/stashed/cli/commit/d29bdb6) Update .kodiak.toml +- [b727108](https://github.com/stashed/cli/commit/b727108) Update to Kubernetes v1.18.3 (#20) +- [f3f03aa](https://github.com/stashed/cli/commit/f3f03aa) Update to Kubernetes v1.18.3 +- [bcd7c5e](https://github.com/stashed/cli/commit/bcd7c5e) Create .kodiak.toml +- [9882aa2](https://github.com/stashed/cli/commit/9882aa2) Add blank line after license header (#19) +- [7774218](https://github.com/stashed/cli/commit/7774218) Update dev scripts (#18) +- [38eb35c](https://github.com/stashed/cli/commit/38eb35c) Run unit tests against SRC_PKGS +- [526949c](https://github.com/stashed/cli/commit/526949c) Update to Kubernetes v1.18.3 (#17) +- [fc3e6c5](https://github.com/stashed/cli/commit/fc3e6c5) Update crazy-max/ghaction-docker-buildx flag +- [3943575](https://github.com/stashed/cli/commit/3943575) Trigger the workflow on push or pull request + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-beta.20200708) + +- [7115da1](https://github.com/stashed/elasticsearch/commit/7115da1) Prepare for release 5.6.4-beta.20200708 (#87) +- [f5ab33d](https://github.com/stashed/elasticsearch/commit/f5ab33d) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [7d73d30](https://github.com/stashed/elasticsearch/commit/7d73d30) [cherry-pick] Update License (#69) (#70) +- [04e8a63](https://github.com/stashed/elasticsearch/commit/04e8a63) Add commands to update chart version (#68) +- [3a5cd78](https://github.com/stashed/elasticsearch/commit/3a5cd78) [cherry-pick] Update update-release-tracker.sh (#60) +- [77bb76e](https://github.com/stashed/elasticsearch/commit/77bb76e) [cherry-pick] Update update-release-tracker.sh (#52) +- [3b47ba6](https://github.com/stashed/elasticsearch/commit/3b47ba6) [cherry-pick] Update release.yml (#43) (#44) +- [444cb3b](https://github.com/stashed/elasticsearch/commit/444cb3b) [cherry-pick] Add script to update release tracker on pr merge (#34) (#35) +- [d349617](https://github.com/stashed/elasticsearch/commit/d349617) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#26) +- [4038abd](https://github.com/stashed/elasticsearch/commit/4038abd) Fix chart release process (#24) +- [895a73f](https://github.com/stashed/elasticsearch/commit/895a73f) Update .kodiak.toml +- [6b9451c](https://github.com/stashed/elasticsearch/commit/6b9451c) Allow overwriting secret key via SecretTransformation (#23) +- [0fcb64e](https://github.com/stashed/elasticsearch/commit/0fcb64e) Make waitTimeout Configurable through flag (#22) +- [b3859b9](https://github.com/stashed/elasticsearch/commit/b3859b9) Create .kodiak.toml +- [c0f3b97](https://github.com/stashed/elasticsearch/commit/c0f3b97) Update to Kubernetes v1.18.3 (#21) +- [210dd08](https://github.com/stashed/elasticsearch/commit/210dd08) Update crazy-max/ghaction-docker-buildx flag +- [5c74a42](https://github.com/stashed/elasticsearch/commit/5c74a42) Trigger the workflow on push or pull request +- [76424d0](https://github.com/stashed/elasticsearch/commit/76424d0) Auto generate chart readme file +- [fc144c2](https://github.com/stashed/elasticsearch/commit/fc144c2) Correctly mark optional fields +- [3559c2c](https://github.com/stashed/elasticsearch/commit/3559c2c) Add openapi v3 schema for values file (#18) +- [46b8654](https://github.com/stashed/elasticsearch/commit/46b8654) Update CI configuration +- [5c15319](https://github.com/stashed/elasticsearch/commit/5c15319) Add support for providing s3 region (#17) +- [c1b75a9](https://github.com/stashed/elasticsearch/commit/c1b75a9) Make output.json file writable to all users + Fix Flag types (#16) +- [f6d9709](https://github.com/stashed/elasticsearch/commit/f6d9709) Update hugo frontmatter for stash website +- [5ef236a](https://github.com/stashed/elasticsearch/commit/5ef236a) Enable race detector in e2e tests +- [1980a77](https://github.com/stashed/elasticsearch/commit/1980a77) Test installers (#14) +- [63a8396](https://github.com/stashed/elasticsearch/commit/63a8396) Fix broken link and add AppBinding scheme field (#15) +- [82d3e7c](https://github.com/stashed/elasticsearch/commit/82d3e7c) Add license header to files (#13) +- [c0241d4](https://github.com/stashed/elasticsearch/commit/c0241d4) Enable make ci (#12) +- [52f71de](https://github.com/stashed/elasticsearch/commit/52f71de) Fix BackupSession's Print Columns (#11) +- [91964a5](https://github.com/stashed/elasticsearch/commit/91964a5) Enable make ci (#10) +- [a804cb0](https://github.com/stashed/elasticsearch/commit/a804cb0) Remove --enable-status-subresource flag (#9) +- [57c4898](https://github.com/stashed/elasticsearch/commit/57c4898) Fix argument passing (#8) +- [15b1b3c](https://github.com/stashed/elasticsearch/commit/15b1b3c) Add release pipeline (#7) +- [b02e1ad](https://github.com/stashed/elasticsearch/commit/b02e1ad) Prepare for 5.6.4 release +- [7161616](https://github.com/stashed/elasticsearch/commit/7161616) Prepare for 5.6 release +- [7baf065](https://github.com/stashed/elasticsearch/commit/7baf065) Update go.yml +- [c8b18b0](https://github.com/stashed/elasticsearch/commit/c8b18b0) Fix typo (#6) +- [32445a6](https://github.com/stashed/elasticsearch/commit/32445a6) Use InterimVolumeTemplate + Finalize doc template (#5) +- [16d35ec](https://github.com/stashed/elasticsearch/commit/16d35ec) Enable GitHub actions +- [acfb971](https://github.com/stashed/elasticsearch/commit/acfb971) Improve error handling + remove metrics handling part (#4) +- [7e94690](https://github.com/stashed/elasticsearch/commit/7e94690) Use docker buildx to build docker image +- [6e388ff](https://github.com/stashed/elasticsearch/commit/6e388ff) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [6a82a60](https://github.com/stashed/elasticsearch/commit/6a82a60) Fix version suffix (#3) +- [2136ee6](https://github.com/stashed/elasticsearch/commit/2136ee6) Various fixes (#2) +- [d98b25a](https://github.com/stashed/elasticsearch/commit/d98b25a) Update Chart.yaml +- [806bf8c](https://github.com/stashed/elasticsearch/commit/806bf8c) Fixed elasticdump & added docs (#1) +- [3c99f3c](https://github.com/stashed/elasticsearch/commit/3c99f3c) Reorganize repo +- [1972a9a](https://github.com/stashed/elasticsearch/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/elasticsearch/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/elasticsearch/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/elasticsearch/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/elasticsearch/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/elasticsearch/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/elasticsearch/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/elasticsearch/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/elasticsearch/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/elasticsearch/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/elasticsearch/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/elasticsearch/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/elasticsearch/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/elasticsearch/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/elasticsearch/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/elasticsearch/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/elasticsearch/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/elasticsearch/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/elasticsearch/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/elasticsearch/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/elasticsearch/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/elasticsearch/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/elasticsearch/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/elasticsearch/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/elasticsearch/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/elasticsearch/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/elasticsearch/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/elasticsearch/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/elasticsearch/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/elasticsearch/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/elasticsearch/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/elasticsearch/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/elasticsearch/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/elasticsearch/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/elasticsearch/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/elasticsearch/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/elasticsearch/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/elasticsearch/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/elasticsearch/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/elasticsearch/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/elasticsearch/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/elasticsearch/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/elasticsearch/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/elasticsearch/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/elasticsearch/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/elasticsearch/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/elasticsearch/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/elasticsearch/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/elasticsearch/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/elasticsearch/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/elasticsearch/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/elasticsearch/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/elasticsearch/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/elasticsearch/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/elasticsearch/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/elasticsearch/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/elasticsearch/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/elasticsearch/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/elasticsearch/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/elasticsearch/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/elasticsearch/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/elasticsearch/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/elasticsearch/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/elasticsearch/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/elasticsearch/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/elasticsearch/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/elasticsearch/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/elasticsearch/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/elasticsearch/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/elasticsearch/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/elasticsearch/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/elasticsearch/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/elasticsearch/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/elasticsearch/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/elasticsearch/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/elasticsearch/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/elasticsearch/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/elasticsearch/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/elasticsearch/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/elasticsearch/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/elasticsearch/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/elasticsearch/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/elasticsearch/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/elasticsearch/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/elasticsearch/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/elasticsearch/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/elasticsearch/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/elasticsearch/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/elasticsearch/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/elasticsearch/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/elasticsearch/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/elasticsearch/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/elasticsearch/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/elasticsearch/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/elasticsearch/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/elasticsearch/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/elasticsearch/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/elasticsearch/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/elasticsearch/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/elasticsearch/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/elasticsearch/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/elasticsearch/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/elasticsearch/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/elasticsearch/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/elasticsearch/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/elasticsearch/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/elasticsearch/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/elasticsearch/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/elasticsearch/commit/60ed8f7) Update user guide (#94) + + +### [6.2.4-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-beta.20200708) + + + +### [6.3.0-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-beta.20200708) + + + +### [6.4.0-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-beta.20200708) + + + +### [6.5.3-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-beta.20200708) + + + +### [6.8.0-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-beta.20200708) + + + +### [7.2.0-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-beta.20200708) + + + +### [7.3.2-beta.20200708](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-beta.20200708) + + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0-beta.0](https://github.com/stashed/installer/releases/tag/v0.10.0-beta.0) + +- [cd44ba9](https://github.com/stashed/installer/commit/cd44ba9) Prepare for release v0.10.0-beta.0 (#75) +- [a04e173](https://github.com/stashed/installer/commit/a04e173) Publish to testing dir for alpha/beta releases +- [4b23e1c](https://github.com/stashed/installer/commit/4b23e1c) Update License (#74) +- [9b7a4e0](https://github.com/stashed/installer/commit/9b7a4e0) Update to Kubernetes v1.18.3 (#72) +- [4318306](https://github.com/stashed/installer/commit/4318306) Update ci.yml +- [15d1594](https://github.com/stashed/installer/commit/15d1594) Fix Stash Enterprise installer (#70) +- [31c9dcc](https://github.com/stashed/installer/commit/31c9dcc) Tag chart and app version as string for yq (#69) +- [1782049](https://github.com/stashed/installer/commit/1782049) Update links (#68) +- [634da4d](https://github.com/stashed/installer/commit/634da4d) Update update-release-tracker.sh +- [1155610](https://github.com/stashed/installer/commit/1155610) Update update-release-tracker.sh +- [1b10b5e](https://github.com/stashed/installer/commit/1b10b5e) Add script to update release tracker on pr merge (#67) +- [ce0b28e](https://github.com/stashed/installer/commit/ce0b28e) Update release workflow +- [c3ac668](https://github.com/stashed/installer/commit/c3ac668) Update ci.yml +- [98bad7e](https://github.com/stashed/installer/commit/98bad7e) Add Stash Enterprise chart (#63) +- [73f52a6](https://github.com/stashed/installer/commit/73f52a6) Add commands to update chart (#65) +- [0dc7f91](https://github.com/stashed/installer/commit/0dc7f91) Fix chart release process (#64) +- [0d5c4e1](https://github.com/stashed/installer/commit/0d5c4e1) Update .kodiak.toml +- [3b53e64](https://github.com/stashed/installer/commit/3b53e64) Update to Kubernetes v1.18.3 (#58) +- [43c5dbe](https://github.com/stashed/installer/commit/43c5dbe) Update to Kubernetes v1.18.3 +- [b9e784c](https://github.com/stashed/installer/commit/b9e784c) Create .kodiak.toml +- [b30b3b0](https://github.com/stashed/installer/commit/b30b3b0) Merge pull request #57 from stashed/psp +- [1b89401](https://github.com/stashed/installer/commit/1b89401) Disable apparmor and seccomp by default +- [6bed1aa](https://github.com/stashed/installer/commit/6bed1aa) Pass psp names for the jobs through flag +- [bd35d81](https://github.com/stashed/installer/commit/bd35d81) Always use baseline psp for stash +- [4e3474a](https://github.com/stashed/installer/commit/4e3474a) Add RBAC permission for generic-garbage-collector (#56) +- [be006f6](https://github.com/stashed/installer/commit/be006f6) Permit configmap list/watch -ing for delegated authentication checking (#55) +- [5685c15](https://github.com/stashed/installer/commit/5685c15) Update dependencies +- [8b7b805](https://github.com/stashed/installer/commit/8b7b805) Update dependencies +- [d2b2b09](https://github.com/stashed/installer/commit/d2b2b09) Generate both v1beta1 and v1 CRD YAML (#54) +- [7fbcb29](https://github.com/stashed/installer/commit/7fbcb29) Update to Kubernetes v1.18.3 (#53) +- [88e5e8c](https://github.com/stashed/installer/commit/88e5e8c) Use Go 1.14.3 +- [8e56cb1](https://github.com/stashed/installer/commit/8e56cb1) Trigger build on push to only master branch +- [562caf8](https://github.com/stashed/installer/commit/562caf8) Use recommended kubernetes app labels (#52) +- [cc55e5a](https://github.com/stashed/installer/commit/cc55e5a) Trigger the workflow on push or pull request +- [fd8acf5](https://github.com/stashed/installer/commit/fd8acf5) Update chart readme +- [672f37e](https://github.com/stashed/installer/commit/672f37e) Show examples in chart readme +- [39f4ca1](https://github.com/stashed/installer/commit/39f4ca1) Auto generate chart readme file (#50) +- [47f4250](https://github.com/stashed/installer/commit/47f4250) Update release.yml +- [b68d9cb](https://github.com/stashed/installer/commit/b68d9cb) Cleanup newlines +- [20d51b0](https://github.com/stashed/installer/commit/20d51b0) Reformat stash chart template (#49) +- [65f8bee](https://github.com/stashed/installer/commit/65f8bee) Use kubectl v1.16 as cleaner (#48) +- [85a7cfd](https://github.com/stashed/installer/commit/85a7cfd) Rename prometheus.io/coreos-operator to prometheus.io/operator (#47) +- [b042def](https://github.com/stashed/installer/commit/b042def) Move apireg annotation to operator pod (#46) +- [a543953](https://github.com/stashed/installer/commit/a543953) Various cleanup (#44) +- [b6e2bec](https://github.com/stashed/installer/commit/b6e2bec) Fix helm install --wait flag (#42) +- [806aada](https://github.com/stashed/installer/commit/806aada) Do not harcode namespace (#40) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-beta.20200708](https://github.com/stashed/mongodb/releases/tag/3.4.1-beta.20200708) + +- [47b1d72](https://github.com/stashed/mongodb/commit/47b1d72) Prepare for release 3.4.1-beta.20200708 (#90) +- [67b293a](https://github.com/stashed/mongodb/commit/67b293a) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [d8c9489](https://github.com/stashed/mongodb/commit/d8c9489) [cherry-pick] Update License (#66) (#67) +- [13f91cd](https://github.com/stashed/mongodb/commit/13f91cd) Add commands to update chart version (#65) +- [5ec5c3c](https://github.com/stashed/mongodb/commit/5ec5c3c) [cherry-pick] Update update-release-tracker.sh (#54) +- [409301c](https://github.com/stashed/mongodb/commit/409301c) Add script to update release tracker on pr merge (#41) +- [deed415](https://github.com/stashed/mongodb/commit/deed415) [cherry-pick] Update release.yml (#42) (#43) +- [7efcffb](https://github.com/stashed/mongodb/commit/7efcffb) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#30) +- [2ed8277](https://github.com/stashed/mongodb/commit/2ed8277) Fix chart release process (#28) +- [b7b3bc6](https://github.com/stashed/mongodb/commit/b7b3bc6) Update .kodiak.toml +- [33abf73](https://github.com/stashed/mongodb/commit/33abf73) Allow overwriting secret key via SecretTransformation (#27) +- [ad30b7d](https://github.com/stashed/mongodb/commit/ad30b7d) Make waitTimeout configurable through flag (#26) +- [80f62d1](https://github.com/stashed/mongodb/commit/80f62d1) Create .kodiak.toml +- [d8e7b86](https://github.com/stashed/mongodb/commit/d8e7b86) Fix typos +- [f5dfaea](https://github.com/stashed/mongodb/commit/f5dfaea) Update to Kubernetes v1.18.3 (#25) +- [4a462cb](https://github.com/stashed/mongodb/commit/4a462cb) Update crazy-max/ghaction-docker-buildx flag +- [961fad3](https://github.com/stashed/mongodb/commit/961fad3) Fix typos +- [14024ab](https://github.com/stashed/mongodb/commit/14024ab) Trigger the workflow on push or pull request +- [c80a723](https://github.com/stashed/mongodb/commit/c80a723) Auto generate chart readme file +- [223dbfd](https://github.com/stashed/mongodb/commit/223dbfd) Correctly mark optional fields +- [8b3b75d](https://github.com/stashed/mongodb/commit/8b3b75d) Add openapi v3 schema for values file (#21) +- [6229815](https://github.com/stashed/mongodb/commit/6229815) Update CI configuration +- [3f2f090](https://github.com/stashed/mongodb/commit/3f2f090) Add support for specifying S3 region (#20) +- [55f007d](https://github.com/stashed/mongodb/commit/55f007d) Make output.json file writable to all users + Fix Flag types (#19) +- [93643f3](https://github.com/stashed/mongodb/commit/93643f3) Fix with arguments to mongorestore (#14) +- [0d9595c](https://github.com/stashed/mongodb/commit/0d9595c) Update hugo frontmatter for stash website +- [cb27f47](https://github.com/stashed/mongodb/commit/cb27f47) Added --nsExclude=config.changelog to standalone +- [a941eb0](https://github.com/stashed/mongodb/commit/a941eb0) Enable race detector in e2e tests +- [2ed387f](https://github.com/stashed/mongodb/commit/2ed387f) Fix broken link and add AppBinding scheme field (#13) +- [8dd0ea1](https://github.com/stashed/mongodb/commit/8dd0ea1) Test installers (#12) +- [5199d20](https://github.com/stashed/mongodb/commit/5199d20) Add license header to files (#11) +- [f89adec](https://github.com/stashed/mongodb/commit/f89adec) Split imports into 3 parts (#10) +- [1c447f4](https://github.com/stashed/mongodb/commit/1c447f4) Fix BackupSession's Print Columns (#9) +- [201a06e](https://github.com/stashed/mongodb/commit/201a06e) Enable make ci (#8) +- [613feea](https://github.com/stashed/mongodb/commit/613feea) Remove --enable-status-subresource flag (#7) +- [95c3974](https://github.com/stashed/mongodb/commit/95c3974) Update totalHosts from backup/restore process (#6) +- [3097a67](https://github.com/stashed/mongodb/commit/3097a67) Fix argument passing (#5) +- [ccdf81f](https://github.com/stashed/mongodb/commit/ccdf81f) Remove support for arm and arm64 architecture +- [f0b8e87](https://github.com/stashed/mongodb/commit/f0b8e87) Prepare for 3.4.17 release +- [16ad538](https://github.com/stashed/mongodb/commit/16ad538) Prepare for 3.4 release +- [c4eb920](https://github.com/stashed/mongodb/commit/c4eb920) Add release pipeline (#4) +- [02b9a9f](https://github.com/stashed/mongodb/commit/02b9a9f) Update go.yml +- [7ede5fd](https://github.com/stashed/mongodb/commit/7ede5fd) Finalize doc template (#3) +- [bb3b7fd](https://github.com/stashed/mongodb/commit/bb3b7fd) Enable GitHub actions +- [6874298](https://github.com/stashed/mongodb/commit/6874298) Improve error handling + remove metrics handling part (#2) +- [000f2c6](https://github.com/stashed/mongodb/commit/000f2c6) Use docker buildx to build docker image +- [867a620](https://github.com/stashed/mongodb/commit/867a620) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [ecb6143](https://github.com/stashed/mongodb/commit/ecb6143) run `go fmt` +- [618886d](https://github.com/stashed/mongodb/commit/618886d) Improve Mongodump for sharded and replicaset cluster && Chart and documentation (#1) +- [4a7d5c8](https://github.com/stashed/mongodb/commit/4a7d5c8) Reorganize repo +- [1972a9a](https://github.com/stashed/mongodb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/mongodb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/mongodb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/mongodb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/mongodb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/mongodb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/mongodb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/mongodb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/mongodb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/mongodb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/mongodb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/mongodb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/mongodb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/mongodb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/mongodb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/mongodb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/mongodb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/mongodb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/mongodb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/mongodb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/mongodb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/mongodb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/mongodb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/mongodb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/mongodb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/mongodb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/mongodb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/mongodb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/mongodb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/mongodb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/mongodb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/mongodb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/mongodb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/mongodb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/mongodb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/mongodb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/mongodb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/mongodb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/mongodb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/mongodb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/mongodb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/mongodb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/mongodb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/mongodb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/mongodb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/mongodb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/mongodb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/mongodb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/mongodb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/mongodb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/mongodb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/mongodb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/mongodb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/mongodb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/mongodb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/mongodb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/mongodb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/mongodb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/mongodb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/mongodb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/mongodb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/mongodb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/mongodb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/mongodb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/mongodb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/mongodb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/mongodb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/mongodb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/mongodb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/mongodb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/mongodb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/mongodb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/mongodb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/mongodb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/mongodb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/mongodb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/mongodb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/mongodb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/mongodb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/mongodb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/mongodb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/mongodb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/mongodb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/mongodb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/mongodb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/mongodb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/mongodb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/mongodb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/mongodb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/mongodb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/mongodb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/mongodb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/mongodb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/mongodb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/mongodb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/mongodb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/mongodb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/mongodb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/mongodb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/mongodb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/mongodb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/mongodb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/mongodb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/mongodb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/mongodb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/mongodb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/mongodb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/mongodb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/mongodb/commit/60ed8f7) Update user guide (#94) + + +### [3.4.2-beta.20200708](https://github.com/stashed/mongodb/releases/tag/3.4.2-beta.20200708) + + + +### [3.6.1-beta.20200708](https://github.com/stashed/mongodb/releases/tag/3.6.1-beta.20200708) + + + +### [3.6.8-beta.20200708](https://github.com/stashed/mongodb/releases/tag/3.6.8-beta.20200708) + + + +### [4.0.1-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.0.1-beta.20200708) + + + +### [4.0.3-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.0.3-beta.20200708) + + + +### [4.0.5-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.0.5-beta.20200708) + + + +### [4.1.1-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.1.1-beta.20200708) + + + +### [4.1.4-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.1.4-beta.20200708) + + + +### [4.1.7-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.1.7-beta.20200708) + + + +### [4.2.3-beta.20200708](https://github.com/stashed/mongodb/releases/tag/4.2.3-beta.20200708) + + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-beta.20200708](https://github.com/stashed/mysql/releases/tag/5.7.25-beta.20200708) + +- [3a44b41](https://github.com/stashed/mysql/commit/3a44b41) Prepare for release 5.7.25-beta.20200708 (#55) +- [7e2984b](https://github.com/stashed/mysql/commit/7e2984b) [cherry-pick] Publish to testing dir for alpha/beta releases (#51) (#52) +- [aa1eac2](https://github.com/stashed/mysql/commit/aa1eac2) [cherry-pick] Update License (#47) (#48) +- [d4370c9](https://github.com/stashed/mysql/commit/d4370c9) Add commands to update chart version (#45) +- [38fb308](https://github.com/stashed/mysql/commit/38fb308) [cherry-pick] Update update-release-tracker.sh (#42) +- [f3bfd48](https://github.com/stashed/mysql/commit/f3bfd48) [cherry-pick] Update update-release-tracker.sh (#39) +- [56e92c4](https://github.com/stashed/mysql/commit/56e92c4) [cherry-pick] Update release.yml (#36) +- [be341e7](https://github.com/stashed/mysql/commit/be341e7) [cherry-pick] Add script to update release tracker on pr merge (#32) (#33) +- [96504a7](https://github.com/stashed/mysql/commit/96504a7) [cherry-pick] Add workflow to cherry pick commits to master (#28) (#29) +- [fcbe891](https://github.com/stashed/mysql/commit/fcbe891) Fix chart release process (#27) +- [c012edf](https://github.com/stashed/mysql/commit/c012edf) Update .kodiak.toml +- [0d22657](https://github.com/stashed/mysql/commit/0d22657) Allow overwriting secret key via SecretTransformation (#26) +- [f717a19](https://github.com/stashed/mysql/commit/f717a19) Fix unit tests (#25) +- [d4f5c4c](https://github.com/stashed/mysql/commit/d4f5c4c) Create .kodiak.toml +- [2bfa098](https://github.com/stashed/mysql/commit/2bfa098) Fix typos +- [5c1a53d](https://github.com/stashed/mysql/commit/5c1a53d) mend +- [9eb402f](https://github.com/stashed/mysql/commit/9eb402f) Update to Kubernetes v1.18.3 (#24) +- [4d4afa2](https://github.com/stashed/mysql/commit/4d4afa2) Fix waitForDBReady() logic + Make timeout configurable (#23) +- [4548802](https://github.com/stashed/mysql/commit/4548802) Update crazy-max/ghaction-docker-buildx flag +- [ce1fa72](https://github.com/stashed/mysql/commit/ce1fa72) Trigger the workflow on push or pull request +- [dad10df](https://github.com/stashed/mysql/commit/dad10df) Auto generate chart readme file +- [462eecf](https://github.com/stashed/mysql/commit/462eecf) Correctly mark optional fields +- [424ec5a](https://github.com/stashed/mysql/commit/424ec5a) Add openapi v3 schema for values file (#20) +- [4755987](https://github.com/stashed/mysql/commit/4755987) Update CI configuration +- [22e8141](https://github.com/stashed/mysql/commit/22e8141) Add support for providing s3 region (#18) +- [793e5e4](https://github.com/stashed/mysql/commit/793e5e4) Make output.json file writable to all users + Fix Flag types (#17) +- [7d65a07](https://github.com/stashed/mysql/commit/7d65a07) Update hugo frontmatter for stash website +- [9392ce0](https://github.com/stashed/mysql/commit/9392ce0) Enable race detector in e2e tests +- [111bbfe](https://github.com/stashed/mysql/commit/111bbfe) Test installers (#15) +- [6eb327f](https://github.com/stashed/mysql/commit/6eb327f) Fix broken link and add AppBinding scheme field (#16) +- [292afdc](https://github.com/stashed/mysql/commit/292afdc) Add license header to files (#14) +- [35bd620](https://github.com/stashed/mysql/commit/35bd620) Split imports into 3 parts (#13) +- [799ee9b](https://github.com/stashed/mysql/commit/799ee9b) Fix BackupSession's Print Columns (#12) +- [6d62faa](https://github.com/stashed/mysql/commit/6d62faa) Enable make ci (#11) +- [9f5d50e](https://github.com/stashed/mysql/commit/9f5d50e) Remove --enable-status-subresource flag (#10) +- [fb1cedd](https://github.com/stashed/mysql/commit/fb1cedd) Fix argument passing (#9) +- [56f9fdb](https://github.com/stashed/mysql/commit/56f9fdb) Only build x86-64 images +- [a2bcae7](https://github.com/stashed/mysql/commit/a2bcae7) Add release pipeline (#8) +- [36eb1be](https://github.com/stashed/mysql/commit/36eb1be) Prepare 5.7.25 release +- [09896d9](https://github.com/stashed/mysql/commit/09896d9) Update go.yml +- [eed5d07](https://github.com/stashed/mysql/commit/eed5d07) Fix link (#7) +- [8278413](https://github.com/stashed/mysql/commit/8278413) Finalize doc template (#6) +- [4ef23ee](https://github.com/stashed/mysql/commit/4ef23ee) Enable GitHub actions +- [5454aac](https://github.com/stashed/mysql/commit/5454aac) Improve error handling + remove metrics handling part (#5) +- [be8e2b6](https://github.com/stashed/mysql/commit/be8e2b6) Use docker buildx to build docker image +- [3d169a2](https://github.com/stashed/mysql/commit/3d169a2) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [bd920eb](https://github.com/stashed/mysql/commit/bd920eb) Backup and Restore for MySQL-8.0.14 (#3) +- [de01833](https://github.com/stashed/mysql/commit/de01833) Add License headers to make files (#2) +- [cc3ee32](https://github.com/stashed/mysql/commit/cc3ee32) Reorganize repo (#1) +- [1972a9a](https://github.com/stashed/mysql/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/mysql/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/mysql/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/mysql/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/mysql/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/mysql/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/mysql/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/mysql/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/mysql/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/mysql/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/mysql/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/mysql/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/mysql/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/mysql/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/mysql/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/mysql/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/mysql/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/mysql/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/mysql/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/mysql/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/mysql/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/mysql/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/mysql/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/mysql/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/mysql/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/mysql/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/mysql/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/mysql/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/mysql/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/mysql/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/mysql/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/mysql/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/mysql/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/mysql/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/mysql/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/mysql/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/mysql/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/mysql/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/mysql/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/mysql/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/mysql/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/mysql/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/mysql/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/mysql/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/mysql/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/mysql/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/mysql/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/mysql/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/mysql/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/mysql/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/mysql/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/mysql/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/mysql/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/mysql/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/mysql/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/mysql/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/mysql/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/mysql/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/mysql/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/mysql/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/mysql/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/mysql/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/mysql/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/mysql/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/mysql/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/mysql/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/mysql/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/mysql/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/mysql/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/mysql/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/mysql/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/mysql/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/mysql/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/mysql/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/mysql/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/mysql/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/mysql/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/mysql/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/mysql/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/mysql/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/mysql/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/mysql/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/mysql/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/mysql/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/mysql/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/mysql/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/mysql/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/mysql/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/mysql/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/mysql/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/mysql/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/mysql/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/mysql/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/mysql/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/mysql/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/mysql/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/mysql/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/mysql/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/mysql/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/mysql/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/mysql/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/mysql/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/mysql/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/mysql/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/mysql/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/mysql/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/mysql/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/mysql/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/mysql/commit/60ed8f7) Update user guide (#94) + + +### [8.0.3-beta.20200708](https://github.com/stashed/mysql/releases/tag/8.0.3-beta.20200708) + + + +### [8.0.14-beta.20200708](https://github.com/stashed/mysql/releases/tag/8.0.14-beta.20200708) + + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-beta.20200708](https://github.com/stashed/percona-xtradb/releases/tag/5.7-beta.20200708) + +- [0535469](https://github.com/stashed/percona-xtradb/commit/0535469) Prepare for release 5.7-beta.20200708 (#33) +- [6aac98e](https://github.com/stashed/percona-xtradb/commit/6aac98e) Add commands to update chart version (#30) +- [24431c1](https://github.com/stashed/percona-xtradb/commit/24431c1) [cherry-pick] Update update-release-tracker.sh (#29) +- [89c2a37](https://github.com/stashed/percona-xtradb/commit/89c2a37) [cherry-pick] Update update-release-tracker.sh (#28) +- [4163a9c](https://github.com/stashed/percona-xtradb/commit/4163a9c) [cherry-pick] Update release.yml (#27) +- [66d54d2](https://github.com/stashed/percona-xtradb/commit/66d54d2) [cherry-pick] Add script to update release tracker on pr merge (#25) (#26) +- [f280602](https://github.com/stashed/percona-xtradb/commit/f280602) [cherry-pick] Add workflow to cherry pick commits to master (#23) (#24) +- [7ca441c](https://github.com/stashed/percona-xtradb/commit/7ca441c) Fix chart release process (#21) +- [76fca67](https://github.com/stashed/percona-xtradb/commit/76fca67) Update .kodiak.toml +- [ecbd60c](https://github.com/stashed/percona-xtradb/commit/ecbd60c) Allow overwriting secret key via SecretTransformation (#20) +- [8404948](https://github.com/stashed/percona-xtradb/commit/8404948) Make waitTimeout configurable through flag (#19) +- [110985a](https://github.com/stashed/percona-xtradb/commit/110985a) Create .kodiak.toml +- [70ed4b2](https://github.com/stashed/percona-xtradb/commit/70ed4b2) Update to Kubernetes v1.18.3 (#18) +- [75efdb9](https://github.com/stashed/percona-xtradb/commit/75efdb9) Update crazy-max/ghaction-docker-buildx flag +- [56b5472](https://github.com/stashed/percona-xtradb/commit/56b5472) Trigger the workflow on push or pull request +- [14e9f5a](https://github.com/stashed/percona-xtradb/commit/14e9f5a) Auto generate chart readme file +- [31ff6c4](https://github.com/stashed/percona-xtradb/commit/31ff6c4) Correctly mark optional fields +- [3676857](https://github.com/stashed/percona-xtradb/commit/3676857) Add openapi v3 schema for values file (#15) +- [9b32ca9](https://github.com/stashed/percona-xtradb/commit/9b32ca9) Update CI configuration +- [9ba20af](https://github.com/stashed/percona-xtradb/commit/9ba20af) Add support for providing s3 region (#14) +- [2ee6c3b](https://github.com/stashed/percona-xtradb/commit/2ee6c3b) Update percona standalone backup-restore (#13) +- [af1a30b](https://github.com/stashed/percona-xtradb/commit/af1a30b) Update PerconaXtraDB version for percona xtradb cluster (#12) +- [7ddb43a](https://github.com/stashed/percona-xtradb/commit/7ddb43a) Make output.json file writable to all users + Fix Flag types (#11) +- [06aa5c3](https://github.com/stashed/percona-xtradb/commit/06aa5c3) Update hugo frontmatter for stash website +- [4171676](https://github.com/stashed/percona-xtradb/commit/4171676) Enable race detector in e2e tests +- [9ab6f35](https://github.com/stashed/percona-xtradb/commit/9ab6f35) Added scheme field in AppBinding (#10) +- [a4262ea](https://github.com/stashed/percona-xtradb/commit/a4262ea) Test installers (#9) +- [72be668](https://github.com/stashed/percona-xtradb/commit/72be668) Don't build docker image for arm64 +- [2974e8b](https://github.com/stashed/percona-xtradb/commit/2974e8b) Update license file templates +- [dd96199](https://github.com/stashed/percona-xtradb/commit/dd96199) Add license header to files (#8) +- [93e37a6](https://github.com/stashed/percona-xtradb/commit/93e37a6) Backup and restore doc for Percona XtraDB 5.7 (#7) +- [aafee30](https://github.com/stashed/percona-xtradb/commit/aafee30) Fix percona-xtradb backup & restore (#6) +- [06cbe89](https://github.com/stashed/percona-xtradb/commit/06cbe89) Fix Docker image badge (#5) +- [2e6c4c6](https://github.com/stashed/percona-xtradb/commit/2e6c4c6) Update Makefile (#4) +- [11da7a1](https://github.com/stashed/percona-xtradb/commit/11da7a1) Add release pipeline (#3) +- [75ca782](https://github.com/stashed/percona-xtradb/commit/75ca782) Update go.yml +- [998acad](https://github.com/stashed/percona-xtradb/commit/998acad) Enable GitHub actions +- [a32083a](https://github.com/stashed/percona-xtradb/commit/a32083a) Improve error handling + remove metrics handling part (#2) +- [87b38a5](https://github.com/stashed/percona-xtradb/commit/87b38a5) Backup & Restore PerconaXtraDB using Stash (#1) +- [a4485ab](https://github.com/stashed/percona-xtradb/commit/a4485ab) Reorganize repo +- [1972a9a](https://github.com/stashed/percona-xtradb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/percona-xtradb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/percona-xtradb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/percona-xtradb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/percona-xtradb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/percona-xtradb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/percona-xtradb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/percona-xtradb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/percona-xtradb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/percona-xtradb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/percona-xtradb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/percona-xtradb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/percona-xtradb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/percona-xtradb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/percona-xtradb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/percona-xtradb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/percona-xtradb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/percona-xtradb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/percona-xtradb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/percona-xtradb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/percona-xtradb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/percona-xtradb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/percona-xtradb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/percona-xtradb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/percona-xtradb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/percona-xtradb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/percona-xtradb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/percona-xtradb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/percona-xtradb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/percona-xtradb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/percona-xtradb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/percona-xtradb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/percona-xtradb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/percona-xtradb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/percona-xtradb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/percona-xtradb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/percona-xtradb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/percona-xtradb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/percona-xtradb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/percona-xtradb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/percona-xtradb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/percona-xtradb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/percona-xtradb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/percona-xtradb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/percona-xtradb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/percona-xtradb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/percona-xtradb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/percona-xtradb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/percona-xtradb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/percona-xtradb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/percona-xtradb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/percona-xtradb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/percona-xtradb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/percona-xtradb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/percona-xtradb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/percona-xtradb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/percona-xtradb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/percona-xtradb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/percona-xtradb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/percona-xtradb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/percona-xtradb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/percona-xtradb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/percona-xtradb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/percona-xtradb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/percona-xtradb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/percona-xtradb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/percona-xtradb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/percona-xtradb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/percona-xtradb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/percona-xtradb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/percona-xtradb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/percona-xtradb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/percona-xtradb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/percona-xtradb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/percona-xtradb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/percona-xtradb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/percona-xtradb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/percona-xtradb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/percona-xtradb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/percona-xtradb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/percona-xtradb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/percona-xtradb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/percona-xtradb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/percona-xtradb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/percona-xtradb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/percona-xtradb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/percona-xtradb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/percona-xtradb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/percona-xtradb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/percona-xtradb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/percona-xtradb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/percona-xtradb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/percona-xtradb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/percona-xtradb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/percona-xtradb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/percona-xtradb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/percona-xtradb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/percona-xtradb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/percona-xtradb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/percona-xtradb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/percona-xtradb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/percona-xtradb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/percona-xtradb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/percona-xtradb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/percona-xtradb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/percona-xtradb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/percona-xtradb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/percona-xtradb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/percona-xtradb/commit/60ed8f7) Update user guide (#94) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-beta.20200708](https://github.com/stashed/postgres/releases/tag/9.6-beta.20200708) + +- [d85fc80](https://github.com/stashed/postgres/commit/d85fc80) Prepare for release 9.6-beta.20200708 (#88) +- [fbd6766](https://github.com/stashed/postgres/commit/fbd6766) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#83) +- [1b32879](https://github.com/stashed/postgres/commit/1b32879) [cherry-pick] Update License (#72) (#77) +- [388ddee](https://github.com/stashed/postgres/commit/388ddee) Add commands to update chart version (#71) +- [875c1f0](https://github.com/stashed/postgres/commit/875c1f0) [cherry-pick] Update update-release-tracker.sh (#70) +- [0e71e2d](https://github.com/stashed/postgres/commit/0e71e2d) [cherry-pick] Update update-release-tracker.sh (#65) +- [bbfac61](https://github.com/stashed/postgres/commit/bbfac61) [cherry-pick] Update release.yml (#55) (#60) +- [986d0a7](https://github.com/stashed/postgres/commit/986d0a7) [cherry-pick] Add script to update release tracker on pr merge (#49) (#54) +- [6edaf36](https://github.com/stashed/postgres/commit/6edaf36) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#48) +- [6743dbe](https://github.com/stashed/postgres/commit/6743dbe) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#42) +- [fb4f222](https://github.com/stashed/postgres/commit/fb4f222) Fix chart release process (#36) +- [b5ddf5f](https://github.com/stashed/postgres/commit/b5ddf5f) Update .kodiak.toml +- [7951787](https://github.com/stashed/postgres/commit/7951787) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [e7bb18f](https://github.com/stashed/postgres/commit/e7bb18f) Create .kodiak.toml +- [60acc09](https://github.com/stashed/postgres/commit/60acc09) Merge pull request Allow overriding secret keys from AppBinding #33 +- [aaff7fb](https://github.com/stashed/postgres/commit/aaff7fb) Fix typos (#32) +- [568f584](https://github.com/stashed/postgres/commit/568f584) Update to Kubernetes v1.18.3 (#34) +- [098bb78](https://github.com/stashed/postgres/commit/098bb78) Update crazy-max/ghaction-docker-buildx flag +- [4385362](https://github.com/stashed/postgres/commit/4385362) function-args: add pg-back-cmd option +- [7cd065c](https://github.com/stashed/postgres/commit/7cd065c) Trigger the workflow on push or pull request +- [b63e3e5](https://github.com/stashed/postgres/commit/b63e3e5) Auto generate chart readme file +- [dea1a41](https://github.com/stashed/postgres/commit/dea1a41) Correctly mark optional fields +- [efc4283](https://github.com/stashed/postgres/commit/efc4283) Add openapi v3 schema for values file (#27) +- [99a417e](https://github.com/stashed/postgres/commit/99a417e) Update CI configuration +- [712aabb](https://github.com/stashed/postgres/commit/712aabb) Add support for providing s3 region (#26) +- [111a3fe](https://github.com/stashed/postgres/commit/111a3fe) Make output.json file writable to all users + Fix Flag types (#25) +- [1694bb7](https://github.com/stashed/postgres/commit/1694bb7) Update hugo frontmatter for stash website +- [ab592bd](https://github.com/stashed/postgres/commit/ab592bd) Enable race detector in e2e tests +- [6df8761](https://github.com/stashed/postgres/commit/6df8761) Fixed broken link, Added AppBinding scheme field (#24) +- [e3f4905](https://github.com/stashed/postgres/commit/e3f4905) Test installers (#23) +- [a3c2d0f](https://github.com/stashed/postgres/commit/a3c2d0f) Add license header to files (#22) +- [320def8](https://github.com/stashed/postgres/commit/320def8) Enable make ci (#21) +- [9a7b843](https://github.com/stashed/postgres/commit/9a7b843) Fix BackupSession's Print Columns (#20) +- [73d7b1c](https://github.com/stashed/postgres/commit/73d7b1c) Enable make ci (#19) +- [46d5ae8](https://github.com/stashed/postgres/commit/46d5ae8) Remove --enable-status-subresource flag (#18) +- [08067ca](https://github.com/stashed/postgres/commit/08067ca) Fix arguments passing (#17) +- [0c1db21](https://github.com/stashed/postgres/commit/0c1db21) Add release pipeline (#16) +- [3d33fd4](https://github.com/stashed/postgres/commit/3d33fd4) adjust frontmatter weight +- [41e3555](https://github.com/stashed/postgres/commit/41e3555) Update resources for 9.6 +- [775ffab](https://github.com/stashed/postgres/commit/775ffab) Update go.yml +- [67cb695](https://github.com/stashed/postgres/commit/67cb695) Fix BackupConfiguration retention policy (#11) +- [9228437](https://github.com/stashed/postgres/commit/9228437) Fix link + grammar (#10) +- [bddb9cd](https://github.com/stashed/postgres/commit/bddb9cd) Enable GitHub actions +- [f42ada5](https://github.com/stashed/postgres/commit/f42ada5) Fix menu id in frontmatter +- [a59bed1](https://github.com/stashed/postgres/commit/a59bed1) Finalize doc template (#9) +- [08274c9](https://github.com/stashed/postgres/commit/08274c9) Fix typo (#8) +- [afad5db](https://github.com/stashed/postgres/commit/afad5db) Refactor error + metric handling (#7) +- [248d0ea](https://github.com/stashed/postgres/commit/248d0ea) Use Endpoint for REST server URL (remove --rest-server-url flag) (#6) +- [41d2a53](https://github.com/stashed/postgres/commit/41d2a53) Remove metrics options from function (#5) +- [d276da0](https://github.com/stashed/postgres/commit/d276da0) Use docker buildx to build docker image +- [3c0e71d](https://github.com/stashed/postgres/commit/3c0e71d) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [5eab8f5](https://github.com/stashed/postgres/commit/5eab8f5) Update postgres.md +- [0f37446](https://github.com/stashed/postgres/commit/0f37446) Rename Functions and Tasks (#4) +- [b1b3e80](https://github.com/stashed/postgres/commit/b1b3e80) Update Chart.yaml +- [a1bee9b](https://github.com/stashed/postgres/commit/a1bee9b) Update README.md +- [904549a](https://github.com/stashed/postgres/commit/904549a) Update postgres.md +- [1c99280](https://github.com/stashed/postgres/commit/1c99280) Add Chart and documentation (#2) +- [0238497](https://github.com/stashed/postgres/commit/0238497) Add ca-certificates package in Docker image (#3) +- [b0e6b2b](https://github.com/stashed/postgres/commit/b0e6b2b) Reorganize repo (#1) +- [1972a9a](https://github.com/stashed/postgres/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/postgres/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/postgres/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/postgres/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/postgres/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/postgres/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/postgres/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/postgres/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/postgres/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/postgres/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/postgres/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/postgres/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/postgres/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/postgres/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/postgres/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/postgres/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/postgres/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/postgres/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/postgres/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/postgres/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/postgres/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/postgres/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/postgres/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/postgres/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/postgres/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/postgres/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/postgres/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/postgres/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/postgres/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/postgres/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/postgres/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/postgres/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/postgres/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/postgres/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/postgres/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/postgres/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/postgres/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/postgres/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/postgres/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/postgres/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/postgres/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/postgres/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/postgres/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/postgres/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/postgres/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/postgres/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/postgres/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/postgres/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/postgres/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/postgres/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/postgres/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/postgres/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/postgres/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/postgres/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/postgres/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/postgres/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/postgres/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/postgres/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/postgres/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/postgres/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/postgres/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/postgres/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/postgres/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/postgres/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/postgres/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/postgres/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/postgres/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/postgres/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/postgres/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/postgres/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/postgres/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/postgres/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/postgres/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/postgres/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/postgres/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/postgres/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/postgres/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/postgres/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/postgres/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/postgres/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/postgres/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/postgres/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/postgres/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/postgres/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/postgres/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/postgres/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/postgres/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/postgres/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/postgres/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/postgres/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/postgres/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/postgres/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/postgres/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/postgres/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/postgres/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/postgres/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/postgres/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/postgres/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/postgres/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/postgres/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/postgres/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/postgres/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/postgres/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/postgres/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/postgres/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/postgres/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/postgres/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/postgres/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/postgres/commit/60ed8f7) Update user guide (#94) + + +### [10.2-beta.20200708](https://github.com/stashed/postgres/releases/tag/10.2-beta.20200708) + + + +### [10.6-beta.20200708](https://github.com/stashed/postgres/releases/tag/10.6-beta.20200708) + + + +### [11.1-beta.20200708](https://github.com/stashed/postgres/releases/tag/11.1-beta.20200708) + + + +### [11.2-beta.20200708](https://github.com/stashed/postgres/releases/tag/11.2-beta.20200708) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0-beta.0](https://github.com/stashed/stash/releases/tag/v0.10.0-beta.0) + +- [c8b81cf7](https://github.com/stashed/stash/commit/c8b81cf7) Prepare for release v0.10.0-beta.0 (#1145) +- [2d145f47](https://github.com/stashed/stash/commit/2d145f47) Clarify Docker images are dually licensed +- [693ab7df](https://github.com/stashed/stash/commit/693ab7df) Update License (#1144) +- [e13d67eb](https://github.com/stashed/stash/commit/e13d67eb) Update to Kubernetes v1.18.3 (#1142) +- [26ee605a](https://github.com/stashed/stash/commit/26ee605a) Update ci.yml +- [9fa95666](https://github.com/stashed/stash/commit/9fa95666) Add workflow to update docs (#1136) +- [95a62a95](https://github.com/stashed/stash/commit/95a62a95) Update update-release-tracker.sh +- [379c90d5](https://github.com/stashed/stash/commit/379c90d5) Update update-release-tracker.sh +- [cd0a70ee](https://github.com/stashed/stash/commit/cd0a70ee) Use GITHUB_BASE_REF to detect target branch +- [e27c5f66](https://github.com/stashed/stash/commit/e27c5f66) Add script to update release tracker on pr merge (#1132) +- [b0dd5051](https://github.com/stashed/stash/commit/b0dd5051) Update .kodiak.toml +- [e87bad80](https://github.com/stashed/stash/commit/e87bad80) Parameterize installer namespace +- [da8d8956](https://github.com/stashed/stash/commit/da8d8956) Format CI workflows +- [bbde40a3](https://github.com/stashed/stash/commit/bbde40a3) Update to Kubernetes v1.18.3 (#1129) +- [38eb3781](https://github.com/stashed/stash/commit/38eb3781) Update to Kubernetes v1.18.3 +- [197aa7bd](https://github.com/stashed/stash/commit/197aa7bd) Create .kodiak.toml +- [181ca49e](https://github.com/stashed/stash/commit/181ca49e) Update coverage script +- [26602c96](https://github.com/stashed/stash/commit/26602c96) Merge pull request #1125 from stashed/fix-ci-tests +- [54f87b78](https://github.com/stashed/stash/commit/54f87b78) Increase wait timeout +- [43428085](https://github.com/stashed/stash/commit/43428085) Remove unnecessary test codes + run test in parallel +- [8a780e0c](https://github.com/stashed/stash/commit/8a780e0c) Fix clone-pvc tests +- [7027c0f6](https://github.com/stashed/stash/commit/7027c0f6) Fix E2E test +- [31de588a](https://github.com/stashed/stash/commit/31de588a) Change GCS test bucket name to stash-ci (#1122) +- [30a490a6](https://github.com/stashed/stash/commit/30a490a6) Merge pull request #1121 from stashed/baseline-psp +- [419a18e3](https://github.com/stashed/stash/commit/419a18e3) Use StringSlice type flag +- [9dd3804d](https://github.com/stashed/stash/commit/9dd3804d) Make PSP names configurable through flag +- [e4edef44](https://github.com/stashed/stash/commit/e4edef44) Always use baseline PSP +- [cf1538a0](https://github.com/stashed/stash/commit/cf1538a0) Use filepath.Join to generate Repository prefix for BackupBatch (#1120) +- [be189169](https://github.com/stashed/stash/commit/be189169) Go back to using engineerd/setup-kind +- [ae2d74fa](https://github.com/stashed/stash/commit/ae2d74fa) Update dependencies (#1117) +- [a93a5b4c](https://github.com/stashed/stash/commit/a93a5b4c) Remove defaults from CRD v1beta1 (#1116) +- [40e65761](https://github.com/stashed/stash/commit/40e65761) Use CRD v1 for Kubernetes >= 1.16 (#1115) +- [7d851e53](https://github.com/stashed/stash/commit/7d851e53) Merge pull request #1114 from stashed/x7 +- [352ddeed](https://github.com/stashed/stash/commit/352ddeed) Use preinstalled kind +- [11c9e422](https://github.com/stashed/stash/commit/11c9e422) Pass context +- [21053603](https://github.com/stashed/stash/commit/21053603) Update to Kubernetes 1.18.3 +- [f450e9cc](https://github.com/stashed/stash/commit/f450e9cc) Add wait for target logic + add conditions for BackupConfiguration + BackupBatch + RestoreSession (#1108) +- [8f8ff87e](https://github.com/stashed/stash/commit/8f8ff87e) Fix volume snapshot job cleanup (#1090) +- [a4a868b5](https://github.com/stashed/stash/commit/a4a868b5) Merge pull request #1111 from stashed/fix-interimVolume +- [108d0252](https://github.com/stashed/stash/commit/108d0252) Set BackupSession as owner of the pvc created from interimVolumeTemplate +- [fd136c53](https://github.com/stashed/stash/commit/fd136c53) Use Go 1.14.3 +- [74c71d22](https://github.com/stashed/stash/commit/74c71d22) Update crazy-max/ghaction-docker-buildx flag +- [f783899b](https://github.com/stashed/stash/commit/f783899b) Trigger the workflow on push to master +- [e7eceb30](https://github.com/stashed/stash/commit/e7eceb30) Trigger the workflow on push or pull request +- [fe479e8c](https://github.com/stashed/stash/commit/fe479e8c) Use kind v0.8.0 +- [9fc4665a](https://github.com/stashed/stash/commit/9fc4665a) Merge pull request #1093 from robotinfra/master +- [ef2d57e3](https://github.com/stashed/stash/commit/ef2d57e3) fix typo succesSfully +- [d8d35c49](https://github.com/stashed/stash/commit/d8d35c49) fix event types mismatch +- [53dfe8b0](https://github.com/stashed/stash/commit/53dfe8b0) Update stash labels in Makefile +- [c8081c1d](https://github.com/stashed/stash/commit/c8081c1d) Pass image pull secrets to helm chart +- [37b9b312](https://github.com/stashed/stash/commit/37b9b312) Use Go 1.14.2 (#1074) +- [09621974](https://github.com/stashed/stash/commit/09621974) Update K8s version 1.14.6 to 1.14.10 (#1084) +- [8a1ab32c](https://github.com/stashed/stash/commit/8a1ab32c) Give backup triggering CronJob all permissions for Stash crds (#1083) +- [53b932b1](https://github.com/stashed/stash/commit/53b932b1) Use kubectl 1.17 (#1082) +- [5cdeebee](https://github.com/stashed/stash/commit/5cdeebee) Fix nil pointer exception during VolumeSnapshot (#1073) +- [30630d60](https://github.com/stashed/stash/commit/30630d60) Assign returned error properly crateRestoreSessoin() (#1069) +- [3fcbe1b7](https://github.com/stashed/stash/commit/3fcbe1b7) Update README.md to reflect Stash's capability properly (#1060) +- [53513cfe](https://github.com/stashed/stash/commit/53513cfe) Update README.md +- [d615e2c0](https://github.com/stashed/stash/commit/d615e2c0) Add license scan report and status (#1031) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.07.09-beta.0.md b/content/docs/v2024.8.27/CHANGELOG-v2020.07.09-beta.0.md new file mode 100644 index 0000000000..6dc9c95807 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.07.09-beta.0.md @@ -0,0 +1,308 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.07.09-beta.0 + name: Changelog-v2020.07.09-beta.0 + parent: welcome + weight: 20200709 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.07.09-beta.0/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.07.09-beta.0/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.07.09-beta.0 (2020-07-09) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0-beta.1](https://github.com/stashed/apimachinery/releases/tag/v0.10.0-beta.1) + + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.07.09-beta.0](https://github.com/stashed/catalog/releases/tag/v2020.07.09-beta.0) + +- [e822d2a](https://github.com/stashed/catalog/commit/e822d2a) Prepare for release v2020.07.09-beta.0 (#32) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0-beta.1](https://github.com/stashed/cli/releases/tag/v0.10.0-beta.1) + +- [250372c](https://github.com/stashed/cli/commit/250372c) Prepare for release v0.10.0-beta.1 (#27) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-beta.20200709) + +- [4f6f04d](https://github.com/stashed/elasticsearch/commit/4f6f04d) Prepare for release 5.6.4-beta.20200709 (#105) +- [c0b63a8](https://github.com/stashed/elasticsearch/commit/c0b63a8) [cherry-pick] Build docker image in release workflow (#96) (#97) + + +### [6.2.4-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-beta.20200709) + +- [eb90a4d](https://github.com/stashed/elasticsearch/commit/eb90a4d) Prepare for release 6.2.4-beta.20200709 (#106) +- [341d4ad](https://github.com/stashed/elasticsearch/commit/341d4ad) [cherry-pick] Build docker image in release workflow (#96) (#98) + + +### [6.3.0-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-beta.20200709) + +- [ba97538](https://github.com/stashed/elasticsearch/commit/ba97538) Prepare for release 6.3.0-beta.20200709 (#107) +- [fe8fad4](https://github.com/stashed/elasticsearch/commit/fe8fad4) [cherry-pick] Build docker image in release workflow (#96) (#99) + + +### [6.4.0-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-beta.20200709) + +- [223de60](https://github.com/stashed/elasticsearch/commit/223de60) Prepare for release 6.4.0-beta.20200709 (#108) +- [3eb01b0](https://github.com/stashed/elasticsearch/commit/3eb01b0) [cherry-pick] Build docker image in release workflow (#96) (#100) + + +### [6.5.3-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-beta.20200709) + +- [27ca5d7](https://github.com/stashed/elasticsearch/commit/27ca5d7) Prepare for release 6.5.3-beta.20200709 (#109) +- [cfc95c6](https://github.com/stashed/elasticsearch/commit/cfc95c6) [cherry-pick] Build docker image in release workflow (#96) (#101) + + +### [6.8.0-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-beta.20200709) + +- [ebff50b](https://github.com/stashed/elasticsearch/commit/ebff50b) Prepare for release 6.8.0-beta.20200709 (#110) +- [c4322e7](https://github.com/stashed/elasticsearch/commit/c4322e7) [cherry-pick] Build docker image in release workflow (#96) (#102) + + +### [7.2.0-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-beta.20200709) + +- [bf94d4d](https://github.com/stashed/elasticsearch/commit/bf94d4d) Prepare for release 7.2.0-beta.20200709 (#111) +- [d1cdabd](https://github.com/stashed/elasticsearch/commit/d1cdabd) [cherry-pick] Build docker image in release workflow (#96) (#103) + + +### [7.3.2-beta.20200709](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-beta.20200709) + +- [d0e8ff7](https://github.com/stashed/elasticsearch/commit/d0e8ff7) Prepare for release 7.3.2-beta.20200709 (#112) +- [0b0df2e](https://github.com/stashed/elasticsearch/commit/0b0df2e) [cherry-pick] Build docker image in release workflow (#96) (#104) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0-beta.1](https://github.com/stashed/installer/releases/tag/v0.10.0-beta.1) + +- [bed8319](https://github.com/stashed/installer/commit/bed8319) Prepare for release v0.10.0-beta.1 (#76) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-beta.20200709](https://github.com/stashed/mongodb/releases/tag/3.4.1-beta.20200709) + +- [a354b6c](https://github.com/stashed/mongodb/commit/a354b6c) Prepare for release 3.4.1-beta.20200709 (#114) +- [2269fa6](https://github.com/stashed/mongodb/commit/2269fa6) [cherry-pick] Build docker image in release workflow (#102) (#103) + + +### [3.4.2-beta.20200709](https://github.com/stashed/mongodb/releases/tag/3.4.2-beta.20200709) + +- [735aea9](https://github.com/stashed/mongodb/commit/735aea9) Prepare for release 3.4.2-beta.20200709 (#115) +- [b871884](https://github.com/stashed/mongodb/commit/b871884) [cherry-pick] Build docker image in release workflow (#102) (#104) + + +### [3.6.1-beta.20200709](https://github.com/stashed/mongodb/releases/tag/3.6.1-beta.20200709) + +- [38ec877](https://github.com/stashed/mongodb/commit/38ec877) Prepare for release 3.6.1-beta.20200709 (#116) +- [6fd28b2](https://github.com/stashed/mongodb/commit/6fd28b2) [cherry-pick] Build docker image in release workflow (#102) (#105) + + +### [3.6.8-beta.20200709](https://github.com/stashed/mongodb/releases/tag/3.6.8-beta.20200709) + +- [a95f051](https://github.com/stashed/mongodb/commit/a95f051) Prepare for release 3.6.8-beta.20200709 (#117) +- [8f74e62](https://github.com/stashed/mongodb/commit/8f74e62) [cherry-pick] Build docker image in release workflow (#102) (#106) + + +### [4.0.1-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.0.1-beta.20200709) + +- [4168a4b](https://github.com/stashed/mongodb/commit/4168a4b) Prepare for release 4.0.1-beta.20200709 (#118) +- [90723f4](https://github.com/stashed/mongodb/commit/90723f4) [cherry-pick] Build docker image in release workflow (#102) (#107) + + +### [4.0.3-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.0.3-beta.20200709) + +- [b7719bd](https://github.com/stashed/mongodb/commit/b7719bd) Prepare for release 4.0.3-beta.20200709 (#119) +- [7c9074d](https://github.com/stashed/mongodb/commit/7c9074d) [cherry-pick] Build docker image in release workflow (#102) (#108) + + +### [4.0.5-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.0.5-beta.20200709) + +- [78ab8d2](https://github.com/stashed/mongodb/commit/78ab8d2) Prepare for release 4.0.5-beta.20200709 (#120) +- [12af669](https://github.com/stashed/mongodb/commit/12af669) [cherry-pick] Build docker image in release workflow (#102) (#109) + + +### [4.1.1-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.1.1-beta.20200709) + +- [923bd88](https://github.com/stashed/mongodb/commit/923bd88) Prepare for release 4.1.1-beta.20200709 (#121) +- [2bae7f7](https://github.com/stashed/mongodb/commit/2bae7f7) [cherry-pick] Build docker image in release workflow (#102) (#110) + + +### [4.1.4-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.1.4-beta.20200709) + +- [e3cd383](https://github.com/stashed/mongodb/commit/e3cd383) Prepare for release 4.1.4-beta.20200709 (#122) +- [a310c43](https://github.com/stashed/mongodb/commit/a310c43) [cherry-pick] Build docker image in release workflow (#102) (#111) + + +### [4.1.7-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.1.7-beta.20200709) + +- [3eccd08](https://github.com/stashed/mongodb/commit/3eccd08) Prepare for release 4.1.7-beta.20200709 (#123) +- [6377c55](https://github.com/stashed/mongodb/commit/6377c55) [cherry-pick] Build docker image in release workflow (#102) (#112) + + +### [4.2.3-beta.20200709](https://github.com/stashed/mongodb/releases/tag/4.2.3-beta.20200709) + +- [149e6ba](https://github.com/stashed/mongodb/commit/149e6ba) Prepare for release 4.2.3-beta.20200709 (#124) +- [47879da](https://github.com/stashed/mongodb/commit/47879da) [cherry-pick] Build docker image in release workflow (#102) (#113) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-beta.20200709](https://github.com/stashed/mysql/releases/tag/5.7.25-beta.20200709) + +- [422a411](https://github.com/stashed/mysql/commit/422a411) Prepare for release 5.7.25-beta.20200709 (#63) +- [e345110](https://github.com/stashed/mysql/commit/e345110) [cherry-pick] Build docker image in release workflow (#59) (#60) + + +### [8.0.3-beta.20200709](https://github.com/stashed/mysql/releases/tag/8.0.3-beta.20200709) + +- [ced3feb](https://github.com/stashed/mysql/commit/ced3feb) Prepare for release 8.0.3-beta.20200709 (#65) +- [8299693](https://github.com/stashed/mysql/commit/8299693) [cherry-pick] Build docker image in release workflow (#59) (#62) + + +### [8.0.14-beta.20200709](https://github.com/stashed/mysql/releases/tag/8.0.14-beta.20200709) + +- [bf2dd2d](https://github.com/stashed/mysql/commit/bf2dd2d) Prepare for release 8.0.14-beta.20200709 (#64) +- [226b3a9](https://github.com/stashed/mysql/commit/226b3a9) [cherry-pick] Build docker image in release workflow (#59) (#61) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-beta.20200709](https://github.com/stashed/percona-xtradb/releases/tag/5.7-beta.20200709) + +- [7fc07cc](https://github.com/stashed/percona-xtradb/commit/7fc07cc) Prepare for release 5.7-beta.20200709 (#38) +- [ca32b31](https://github.com/stashed/percona-xtradb/commit/ca32b31) [cherry-pick] Build docker image in release workflow (#36) (#37) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-beta.20200709](https://github.com/stashed/postgres/releases/tag/9.6-beta.20200709) + +- [5befa82](https://github.com/stashed/postgres/commit/5befa82) Prepare for release 9.6-beta.20200709 (#100) +- [52fab57](https://github.com/stashed/postgres/commit/52fab57) [cherry-pick] Build docker images in release workflow (#90) (#95) + + +### [10.2-beta.20200709](https://github.com/stashed/postgres/releases/tag/10.2-beta.20200709) + +- [d8a2be0](https://github.com/stashed/postgres/commit/d8a2be0) Prepare for release 10.2-beta.20200709 (#96) +- [0bba297](https://github.com/stashed/postgres/commit/0bba297) [cherry-pick] Build docker images in release workflow (#90) (#91) + + +### [10.6-beta.20200709](https://github.com/stashed/postgres/releases/tag/10.6-beta.20200709) + +- [78fdd94](https://github.com/stashed/postgres/commit/78fdd94) Prepare for release 10.6-beta.20200709 (#97) +- [c70d2d9](https://github.com/stashed/postgres/commit/c70d2d9) [cherry-pick] Build docker images in release workflow (#90) (#92) + + +### [11.1-beta.20200709](https://github.com/stashed/postgres/releases/tag/11.1-beta.20200709) + +- [81b21f0](https://github.com/stashed/postgres/commit/81b21f0) Prepare for release 11.1-beta.20200709 (#98) +- [4fc87ef](https://github.com/stashed/postgres/commit/4fc87ef) [cherry-pick] Build docker images in release workflow (#90) (#93) + + +### [11.2-beta.20200709](https://github.com/stashed/postgres/releases/tag/11.2-beta.20200709) + +- [a3efd1a](https://github.com/stashed/postgres/commit/a3efd1a) Prepare for release 11.2-beta.20200709 (#99) +- [c0a32e5](https://github.com/stashed/postgres/commit/c0a32e5) [cherry-pick] Build docker images in release workflow (#90) (#94) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0-beta.1](https://github.com/stashed/stash/releases/tag/v0.10.0-beta.1) + +- [3b717aac](https://github.com/stashed/stash/commit/3b717aac) Prepare for release v0.10.0-beta.1 (#1146) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.0.md b/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.0.md new file mode 100644 index 0000000000..5a6256826e --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.0.md @@ -0,0 +1,643 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.08.26-rc.0 + name: Changelog-v2020.08.26-rc.0 + parent: welcome + weight: 20200826 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.08.26-rc.0/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.0/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.08.26-rc.0 (2020-08-26) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0-rc.0](https://github.com/stashed/apimachinery/releases/tag/v0.10.0-rc.0) + +- [254ee64e](https://github.com/stashed/apimachinery/commit/254ee64e) Rename param annotation (#42) +- [2210ed42](https://github.com/stashed/apimachinery/commit/2210ed42) Update Kubernetes v1.18.3 dependencies (#41) +- [835c0358](https://github.com/stashed/apimachinery/commit/835c0358) Update Kubernetes v1.18.3 dependencies (#40) +- [692909fe](https://github.com/stashed/apimachinery/commit/692909fe) Add params and schedule annotation (#38) +- [b9ff4f14](https://github.com/stashed/apimachinery/commit/b9ff4f14) Update Kubernetes v1.18.3 dependencies (#37) +- [c44c52c8](https://github.com/stashed/apimachinery/commit/c44c52c8) Update Kubernetes v1.18.3 dependencies (#36) +- [073a93c8](https://github.com/stashed/apimachinery/commit/073a93c8) Rename StashLocalBackendAccessor to StashNetVolAccessor (#35) +- [e29c2724](https://github.com/stashed/apimachinery/commit/e29c2724) Update Kubernetes v1.18.3 dependencies (#34) +- [a4807149](https://github.com/stashed/apimachinery/commit/a4807149) Update Kubernetes v1.18.3 dependencies (#33) +- [d6fcb2c6](https://github.com/stashed/apimachinery/commit/d6fcb2c6) Fix protobuf tags (#32) +- [d255d800](https://github.com/stashed/apimachinery/commit/d255d800) Pass target reference for restore job condition (#31) +- [a3ce1cee](https://github.com/stashed/apimachinery/commit/a3ce1cee) Add helper method for NFS backend (#30) +- [a4be15a1](https://github.com/stashed/apimachinery/commit/a4be15a1) Introduce RestoreBatch CRD + Additional Improvements (#22) +- [710228f4](https://github.com/stashed/apimachinery/commit/710228f4) Update to Kubernetes v1.18.3 (#29) +- [0f69a3ab](https://github.com/stashed/apimachinery/commit/0f69a3ab) Update to Kubernetes v1.18.3 (#28) +- [504a57e7](https://github.com/stashed/apimachinery/commit/504a57e7) Update to Kubernetes v1.18.3 (#27) +- [843421e4](https://github.com/stashed/apimachinery/commit/843421e4) Show AppsCode in copyright file header (#26) +- [ad462cc4](https://github.com/stashed/apimachinery/commit/ad462cc4) Update to Kubernetes v1.18.3 (#25) +- [28d53699](https://github.com/stashed/apimachinery/commit/28d53699) Update update-release-tracker.sh +- [34624044](https://github.com/stashed/apimachinery/commit/34624044) Update update-release-tracker.sh +- [5f5de63c](https://github.com/stashed/apimachinery/commit/5f5de63c) Fix openapi path (#24) +- [6e0ad5f8](https://github.com/stashed/apimachinery/commit/6e0ad5f8) Add script to update release tracker on pr merge (#23) +- [cbf9b376](https://github.com/stashed/apimachinery/commit/cbf9b376) Update .kodiak.toml +- [d12b3d4b](https://github.com/stashed/apimachinery/commit/d12b3d4b) Update to Kubernetes v1.18.3 (#21) +- [1956a312](https://github.com/stashed/apimachinery/commit/1956a312) Update to Kubernetes v1.18.3 +- [c3966002](https://github.com/stashed/apimachinery/commit/c3966002) Unwrap top level api folder (#20) +- [5ba03fb5](https://github.com/stashed/apimachinery/commit/5ba03fb5) Update to Kubernetes v1.18.3 (#19) +- [abeb620e](https://github.com/stashed/apimachinery/commit/abeb620e) Update to Kubernetes v1.18.3 +- [6fdf8a60](https://github.com/stashed/apimachinery/commit/6fdf8a60) Enable https://kodiakhq.com (#13) +- [479258ed](https://github.com/stashed/apimachinery/commit/479258ed) Update dev scripts (#12) +- [a85ced99](https://github.com/stashed/apimachinery/commit/a85ced99) Merge pull request #11 from stashed/k8s-gomod-refresher-1591208266 +- [82df6f26](https://github.com/stashed/apimachinery/commit/82df6f26) Update to Kubernetes v1.18.3 +- [788f6921](https://github.com/stashed/apimachinery/commit/788f6921) Add default annotation for Snapshotter (#9) +- [d2f3f5d4](https://github.com/stashed/apimachinery/commit/d2f3f5d4) Remove defaults from crd v1beta1 YAML (#8) +- [1a09ffde](https://github.com/stashed/apimachinery/commit/1a09ffde) Update dependencies +- [58525b4b](https://github.com/stashed/apimachinery/commit/58525b4b) Update dependencies +- [c34c2ec1](https://github.com/stashed/apimachinery/commit/c34c2ec1) Generate both v1beta1 and v1 CRD YAML (#7) +- [e81205a3](https://github.com/stashed/apimachinery/commit/e81205a3) Bring back mistakenly removed SetRecoveryStats +- [5f8cf3a6](https://github.com/stashed/apimachinery/commit/5f8cf3a6) Merge pull request #6 from stashed/k-1.18.3 +- [723f4de9](https://github.com/stashed/apimachinery/commit/723f4de9) Add context to crd utils +- [59478af4](https://github.com/stashed/apimachinery/commit/59478af4) Update to Kubernetes 1.18.3 +- [e83b90a7](https://github.com/stashed/apimachinery/commit/e83b90a7) Merge pull request #3 from stashed/wait-for-target +- [a5b9a011](https://github.com/stashed/apimachinery/commit/a5b9a011) Simplify targetMatched() function +- [58948bd9](https://github.com/stashed/apimachinery/commit/58948bd9) Refactor +- [5568cb90](https://github.com/stashed/apimachinery/commit/5568cb90) Add RestoreSession conditions +- [906c5910](https://github.com/stashed/apimachinery/commit/906c5910) Add TypeMeta to invoker +- [22843fdb](https://github.com/stashed/apimachinery/commit/22843fdb) Use Go 1.14.3 +- [238d1bd0](https://github.com/stashed/apimachinery/commit/238d1bd0) Add backup invoker condition transion reasons +- [275965f9](https://github.com/stashed/apimachinery/commit/275965f9) Introduce conditions for BackupConfiguration and BackupBatch +- [35159c81](https://github.com/stashed/apimachinery/commit/35159c81) Merge pull request #5 from stashed/fix-updatestatus +- [f1d78326](https://github.com/stashed/apimachinery/commit/f1d78326) Fix helper methods +- [dbb02873](https://github.com/stashed/apimachinery/commit/dbb02873) Fix UpdateStatus() function +- [a7bd75ad](https://github.com/stashed/apimachinery/commit/a7bd75ad) Update crazy-max/ghaction-docker-buildx flag +- [1d65a7d4](https://github.com/stashed/apimachinery/commit/1d65a7d4) Use recommended kubernetes app labels (#4) +- [5b322e9f](https://github.com/stashed/apimachinery/commit/5b322e9f) Add Enum markers to api types +- [e6017151](https://github.com/stashed/apimachinery/commit/e6017151) Trigger the workflow on push or pull request +- [54097441](https://github.com/stashed/apimachinery/commit/54097441) Use kubectl v1.17 (#1) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.08.26-rc.0](https://github.com/stashed/catalog/releases/tag/v2020.08.26-rc.0) + + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0-rc.0](https://github.com/stashed/cli/releases/tag/v0.10.0-rc.0) + +- [fdfe6b8](https://github.com/stashed/cli/commit/fdfe6b8) Prepare for release v0.10.0-rc.0 (#38) +- [132ae15](https://github.com/stashed/cli/commit/132ae15) Fix build (#37) +- [77a76a7](https://github.com/stashed/cli/commit/77a76a7) Update Kubernetes v1.18.3 dependencies (#36) +- [efe0fc5](https://github.com/stashed/cli/commit/efe0fc5) Update Kubernetes v1.18.3 dependencies (#35) +- [d39bd97](https://github.com/stashed/cli/commit/d39bd97) Update Kubernetes v1.18.3 dependencies (#34) +- [3e074e7](https://github.com/stashed/cli/commit/3e074e7) Update Kubernetes v1.18.3 dependencies (#33) +- [f020137](https://github.com/stashed/cli/commit/f020137) Update Kubernetes v1.18.3 dependencies (#32) +- [99d27f0](https://github.com/stashed/cli/commit/99d27f0) Update Kubernetes v1.18.3 dependencies (#31) +- [3c78ec5](https://github.com/stashed/cli/commit/3c78ec5) Use actions/upload-artifact@v2 +- [e416569](https://github.com/stashed/cli/commit/e416569) Update to Kubernetes v1.18.3 (#30) +- [2baaae1](https://github.com/stashed/cli/commit/2baaae1) Update to Kubernetes v1.18.3 (#29) +- [44a1514](https://github.com/stashed/cli/commit/44a1514) Update to Kubernetes v1.18.3 (#28) +- [250372c](https://github.com/stashed/cli/commit/250372c) Prepare for release v0.10.0-beta.1 (#27) +- [3728110](https://github.com/stashed/cli/commit/3728110) Prepare for release v0.10.0-beta.0 (#26) +- [e7111a5](https://github.com/stashed/cli/commit/e7111a5) Update License +- [7fe1e07](https://github.com/stashed/cli/commit/7fe1e07) Update to Kubernetes v1.18.3 (#25) +- [66b3b46](https://github.com/stashed/cli/commit/66b3b46) Shorten command name for cli (#24) +- [b913cfc](https://github.com/stashed/cli/commit/b913cfc) Add workflow to update docs (#23) +- [1881c64](https://github.com/stashed/cli/commit/1881c64) Update update-release-tracker.sh +- [0548bdc](https://github.com/stashed/cli/commit/0548bdc) Update update-release-tracker.sh +- [b1b28ff](https://github.com/stashed/cli/commit/b1b28ff) Use GITHUB_BASE_REF to detect target branch +- [1e16b99](https://github.com/stashed/cli/commit/1e16b99) Add script to update release tracker on pr merge (#21) +- [f91bf33](https://github.com/stashed/cli/commit/f91bf33) Make release non-draft +- [d29bdb6](https://github.com/stashed/cli/commit/d29bdb6) Update .kodiak.toml +- [b727108](https://github.com/stashed/cli/commit/b727108) Update to Kubernetes v1.18.3 (#20) +- [f3f03aa](https://github.com/stashed/cli/commit/f3f03aa) Update to Kubernetes v1.18.3 +- [bcd7c5e](https://github.com/stashed/cli/commit/bcd7c5e) Create .kodiak.toml +- [9882aa2](https://github.com/stashed/cli/commit/9882aa2) Add blank line after license header (#19) +- [7774218](https://github.com/stashed/cli/commit/7774218) Update dev scripts (#18) +- [38eb35c](https://github.com/stashed/cli/commit/38eb35c) Run unit tests against SRC_PKGS +- [526949c](https://github.com/stashed/cli/commit/526949c) Update to Kubernetes v1.18.3 (#17) +- [fc3e6c5](https://github.com/stashed/cli/commit/fc3e6c5) Update crazy-max/ghaction-docker-buildx flag +- [3943575](https://github.com/stashed/cli/commit/3943575) Trigger the workflow on push or pull request + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-beta.20200826) + +- [df82b88](https://github.com/stashed/elasticsearch/commit/df82b88) Prepare for release 5.6.4-beta.20200826 (#158) +- [465a9f0](https://github.com/stashed/elasticsearch/commit/465a9f0) [cherry-pick] Update Stash installation link (#149) (#150) +- [4fd2af7](https://github.com/stashed/elasticsearch/commit/4fd2af7) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#141) +- [f9f6ab1](https://github.com/stashed/elasticsearch/commit/f9f6ab1) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#133) +- [cf70698](https://github.com/stashed/elasticsearch/commit/cf70698) [cherry-pick] Update chart icon (#123) +- [f1c9257](https://github.com/stashed/elasticsearch/commit/f1c9257) [cherry-pick] Make chart registry configurable (#114) (#115) + + +### [6.2.4-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-beta.20200826) + +- [6c3dfa5](https://github.com/stashed/elasticsearch/commit/6c3dfa5) Prepare for release 6.2.4-beta.20200826 (#159) +- [4aa0746](https://github.com/stashed/elasticsearch/commit/4aa0746) [cherry-pick] Update Stash installation link (#149) (#151) +- [9847b08](https://github.com/stashed/elasticsearch/commit/9847b08) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#142) +- [e13632d](https://github.com/stashed/elasticsearch/commit/e13632d) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#134) +- [94dc85b](https://github.com/stashed/elasticsearch/commit/94dc85b) [cherry-pick] Update chart icon (#124) +- [efc6ad0](https://github.com/stashed/elasticsearch/commit/efc6ad0) [cherry-pick] Make chart registry configurable (#114) (#116) + + +### [6.3.0-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-beta.20200826) + +- [4a32c49](https://github.com/stashed/elasticsearch/commit/4a32c49) Prepare for release 6.3.0-beta.20200826 (#160) +- [4bc4449](https://github.com/stashed/elasticsearch/commit/4bc4449) [cherry-pick] Update Stash installation link (#149) (#152) +- [31d3860](https://github.com/stashed/elasticsearch/commit/31d3860) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#143) +- [c19466a](https://github.com/stashed/elasticsearch/commit/c19466a) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#135) +- [1aaa172](https://github.com/stashed/elasticsearch/commit/1aaa172) [cherry-pick] Update chart icon (#125) +- [30412a8](https://github.com/stashed/elasticsearch/commit/30412a8) [cherry-pick] Make chart registry configurable (#114) (#117) + + +### [6.4.0-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-beta.20200826) + +- [0770775](https://github.com/stashed/elasticsearch/commit/0770775) Prepare for release 6.4.0-beta.20200826 (#161) +- [38be1db](https://github.com/stashed/elasticsearch/commit/38be1db) [cherry-pick] Update Stash installation link (#149) (#153) +- [87ca905](https://github.com/stashed/elasticsearch/commit/87ca905) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#144) +- [75dd0a5](https://github.com/stashed/elasticsearch/commit/75dd0a5) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#136) +- [ad75b67](https://github.com/stashed/elasticsearch/commit/ad75b67) [cherry-pick] Update chart icon (#126) +- [e5e9c7b](https://github.com/stashed/elasticsearch/commit/e5e9c7b) [cherry-pick] Make chart registry configurable (#114) (#118) + + +### [6.5.3-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-beta.20200826) + +- [58af00f](https://github.com/stashed/elasticsearch/commit/58af00f) Prepare for release 6.5.3-beta.20200826 (#162) +- [1365067](https://github.com/stashed/elasticsearch/commit/1365067) [cherry-pick] Update Stash installation link (#149) (#154) +- [16f9593](https://github.com/stashed/elasticsearch/commit/16f9593) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#145) +- [8413eba](https://github.com/stashed/elasticsearch/commit/8413eba) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#137) +- [b0237a3](https://github.com/stashed/elasticsearch/commit/b0237a3) [cherry-pick] Update chart icon (#127) +- [daec12d](https://github.com/stashed/elasticsearch/commit/daec12d) [cherry-pick] Make chart registry configurable (#114) (#119) + + +### [6.8.0-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-beta.20200826) + +- [8811915](https://github.com/stashed/elasticsearch/commit/8811915) Prepare for release 6.8.0-beta.20200826 (#163) +- [46e0b2a](https://github.com/stashed/elasticsearch/commit/46e0b2a) [cherry-pick] Update Stash installation link (#149) (#155) +- [9a00bba](https://github.com/stashed/elasticsearch/commit/9a00bba) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#146) +- [f0ae71f](https://github.com/stashed/elasticsearch/commit/f0ae71f) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#138) +- [9561dd8](https://github.com/stashed/elasticsearch/commit/9561dd8) [cherry-pick] Update chart icon (#128) +- [bc40c89](https://github.com/stashed/elasticsearch/commit/bc40c89) [cherry-pick] Make chart registry configurable (#114) (#120) + + +### [7.2.0-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-beta.20200826) + +- [bd2c6bc](https://github.com/stashed/elasticsearch/commit/bd2c6bc) Prepare for release 7.2.0-beta.20200826 (#164) +- [2c3a9e1](https://github.com/stashed/elasticsearch/commit/2c3a9e1) [cherry-pick] Update Stash installation link (#149) (#156) +- [c862e31](https://github.com/stashed/elasticsearch/commit/c862e31) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#147) +- [1010749](https://github.com/stashed/elasticsearch/commit/1010749) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#139) +- [b0cac90](https://github.com/stashed/elasticsearch/commit/b0cac90) [cherry-pick] Update chart icon (#129) +- [abd52d3](https://github.com/stashed/elasticsearch/commit/abd52d3) [cherry-pick] Make chart registry configurable (#114) (#121) + + +### [7.3.2-beta.20200826](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-beta.20200826) + +- [a163678](https://github.com/stashed/elasticsearch/commit/a163678) Prepare for release 7.3.2-beta.20200826 (#165) +- [152792e](https://github.com/stashed/elasticsearch/commit/152792e) [cherry-pick] Update Stash installation link (#149) (#157) +- [2d0f427](https://github.com/stashed/elasticsearch/commit/2d0f427) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#148) +- [281a0ce](https://github.com/stashed/elasticsearch/commit/281a0ce) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#140) +- [e89cbde](https://github.com/stashed/elasticsearch/commit/e89cbde) [cherry-pick] Update chart icon (#130) +- [a4c3327](https://github.com/stashed/elasticsearch/commit/a4c3327) [cherry-pick] Make chart registry configurable (#114) (#122) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0-rc.0](https://github.com/stashed/installer/releases/tag/v0.10.0-rc.0) + +- [6018270](https://github.com/stashed/installer/commit/6018270) Prepare for release v0.10.0-rc.0 (#87) +- [9da1502](https://github.com/stashed/installer/commit/9da1502) Port changes from enterprise version (#85) +- [0838112](https://github.com/stashed/installer/commit/0838112) Add offline license verification (#84) +- [d869f33](https://github.com/stashed/installer/commit/d869f33) Always give use permission for baseline psp to operator (#83) +- [d1e0142](https://github.com/stashed/installer/commit/d1e0142) Support Snapshot listing for NFS backend without workload running (#80) +- [53bab27](https://github.com/stashed/installer/commit/53bab27) Pass imagePullSecrets as operator flag (#71) +- [4e3a984](https://github.com/stashed/installer/commit/4e3a984) Update to Kubernetes v1.18.3 (#79) +- [6e57dd4](https://github.com/stashed/installer/commit/6e57dd4) Update to Kubernetes v1.18.3 (#78) +- [5c681fe](https://github.com/stashed/installer/commit/5c681fe) Update to Kubernetes v1.18.3 (#77) +- [c268a57](https://github.com/stashed/installer/commit/c268a57) Make chart registry configurable +- [bed8319](https://github.com/stashed/installer/commit/bed8319) Prepare for release v0.10.0-beta.1 (#76) +- [cd44ba9](https://github.com/stashed/installer/commit/cd44ba9) Prepare for release v0.10.0-beta.0 (#75) +- [a04e173](https://github.com/stashed/installer/commit/a04e173) Publish to testing dir for alpha/beta releases +- [4b23e1c](https://github.com/stashed/installer/commit/4b23e1c) Update License (#74) +- [9b7a4e0](https://github.com/stashed/installer/commit/9b7a4e0) Update to Kubernetes v1.18.3 (#72) +- [4318306](https://github.com/stashed/installer/commit/4318306) Update ci.yml +- [15d1594](https://github.com/stashed/installer/commit/15d1594) Fix Stash Enterprise installer (#70) +- [31c9dcc](https://github.com/stashed/installer/commit/31c9dcc) Tag chart and app version as string for yq (#69) +- [1782049](https://github.com/stashed/installer/commit/1782049) Update links (#68) +- [634da4d](https://github.com/stashed/installer/commit/634da4d) Update update-release-tracker.sh +- [1155610](https://github.com/stashed/installer/commit/1155610) Update update-release-tracker.sh +- [1b10b5e](https://github.com/stashed/installer/commit/1b10b5e) Add script to update release tracker on pr merge (#67) +- [ce0b28e](https://github.com/stashed/installer/commit/ce0b28e) Update release workflow +- [c3ac668](https://github.com/stashed/installer/commit/c3ac668) Update ci.yml +- [98bad7e](https://github.com/stashed/installer/commit/98bad7e) Add Stash Enterprise chart (#63) +- [73f52a6](https://github.com/stashed/installer/commit/73f52a6) Add commands to update chart (#65) +- [0dc7f91](https://github.com/stashed/installer/commit/0dc7f91) Fix chart release process (#64) +- [0d5c4e1](https://github.com/stashed/installer/commit/0d5c4e1) Update .kodiak.toml +- [3b53e64](https://github.com/stashed/installer/commit/3b53e64) Update to Kubernetes v1.18.3 (#58) +- [43c5dbe](https://github.com/stashed/installer/commit/43c5dbe) Update to Kubernetes v1.18.3 +- [b9e784c](https://github.com/stashed/installer/commit/b9e784c) Create .kodiak.toml +- [b30b3b0](https://github.com/stashed/installer/commit/b30b3b0) Merge pull request #57 from stashed/psp +- [1b89401](https://github.com/stashed/installer/commit/1b89401) Disable apparmor and seccomp by default +- [6bed1aa](https://github.com/stashed/installer/commit/6bed1aa) Pass psp names for the jobs through flag +- [bd35d81](https://github.com/stashed/installer/commit/bd35d81) Always use baseline psp for stash +- [4e3474a](https://github.com/stashed/installer/commit/4e3474a) Add RBAC permission for generic-garbage-collector (#56) +- [be006f6](https://github.com/stashed/installer/commit/be006f6) Permit configmap list/watch -ing for delegated authentication checking (#55) +- [5685c15](https://github.com/stashed/installer/commit/5685c15) Update dependencies +- [8b7b805](https://github.com/stashed/installer/commit/8b7b805) Update dependencies +- [d2b2b09](https://github.com/stashed/installer/commit/d2b2b09) Generate both v1beta1 and v1 CRD YAML (#54) +- [7fbcb29](https://github.com/stashed/installer/commit/7fbcb29) Update to Kubernetes v1.18.3 (#53) +- [88e5e8c](https://github.com/stashed/installer/commit/88e5e8c) Use Go 1.14.3 +- [8e56cb1](https://github.com/stashed/installer/commit/8e56cb1) Trigger build on push to only master branch +- [562caf8](https://github.com/stashed/installer/commit/562caf8) Use recommended kubernetes app labels (#52) +- [cc55e5a](https://github.com/stashed/installer/commit/cc55e5a) Trigger the workflow on push or pull request +- [fd8acf5](https://github.com/stashed/installer/commit/fd8acf5) Update chart readme +- [672f37e](https://github.com/stashed/installer/commit/672f37e) Show examples in chart readme +- [39f4ca1](https://github.com/stashed/installer/commit/39f4ca1) Auto generate chart readme file (#50) +- [47f4250](https://github.com/stashed/installer/commit/47f4250) Update release.yml +- [b68d9cb](https://github.com/stashed/installer/commit/b68d9cb) Cleanup newlines +- [20d51b0](https://github.com/stashed/installer/commit/20d51b0) Reformat stash chart template (#49) +- [65f8bee](https://github.com/stashed/installer/commit/65f8bee) Use kubectl v1.16 as cleaner (#48) +- [85a7cfd](https://github.com/stashed/installer/commit/85a7cfd) Rename prometheus.io/coreos-operator to prometheus.io/operator (#47) +- [b042def](https://github.com/stashed/installer/commit/b042def) Move apireg annotation to operator pod (#46) +- [a543953](https://github.com/stashed/installer/commit/a543953) Various cleanup (#44) +- [b6e2bec](https://github.com/stashed/installer/commit/b6e2bec) Fix helm install --wait flag (#42) +- [806aada](https://github.com/stashed/installer/commit/806aada) Do not harcode namespace (#40) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-beta.20200826](https://github.com/stashed/mongodb/releases/tag/3.4.1-beta.20200826) + +- [1c08dfd](https://github.com/stashed/mongodb/commit/1c08dfd) Prepare for release 3.4.1-beta.20200826 (#185) +- [a4d2b49](https://github.com/stashed/mongodb/commit/a4d2b49) [cherry-pick] Update Stash installation link (#173) (#174) +- [3ae949e](https://github.com/stashed/mongodb/commit/3ae949e) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#162) +- [75ebc36](https://github.com/stashed/mongodb/commit/75ebc36) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#151) +- [c261899](https://github.com/stashed/mongodb/commit/c261899) [cherry-pick] Update chart icon (#138) +- [465f36c](https://github.com/stashed/mongodb/commit/465f36c) [cherry-pick] Make chart registry configurable (#126) (#127) + + +### [3.4.2-beta.20200826](https://github.com/stashed/mongodb/releases/tag/3.4.2-beta.20200826) + +- [b9d6d4d](https://github.com/stashed/mongodb/commit/b9d6d4d) Prepare for release 3.4.2-beta.20200826 (#186) +- [adf04e8](https://github.com/stashed/mongodb/commit/adf04e8) [cherry-pick] Update Stash installation link (#173) (#175) +- [bdd4240](https://github.com/stashed/mongodb/commit/bdd4240) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#163) +- [2078ffb](https://github.com/stashed/mongodb/commit/2078ffb) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#152) +- [848c360](https://github.com/stashed/mongodb/commit/848c360) [cherry-pick] Update chart icon (#139) +- [20e0d4f](https://github.com/stashed/mongodb/commit/20e0d4f) [cherry-pick] Make chart registry configurable (#126) (#128) + + +### [3.6.1-beta.20200826](https://github.com/stashed/mongodb/releases/tag/3.6.1-beta.20200826) + +- [fbf6dfb](https://github.com/stashed/mongodb/commit/fbf6dfb) Prepare for release 3.6.1-beta.20200826 (#187) +- [50d9b51](https://github.com/stashed/mongodb/commit/50d9b51) [cherry-pick] Update Stash installation link (#173) (#176) +- [138c910](https://github.com/stashed/mongodb/commit/138c910) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#164) +- [95d8800](https://github.com/stashed/mongodb/commit/95d8800) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#153) +- [f6dcc94](https://github.com/stashed/mongodb/commit/f6dcc94) [cherry-pick] Update chart icon (#140) +- [0449fbf](https://github.com/stashed/mongodb/commit/0449fbf) [cherry-pick] Make chart registry configurable (#126) (#129) + + +### [3.6.8-beta.20200826](https://github.com/stashed/mongodb/releases/tag/3.6.8-beta.20200826) + +- [a2098a8](https://github.com/stashed/mongodb/commit/a2098a8) Prepare for release 3.6.8-beta.20200826 (#188) +- [81cad93](https://github.com/stashed/mongodb/commit/81cad93) [cherry-pick] Update Stash installation link (#173) (#177) +- [0711cec](https://github.com/stashed/mongodb/commit/0711cec) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#165) +- [cd921b7](https://github.com/stashed/mongodb/commit/cd921b7) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#154) +- [5d29173](https://github.com/stashed/mongodb/commit/5d29173) [cherry-pick] Update chart icon (#141) +- [a8265a7](https://github.com/stashed/mongodb/commit/a8265a7) [cherry-pick] Make chart registry configurable (#126) (#130) + + +### [4.0.1-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.1-beta.20200826) + +- [b794eee](https://github.com/stashed/mongodb/commit/b794eee) Prepare for release 4.0.1-beta.20200826 (#189) +- [8e835ce](https://github.com/stashed/mongodb/commit/8e835ce) [cherry-pick] Update Stash installation link (#173) (#178) +- [0025cc4](https://github.com/stashed/mongodb/commit/0025cc4) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#166) +- [bc8f7a5](https://github.com/stashed/mongodb/commit/bc8f7a5) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#155) +- [7b0bb50](https://github.com/stashed/mongodb/commit/7b0bb50) [cherry-pick] Update chart icon (#142) +- [a9621b6](https://github.com/stashed/mongodb/commit/a9621b6) [cherry-pick] Make chart registry configurable (#126) (#131) + + +### [4.0.3-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.3-beta.20200826) + +- [fd4d40e](https://github.com/stashed/mongodb/commit/fd4d40e) Prepare for release 4.0.3-beta.20200826 (#190) +- [3b2f40b](https://github.com/stashed/mongodb/commit/3b2f40b) [cherry-pick] Update Stash installation link (#173) (#179) +- [5ba31a4](https://github.com/stashed/mongodb/commit/5ba31a4) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#167) +- [349f6c0](https://github.com/stashed/mongodb/commit/349f6c0) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#156) +- [eb32485](https://github.com/stashed/mongodb/commit/eb32485) [cherry-pick] Update chart icon (#143) +- [e2b05d8](https://github.com/stashed/mongodb/commit/e2b05d8) [cherry-pick] Make chart registry configurable (#126) (#132) + + +### [4.0.5-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.5-beta.20200826) + +- [1bbff77](https://github.com/stashed/mongodb/commit/1bbff77) Prepare for release 4.0.5-beta.20200826 (#191) +- [51d0388](https://github.com/stashed/mongodb/commit/51d0388) [cherry-pick] Update Stash installation link (#173) (#180) +- [444ed15](https://github.com/stashed/mongodb/commit/444ed15) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#168) +- [00cfb11](https://github.com/stashed/mongodb/commit/00cfb11) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#157) +- [8a0c6ce](https://github.com/stashed/mongodb/commit/8a0c6ce) [cherry-pick] Update chart icon (#144) +- [e514864](https://github.com/stashed/mongodb/commit/e514864) [cherry-pick] Make chart registry configurable (#126) (#133) + + +### [4.1.1-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.1-beta.20200826) + +- [ad80c46](https://github.com/stashed/mongodb/commit/ad80c46) Prepare for release 4.1.1-beta.20200826 (#192) +- [a6017d0](https://github.com/stashed/mongodb/commit/a6017d0) [cherry-pick] Update Stash installation link (#173) (#181) +- [bbb9a42](https://github.com/stashed/mongodb/commit/bbb9a42) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#169) +- [a207fd0](https://github.com/stashed/mongodb/commit/a207fd0) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#158) +- [f877621](https://github.com/stashed/mongodb/commit/f877621) [cherry-pick] Update chart icon (#145) +- [628df7e](https://github.com/stashed/mongodb/commit/628df7e) [cherry-pick] Make chart registry configurable (#126) (#134) + + +### [4.1.4-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.4-beta.20200826) + +- [c092f8a](https://github.com/stashed/mongodb/commit/c092f8a) Prepare for release 4.1.4-beta.20200826 (#193) +- [cbb683a](https://github.com/stashed/mongodb/commit/cbb683a) [cherry-pick] Update Stash installation link (#173) (#182) +- [f8b1f2c](https://github.com/stashed/mongodb/commit/f8b1f2c) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#170) +- [b99744e](https://github.com/stashed/mongodb/commit/b99744e) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#159) +- [9ee1654](https://github.com/stashed/mongodb/commit/9ee1654) [cherry-pick] Update chart icon (#146) +- [8604d7b](https://github.com/stashed/mongodb/commit/8604d7b) [cherry-pick] Make chart registry configurable (#126) (#135) + + +### [4.1.7-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.7-beta.20200826) + +- [8334c89](https://github.com/stashed/mongodb/commit/8334c89) Prepare for release 4.1.7-beta.20200826 (#194) +- [905bdde](https://github.com/stashed/mongodb/commit/905bdde) [cherry-pick] Update Stash installation link (#173) (#183) +- [1eea836](https://github.com/stashed/mongodb/commit/1eea836) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#171) +- [52c06d6](https://github.com/stashed/mongodb/commit/52c06d6) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#160) +- [7765f65](https://github.com/stashed/mongodb/commit/7765f65) [cherry-pick] Update chart icon (#147) +- [7426cba](https://github.com/stashed/mongodb/commit/7426cba) [cherry-pick] Make chart registry configurable (#126) (#136) + + +### [4.2.3-beta.20200826](https://github.com/stashed/mongodb/releases/tag/4.2.3-beta.20200826) + +- [244da2c](https://github.com/stashed/mongodb/commit/244da2c) Prepare for release 4.2.3-beta.20200826 (#195) +- [953e51f](https://github.com/stashed/mongodb/commit/953e51f) Update Stash installation link (#173) (#184) +- [d9c6d0b](https://github.com/stashed/mongodb/commit/d9c6d0b) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#172) +- [0ef5cc0](https://github.com/stashed/mongodb/commit/0ef5cc0) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#161) +- [a51bdac](https://github.com/stashed/mongodb/commit/a51bdac) [cherry-pick] Update chart icon (#148) +- [2ad3b80](https://github.com/stashed/mongodb/commit/2ad3b80) [cherry-pick] Make chart registry configurable (#126) (#137) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-beta.20200826](https://github.com/stashed/mysql/releases/tag/5.7.25-beta.20200826) + +- [813ee01](https://github.com/stashed/mysql/commit/813ee01) Prepare for release 5.7.25-beta.20200826 (#85) +- [e646be7](https://github.com/stashed/mysql/commit/e646be7) [cherry-pick] Update Stash installation link (#81) (#82) +- [ecc7d0c](https://github.com/stashed/mysql/commit/ecc7d0c) [cherry-pick] Fix output format (#46) (#78) +- [7fcbd24](https://github.com/stashed/mysql/commit/7fcbd24) [cherry-pick] Pass image tag in values.yaml file (#74) (#75) +- [3188584](https://github.com/stashed/mysql/commit/3188584) [cherry-pick] Update chart icon (#71) +- [9060c7a](https://github.com/stashed/mysql/commit/9060c7a) [cherry-pick] Make chart registry configurable (#67) (#68) + + +### [8.0.3-beta.20200826](https://github.com/stashed/mysql/releases/tag/8.0.3-beta.20200826) + +- [7326b37](https://github.com/stashed/mysql/commit/7326b37) Prepare for release 8.0.3-beta.20200826 (#87) +- [72ba0ee](https://github.com/stashed/mysql/commit/72ba0ee) [cherry-pick] Update Stash installation link (#81) (#84) +- [3e856a9](https://github.com/stashed/mysql/commit/3e856a9) [cherry-pick] Fix output format (#46) (#80) +- [8621d51](https://github.com/stashed/mysql/commit/8621d51) [cherry-pick] Pass image tag in values.yaml file (#74) (#77) +- [41702eb](https://github.com/stashed/mysql/commit/41702eb) [cherry-pick] Update chart icon (#73) +- [31740f9](https://github.com/stashed/mysql/commit/31740f9) [cherry-pick] Make chart registry configurable (#67) (#70) + + +### [8.0.14-beta.20200826](https://github.com/stashed/mysql/releases/tag/8.0.14-beta.20200826) + +- [5816915](https://github.com/stashed/mysql/commit/5816915) Prepare for release 8.0.14-beta.20200826 (#86) +- [96b78ca](https://github.com/stashed/mysql/commit/96b78ca) [cherry-pick] Update Stash installation link (#81) (#83) +- [4f6c15b](https://github.com/stashed/mysql/commit/4f6c15b) [cherry-pick] Fix output format (#46) (#79) +- [9da1616](https://github.com/stashed/mysql/commit/9da1616) [cherry-pick] Pass image tag in values.yaml file (#74) (#76) +- [72edf00](https://github.com/stashed/mysql/commit/72edf00) [cherry-pick] Update chart icon (#72) +- [9f253db](https://github.com/stashed/mysql/commit/9f253db) [cherry-pick] Make chart registry configurable (#67) (#69) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-beta.20200826](https://github.com/stashed/percona-xtradb/releases/tag/5.7-beta.20200826) + +- [10b9a66](https://github.com/stashed/percona-xtradb/commit/10b9a66) Prepare for release 5.7-beta.20200826 (#49) +- [53f26da](https://github.com/stashed/percona-xtradb/commit/53f26da) [cherry-pick] Update Stash installation link (#47) (#48) +- [3eae3d3](https://github.com/stashed/percona-xtradb/commit/3eae3d3) [cherry-pick] Fix output format + Add PreBackupActions logic (#43) (#46) +- [0fa2765](https://github.com/stashed/percona-xtradb/commit/0fa2765) [cherry-pick] Make image.tag in values.yaml file as same as $APP_VERSION (#44) (#45) +- [7ad46c0](https://github.com/stashed/percona-xtradb/commit/7ad46c0) [cherry-pick] Update chart icon (#42) +- [97f7e6d](https://github.com/stashed/percona-xtradb/commit/97f7e6d) [cherry-pick] Make chart registry configurable (#40) (#41) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-beta.20200826](https://github.com/stashed/postgres/releases/tag/9.6-beta.20200826) + +- [61c4425](https://github.com/stashed/postgres/commit/61c4425) Prepare for release 9.6-beta.20200826 (#141) +- [b313c2c](https://github.com/stashed/postgres/commit/b313c2c) Update Stash installation link (#131) (#136) +- [d73595e](https://github.com/stashed/postgres/commit/d73595e) [cherry-pick] Update twitter handle (#125) (#130) +- [875edd5](https://github.com/stashed/postgres/commit/875edd5) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#124) +- [5a9a784](https://github.com/stashed/postgres/commit/5a9a784) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#119) +- [ce47f3a](https://github.com/stashed/postgres/commit/ce47f3a) [cherry-pick] Update chart icon (#112) +- [decfbb0](https://github.com/stashed/postgres/commit/decfbb0) [cherry-pick] Make chart registry configurable (#102) (#107) + + +### [10.2-beta.20200826](https://github.com/stashed/postgres/releases/tag/10.2-beta.20200826) + +- [ac65186](https://github.com/stashed/postgres/commit/ac65186) Prepare for release 10.2-beta.20200826 (#137) +- [1757b5f](https://github.com/stashed/postgres/commit/1757b5f) [cherry-pick] Update Stash installation link (#131) (#132) +- [56f90c7](https://github.com/stashed/postgres/commit/56f90c7) [cherry-pick] Update twitter handle (#125) (#126) +- [9734711](https://github.com/stashed/postgres/commit/9734711) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#120) +- [9556ade](https://github.com/stashed/postgres/commit/9556ade) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#115) +- [ce7257e](https://github.com/stashed/postgres/commit/ce7257e) [cherry-pick] Update chart icon (#108) +- [754640f](https://github.com/stashed/postgres/commit/754640f) [cherry-pick] Make chart registry configurable (#102) (#103) + + +### [10.6-beta.20200826](https://github.com/stashed/postgres/releases/tag/10.6-beta.20200826) + +- [1446996](https://github.com/stashed/postgres/commit/1446996) Prepare for release 10.6-beta.20200826 (#138) +- [720cc7b](https://github.com/stashed/postgres/commit/720cc7b) [cherry-pick] Update Stash installation link (#131) (#133) +- [6b17dea](https://github.com/stashed/postgres/commit/6b17dea) [cherry-pick] Update twitter handle (#125) (#127) +- [d1af1c6](https://github.com/stashed/postgres/commit/d1af1c6) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#121) +- [cd2f8ec](https://github.com/stashed/postgres/commit/cd2f8ec) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#116) +- [d89559c](https://github.com/stashed/postgres/commit/d89559c) [cherry-pick] Update chart icon (#109) +- [192c564](https://github.com/stashed/postgres/commit/192c564) [cherry-pick] Make chart registry configurable (#102) (#104) + + +### [11.1-beta.20200826](https://github.com/stashed/postgres/releases/tag/11.1-beta.20200826) + +- [0cc9647](https://github.com/stashed/postgres/commit/0cc9647) Prepare for release 11.1-beta.20200826 (#139) +- [dff51be](https://github.com/stashed/postgres/commit/dff51be) [cherry-pick] Update Stash installation link (#131) (#134) +- [b8480c8](https://github.com/stashed/postgres/commit/b8480c8) [cherry-pick] Update twitter handle (#125) (#128) +- [33fe94b](https://github.com/stashed/postgres/commit/33fe94b) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#122) +- [6a631b0](https://github.com/stashed/postgres/commit/6a631b0) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#117) +- [8bccb9c](https://github.com/stashed/postgres/commit/8bccb9c) [cherry-pick] Update chart icon (#110) +- [aca1577](https://github.com/stashed/postgres/commit/aca1577) [cherry-pick] Make chart registry configurable (#102) (#105) + + +### [11.2-beta.20200826](https://github.com/stashed/postgres/releases/tag/11.2-beta.20200826) + +- [cf876d3](https://github.com/stashed/postgres/commit/cf876d3) Prepare for release 11.2-beta.20200826 (#140) +- [22d4f2c](https://github.com/stashed/postgres/commit/22d4f2c) [cherry-pick] Update Stash installation link (#131) (#135) +- [462bf9f](https://github.com/stashed/postgres/commit/462bf9f) [cherry-pick] Update twitter handle (#125) (#129) +- [baa8b56](https://github.com/stashed/postgres/commit/baa8b56) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#123) +- [b09b460](https://github.com/stashed/postgres/commit/b09b460) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#118) +- [08ea901](https://github.com/stashed/postgres/commit/08ea901) [cherry-pick] Update chart icon (#111) +- [a6b8c9e](https://github.com/stashed/postgres/commit/a6b8c9e) [cherry-pick] Make chart registry configurable (#102) (#106) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.10.0-rc.0) + +- [3ebb7788](https://github.com/stashed/stash/commit/3ebb7788) Prepare for release v0.10.0-rc.0 (#1179) +- [48e5c87e](https://github.com/stashed/stash/commit/48e5c87e) Update Kubernetes v1.18.3 dependencies (#1178) +- [c269c8ed](https://github.com/stashed/stash/commit/c269c8ed) Port changes from enterprise version (#1176) +- [0fea720b](https://github.com/stashed/stash/commit/0fea720b) Update Kubernetes v1.18.3 dependencies (#1174) +- [c4b6013f](https://github.com/stashed/stash/commit/c4b6013f) Update Kubernetes v1.18.3 dependencies (#1173) +- [77b3eab8](https://github.com/stashed/stash/commit/77b3eab8) Update Kubernetes v1.18.3 dependencies (#1169) +- [64f7c292](https://github.com/stashed/stash/commit/64f7c292) Update Kubernetes v1.18.3 dependencies (#1168) +- [2d6fd7da](https://github.com/stashed/stash/commit/2d6fd7da) Update Kubernetes v1.18.3 dependencies (#1167) +- [378de04d](https://github.com/stashed/stash/commit/378de04d) Update Kubernetes v1.18.3 dependencies (#1159) +- [20decffa](https://github.com/stashed/stash/commit/20decffa) Build images in e2e workflow +- [4919cb03](https://github.com/stashed/stash/commit/4919cb03) Allow configuring k8s in e2e tests (#1155) +- [6e71662a](https://github.com/stashed/stash/commit/6e71662a) Update to Kubernetes v1.18.3 (#1154) +- [a83021fd](https://github.com/stashed/stash/commit/a83021fd) Trigger e2e tests on /ok-to-test command (#1150) +- [6bf44ceb](https://github.com/stashed/stash/commit/6bf44ceb) Update to Kubernetes v1.18.3 (#1149) +- [bcbb3a98](https://github.com/stashed/stash/commit/bcbb3a98) Update to Kubernetes v1.18.3 (#1148) +- [3b717aac](https://github.com/stashed/stash/commit/3b717aac) Prepare for release v0.10.0-beta.1 (#1146) +- [c8b81cf7](https://github.com/stashed/stash/commit/c8b81cf7) Prepare for release v0.10.0-beta.0 (#1145) +- [2d145f47](https://github.com/stashed/stash/commit/2d145f47) Clarify Docker images are dually licensed +- [693ab7df](https://github.com/stashed/stash/commit/693ab7df) Update License (#1144) +- [e13d67eb](https://github.com/stashed/stash/commit/e13d67eb) Update to Kubernetes v1.18.3 (#1142) +- [26ee605a](https://github.com/stashed/stash/commit/26ee605a) Update ci.yml +- [9fa95666](https://github.com/stashed/stash/commit/9fa95666) Add workflow to update docs (#1136) +- [95a62a95](https://github.com/stashed/stash/commit/95a62a95) Update update-release-tracker.sh +- [379c90d5](https://github.com/stashed/stash/commit/379c90d5) Update update-release-tracker.sh +- [cd0a70ee](https://github.com/stashed/stash/commit/cd0a70ee) Use GITHUB_BASE_REF to detect target branch +- [e27c5f66](https://github.com/stashed/stash/commit/e27c5f66) Add script to update release tracker on pr merge (#1132) +- [b0dd5051](https://github.com/stashed/stash/commit/b0dd5051) Update .kodiak.toml +- [e87bad80](https://github.com/stashed/stash/commit/e87bad80) Parameterize installer namespace +- [da8d8956](https://github.com/stashed/stash/commit/da8d8956) Format CI workflows +- [bbde40a3](https://github.com/stashed/stash/commit/bbde40a3) Update to Kubernetes v1.18.3 (#1129) +- [38eb3781](https://github.com/stashed/stash/commit/38eb3781) Update to Kubernetes v1.18.3 +- [197aa7bd](https://github.com/stashed/stash/commit/197aa7bd) Create .kodiak.toml +- [181ca49e](https://github.com/stashed/stash/commit/181ca49e) Update coverage script +- [26602c96](https://github.com/stashed/stash/commit/26602c96) Merge pull request #1125 from stashed/fix-ci-tests +- [54f87b78](https://github.com/stashed/stash/commit/54f87b78) Increase wait timeout +- [43428085](https://github.com/stashed/stash/commit/43428085) Remove unnecessary test codes + run test in parallel +- [8a780e0c](https://github.com/stashed/stash/commit/8a780e0c) Fix clone-pvc tests +- [7027c0f6](https://github.com/stashed/stash/commit/7027c0f6) Fix E2E test +- [31de588a](https://github.com/stashed/stash/commit/31de588a) Change GCS test bucket name to stash-ci (#1122) +- [30a490a6](https://github.com/stashed/stash/commit/30a490a6) Merge pull request #1121 from stashed/baseline-psp +- [419a18e3](https://github.com/stashed/stash/commit/419a18e3) Use StringSlice type flag +- [9dd3804d](https://github.com/stashed/stash/commit/9dd3804d) Make PSP names configurable through flag +- [e4edef44](https://github.com/stashed/stash/commit/e4edef44) Always use baseline PSP +- [cf1538a0](https://github.com/stashed/stash/commit/cf1538a0) Use filepath.Join to generate Repository prefix for BackupBatch (#1120) +- [be189169](https://github.com/stashed/stash/commit/be189169) Go back to using engineerd/setup-kind +- [ae2d74fa](https://github.com/stashed/stash/commit/ae2d74fa) Update dependencies (#1117) +- [a93a5b4c](https://github.com/stashed/stash/commit/a93a5b4c) Remove defaults from CRD v1beta1 (#1116) +- [40e65761](https://github.com/stashed/stash/commit/40e65761) Use CRD v1 for Kubernetes >= 1.16 (#1115) +- [7d851e53](https://github.com/stashed/stash/commit/7d851e53) Merge pull request #1114 from stashed/x7 +- [352ddeed](https://github.com/stashed/stash/commit/352ddeed) Use preinstalled kind +- [11c9e422](https://github.com/stashed/stash/commit/11c9e422) Pass context +- [21053603](https://github.com/stashed/stash/commit/21053603) Update to Kubernetes 1.18.3 +- [f450e9cc](https://github.com/stashed/stash/commit/f450e9cc) Add wait for target logic + add conditions for BackupConfiguration + BackupBatch + RestoreSession (#1108) +- [8f8ff87e](https://github.com/stashed/stash/commit/8f8ff87e) Fix volume snapshot job cleanup (#1090) +- [a4a868b5](https://github.com/stashed/stash/commit/a4a868b5) Merge pull request #1111 from stashed/fix-interimVolume +- [108d0252](https://github.com/stashed/stash/commit/108d0252) Set BackupSession as owner of the pvc created from interimVolumeTemplate +- [fd136c53](https://github.com/stashed/stash/commit/fd136c53) Use Go 1.14.3 +- [74c71d22](https://github.com/stashed/stash/commit/74c71d22) Update crazy-max/ghaction-docker-buildx flag +- [f783899b](https://github.com/stashed/stash/commit/f783899b) Trigger the workflow on push to master +- [e7eceb30](https://github.com/stashed/stash/commit/e7eceb30) Trigger the workflow on push or pull request +- [fe479e8c](https://github.com/stashed/stash/commit/fe479e8c) Use kind v0.8.0 +- [9fc4665a](https://github.com/stashed/stash/commit/9fc4665a) Merge pull request #1093 from robotinfra/master +- [ef2d57e3](https://github.com/stashed/stash/commit/ef2d57e3) fix typo succesSfully +- [d8d35c49](https://github.com/stashed/stash/commit/d8d35c49) fix event types mismatch +- [53dfe8b0](https://github.com/stashed/stash/commit/53dfe8b0) Update stash labels in Makefile +- [c8081c1d](https://github.com/stashed/stash/commit/c8081c1d) Pass image pull secrets to helm chart +- [37b9b312](https://github.com/stashed/stash/commit/37b9b312) Use Go 1.14.2 (#1074) +- [09621974](https://github.com/stashed/stash/commit/09621974) Update K8s version 1.14.6 to 1.14.10 (#1084) +- [8a1ab32c](https://github.com/stashed/stash/commit/8a1ab32c) Give backup triggering CronJob all permissions for Stash crds (#1083) +- [53b932b1](https://github.com/stashed/stash/commit/53b932b1) Use kubectl 1.17 (#1082) +- [5cdeebee](https://github.com/stashed/stash/commit/5cdeebee) Fix nil pointer exception during VolumeSnapshot (#1073) +- [30630d60](https://github.com/stashed/stash/commit/30630d60) Assign returned error properly crateRestoreSessoin() (#1069) +- [3fcbe1b7](https://github.com/stashed/stash/commit/3fcbe1b7) Update README.md to reflect Stash's capability properly (#1060) +- [53513cfe](https://github.com/stashed/stash/commit/53513cfe) Update README.md +- [d615e2c0](https://github.com/stashed/stash/commit/d615e2c0) Add license scan report and status (#1031) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.1.md b/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.1.md new file mode 100644 index 0000000000..6248932591 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.1.md @@ -0,0 +1,1114 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.08.26-rc.1 + name: Changelog-v2020.08.26-rc.1 + parent: welcome + weight: 20200826 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.08.26-rc.1/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.08.26-rc.1/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.08.26-rc.1 (2020-08-27) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.10.0-rc.1](https://github.com/appscode/stash-enterprise/releases/tag/v0.10.0-rc.1) + +- [dc0c6cf5](https://github.com/appscode/stash-enterprise/commit/dc0c6cf5) Prepare for release v0.10.0-rc.1 (#19) +- [4836ebc0](https://github.com/appscode/stash-enterprise/commit/4836ebc0) Create GitHub release from release workflow + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0-rc.1](https://github.com/stashed/apimachinery/releases/tag/v0.10.0-rc.1) + +- [7dbdff5f](https://github.com/stashed/apimachinery/commit/7dbdff5f) Update README.md + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.08.26-rc.1](https://github.com/stashed/catalog/releases/tag/v2020.08.26-rc.1) + +- [fe86886](https://github.com/stashed/catalog/commit/fe86886) Prepare for release v2020.08.26-rc.1 (#34) +- [e7eb2e3](https://github.com/stashed/catalog/commit/e7eb2e3) Update issues link + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0-rc.1](https://github.com/stashed/cli/releases/tag/v0.10.0-rc.1) + +- [43e0370](https://github.com/stashed/cli/commit/43e0370) Prepare for release v0.10.0-rc.1 (#39) +- [2c90092](https://github.com/stashed/cli/commit/2c90092) Update README.md + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-rc.20200826) + +- [48d00db](https://github.com/stashed/elasticsearch/commit/48d00db) Prepare for release 5.6.4-rc.20200826 (#175) +- [46c78a6](https://github.com/stashed/elasticsearch/commit/46c78a6) [cherry-pick] Update README.md (#167) +- [df82b88](https://github.com/stashed/elasticsearch/commit/df82b88) Prepare for release 5.6.4-beta.20200826 (#158) +- [465a9f0](https://github.com/stashed/elasticsearch/commit/465a9f0) [cherry-pick] Update Stash installation link (#149) (#150) +- [4fd2af7](https://github.com/stashed/elasticsearch/commit/4fd2af7) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#141) +- [f9f6ab1](https://github.com/stashed/elasticsearch/commit/f9f6ab1) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#133) +- [cf70698](https://github.com/stashed/elasticsearch/commit/cf70698) [cherry-pick] Update chart icon (#123) +- [f1c9257](https://github.com/stashed/elasticsearch/commit/f1c9257) [cherry-pick] Make chart registry configurable (#114) (#115) +- [4f6f04d](https://github.com/stashed/elasticsearch/commit/4f6f04d) Prepare for release 5.6.4-beta.20200709 (#105) +- [c0b63a8](https://github.com/stashed/elasticsearch/commit/c0b63a8) [cherry-pick] Build docker image in release workflow (#96) (#97) +- [7115da1](https://github.com/stashed/elasticsearch/commit/7115da1) Prepare for release 5.6.4-beta.20200708 (#87) +- [f5ab33d](https://github.com/stashed/elasticsearch/commit/f5ab33d) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [7d73d30](https://github.com/stashed/elasticsearch/commit/7d73d30) [cherry-pick] Update License (#69) (#70) +- [04e8a63](https://github.com/stashed/elasticsearch/commit/04e8a63) Add commands to update chart version (#68) +- [3a5cd78](https://github.com/stashed/elasticsearch/commit/3a5cd78) [cherry-pick] Update update-release-tracker.sh (#60) +- [77bb76e](https://github.com/stashed/elasticsearch/commit/77bb76e) [cherry-pick] Update update-release-tracker.sh (#52) +- [3b47ba6](https://github.com/stashed/elasticsearch/commit/3b47ba6) [cherry-pick] Update release.yml (#43) (#44) +- [444cb3b](https://github.com/stashed/elasticsearch/commit/444cb3b) [cherry-pick] Add script to update release tracker on pr merge (#34) (#35) +- [d349617](https://github.com/stashed/elasticsearch/commit/d349617) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#26) +- [4038abd](https://github.com/stashed/elasticsearch/commit/4038abd) Fix chart release process (#24) +- [895a73f](https://github.com/stashed/elasticsearch/commit/895a73f) Update .kodiak.toml +- [6b9451c](https://github.com/stashed/elasticsearch/commit/6b9451c) Allow overwriting secret key via SecretTransformation (#23) +- [0fcb64e](https://github.com/stashed/elasticsearch/commit/0fcb64e) Make waitTimeout Configurable through flag (#22) +- [b3859b9](https://github.com/stashed/elasticsearch/commit/b3859b9) Create .kodiak.toml +- [c0f3b97](https://github.com/stashed/elasticsearch/commit/c0f3b97) Update to Kubernetes v1.18.3 (#21) +- [210dd08](https://github.com/stashed/elasticsearch/commit/210dd08) Update crazy-max/ghaction-docker-buildx flag +- [5c74a42](https://github.com/stashed/elasticsearch/commit/5c74a42) Trigger the workflow on push or pull request +- [76424d0](https://github.com/stashed/elasticsearch/commit/76424d0) Auto generate chart readme file +- [fc144c2](https://github.com/stashed/elasticsearch/commit/fc144c2) Correctly mark optional fields +- [3559c2c](https://github.com/stashed/elasticsearch/commit/3559c2c) Add openapi v3 schema for values file (#18) +- [46b8654](https://github.com/stashed/elasticsearch/commit/46b8654) Update CI configuration +- [5c15319](https://github.com/stashed/elasticsearch/commit/5c15319) Add support for providing s3 region (#17) +- [c1b75a9](https://github.com/stashed/elasticsearch/commit/c1b75a9) Make output.json file writable to all users + Fix Flag types (#16) +- [f6d9709](https://github.com/stashed/elasticsearch/commit/f6d9709) Update hugo frontmatter for stash website +- [5ef236a](https://github.com/stashed/elasticsearch/commit/5ef236a) Enable race detector in e2e tests +- [1980a77](https://github.com/stashed/elasticsearch/commit/1980a77) Test installers (#14) +- [63a8396](https://github.com/stashed/elasticsearch/commit/63a8396) Fix broken link and add AppBinding scheme field (#15) +- [82d3e7c](https://github.com/stashed/elasticsearch/commit/82d3e7c) Add license header to files (#13) +- [c0241d4](https://github.com/stashed/elasticsearch/commit/c0241d4) Enable make ci (#12) +- [52f71de](https://github.com/stashed/elasticsearch/commit/52f71de) Fix BackupSession's Print Columns (#11) +- [91964a5](https://github.com/stashed/elasticsearch/commit/91964a5) Enable make ci (#10) +- [a804cb0](https://github.com/stashed/elasticsearch/commit/a804cb0) Remove --enable-status-subresource flag (#9) +- [57c4898](https://github.com/stashed/elasticsearch/commit/57c4898) Fix argument passing (#8) +- [15b1b3c](https://github.com/stashed/elasticsearch/commit/15b1b3c) Add release pipeline (#7) +- [b02e1ad](https://github.com/stashed/elasticsearch/commit/b02e1ad) Prepare for 5.6.4 release +- [7161616](https://github.com/stashed/elasticsearch/commit/7161616) Prepare for 5.6 release +- [7baf065](https://github.com/stashed/elasticsearch/commit/7baf065) Update go.yml +- [c8b18b0](https://github.com/stashed/elasticsearch/commit/c8b18b0) Fix typo (#6) +- [32445a6](https://github.com/stashed/elasticsearch/commit/32445a6) Use InterimVolumeTemplate + Finalize doc template (#5) +- [16d35ec](https://github.com/stashed/elasticsearch/commit/16d35ec) Enable GitHub actions +- [acfb971](https://github.com/stashed/elasticsearch/commit/acfb971) Improve error handling + remove metrics handling part (#4) +- [7e94690](https://github.com/stashed/elasticsearch/commit/7e94690) Use docker buildx to build docker image +- [6e388ff](https://github.com/stashed/elasticsearch/commit/6e388ff) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [6a82a60](https://github.com/stashed/elasticsearch/commit/6a82a60) Fix version suffix (#3) +- [2136ee6](https://github.com/stashed/elasticsearch/commit/2136ee6) Various fixes (#2) +- [d98b25a](https://github.com/stashed/elasticsearch/commit/d98b25a) Update Chart.yaml +- [806bf8c](https://github.com/stashed/elasticsearch/commit/806bf8c) Fixed elasticdump & added docs (#1) +- [3c99f3c](https://github.com/stashed/elasticsearch/commit/3c99f3c) Reorganize repo +- [1972a9a](https://github.com/stashed/elasticsearch/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/elasticsearch/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/elasticsearch/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/elasticsearch/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/elasticsearch/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/elasticsearch/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/elasticsearch/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/elasticsearch/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/elasticsearch/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/elasticsearch/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/elasticsearch/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/elasticsearch/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/elasticsearch/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/elasticsearch/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/elasticsearch/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/elasticsearch/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/elasticsearch/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/elasticsearch/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/elasticsearch/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/elasticsearch/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/elasticsearch/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/elasticsearch/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/elasticsearch/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/elasticsearch/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/elasticsearch/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/elasticsearch/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/elasticsearch/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/elasticsearch/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/elasticsearch/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/elasticsearch/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/elasticsearch/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/elasticsearch/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/elasticsearch/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/elasticsearch/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/elasticsearch/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/elasticsearch/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/elasticsearch/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/elasticsearch/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/elasticsearch/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/elasticsearch/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/elasticsearch/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/elasticsearch/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/elasticsearch/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/elasticsearch/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/elasticsearch/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/elasticsearch/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/elasticsearch/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/elasticsearch/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/elasticsearch/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/elasticsearch/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/elasticsearch/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/elasticsearch/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/elasticsearch/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/elasticsearch/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/elasticsearch/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/elasticsearch/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/elasticsearch/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/elasticsearch/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/elasticsearch/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/elasticsearch/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/elasticsearch/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/elasticsearch/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/elasticsearch/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/elasticsearch/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/elasticsearch/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/elasticsearch/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/elasticsearch/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/elasticsearch/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/elasticsearch/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/elasticsearch/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/elasticsearch/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/elasticsearch/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/elasticsearch/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/elasticsearch/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/elasticsearch/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/elasticsearch/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/elasticsearch/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/elasticsearch/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/elasticsearch/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/elasticsearch/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/elasticsearch/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/elasticsearch/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/elasticsearch/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/elasticsearch/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/elasticsearch/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/elasticsearch/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/elasticsearch/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/elasticsearch/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/elasticsearch/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/elasticsearch/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/elasticsearch/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/elasticsearch/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/elasticsearch/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/elasticsearch/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/elasticsearch/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/elasticsearch/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/elasticsearch/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/elasticsearch/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/elasticsearch/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/elasticsearch/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/elasticsearch/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/elasticsearch/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/elasticsearch/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/elasticsearch/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/elasticsearch/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/elasticsearch/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/elasticsearch/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/elasticsearch/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/elasticsearch/commit/60ed8f7) Update user guide (#94) + + +### [6.2.4-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-rc.20200826) + + + +### [6.3.0-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-rc.20200826) + + + +### [6.4.0-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-rc.20200826) + + + +### [6.5.3-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-rc.20200826) + + + +### [6.8.0-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-rc.20200826) + + + +### [7.2.0-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-rc.20200826) + + + +### [7.3.2-rc.20200826](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-rc.20200826) + + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0-rc.1](https://github.com/stashed/installer/releases/tag/v0.10.0-rc.1) + +- [037a349](https://github.com/stashed/installer/commit/037a349) Prepare for release v0.10.0-rc.1 (#90) +- [f94e175](https://github.com/stashed/installer/commit/f94e175) Correctly pass license to CI workflow +- [9f6539d](https://github.com/stashed/installer/commit/9f6539d) Update stash-enterprise chart version +- [5904e2c](https://github.com/stashed/installer/commit/5904e2c) Update README.md +- [d3d30cc](https://github.com/stashed/installer/commit/d3d30cc) Add link to the steps to get a license (#89) +- [1fb05d9](https://github.com/stashed/installer/commit/1fb05d9) Issue license for testing enterprise charts (#88) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-rc.20200826](https://github.com/stashed/mongodb/releases/tag/3.4.1-rc.20200826) + +- [1d2811c](https://github.com/stashed/mongodb/commit/1d2811c) Prepare for release 3.4.1-rc.20200826 (#208) +- [b3501fb](https://github.com/stashed/mongodb/commit/b3501fb) [cherry-pick] Update README.md (#197) +- [1c08dfd](https://github.com/stashed/mongodb/commit/1c08dfd) Prepare for release 3.4.1-beta.20200826 (#185) +- [a4d2b49](https://github.com/stashed/mongodb/commit/a4d2b49) [cherry-pick] Update Stash installation link (#173) (#174) +- [3ae949e](https://github.com/stashed/mongodb/commit/3ae949e) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#162) +- [75ebc36](https://github.com/stashed/mongodb/commit/75ebc36) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#151) +- [c261899](https://github.com/stashed/mongodb/commit/c261899) [cherry-pick] Update chart icon (#138) +- [465f36c](https://github.com/stashed/mongodb/commit/465f36c) [cherry-pick] Make chart registry configurable (#126) (#127) +- [a354b6c](https://github.com/stashed/mongodb/commit/a354b6c) Prepare for release 3.4.1-beta.20200709 (#114) +- [2269fa6](https://github.com/stashed/mongodb/commit/2269fa6) [cherry-pick] Build docker image in release workflow (#102) (#103) +- [47b1d72](https://github.com/stashed/mongodb/commit/47b1d72) Prepare for release 3.4.1-beta.20200708 (#90) +- [67b293a](https://github.com/stashed/mongodb/commit/67b293a) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [d8c9489](https://github.com/stashed/mongodb/commit/d8c9489) [cherry-pick] Update License (#66) (#67) +- [13f91cd](https://github.com/stashed/mongodb/commit/13f91cd) Add commands to update chart version (#65) +- [5ec5c3c](https://github.com/stashed/mongodb/commit/5ec5c3c) [cherry-pick] Update update-release-tracker.sh (#54) +- [409301c](https://github.com/stashed/mongodb/commit/409301c) Add script to update release tracker on pr merge (#41) +- [deed415](https://github.com/stashed/mongodb/commit/deed415) [cherry-pick] Update release.yml (#42) (#43) +- [7efcffb](https://github.com/stashed/mongodb/commit/7efcffb) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#30) +- [2ed8277](https://github.com/stashed/mongodb/commit/2ed8277) Fix chart release process (#28) +- [b7b3bc6](https://github.com/stashed/mongodb/commit/b7b3bc6) Update .kodiak.toml +- [33abf73](https://github.com/stashed/mongodb/commit/33abf73) Allow overwriting secret key via SecretTransformation (#27) +- [ad30b7d](https://github.com/stashed/mongodb/commit/ad30b7d) Make waitTimeout configurable through flag (#26) +- [80f62d1](https://github.com/stashed/mongodb/commit/80f62d1) Create .kodiak.toml +- [d8e7b86](https://github.com/stashed/mongodb/commit/d8e7b86) Fix typos +- [f5dfaea](https://github.com/stashed/mongodb/commit/f5dfaea) Update to Kubernetes v1.18.3 (#25) +- [4a462cb](https://github.com/stashed/mongodb/commit/4a462cb) Update crazy-max/ghaction-docker-buildx flag +- [961fad3](https://github.com/stashed/mongodb/commit/961fad3) Fix typos +- [14024ab](https://github.com/stashed/mongodb/commit/14024ab) Trigger the workflow on push or pull request +- [c80a723](https://github.com/stashed/mongodb/commit/c80a723) Auto generate chart readme file +- [223dbfd](https://github.com/stashed/mongodb/commit/223dbfd) Correctly mark optional fields +- [8b3b75d](https://github.com/stashed/mongodb/commit/8b3b75d) Add openapi v3 schema for values file (#21) +- [6229815](https://github.com/stashed/mongodb/commit/6229815) Update CI configuration +- [3f2f090](https://github.com/stashed/mongodb/commit/3f2f090) Add support for specifying S3 region (#20) +- [55f007d](https://github.com/stashed/mongodb/commit/55f007d) Make output.json file writable to all users + Fix Flag types (#19) +- [93643f3](https://github.com/stashed/mongodb/commit/93643f3) Fix with arguments to mongorestore (#14) +- [0d9595c](https://github.com/stashed/mongodb/commit/0d9595c) Update hugo frontmatter for stash website +- [cb27f47](https://github.com/stashed/mongodb/commit/cb27f47) Added --nsExclude=config.changelog to standalone +- [a941eb0](https://github.com/stashed/mongodb/commit/a941eb0) Enable race detector in e2e tests +- [2ed387f](https://github.com/stashed/mongodb/commit/2ed387f) Fix broken link and add AppBinding scheme field (#13) +- [8dd0ea1](https://github.com/stashed/mongodb/commit/8dd0ea1) Test installers (#12) +- [5199d20](https://github.com/stashed/mongodb/commit/5199d20) Add license header to files (#11) +- [f89adec](https://github.com/stashed/mongodb/commit/f89adec) Split imports into 3 parts (#10) +- [1c447f4](https://github.com/stashed/mongodb/commit/1c447f4) Fix BackupSession's Print Columns (#9) +- [201a06e](https://github.com/stashed/mongodb/commit/201a06e) Enable make ci (#8) +- [613feea](https://github.com/stashed/mongodb/commit/613feea) Remove --enable-status-subresource flag (#7) +- [95c3974](https://github.com/stashed/mongodb/commit/95c3974) Update totalHosts from backup/restore process (#6) +- [3097a67](https://github.com/stashed/mongodb/commit/3097a67) Fix argument passing (#5) +- [ccdf81f](https://github.com/stashed/mongodb/commit/ccdf81f) Remove support for arm and arm64 architecture +- [f0b8e87](https://github.com/stashed/mongodb/commit/f0b8e87) Prepare for 3.4.17 release +- [16ad538](https://github.com/stashed/mongodb/commit/16ad538) Prepare for 3.4 release +- [c4eb920](https://github.com/stashed/mongodb/commit/c4eb920) Add release pipeline (#4) +- [02b9a9f](https://github.com/stashed/mongodb/commit/02b9a9f) Update go.yml +- [7ede5fd](https://github.com/stashed/mongodb/commit/7ede5fd) Finalize doc template (#3) +- [bb3b7fd](https://github.com/stashed/mongodb/commit/bb3b7fd) Enable GitHub actions +- [6874298](https://github.com/stashed/mongodb/commit/6874298) Improve error handling + remove metrics handling part (#2) +- [000f2c6](https://github.com/stashed/mongodb/commit/000f2c6) Use docker buildx to build docker image +- [867a620](https://github.com/stashed/mongodb/commit/867a620) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [ecb6143](https://github.com/stashed/mongodb/commit/ecb6143) run `go fmt` +- [618886d](https://github.com/stashed/mongodb/commit/618886d) Improve Mongodump for sharded and replicaset cluster && Chart and documentation (#1) +- [4a7d5c8](https://github.com/stashed/mongodb/commit/4a7d5c8) Reorganize repo +- [1972a9a](https://github.com/stashed/mongodb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/mongodb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/mongodb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/mongodb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/mongodb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/mongodb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/mongodb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/mongodb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/mongodb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/mongodb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/mongodb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/mongodb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/mongodb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/mongodb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/mongodb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/mongodb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/mongodb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/mongodb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/mongodb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/mongodb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/mongodb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/mongodb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/mongodb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/mongodb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/mongodb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/mongodb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/mongodb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/mongodb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/mongodb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/mongodb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/mongodb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/mongodb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/mongodb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/mongodb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/mongodb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/mongodb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/mongodb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/mongodb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/mongodb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/mongodb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/mongodb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/mongodb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/mongodb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/mongodb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/mongodb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/mongodb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/mongodb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/mongodb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/mongodb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/mongodb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/mongodb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/mongodb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/mongodb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/mongodb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/mongodb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/mongodb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/mongodb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/mongodb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/mongodb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/mongodb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/mongodb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/mongodb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/mongodb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/mongodb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/mongodb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/mongodb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/mongodb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/mongodb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/mongodb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/mongodb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/mongodb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/mongodb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/mongodb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/mongodb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/mongodb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/mongodb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/mongodb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/mongodb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/mongodb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/mongodb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/mongodb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/mongodb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/mongodb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/mongodb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/mongodb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/mongodb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/mongodb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/mongodb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/mongodb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/mongodb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/mongodb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/mongodb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/mongodb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/mongodb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/mongodb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/mongodb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/mongodb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/mongodb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/mongodb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/mongodb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/mongodb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/mongodb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/mongodb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/mongodb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/mongodb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/mongodb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/mongodb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/mongodb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/mongodb/commit/60ed8f7) Update user guide (#94) + + +### [3.4.2-rc.20200826](https://github.com/stashed/mongodb/releases/tag/3.4.2-rc.20200826) + + + +### [3.6.1-rc.20200826](https://github.com/stashed/mongodb/releases/tag/3.6.1-rc.20200826) + + + +### [3.6.8-rc.20200826](https://github.com/stashed/mongodb/releases/tag/3.6.8-rc.20200826) + + + +### [4.0.3-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.3-rc.20200826) + + + +### [4.0.5-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.5-rc.20200826) + + + +### [4.0.11-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.0.11-rc.20200826) + + + +### [4.1.1-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.1-rc.20200826) + + + +### [4.1.4-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.4-rc.20200826) + + + +### [4.1.7-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.1.7-rc.20200826) + + + +### [4.2.3-rc.20200826](https://github.com/stashed/mongodb/releases/tag/4.2.3-rc.20200826) + + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-rc.20200826](https://github.com/stashed/mysql/releases/tag/5.7.25-rc.20200826) + +- [3cb98d3](https://github.com/stashed/mysql/commit/3cb98d3) Prepare for release 5.7.25-rc.20200826 (#92) +- [d5b1978](https://github.com/stashed/mysql/commit/d5b1978) [cherry-pick] Update README.md (#89) +- [813ee01](https://github.com/stashed/mysql/commit/813ee01) Prepare for release 5.7.25-beta.20200826 (#85) +- [e646be7](https://github.com/stashed/mysql/commit/e646be7) [cherry-pick] Update Stash installation link (#81) (#82) +- [ecc7d0c](https://github.com/stashed/mysql/commit/ecc7d0c) [cherry-pick] Fix output format (#46) (#78) +- [7fcbd24](https://github.com/stashed/mysql/commit/7fcbd24) [cherry-pick] Pass image tag in values.yaml file (#74) (#75) +- [3188584](https://github.com/stashed/mysql/commit/3188584) [cherry-pick] Update chart icon (#71) +- [9060c7a](https://github.com/stashed/mysql/commit/9060c7a) [cherry-pick] Make chart registry configurable (#67) (#68) +- [422a411](https://github.com/stashed/mysql/commit/422a411) Prepare for release 5.7.25-beta.20200709 (#63) +- [e345110](https://github.com/stashed/mysql/commit/e345110) [cherry-pick] Build docker image in release workflow (#59) (#60) +- [3a44b41](https://github.com/stashed/mysql/commit/3a44b41) Prepare for release 5.7.25-beta.20200708 (#55) +- [7e2984b](https://github.com/stashed/mysql/commit/7e2984b) [cherry-pick] Publish to testing dir for alpha/beta releases (#51) (#52) +- [aa1eac2](https://github.com/stashed/mysql/commit/aa1eac2) [cherry-pick] Update License (#47) (#48) +- [d4370c9](https://github.com/stashed/mysql/commit/d4370c9) Add commands to update chart version (#45) +- [38fb308](https://github.com/stashed/mysql/commit/38fb308) [cherry-pick] Update update-release-tracker.sh (#42) +- [f3bfd48](https://github.com/stashed/mysql/commit/f3bfd48) [cherry-pick] Update update-release-tracker.sh (#39) +- [56e92c4](https://github.com/stashed/mysql/commit/56e92c4) [cherry-pick] Update release.yml (#36) +- [be341e7](https://github.com/stashed/mysql/commit/be341e7) [cherry-pick] Add script to update release tracker on pr merge (#32) (#33) +- [96504a7](https://github.com/stashed/mysql/commit/96504a7) [cherry-pick] Add workflow to cherry pick commits to master (#28) (#29) +- [fcbe891](https://github.com/stashed/mysql/commit/fcbe891) Fix chart release process (#27) +- [c012edf](https://github.com/stashed/mysql/commit/c012edf) Update .kodiak.toml +- [0d22657](https://github.com/stashed/mysql/commit/0d22657) Allow overwriting secret key via SecretTransformation (#26) +- [f717a19](https://github.com/stashed/mysql/commit/f717a19) Fix unit tests (#25) +- [d4f5c4c](https://github.com/stashed/mysql/commit/d4f5c4c) Create .kodiak.toml +- [2bfa098](https://github.com/stashed/mysql/commit/2bfa098) Fix typos +- [5c1a53d](https://github.com/stashed/mysql/commit/5c1a53d) mend +- [9eb402f](https://github.com/stashed/mysql/commit/9eb402f) Update to Kubernetes v1.18.3 (#24) +- [4d4afa2](https://github.com/stashed/mysql/commit/4d4afa2) Fix waitForDBReady() logic + Make timeout configurable (#23) +- [4548802](https://github.com/stashed/mysql/commit/4548802) Update crazy-max/ghaction-docker-buildx flag +- [ce1fa72](https://github.com/stashed/mysql/commit/ce1fa72) Trigger the workflow on push or pull request +- [dad10df](https://github.com/stashed/mysql/commit/dad10df) Auto generate chart readme file +- [462eecf](https://github.com/stashed/mysql/commit/462eecf) Correctly mark optional fields +- [424ec5a](https://github.com/stashed/mysql/commit/424ec5a) Add openapi v3 schema for values file (#20) +- [4755987](https://github.com/stashed/mysql/commit/4755987) Update CI configuration +- [22e8141](https://github.com/stashed/mysql/commit/22e8141) Add support for providing s3 region (#18) +- [793e5e4](https://github.com/stashed/mysql/commit/793e5e4) Make output.json file writable to all users + Fix Flag types (#17) +- [7d65a07](https://github.com/stashed/mysql/commit/7d65a07) Update hugo frontmatter for stash website +- [9392ce0](https://github.com/stashed/mysql/commit/9392ce0) Enable race detector in e2e tests +- [111bbfe](https://github.com/stashed/mysql/commit/111bbfe) Test installers (#15) +- [6eb327f](https://github.com/stashed/mysql/commit/6eb327f) Fix broken link and add AppBinding scheme field (#16) +- [292afdc](https://github.com/stashed/mysql/commit/292afdc) Add license header to files (#14) +- [35bd620](https://github.com/stashed/mysql/commit/35bd620) Split imports into 3 parts (#13) +- [799ee9b](https://github.com/stashed/mysql/commit/799ee9b) Fix BackupSession's Print Columns (#12) +- [6d62faa](https://github.com/stashed/mysql/commit/6d62faa) Enable make ci (#11) +- [9f5d50e](https://github.com/stashed/mysql/commit/9f5d50e) Remove --enable-status-subresource flag (#10) +- [fb1cedd](https://github.com/stashed/mysql/commit/fb1cedd) Fix argument passing (#9) +- [56f9fdb](https://github.com/stashed/mysql/commit/56f9fdb) Only build x86-64 images +- [a2bcae7](https://github.com/stashed/mysql/commit/a2bcae7) Add release pipeline (#8) +- [36eb1be](https://github.com/stashed/mysql/commit/36eb1be) Prepare 5.7.25 release +- [09896d9](https://github.com/stashed/mysql/commit/09896d9) Update go.yml +- [eed5d07](https://github.com/stashed/mysql/commit/eed5d07) Fix link (#7) +- [8278413](https://github.com/stashed/mysql/commit/8278413) Finalize doc template (#6) +- [4ef23ee](https://github.com/stashed/mysql/commit/4ef23ee) Enable GitHub actions +- [5454aac](https://github.com/stashed/mysql/commit/5454aac) Improve error handling + remove metrics handling part (#5) +- [be8e2b6](https://github.com/stashed/mysql/commit/be8e2b6) Use docker buildx to build docker image +- [3d169a2](https://github.com/stashed/mysql/commit/3d169a2) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [bd920eb](https://github.com/stashed/mysql/commit/bd920eb) Backup and Restore for MySQL-8.0.14 (#3) +- [de01833](https://github.com/stashed/mysql/commit/de01833) Add License headers to make files (#2) +- [cc3ee32](https://github.com/stashed/mysql/commit/cc3ee32) Reorganize repo (#1) +- [1972a9a](https://github.com/stashed/mysql/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/mysql/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/mysql/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/mysql/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/mysql/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/mysql/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/mysql/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/mysql/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/mysql/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/mysql/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/mysql/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/mysql/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/mysql/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/mysql/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/mysql/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/mysql/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/mysql/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/mysql/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/mysql/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/mysql/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/mysql/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/mysql/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/mysql/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/mysql/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/mysql/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/mysql/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/mysql/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/mysql/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/mysql/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/mysql/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/mysql/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/mysql/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/mysql/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/mysql/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/mysql/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/mysql/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/mysql/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/mysql/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/mysql/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/mysql/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/mysql/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/mysql/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/mysql/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/mysql/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/mysql/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/mysql/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/mysql/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/mysql/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/mysql/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/mysql/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/mysql/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/mysql/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/mysql/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/mysql/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/mysql/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/mysql/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/mysql/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/mysql/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/mysql/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/mysql/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/mysql/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/mysql/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/mysql/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/mysql/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/mysql/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/mysql/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/mysql/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/mysql/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/mysql/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/mysql/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/mysql/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/mysql/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/mysql/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/mysql/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/mysql/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/mysql/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/mysql/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/mysql/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/mysql/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/mysql/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/mysql/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/mysql/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/mysql/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/mysql/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/mysql/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/mysql/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/mysql/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/mysql/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/mysql/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/mysql/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/mysql/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/mysql/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/mysql/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/mysql/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/mysql/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/mysql/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/mysql/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/mysql/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/mysql/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/mysql/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/mysql/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/mysql/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/mysql/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/mysql/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/mysql/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/mysql/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/mysql/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/mysql/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/mysql/commit/60ed8f7) Update user guide (#94) + + +### [8.0.3-rc.20200826](https://github.com/stashed/mysql/releases/tag/8.0.3-rc.20200826) + + + +### [8.0.14-rc.20200826](https://github.com/stashed/mysql/releases/tag/8.0.14-rc.20200826) + + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-rc.20200826](https://github.com/stashed/percona-xtradb/releases/tag/5.7-rc.20200826) + +- [416d7d8](https://github.com/stashed/percona-xtradb/commit/416d7d8) Prepare for release 5.7-rc.20200826 (#52) +- [b390913](https://github.com/stashed/percona-xtradb/commit/b390913) [cherry-pick] Update issues link (#51) +- [10b9a66](https://github.com/stashed/percona-xtradb/commit/10b9a66) Prepare for release 5.7-beta.20200826 (#49) +- [53f26da](https://github.com/stashed/percona-xtradb/commit/53f26da) [cherry-pick] Update Stash installation link (#47) (#48) +- [3eae3d3](https://github.com/stashed/percona-xtradb/commit/3eae3d3) [cherry-pick] Fix output format + Add PreBackupActions logic (#43) (#46) +- [0fa2765](https://github.com/stashed/percona-xtradb/commit/0fa2765) [cherry-pick] Make image.tag in values.yaml file as same as $APP_VERSION (#44) (#45) +- [7ad46c0](https://github.com/stashed/percona-xtradb/commit/7ad46c0) [cherry-pick] Update chart icon (#42) +- [97f7e6d](https://github.com/stashed/percona-xtradb/commit/97f7e6d) [cherry-pick] Make chart registry configurable (#40) (#41) +- [7fc07cc](https://github.com/stashed/percona-xtradb/commit/7fc07cc) Prepare for release 5.7-beta.20200709 (#38) +- [ca32b31](https://github.com/stashed/percona-xtradb/commit/ca32b31) [cherry-pick] Build docker image in release workflow (#36) (#37) +- [efb98e4](https://github.com/stashed/percona-xtradb/commit/efb98e4) [cherry-pick] Publish to testing dir for alpha/beta releases (#32) (#35) +- [0535469](https://github.com/stashed/percona-xtradb/commit/0535469) Prepare for release 5.7-beta.20200708 (#33) +- [6aac98e](https://github.com/stashed/percona-xtradb/commit/6aac98e) Add commands to update chart version (#30) +- [24431c1](https://github.com/stashed/percona-xtradb/commit/24431c1) [cherry-pick] Update update-release-tracker.sh (#29) +- [89c2a37](https://github.com/stashed/percona-xtradb/commit/89c2a37) [cherry-pick] Update update-release-tracker.sh (#28) +- [4163a9c](https://github.com/stashed/percona-xtradb/commit/4163a9c) [cherry-pick] Update release.yml (#27) +- [66d54d2](https://github.com/stashed/percona-xtradb/commit/66d54d2) [cherry-pick] Add script to update release tracker on pr merge (#25) (#26) +- [f280602](https://github.com/stashed/percona-xtradb/commit/f280602) [cherry-pick] Add workflow to cherry pick commits to master (#23) (#24) +- [7ca441c](https://github.com/stashed/percona-xtradb/commit/7ca441c) Fix chart release process (#21) +- [76fca67](https://github.com/stashed/percona-xtradb/commit/76fca67) Update .kodiak.toml +- [ecbd60c](https://github.com/stashed/percona-xtradb/commit/ecbd60c) Allow overwriting secret key via SecretTransformation (#20) +- [8404948](https://github.com/stashed/percona-xtradb/commit/8404948) Make waitTimeout configurable through flag (#19) +- [110985a](https://github.com/stashed/percona-xtradb/commit/110985a) Create .kodiak.toml +- [70ed4b2](https://github.com/stashed/percona-xtradb/commit/70ed4b2) Update to Kubernetes v1.18.3 (#18) +- [75efdb9](https://github.com/stashed/percona-xtradb/commit/75efdb9) Update crazy-max/ghaction-docker-buildx flag +- [56b5472](https://github.com/stashed/percona-xtradb/commit/56b5472) Trigger the workflow on push or pull request +- [14e9f5a](https://github.com/stashed/percona-xtradb/commit/14e9f5a) Auto generate chart readme file +- [31ff6c4](https://github.com/stashed/percona-xtradb/commit/31ff6c4) Correctly mark optional fields +- [3676857](https://github.com/stashed/percona-xtradb/commit/3676857) Add openapi v3 schema for values file (#15) +- [9b32ca9](https://github.com/stashed/percona-xtradb/commit/9b32ca9) Update CI configuration +- [9ba20af](https://github.com/stashed/percona-xtradb/commit/9ba20af) Add support for providing s3 region (#14) +- [2ee6c3b](https://github.com/stashed/percona-xtradb/commit/2ee6c3b) Update percona standalone backup-restore (#13) +- [af1a30b](https://github.com/stashed/percona-xtradb/commit/af1a30b) Update PerconaXtraDB version for percona xtradb cluster (#12) +- [7ddb43a](https://github.com/stashed/percona-xtradb/commit/7ddb43a) Make output.json file writable to all users + Fix Flag types (#11) +- [06aa5c3](https://github.com/stashed/percona-xtradb/commit/06aa5c3) Update hugo frontmatter for stash website +- [4171676](https://github.com/stashed/percona-xtradb/commit/4171676) Enable race detector in e2e tests +- [9ab6f35](https://github.com/stashed/percona-xtradb/commit/9ab6f35) Added scheme field in AppBinding (#10) +- [a4262ea](https://github.com/stashed/percona-xtradb/commit/a4262ea) Test installers (#9) +- [72be668](https://github.com/stashed/percona-xtradb/commit/72be668) Don't build docker image for arm64 +- [2974e8b](https://github.com/stashed/percona-xtradb/commit/2974e8b) Update license file templates +- [dd96199](https://github.com/stashed/percona-xtradb/commit/dd96199) Add license header to files (#8) +- [93e37a6](https://github.com/stashed/percona-xtradb/commit/93e37a6) Backup and restore doc for Percona XtraDB 5.7 (#7) +- [aafee30](https://github.com/stashed/percona-xtradb/commit/aafee30) Fix percona-xtradb backup & restore (#6) +- [06cbe89](https://github.com/stashed/percona-xtradb/commit/06cbe89) Fix Docker image badge (#5) +- [2e6c4c6](https://github.com/stashed/percona-xtradb/commit/2e6c4c6) Update Makefile (#4) +- [11da7a1](https://github.com/stashed/percona-xtradb/commit/11da7a1) Add release pipeline (#3) +- [75ca782](https://github.com/stashed/percona-xtradb/commit/75ca782) Update go.yml +- [998acad](https://github.com/stashed/percona-xtradb/commit/998acad) Enable GitHub actions +- [a32083a](https://github.com/stashed/percona-xtradb/commit/a32083a) Improve error handling + remove metrics handling part (#2) +- [87b38a5](https://github.com/stashed/percona-xtradb/commit/87b38a5) Backup & Restore PerconaXtraDB using Stash (#1) +- [a4485ab](https://github.com/stashed/percona-xtradb/commit/a4485ab) Reorganize repo +- [1972a9a](https://github.com/stashed/percona-xtradb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/percona-xtradb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/percona-xtradb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/percona-xtradb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/percona-xtradb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/percona-xtradb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/percona-xtradb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/percona-xtradb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/percona-xtradb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/percona-xtradb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/percona-xtradb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/percona-xtradb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/percona-xtradb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/percona-xtradb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/percona-xtradb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/percona-xtradb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/percona-xtradb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/percona-xtradb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/percona-xtradb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/percona-xtradb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/percona-xtradb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/percona-xtradb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/percona-xtradb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/percona-xtradb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/percona-xtradb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/percona-xtradb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/percona-xtradb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/percona-xtradb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/percona-xtradb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/percona-xtradb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/percona-xtradb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/percona-xtradb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/percona-xtradb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/percona-xtradb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/percona-xtradb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/percona-xtradb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/percona-xtradb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/percona-xtradb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/percona-xtradb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/percona-xtradb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/percona-xtradb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/percona-xtradb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/percona-xtradb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/percona-xtradb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/percona-xtradb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/percona-xtradb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/percona-xtradb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/percona-xtradb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/percona-xtradb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/percona-xtradb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/percona-xtradb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/percona-xtradb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/percona-xtradb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/percona-xtradb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/percona-xtradb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/percona-xtradb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/percona-xtradb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/percona-xtradb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/percona-xtradb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/percona-xtradb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/percona-xtradb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/percona-xtradb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/percona-xtradb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/percona-xtradb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/percona-xtradb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/percona-xtradb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/percona-xtradb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/percona-xtradb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/percona-xtradb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/percona-xtradb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/percona-xtradb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/percona-xtradb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/percona-xtradb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/percona-xtradb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/percona-xtradb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/percona-xtradb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/percona-xtradb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/percona-xtradb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/percona-xtradb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/percona-xtradb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/percona-xtradb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/percona-xtradb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/percona-xtradb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/percona-xtradb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/percona-xtradb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/percona-xtradb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/percona-xtradb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/percona-xtradb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/percona-xtradb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/percona-xtradb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/percona-xtradb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/percona-xtradb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/percona-xtradb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/percona-xtradb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/percona-xtradb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/percona-xtradb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/percona-xtradb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/percona-xtradb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/percona-xtradb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/percona-xtradb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/percona-xtradb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/percona-xtradb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/percona-xtradb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/percona-xtradb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/percona-xtradb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/percona-xtradb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/percona-xtradb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/percona-xtradb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/percona-xtradb/commit/60ed8f7) Update user guide (#94) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-rc.20200826](https://github.com/stashed/postgres/releases/tag/9.6-rc.20200826) + +- [5715456](https://github.com/stashed/postgres/commit/5715456) Prepare for release 9.6-rc.20200826 (#152) +- [0442f99](https://github.com/stashed/postgres/commit/0442f99) [cherry-pick] Update README.md (#147) +- [61c4425](https://github.com/stashed/postgres/commit/61c4425) Prepare for release 9.6-beta.20200826 (#141) +- [b313c2c](https://github.com/stashed/postgres/commit/b313c2c) Update Stash installation link (#131) (#136) +- [d73595e](https://github.com/stashed/postgres/commit/d73595e) [cherry-pick] Update twitter handle (#125) (#130) +- [875edd5](https://github.com/stashed/postgres/commit/875edd5) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#124) +- [5a9a784](https://github.com/stashed/postgres/commit/5a9a784) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#119) +- [ce47f3a](https://github.com/stashed/postgres/commit/ce47f3a) [cherry-pick] Update chart icon (#112) +- [decfbb0](https://github.com/stashed/postgres/commit/decfbb0) [cherry-pick] Make chart registry configurable (#102) (#107) +- [5befa82](https://github.com/stashed/postgres/commit/5befa82) Prepare for release 9.6-beta.20200709 (#100) +- [52fab57](https://github.com/stashed/postgres/commit/52fab57) [cherry-pick] Build docker images in release workflow (#90) (#95) +- [d85fc80](https://github.com/stashed/postgres/commit/d85fc80) Prepare for release 9.6-beta.20200708 (#88) +- [fbd6766](https://github.com/stashed/postgres/commit/fbd6766) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#83) +- [1b32879](https://github.com/stashed/postgres/commit/1b32879) [cherry-pick] Update License (#72) (#77) +- [388ddee](https://github.com/stashed/postgres/commit/388ddee) Add commands to update chart version (#71) +- [875c1f0](https://github.com/stashed/postgres/commit/875c1f0) [cherry-pick] Update update-release-tracker.sh (#70) +- [0e71e2d](https://github.com/stashed/postgres/commit/0e71e2d) [cherry-pick] Update update-release-tracker.sh (#65) +- [bbfac61](https://github.com/stashed/postgres/commit/bbfac61) [cherry-pick] Update release.yml (#55) (#60) +- [986d0a7](https://github.com/stashed/postgres/commit/986d0a7) [cherry-pick] Add script to update release tracker on pr merge (#49) (#54) +- [6edaf36](https://github.com/stashed/postgres/commit/6edaf36) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#48) +- [6743dbe](https://github.com/stashed/postgres/commit/6743dbe) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#42) +- [fb4f222](https://github.com/stashed/postgres/commit/fb4f222) Fix chart release process (#36) +- [b5ddf5f](https://github.com/stashed/postgres/commit/b5ddf5f) Update .kodiak.toml +- [7951787](https://github.com/stashed/postgres/commit/7951787) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [e7bb18f](https://github.com/stashed/postgres/commit/e7bb18f) Create .kodiak.toml +- [60acc09](https://github.com/stashed/postgres/commit/60acc09) Merge pull request Allow overriding secret keys from AppBinding #33 +- [aaff7fb](https://github.com/stashed/postgres/commit/aaff7fb) Fix typos (#32) +- [568f584](https://github.com/stashed/postgres/commit/568f584) Update to Kubernetes v1.18.3 (#34) +- [098bb78](https://github.com/stashed/postgres/commit/098bb78) Update crazy-max/ghaction-docker-buildx flag +- [4385362](https://github.com/stashed/postgres/commit/4385362) function-args: add pg-back-cmd option +- [7cd065c](https://github.com/stashed/postgres/commit/7cd065c) Trigger the workflow on push or pull request +- [b63e3e5](https://github.com/stashed/postgres/commit/b63e3e5) Auto generate chart readme file +- [dea1a41](https://github.com/stashed/postgres/commit/dea1a41) Correctly mark optional fields +- [efc4283](https://github.com/stashed/postgres/commit/efc4283) Add openapi v3 schema for values file (#27) +- [99a417e](https://github.com/stashed/postgres/commit/99a417e) Update CI configuration +- [712aabb](https://github.com/stashed/postgres/commit/712aabb) Add support for providing s3 region (#26) +- [111a3fe](https://github.com/stashed/postgres/commit/111a3fe) Make output.json file writable to all users + Fix Flag types (#25) +- [1694bb7](https://github.com/stashed/postgres/commit/1694bb7) Update hugo frontmatter for stash website +- [ab592bd](https://github.com/stashed/postgres/commit/ab592bd) Enable race detector in e2e tests +- [6df8761](https://github.com/stashed/postgres/commit/6df8761) Fixed broken link, Added AppBinding scheme field (#24) +- [e3f4905](https://github.com/stashed/postgres/commit/e3f4905) Test installers (#23) +- [a3c2d0f](https://github.com/stashed/postgres/commit/a3c2d0f) Add license header to files (#22) +- [320def8](https://github.com/stashed/postgres/commit/320def8) Enable make ci (#21) +- [9a7b843](https://github.com/stashed/postgres/commit/9a7b843) Fix BackupSession's Print Columns (#20) +- [73d7b1c](https://github.com/stashed/postgres/commit/73d7b1c) Enable make ci (#19) +- [46d5ae8](https://github.com/stashed/postgres/commit/46d5ae8) Remove --enable-status-subresource flag (#18) +- [08067ca](https://github.com/stashed/postgres/commit/08067ca) Fix arguments passing (#17) +- [0c1db21](https://github.com/stashed/postgres/commit/0c1db21) Add release pipeline (#16) +- [3d33fd4](https://github.com/stashed/postgres/commit/3d33fd4) adjust frontmatter weight +- [41e3555](https://github.com/stashed/postgres/commit/41e3555) Update resources for 9.6 +- [775ffab](https://github.com/stashed/postgres/commit/775ffab) Update go.yml +- [67cb695](https://github.com/stashed/postgres/commit/67cb695) Fix BackupConfiguration retention policy (#11) +- [9228437](https://github.com/stashed/postgres/commit/9228437) Fix link + grammar (#10) +- [bddb9cd](https://github.com/stashed/postgres/commit/bddb9cd) Enable GitHub actions +- [f42ada5](https://github.com/stashed/postgres/commit/f42ada5) Fix menu id in frontmatter +- [a59bed1](https://github.com/stashed/postgres/commit/a59bed1) Finalize doc template (#9) +- [08274c9](https://github.com/stashed/postgres/commit/08274c9) Fix typo (#8) +- [afad5db](https://github.com/stashed/postgres/commit/afad5db) Refactor error + metric handling (#7) +- [248d0ea](https://github.com/stashed/postgres/commit/248d0ea) Use Endpoint for REST server URL (remove --rest-server-url flag) (#6) +- [41d2a53](https://github.com/stashed/postgres/commit/41d2a53) Remove metrics options from function (#5) +- [d276da0](https://github.com/stashed/postgres/commit/d276da0) Use docker buildx to build docker image +- [3c0e71d](https://github.com/stashed/postgres/commit/3c0e71d) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [5eab8f5](https://github.com/stashed/postgres/commit/5eab8f5) Update postgres.md +- [0f37446](https://github.com/stashed/postgres/commit/0f37446) Rename Functions and Tasks (#4) +- [b1b3e80](https://github.com/stashed/postgres/commit/b1b3e80) Update Chart.yaml +- [a1bee9b](https://github.com/stashed/postgres/commit/a1bee9b) Update README.md +- [904549a](https://github.com/stashed/postgres/commit/904549a) Update postgres.md +- [1c99280](https://github.com/stashed/postgres/commit/1c99280) Add Chart and documentation (#2) +- [0238497](https://github.com/stashed/postgres/commit/0238497) Add ca-certificates package in Docker image (#3) +- [b0e6b2b](https://github.com/stashed/postgres/commit/b0e6b2b) Reorganize repo (#1) +- [1972a9a](https://github.com/stashed/postgres/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/postgres/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/postgres/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/postgres/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/postgres/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/postgres/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/postgres/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/postgres/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/postgres/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/postgres/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/postgres/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/postgres/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/postgres/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/postgres/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/postgres/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/postgres/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/postgres/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/postgres/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/postgres/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/postgres/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/postgres/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/postgres/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/postgres/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/postgres/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/postgres/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/postgres/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/postgres/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/postgres/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/postgres/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/postgres/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/postgres/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/postgres/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/postgres/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/postgres/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/postgres/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/postgres/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/postgres/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/postgres/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/postgres/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/postgres/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/postgres/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/postgres/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/postgres/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/postgres/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/postgres/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/postgres/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/postgres/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/postgres/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/postgres/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/postgres/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/postgres/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/postgres/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/postgres/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/postgres/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/postgres/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/postgres/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/postgres/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/postgres/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/postgres/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/postgres/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/postgres/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/postgres/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/postgres/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/postgres/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/postgres/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/postgres/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/postgres/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/postgres/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/postgres/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/postgres/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/postgres/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/postgres/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/postgres/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/postgres/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/postgres/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/postgres/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/postgres/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/postgres/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/postgres/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/postgres/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/postgres/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/postgres/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/postgres/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/postgres/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/postgres/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/postgres/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/postgres/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/postgres/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/postgres/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/postgres/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/postgres/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/postgres/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/postgres/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/postgres/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/postgres/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/postgres/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/postgres/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/postgres/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/postgres/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/postgres/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/postgres/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/postgres/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/postgres/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/postgres/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/postgres/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/postgres/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/postgres/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/postgres/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/postgres/commit/60ed8f7) Update user guide (#94) + + +### [10.2-rc.20200826](https://github.com/stashed/postgres/releases/tag/10.2-rc.20200826) + + + +### [10.6-rc.20200826](https://github.com/stashed/postgres/releases/tag/10.6-rc.20200826) + + + +### [11.1-rc.20200826](https://github.com/stashed/postgres/releases/tag/11.1-rc.20200826) + + + +### [11.2-rc.20200826](https://github.com/stashed/postgres/releases/tag/11.2-rc.20200826) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0-rc.1](https://github.com/stashed/stash/releases/tag/v0.10.0-rc.1) + +- [20d585f4](https://github.com/stashed/stash/commit/20d585f4) Prepare for release v0.10.0-rc.1 (#1180) +- [76fe3ebd](https://github.com/stashed/stash/commit/76fe3ebd) Create GitHub release from release workflow +- [f3e5cccc](https://github.com/stashed/stash/commit/f3e5cccc) Fix installation link + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.08.27-rc.0.md b/content/docs/v2024.8.27/CHANGELOG-v2020.08.27-rc.0.md new file mode 100644 index 0000000000..6ebbcbd0ba --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.08.27-rc.0.md @@ -0,0 +1,318 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.08.27-rc.0 + name: Changelog-v2020.08.27-rc.0 + parent: welcome + weight: 20200827 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.08.27-rc.0/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.08.27-rc.0/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.08.27-rc.0 (2020-08-27) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.10.0-rc.2](https://github.com/appscode/stash-enterprise/releases/tag/v0.10.0-rc.2) + +- [be8d7f35](https://github.com/appscode/stash-enterprise/commit/be8d7f35) Prepare for release v0.10.0-rc.2 (#20) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0-rc.2](https://github.com/stashed/apimachinery/releases/tag/v0.10.0-rc.2) + + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.08.27-rc.0](https://github.com/stashed/catalog/releases/tag/v2020.08.27-rc.0) + +- [131d570](https://github.com/stashed/catalog/commit/131d570) Prepare for release v2020.08.27-rc.0 (#35) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0-rc.2](https://github.com/stashed/cli/releases/tag/v0.10.0-rc.2) + +- [bcff194](https://github.com/stashed/cli/commit/bcff194) Prepare for release v0.10.0-rc.2 (#40) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-rc.20200827) + +- [51262cc](https://github.com/stashed/elasticsearch/commit/51262cc) Prepare for release 5.6.4-rc.20200827 (#192) +- [bcba1e7](https://github.com/stashed/elasticsearch/commit/bcba1e7) [cherry-pick] Upload charts without updating index (#184) + + +### [6.2.4-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-rc.20200827) + +- [00cc0e7](https://github.com/stashed/elasticsearch/commit/00cc0e7) Prepare for release 6.2.4-rc.20200827 (#193) +- [54bab71](https://github.com/stashed/elasticsearch/commit/54bab71) [cherry-pick] Upload charts without updating index (#185) + + +### [6.3.0-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-rc.20200827) + +- [4bf05ac](https://github.com/stashed/elasticsearch/commit/4bf05ac) Prepare for release 6.3.0-rc.20200827 (#194) +- [16053f8](https://github.com/stashed/elasticsearch/commit/16053f8) [cherry-pick] Upload charts without updating index (#186) + + +### [6.4.0-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-rc.20200827) + +- [c37a5b5](https://github.com/stashed/elasticsearch/commit/c37a5b5) Prepare for release 6.4.0-rc.20200827 (#195) +- [6a44a65](https://github.com/stashed/elasticsearch/commit/6a44a65) [cherry-pick] Upload charts without updating index (#187) + + +### [6.5.3-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-rc.20200827) + +- [68b5356](https://github.com/stashed/elasticsearch/commit/68b5356) Prepare for release 6.5.3-rc.20200827 (#196) +- [babe6ed](https://github.com/stashed/elasticsearch/commit/babe6ed) [cherry-pick] Upload charts without updating index (#188) + + +### [6.8.0-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-rc.20200827) + +- [74bcf84](https://github.com/stashed/elasticsearch/commit/74bcf84) Prepare for release 6.8.0-rc.20200827 (#197) +- [a836713](https://github.com/stashed/elasticsearch/commit/a836713) [cherry-pick] Upload charts without updating index (#189) + + +### [7.2.0-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-rc.20200827) + +- [036e850](https://github.com/stashed/elasticsearch/commit/036e850) Prepare for release 7.2.0-rc.20200827 (#198) +- [54fd94d](https://github.com/stashed/elasticsearch/commit/54fd94d) [cherry-pick] Upload charts without updating index (#190) + + +### [7.3.2-rc.20200827](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-rc.20200827) + +- [c6f8b5d](https://github.com/stashed/elasticsearch/commit/c6f8b5d) Prepare for release 7.3.2-rc.20200827 (#199) +- [0f8ba19](https://github.com/stashed/elasticsearch/commit/0f8ba19) [cherry-pick] Upload charts without updating index (#191) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0-rc.2](https://github.com/stashed/installer/releases/tag/v0.10.0-rc.2) + +- [7d5e440](https://github.com/stashed/installer/commit/7d5e440) Prepare for release v0.10.0-rc.2 (#92) +- [f4cae9f](https://github.com/stashed/installer/commit/f4cae9f) Upload charts without updating index +- [90d9c52](https://github.com/stashed/installer/commit/90d9c52) Update Kubernetes v1.18.3 dependencies (#91) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-rc.20200827](https://github.com/stashed/mongodb/releases/tag/3.4.1-rc.20200827) + +- [9890353](https://github.com/stashed/mongodb/commit/9890353) Prepare for release 3.4.1-rc.20200827 (#231) +- [d941a98](https://github.com/stashed/mongodb/commit/d941a98) [cherry-pick] Upload charts without updating index (#220) + + +### [3.4.2-rc.20200827](https://github.com/stashed/mongodb/releases/tag/3.4.2-rc.20200827) + +- [fe63b2a](https://github.com/stashed/mongodb/commit/fe63b2a) Prepare for release 3.4.2-rc.20200827 (#232) +- [80c8ad0](https://github.com/stashed/mongodb/commit/80c8ad0) [cherry-pick] Upload charts without updating index (#221) + + +### [3.6.1-rc.20200827](https://github.com/stashed/mongodb/releases/tag/3.6.1-rc.20200827) + +- [c3b738a](https://github.com/stashed/mongodb/commit/c3b738a) Prepare for release 3.6.1-rc.20200827 (#233) +- [451d4c9](https://github.com/stashed/mongodb/commit/451d4c9) [cherry-pick] Upload charts without updating index (#222) + + +### [3.6.8-rc.20200827](https://github.com/stashed/mongodb/releases/tag/3.6.8-rc.20200827) + +- [fae0fa3](https://github.com/stashed/mongodb/commit/fae0fa3) Prepare for release 3.6.8-rc.20200827 (#234) +- [59da835](https://github.com/stashed/mongodb/commit/59da835) [cherry-pick] Upload charts without updating index (#223) + + +### [4.0.3-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.0.3-rc.20200827) + +- [e6669a9](https://github.com/stashed/mongodb/commit/e6669a9) Prepare for release 4.0.3-rc.20200827 (#236) +- [7a1efc6](https://github.com/stashed/mongodb/commit/7a1efc6) [cherry-pick] Upload charts without updating index (#225) + + +### [4.0.5-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.0.5-rc.20200827) + +- [8bded32](https://github.com/stashed/mongodb/commit/8bded32) Prepare for release 4.0.5-rc.20200827 (#237) +- [58fa99e](https://github.com/stashed/mongodb/commit/58fa99e) [cherry-pick] Upload charts without updating index (#226) + + +### [4.0.11-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.0.11-rc.20200827) + +- [2dfe220](https://github.com/stashed/mongodb/commit/2dfe220) Prepare for release 4.0.11-rc.20200827 (#235) +- [7ccf88d](https://github.com/stashed/mongodb/commit/7ccf88d) [cherry-pick] Upload charts without updating index (#224) + + +### [4.1.1-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.1.1-rc.20200827) + +- [f5a95fc](https://github.com/stashed/mongodb/commit/f5a95fc) Prepare for release 4.1.1-rc.20200827 (#238) +- [a68fafc](https://github.com/stashed/mongodb/commit/a68fafc) [cherry-pick] Upload charts without updating index (#227) + + +### [4.1.4-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.1.4-rc.20200827) + +- [84e97a4](https://github.com/stashed/mongodb/commit/84e97a4) Prepare for release 4.1.4-rc.20200827 (#239) +- [3a168e8](https://github.com/stashed/mongodb/commit/3a168e8) [cherry-pick] Upload charts without updating index (#228) + + +### [4.1.7-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.1.7-rc.20200827) + +- [df9852f](https://github.com/stashed/mongodb/commit/df9852f) Prepare for release 4.1.7-rc.20200827 (#240) +- [b22a028](https://github.com/stashed/mongodb/commit/b22a028) [cherry-pick] Upload charts without updating index (#229) + + +### [4.2.3-rc.20200827](https://github.com/stashed/mongodb/releases/tag/4.2.3-rc.20200827) + +- [e4c8466](https://github.com/stashed/mongodb/commit/e4c8466) Prepare for release 4.2.3-rc.20200827 (#241) +- [b45397b](https://github.com/stashed/mongodb/commit/b45397b) [cherry-pick] Upload charts without updating index (#230) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-rc.20200827](https://github.com/stashed/mysql/releases/tag/5.7.25-rc.20200827) + +- [263f795](https://github.com/stashed/mysql/commit/263f795) Prepare for release 5.7.25-rc.20200827 (#99) +- [96023d1](https://github.com/stashed/mysql/commit/96023d1) [cherry-pick] Upload charts without updating index (#96) + + +### [8.0.3-rc.20200827](https://github.com/stashed/mysql/releases/tag/8.0.3-rc.20200827) + +- [7d02720](https://github.com/stashed/mysql/commit/7d02720) Prepare for release 8.0.3-rc.20200827 (#101) +- [dc8e2b5](https://github.com/stashed/mysql/commit/dc8e2b5) [cherry-pick] Upload charts without updating index (#98) + + +### [8.0.14-rc.20200827](https://github.com/stashed/mysql/releases/tag/8.0.14-rc.20200827) + +- [720aa02](https://github.com/stashed/mysql/commit/720aa02) Prepare for release 8.0.14-rc.20200827 (#100) +- [7019c00](https://github.com/stashed/mysql/commit/7019c00) [cherry-pick] Upload charts without updating index (#97) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-rc.20200827](https://github.com/stashed/percona-xtradb/releases/tag/5.7-rc.20200827) + +- [c854199](https://github.com/stashed/percona-xtradb/commit/c854199) Prepare for release 5.7-rc.20200827 (#55) +- [e798257](https://github.com/stashed/percona-xtradb/commit/e798257) [cherry-pick] Upload charts without updating index (#54) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-rc.20200827](https://github.com/stashed/postgres/releases/tag/9.6-rc.20200827) + +- [e9febb8](https://github.com/stashed/postgres/commit/e9febb8) Prepare for release 9.6-rc.20200827 (#163) +- [3f724ee](https://github.com/stashed/postgres/commit/3f724ee) [cherry-pick] Upload charts without updating index (#158) + + +### [10.2-rc.20200827](https://github.com/stashed/postgres/releases/tag/10.2-rc.20200827) + +- [fd9fc7a](https://github.com/stashed/postgres/commit/fd9fc7a) Prepare for release 10.2-rc.20200827 (#159) +- [7d1033a](https://github.com/stashed/postgres/commit/7d1033a) [cherry-pick] Upload charts without updating index (#154) + + +### [10.6-rc.20200827](https://github.com/stashed/postgres/releases/tag/10.6-rc.20200827) + +- [4724218](https://github.com/stashed/postgres/commit/4724218) Prepare for release 10.6-rc.20200827 (#160) +- [1167129](https://github.com/stashed/postgres/commit/1167129) [cherry-pick] Upload charts without updating index (#155) + + +### [11.1-rc.20200827](https://github.com/stashed/postgres/releases/tag/11.1-rc.20200827) + +- [0fbd548](https://github.com/stashed/postgres/commit/0fbd548) Prepare for release 11.1-rc.20200827 (#161) +- [fc8cb58](https://github.com/stashed/postgres/commit/fc8cb58) [cherry-pick] Upload charts without updating index (#156) + + +### [11.2-rc.20200827](https://github.com/stashed/postgres/releases/tag/11.2-rc.20200827) + +- [342b6bb](https://github.com/stashed/postgres/commit/342b6bb) Prepare for release 11.2-rc.20200827 (#162) +- [4688cde](https://github.com/stashed/postgres/commit/4688cde) [cherry-pick] Upload charts without updating index (#157) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0-rc.2](https://github.com/stashed/stash/releases/tag/v0.10.0-rc.2) + +- [485f80c6](https://github.com/stashed/stash/commit/485f80c6) Prepare for release v0.10.0-rc.2 (#1181) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.08.27.md b/content/docs/v2024.8.27/CHANGELOG-v2020.08.27.md new file mode 100644 index 0000000000..190e8fc66c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.08.27.md @@ -0,0 +1,3429 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.08.27 + name: Changelog-v2020.08.27 + parent: welcome + weight: 20200827 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.08.27/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.08.27/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.08.27 (2020-08-27) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.10.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.10.0) + +- [113f8111](https://github.com/appscode/stash-enterprise/commit/113f8111) Prepare for release v0.10.0 (#21) +- [be8d7f35](https://github.com/appscode/stash-enterprise/commit/be8d7f35) Prepare for release v0.10.0-rc.2 (#20) +- [dc0c6cf5](https://github.com/appscode/stash-enterprise/commit/dc0c6cf5) Prepare for release v0.10.0-rc.1 (#19) +- [4836ebc0](https://github.com/appscode/stash-enterprise/commit/4836ebc0) Create GitHub release from release workflow +- [58833f91](https://github.com/appscode/stash-enterprise/commit/58833f91) Prepare for release v0.10.0-rc.0 (#18) +- [5a3d33e1](https://github.com/appscode/stash-enterprise/commit/5a3d33e1) Update README.md +- [cbd97623](https://github.com/appscode/stash-enterprise/commit/cbd97623) Use Docker hub for release images (#17) +- [d997d3e7](https://github.com/appscode/stash-enterprise/commit/d997d3e7) Refactor parameter passing via annotations (#16) +- [5300842d](https://github.com/appscode/stash-enterprise/commit/5300842d) Update feature table in README.md (#15) +- [695b2993](https://github.com/appscode/stash-enterprise/commit/695b2993) Fix update status section + fix tests (#14) +- [60f3fecd](https://github.com/appscode/stash-enterprise/commit/60f3fecd) Use license-verifier v0.2.2 (#13) +- [53acec48](https://github.com/appscode/stash-enterprise/commit/53acec48) Add ENFORCE_LICENSE override for licence enforcer (#11) +- [bd0912d3](https://github.com/appscode/stash-enterprise/commit/bd0912d3) Add offline license verification (#10) +- [33444a3a](https://github.com/appscode/stash-enterprise/commit/33444a3a) Add license verifier info to build process (#9) +- [0d8c7294](https://github.com/appscode/stash-enterprise/commit/0d8c7294) Fix restore init-container order (#8) +- [733d9d47](https://github.com/appscode/stash-enterprise/commit/733d9d47) Pass offshoot labels to backup & restore job's pods (#7) +- [357341a9](https://github.com/appscode/stash-enterprise/commit/357341a9) Add params and schedule annotation for auto-backup (#6) +- [aa862d01](https://github.com/appscode/stash-enterprise/commit/aa862d01) Support Snapshot listing for NFS backend without workload running (#5) +- [6ffc7392](https://github.com/appscode/stash-enterprise/commit/6ffc7392) Introduce RestoreBatch CRD + Additional Improvements (#2) +- [f3fb0f15](https://github.com/appscode/stash-enterprise/commit/f3fb0f15) Disable e2e tests (#4) +- [a00abcbb](https://github.com/appscode/stash-enterprise/commit/a00abcbb) Update ci.yml +- [fb1e1fee](https://github.com/appscode/stash-enterprise/commit/fb1e1fee) Update .kodiak.toml +- [5d2f056f](https://github.com/appscode/stash-enterprise/commit/5d2f056f) Update update-release-tracker.sh +- [5160b7a6](https://github.com/appscode/stash-enterprise/commit/5160b7a6) Update update-release-tracker.sh +- [530542b5](https://github.com/appscode/stash-enterprise/commit/530542b5) Add script to update release tracker on pr merge (#3) +- [c1e2163f](https://github.com/appscode/stash-enterprise/commit/c1e2163f) Update .kodiak.toml +- [dd1d1c16](https://github.com/appscode/stash-enterprise/commit/dd1d1c16) Use GCR for enterprise images (#1) +- [bbde40a3](https://github.com/appscode/stash-enterprise/commit/bbde40a3) Update to Kubernetes v1.18.3 (#1129) +- [38eb3781](https://github.com/appscode/stash-enterprise/commit/38eb3781) Update to Kubernetes v1.18.3 +- [197aa7bd](https://github.com/appscode/stash-enterprise/commit/197aa7bd) Create .kodiak.toml +- [181ca49e](https://github.com/appscode/stash-enterprise/commit/181ca49e) Update coverage script +- [26602c96](https://github.com/appscode/stash-enterprise/commit/26602c96) Merge pull request #1125 from stashed/fix-ci-tests +- [54f87b78](https://github.com/appscode/stash-enterprise/commit/54f87b78) Increase wait timeout +- [43428085](https://github.com/appscode/stash-enterprise/commit/43428085) Remove unnecessary test codes + run test in parallel +- [8a780e0c](https://github.com/appscode/stash-enterprise/commit/8a780e0c) Fix clone-pvc tests +- [7027c0f6](https://github.com/appscode/stash-enterprise/commit/7027c0f6) Fix E2E test +- [31de588a](https://github.com/appscode/stash-enterprise/commit/31de588a) Change GCS test bucket name to stash-ci (#1122) +- [30a490a6](https://github.com/appscode/stash-enterprise/commit/30a490a6) Merge pull request #1121 from stashed/baseline-psp +- [419a18e3](https://github.com/appscode/stash-enterprise/commit/419a18e3) Use StringSlice type flag +- [9dd3804d](https://github.com/appscode/stash-enterprise/commit/9dd3804d) Make PSP names configurable through flag +- [e4edef44](https://github.com/appscode/stash-enterprise/commit/e4edef44) Always use baseline PSP +- [cf1538a0](https://github.com/appscode/stash-enterprise/commit/cf1538a0) Use filepath.Join to generate Repository prefix for BackupBatch (#1120) +- [be189169](https://github.com/appscode/stash-enterprise/commit/be189169) Go back to using engineerd/setup-kind +- [ae2d74fa](https://github.com/appscode/stash-enterprise/commit/ae2d74fa) Update dependencies (#1117) +- [a93a5b4c](https://github.com/appscode/stash-enterprise/commit/a93a5b4c) Remove defaults from CRD v1beta1 (#1116) +- [40e65761](https://github.com/appscode/stash-enterprise/commit/40e65761) Use CRD v1 for Kubernetes >= 1.16 (#1115) +- [7d851e53](https://github.com/appscode/stash-enterprise/commit/7d851e53) Merge pull request #1114 from stashed/x7 +- [352ddeed](https://github.com/appscode/stash-enterprise/commit/352ddeed) Use preinstalled kind +- [11c9e422](https://github.com/appscode/stash-enterprise/commit/11c9e422) Pass context +- [21053603](https://github.com/appscode/stash-enterprise/commit/21053603) Update to Kubernetes 1.18.3 +- [f450e9cc](https://github.com/appscode/stash-enterprise/commit/f450e9cc) Add wait for target logic + add conditions for BackupConfiguration + BackupBatch + RestoreSession (#1108) +- [8f8ff87e](https://github.com/appscode/stash-enterprise/commit/8f8ff87e) Fix volume snapshot job cleanup (#1090) +- [a4a868b5](https://github.com/appscode/stash-enterprise/commit/a4a868b5) Merge pull request #1111 from stashed/fix-interimVolume +- [108d0252](https://github.com/appscode/stash-enterprise/commit/108d0252) Set BackupSession as owner of the pvc created from interimVolumeTemplate +- [fd136c53](https://github.com/appscode/stash-enterprise/commit/fd136c53) Use Go 1.14.3 +- [74c71d22](https://github.com/appscode/stash-enterprise/commit/74c71d22) Update crazy-max/ghaction-docker-buildx flag +- [f783899b](https://github.com/appscode/stash-enterprise/commit/f783899b) Trigger the workflow on push to master +- [e7eceb30](https://github.com/appscode/stash-enterprise/commit/e7eceb30) Trigger the workflow on push or pull request +- [fe479e8c](https://github.com/appscode/stash-enterprise/commit/fe479e8c) Use kind v0.8.0 +- [9fc4665a](https://github.com/appscode/stash-enterprise/commit/9fc4665a) Merge pull request #1093 from robotinfra/master +- [ef2d57e3](https://github.com/appscode/stash-enterprise/commit/ef2d57e3) fix typo succesSfully +- [d8d35c49](https://github.com/appscode/stash-enterprise/commit/d8d35c49) fix event types mismatch +- [53dfe8b0](https://github.com/appscode/stash-enterprise/commit/53dfe8b0) Update stash labels in Makefile +- [c8081c1d](https://github.com/appscode/stash-enterprise/commit/c8081c1d) Pass image pull secrets to helm chart +- [37b9b312](https://github.com/appscode/stash-enterprise/commit/37b9b312) Use Go 1.14.2 (#1074) +- [09621974](https://github.com/appscode/stash-enterprise/commit/09621974) Update K8s version 1.14.6 to 1.14.10 (#1084) +- [8a1ab32c](https://github.com/appscode/stash-enterprise/commit/8a1ab32c) Give backup triggering CronJob all permissions for Stash crds (#1083) +- [53b932b1](https://github.com/appscode/stash-enterprise/commit/53b932b1) Use kubectl 1.17 (#1082) +- [5cdeebee](https://github.com/appscode/stash-enterprise/commit/5cdeebee) Fix nil pointer exception during VolumeSnapshot (#1073) +- [30630d60](https://github.com/appscode/stash-enterprise/commit/30630d60) Assign returned error properly crateRestoreSessoin() (#1069) +- [3fcbe1b7](https://github.com/appscode/stash-enterprise/commit/3fcbe1b7) Update README.md to reflect Stash's capability properly (#1060) +- [53513cfe](https://github.com/appscode/stash-enterprise/commit/53513cfe) Update README.md +- [d615e2c0](https://github.com/appscode/stash-enterprise/commit/d615e2c0) Add license scan report and status (#1031) +- [473dab81](https://github.com/appscode/stash-enterprise/commit/473dab81) Use stash.appscode.dev/apimachinery@v0.9.0-rc.6 +- [81be166a](https://github.com/appscode/stash-enterprise/commit/81be166a) Use stash.appscode.dev/apimachinery (#1051) +- [99dcf0a5](https://github.com/appscode/stash-enterprise/commit/99dcf0a5) Add support for specifying "region" for S3 backend (#1050) +- [deeaaafe](https://github.com/appscode/stash-enterprise/commit/deeaaafe) Fix event message (#1048) +- [7bb2ae55](https://github.com/appscode/stash-enterprise/commit/7bb2ae55) Merge pull request #1047 from stashed/rm-fsgroup +- [a7c3a60b](https://github.com/appscode/stash-enterprise/commit/a7c3a60b) Remove defaulting FSGroup +- [49bf689d](https://github.com/appscode/stash-enterprise/commit/49bf689d) Fix Repository CRDs print column (#1046) +- [feb204be](https://github.com/appscode/stash-enterprise/commit/feb204be) Update README.md to v0.9.0-rc.4 +- [ba1733eb](https://github.com/appscode/stash-enterprise/commit/ba1733eb) Don't check if target exist from BackupSession creating CronJob (#1028) +- [ddc65ceb](https://github.com/appscode/stash-enterprise/commit/ddc65ceb) Fix ServiceAccount name mitchmatch (#1025) +- [013e5254](https://github.com/appscode/stash-enterprise/commit/013e5254) Suspend CronJob but keep instant backup working while backup is paused (#1024) +- [64f75bb7](https://github.com/appscode/stash-enterprise/commit/64f75bb7) Add stash specific prefix to automatically created resources (#1023) +- [d44e0ae2](https://github.com/appscode/stash-enterprise/commit/d44e0ae2) Fix CronJob creation failure handling (#1021) +- [b2640d36](https://github.com/appscode/stash-enterprise/commit/b2640d36) Use Go 1.13.6 +- [1eb8da6e](https://github.com/appscode/stash-enterprise/commit/1eb8da6e) Update gendocs command (#1016) +- [6f7c8191](https://github.com/appscode/stash-enterprise/commit/6f7c8191) Add hook tests for BackupBatch (#1014) +- [84272af9](https://github.com/appscode/stash-enterprise/commit/84272af9) check nil pointer error (#1015) +- [36ef1d2b](https://github.com/appscode/stash-enterprise/commit/36ef1d2b) Enable tests for K8s 1.11 (#1013) +- [7c774d77](https://github.com/appscode/stash-enterprise/commit/7c774d77) Fix backup-batch issues (#1004) +- [5bf1e2c2](https://github.com/appscode/stash-enterprise/commit/5bf1e2c2) Bring back support for k8s 1.11 (#1008) +- [d6e0fe4b](https://github.com/appscode/stash-enterprise/commit/d6e0fe4b) Remove creationTimestamp from PartialObjectMeta (#1006) +- [6ae79134](https://github.com/appscode/stash-enterprise/commit/6ae79134) Add BackupBatch support (#985) +- [ed42b159](https://github.com/appscode/stash-enterprise/commit/ed42b159) Update twitter account (#1003) +- [c8513185](https://github.com/appscode/stash-enterprise/commit/c8513185) Add Repository Validation for local backend `mountPath` (#947) +- [11f4c5e2](https://github.com/appscode/stash-enterprise/commit/11f4c5e2) Fix invalid flag name for PVC restorer job (#960) +- [93358115](https://github.com/appscode/stash-enterprise/commit/93358115) Add Backend e2e Test (#975) +- [ca688540](https://github.com/appscode/stash-enterprise/commit/ca688540) Update client-go to kubernetes-1.16.3 (#987) +- [e18f30dd](https://github.com/appscode/stash-enterprise/commit/e18f30dd) Use RWX for restic output.json (#1001) +- [4d9cdbc8](https://github.com/appscode/stash-enterprise/commit/4d9cdbc8) Run `chmod` on `output.json` only by owner container + Improve… (#1000) +- [8378f141](https://github.com/appscode/stash-enterprise/commit/8378f141) Add Backup and Restore hooks (#978) +- [a4dd1a1d](https://github.com/appscode/stash-enterprise/commit/a4dd1a1d) Use helm chart instead of script to install operator (#999) +- [ec5c9efd](https://github.com/appscode/stash-enterprise/commit/ec5c9efd) Update hack/fmt.sh script +- [54dbef4c](https://github.com/appscode/stash-enterprise/commit/54dbef4c) Add helper library for CRDs (#977) +- [16483ce1](https://github.com/appscode/stash-enterprise/commit/16483ce1) Use kubebuilder generated CRD yamls (#971) +- [eacba300](https://github.com/appscode/stash-enterprise/commit/eacba300) Fix typo (#976) +- [dd500b08](https://github.com/appscode/stash-enterprise/commit/dd500b08) Use controller-tools@v0.2.2 to generate structural schema (#974) +- [53331837](https://github.com/appscode/stash-enterprise/commit/53331837) Migrate Repository status.size, Recovery status.observedGeneration (#969) +- [69ef388b](https://github.com/appscode/stash-enterprise/commit/69ef388b) Generate protobuf files for api types (#967) +- [decea34f](https://github.com/appscode/stash-enterprise/commit/decea34f) Fix Repository returned error message (#961) +- [5a9e0356](https://github.com/appscode/stash-enterprise/commit/5a9e0356) Apply valid name functionality (#950) +- [122ed35f](https://github.com/appscode/stash-enterprise/commit/122ed35f) Test installer against multiple k8s version (#953) +- [63cfc0f9](https://github.com/appscode/stash-enterprise/commit/63cfc0f9) Format shell scripts (#952) +- [c77dfcd4](https://github.com/appscode/stash-enterprise/commit/c77dfcd4) Add missing license header +- [780fd2cb](https://github.com/appscode/stash-enterprise/commit/780fd2cb) Rename Dockerfiles (#946) +- [dc34560a](https://github.com/appscode/stash-enterprise/commit/dc34560a) Add AutoBackup e2e test (#939) +- [6979ff8b](https://github.com/appscode/stash-enterprise/commit/6979ff8b) Enable race detector (#944) +- [69acf528](https://github.com/appscode/stash-enterprise/commit/69acf528) Add license header to files (#943) +- [b2636f8b](https://github.com/appscode/stash-enterprise/commit/b2636f8b) Don't add AppBinding labels in metric when AppBinding is not available (#942) +- [18e1ab7e](https://github.com/appscode/stash-enterprise/commit/18e1ab7e) Fix BackupSession creation for ReplicaSet (#940) +- [8ce4ab86](https://github.com/appscode/stash-enterprise/commit/8ce4ab86) Fix klog flag parsing +- [efd614f9](https://github.com/appscode/stash-enterprise/commit/efd614f9) Revendor +- [f3fa386f](https://github.com/appscode/stash-enterprise/commit/f3fa386f) Use crazy-max/ghaction-docker-buildx@v1 +- [5cc99c53](https://github.com/appscode/stash-enterprise/commit/5cc99c53) Show diff when files `make verify` fails (#937) +- [d20892dd](https://github.com/appscode/stash-enterprise/commit/d20892dd) Update make fmt +- [fc827b84](https://github.com/appscode/stash-enterprise/commit/fc827b84) Split imports into 3 blocks (#936) +- [269527cf](https://github.com/appscode/stash-enterprise/commit/269527cf) Volume e2e test github action (#933) +- [926dcd20](https://github.com/appscode/stash-enterprise/commit/926dcd20) Fix BackupSession additional print column (#932) +- [f052f7a2](https://github.com/appscode/stash-enterprise/commit/f052f7a2) Remove spec.backupConfiguration from BackupSession (#931) +- [d378ef2d](https://github.com/appscode/stash-enterprise/commit/d378ef2d) Update e2e tests to run on GitHub actions (#917) +- [bc27645c](https://github.com/appscode/stash-enterprise/commit/bc27645c) Enable make ci (#928) +- [9ef3cfeb](https://github.com/appscode/stash-enterprise/commit/9ef3cfeb) Don't restart workload on backup pause+Use ImagePullPolicy: "Always" for Function-Task model (#929) +- [a5f00836](https://github.com/appscode/stash-enterprise/commit/a5f00836) Add status.observedGeneration (#927) +- [57eadd03](https://github.com/appscode/stash-enterprise/commit/57eadd03) Implement RetentionPolicy for VolumeSnapshot (#926) +- [db709fdc](https://github.com/appscode/stash-enterprise/commit/db709fdc) Verify generated files are up to date (#925) +- [5fb54194](https://github.com/appscode/stash-enterprise/commit/5fb54194) Update and rename go.yml to ci.yml (#922) +- [0be34c5e](https://github.com/appscode/stash-enterprise/commit/0be34c5e) Add probe and BackupBatch api (#890) +- [a55b6e84](https://github.com/appscode/stash-enterprise/commit/a55b6e84) Use core package from k8s.io/api repo (#921) +- [f5a271be](https://github.com/appscode/stash-enterprise/commit/f5a271be) Bring back dependency to github.com/golang/protobuf@v1.2.0 (#918) +- [5dfeecbc](https://github.com/appscode/stash-enterprise/commit/5dfeecbc) Update tag pattern for release pipeline +- [e31f5e9a](https://github.com/appscode/stash-enterprise/commit/e31f5e9a) Run e2e tests using GitHub actions (#909) +- [8bb3ef36](https://github.com/appscode/stash-enterprise/commit/8bb3ef36) Add app=stash label to crd yamls +- [b50b47c9](https://github.com/appscode/stash-enterprise/commit/b50b47c9) Generate swagger.json for v1beta1 (#916) +- [095a4a6c](https://github.com/appscode/stash-enterprise/commit/095a4a6c) Add release pipeline (#915) +- [66926055](https://github.com/appscode/stash-enterprise/commit/66926055) Fix Restore PVC using Task Function method (#897) +- [404840e4](https://github.com/appscode/stash-enterprise/commit/404840e4) Fix VolumeSnapshot Issues (#912) +- [7f3b2250](https://github.com/appscode/stash-enterprise/commit/7f3b2250) Add Kubebuilder annotations (#911) +- [0a499f13](https://github.com/appscode/stash-enterprise/commit/0a499f13) Use kubebuilder to generate crd yamls (#843) +- [4903508f](https://github.com/appscode/stash-enterprise/commit/4903508f) Update go.yml +- [23c44bc0](https://github.com/appscode/stash-enterprise/commit/23c44bc0) Introduce InterimVolumeTemplate and BackupHistoryLimit field. (#907) +- [4ee56d63](https://github.com/appscode/stash-enterprise/commit/4ee56d63) Make RetentionPolicy required in v1beta1 api (#905) +- [5476cd7a](https://github.com/appscode/stash-enterprise/commit/5476cd7a) Enable GitHub actions (#903) +- [fe87b789](https://github.com/appscode/stash-enterprise/commit/fe87b789) Fix snapshot listing for local backend (#902) +- [5f49f5d2](https://github.com/appscode/stash-enterprise/commit/5f49f5d2) Improve Error Handling + Code refactor (#891) +- [88c84275](https://github.com/appscode/stash-enterprise/commit/88c84275) Add `NICE` and `IONICE` into distroless image (#883) +- [f63d5c1a](https://github.com/appscode/stash-enterprise/commit/f63d5c1a) Improve metrics handling + make update status uniform (#872) +- [ea68de24](https://github.com/appscode/stash-enterprise/commit/ea68de24) Use default fsGroup: 65535 (#874) +- [9bbcabab](https://github.com/appscode/stash-enterprise/commit/9bbcabab) Add DumpEnv func to Restic Config file (#870) +- [ebde15db](https://github.com/appscode/stash-enterprise/commit/ebde15db) Allow to specify subPath in auto-backup annotation (#871) +- [6c127323](https://github.com/appscode/stash-enterprise/commit/6c127323) Silence docker buildx command (#866) +- [5c47abc3](https://github.com/appscode/stash-enterprise/commit/5c47abc3) Update README.md (#865) +- [50f69ffe](https://github.com/appscode/stash-enterprise/commit/50f69ffe) Use docker buildx to build docker image (#864) +- [d8c0b1d8](https://github.com/appscode/stash-enterprise/commit/d8c0b1d8) Update version in gendocs script +- [cb972a98](https://github.com/appscode/stash-enterprise/commit/cb972a98) Use github.com/Azure/go-autorest/autorest@v0.7.0 (#862) +- [ae5c1325](https://github.com/appscode/stash-enterprise/commit/ae5c1325) Remove the `bs` short name for BackupSession (#859) +- [1c01d69d](https://github.com/appscode/stash-enterprise/commit/1c01d69d) Use github.com/golang/protobuf@v1.2.0 (#855) +- [998fac02](https://github.com/appscode/stash-enterprise/commit/998fac02) New variable from type field of AppBinding + Fix RoleBinding nam… (#845) +- [b97b7622](https://github.com/appscode/stash-enterprise/commit/b97b7622) Fix resolving Task if volumeClaimTemplate is set in RestoreSession(#852) +- [4ec6caf8](https://github.com/appscode/stash-enterprise/commit/4ec6caf8) Rename BackupConfigurationTemplate to BackupBlueprint (#847) +- [d8efb120](https://github.com/appscode/stash-enterprise/commit/d8efb120) Use POD_ORDINAL env var to restore using PVC template (#849) +- [8df5be99](https://github.com/appscode/stash-enterprise/commit/8df5be99) Pass replicas from RestoreSession to Function (#848) +- [ae5eabd4](https://github.com/appscode/stash-enterprise/commit/ae5eabd4) Use variable for version in BackupConfigurationTemplate name (#846) +- [fe5b2049](https://github.com/appscode/stash-enterprise/commit/fe5b2049) Fix Platforms Issue (#844) +- [33fc37cd](https://github.com/appscode/stash-enterprise/commit/33fc37cd) Add support to restore using volumeClaimTemplate in Function-Task model (#841) +- [3de534ba](https://github.com/appscode/stash-enterprise/commit/3de534ba) Add GetSnapshotSize() function (#839) +- [6bc80ce2](https://github.com/appscode/stash-enterprise/commit/6bc80ce2) Fix travis build (#837) +- [1c51a7c5](https://github.com/appscode/stash-enterprise/commit/1c51a7c5) Add support for parallel backup & restore (#833) +- [e250bb62](https://github.com/appscode/stash-enterprise/commit/e250bb62) Fix RestoreSession replicas logic (#835) +- [37618091](https://github.com/appscode/stash-enterprise/commit/37618091) Use cron.ParseStandard helper +- [5015a60d](https://github.com/appscode/stash-enterprise/commit/5015a60d) Update azure-sdk-for-go dependencies (#836) +- [920dfaea](https://github.com/appscode/stash-enterprise/commit/920dfaea) Update github.com/appscode/go@master +- [ca2fad07](https://github.com/appscode/stash-enterprise/commit/ca2fad07) Use robfig/cron@v3 (#834) +- [95728126](https://github.com/appscode/stash-enterprise/commit/95728126) Fix restore Job parallel execution (#832) +- [94cbae13](https://github.com/appscode/stash-enterprise/commit/94cbae13) Remove unused code (#829) +- [4dc11263](https://github.com/appscode/stash-enterprise/commit/4dc11263) Generate docs files inside docs repo (#828) +- [6fb5bc7f](https://github.com/appscode/stash-enterprise/commit/6fb5bc7f) Create default Functions and Tasks from operator (#824) +- [bb675f67](https://github.com/appscode/stash-enterprise/commit/bb675f67) Fix restore job RBAC (#821) +- [f96852fc](https://github.com/appscode/stash-enterprise/commit/f96852fc) Fixed volumeSnapshot Error Issue (#819) +- [08b0f50f](https://github.com/appscode/stash-enterprise/commit/08b0f50f) fix default securityContext passing to restore init-container/job + fix container name (#823) +- [4aa94675](https://github.com/appscode/stash-enterprise/commit/4aa94675) Add License notice to makefile (#825) +- [955b1adb](https://github.com/appscode/stash-enterprise/commit/955b1adb) Make --image-tag a required flag. (#817) +- [9ca08aa6](https://github.com/appscode/stash-enterprise/commit/9ca08aa6) Always attempt to pull a newer image for `make container` (#818) +- [b88cb9dc](https://github.com/appscode/stash-enterprise/commit/b88cb9dc) Update constants.go +- [aa0c41f4](https://github.com/appscode/stash-enterprise/commit/aa0c41f4) Add PusgatewayURL input for Functions (#816) +- [0a45b44a](https://github.com/appscode/stash-enterprise/commit/0a45b44a) Restore PVCs from templates using Restic (#809) +- [0729ab19](https://github.com/appscode/stash-enterprise/commit/0729ab19) Add TARGET_RESOURCE variable for BackupConfigurationTemplate (#814) +- [bab795c2](https://github.com/appscode/stash-enterprise/commit/bab795c2) Add make install, uninstall, purge commands (#813) +- [604af0d5](https://github.com/appscode/stash-enterprise/commit/604af0d5) Move chart & deploy scripts to github.com/stashed/installer (#811) +- [521f441b](https://github.com/appscode/stash-enterprise/commit/521f441b) Use stashed/docs repo +- [4c89667d](https://github.com/appscode/stash-enterprise/commit/4c89667d) Move docs to github.com/stashed/docs repo (#810) +- [e6614482](https://github.com/appscode/stash-enterprise/commit/e6614482) Fix travis build (#804) +- [d8f565f4](https://github.com/appscode/stash-enterprise/commit/d8f565f4) Pass labels to offshoot + add generic offshoot labels (#801) +- [eadca45d](https://github.com/appscode/stash-enterprise/commit/eadca45d) Move HandleResticError to util package (#806) +- [df42b83f](https://github.com/appscode/stash-enterprise/commit/df42b83f) Remove canary support (#805) +- [82614d32](https://github.com/appscode/stash-enterprise/commit/82614d32) Update Version.go (#803) +- [74453ad8](https://github.com/appscode/stash-enterprise/commit/74453ad8) Added ARM64 support to the install script and manifest (#802) +- [24ece6cc](https://github.com/appscode/stash-enterprise/commit/24ece6cc) Load modules from vendor folder for linter +- [2672ee05](https://github.com/appscode/stash-enterprise/commit/2672ee05) Add Makefile (#800) +- [ac829f30](https://github.com/appscode/stash-enterprise/commit/ac829f30) VolumeSnapshot (#787) +- [a8f3172f](https://github.com/appscode/stash-enterprise/commit/a8f3172f) Remove importance of order of rule in RestoreSession (#795) +- [886649ed](https://github.com/appscode/stash-enterprise/commit/886649ed) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [f038d86e](https://github.com/appscode/stash-enterprise/commit/f038d86e) Use absolute path as aliases for reference docs. (#796) +- [b9100307](https://github.com/appscode/stash-enterprise/commit/b9100307) Support PSP enabled cluster (#729) +- [e94399dc](https://github.com/appscode/stash-enterprise/commit/e94399dc) Use restic 0.9.5 (#789) +- [e962a1c4](https://github.com/appscode/stash-enterprise/commit/e962a1c4) Fix: User and group creation of stash for mongodb and mysql (#786) +- [228df5a3](https://github.com/appscode/stash-enterprise/commit/228df5a3) Update concept doc (#739) +- [de9536cd](https://github.com/appscode/stash-enterprise/commit/de9536cd) Update backup manager (#782) +- [739273a5](https://github.com/appscode/stash-enterprise/commit/739273a5) Configure Env variables for Functions (#780) +- [c49b24f6](https://github.com/appscode/stash-enterprise/commit/c49b24f6) Add support for backup cluster resources YAML (#721) +- [91bce2fd](https://github.com/appscode/stash-enterprise/commit/91bce2fd) Add "Supported Backends" doc to new guides (#756) +- [a8ef2d36](https://github.com/appscode/stash-enterprise/commit/a8ef2d36) Fix rest backend for workloads + add more authentication method for swift backend (#778) +- [775b6660](https://github.com/appscode/stash-enterprise/commit/775b6660) Backup and restore Elasticsearch (#702) +- [0fbb9c75](https://github.com/appscode/stash-enterprise/commit/0fbb9c75) Add guides template for new design (#755) +- [03689414](https://github.com/appscode/stash-enterprise/commit/03689414) Update package path to stash.appscode.dev/stash (#776) +- [639d499f](https://github.com/appscode/stash-enterprise/commit/639d499f) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [9ba906d8](https://github.com/appscode/stash-enterprise/commit/9ba906d8) MutatingWebhooks must be without side-effect (#773) +- [937012d5](https://github.com/appscode/stash-enterprise/commit/937012d5) Introduce VolumeSnapshot APIs (#772) +- [2b0f0560](https://github.com/appscode/stash-enterprise/commit/2b0f0560) Use osm pkg from kmodules/objectstore-api (#770) +- [cd9f6ad6](https://github.com/appscode/stash-enterprise/commit/cd9f6ad6) Remove --rbac flag (#761) +- [09af5d31](https://github.com/appscode/stash-enterprise/commit/09af5d31) Skip creating/processing backup-session when backup-config is paused (#759) +- [99753f73](https://github.com/appscode/stash-enterprise/commit/99753f73) Fix go fmt +- [64bb9bdd](https://github.com/appscode/stash-enterprise/commit/64bb9bdd) Stash v1beta1 E2E test for PVC (#753) +- [bcf8b90d](https://github.com/appscode/stash-enterprise/commit/bcf8b90d) Implement snapshots for v1beta1 api (#749) +- [3f0ae2d4](https://github.com/appscode/stash-enterprise/commit/3f0ae2d4) Run restic commands using docker (#754) +- [17feb41c](https://github.com/appscode/stash-enterprise/commit/17feb41c) Update Kubernetes client libraries to 1.13.5 (#752) +- [2d413ee0](https://github.com/appscode/stash-enterprise/commit/2d413ee0) Stash v1beta1 E2E test for ReplicaSet (#747) +- [80b2b3d9](https://github.com/appscode/stash-enterprise/commit/80b2b3d9) Enable pipefail and update restore yamls (#750) +- [c908df9f](https://github.com/appscode/stash-enterprise/commit/c908df9f) Stash v1beta1 E2E test for ReplicationController (#742) +- [82c17eaf](https://github.com/appscode/stash-enterprise/commit/82c17eaf) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [d113b24f](https://github.com/appscode/stash-enterprise/commit/d113b24f) Add Stash CLI (#734) +- [286792a6](https://github.com/appscode/stash-enterprise/commit/286792a6) Stash v1beta1 E2E test for DaemonSet (#741) +- [62960e5b](https://github.com/appscode/stash-enterprise/commit/62960e5b) Apply nice/ionice settings from env (#746) +- [a2534c97](https://github.com/appscode/stash-enterprise/commit/a2534c97) Stash V1beta1 E2E test for StatefulSet (#737) +- [37087b38](https://github.com/appscode/stash-enterprise/commit/37087b38) Stash V1beta1 E2E test for Deployment (#710) +- [c08f04e4](https://github.com/appscode/stash-enterprise/commit/c08f04e4) Attach local backend (#736) +- [7a282d91](https://github.com/appscode/stash-enterprise/commit/7a282d91) Fix openapi path prefixes for validators and mutators (#732) +- [a8aef590](https://github.com/appscode/stash-enterprise/commit/a8aef590) Add max-connections for GCS, Azure, B2 backend (#730) +- [dd3f459c](https://github.com/appscode/stash-enterprise/commit/dd3f459c) Rename admission webhooks to avoid name collision (#725) +- [a32ceff5](https://github.com/appscode/stash-enterprise/commit/a32ceff5) Apply EmptyDir settings to TmpDir (#719) +- [36fdb9ae](https://github.com/appscode/stash-enterprise/commit/36fdb9ae) Use FailurePolicy ignore for K8s resource webhooks (#726) +- [4cab69a0](https://github.com/appscode/stash-enterprise/commit/4cab69a0) Don't write secret data inside temp dir (#724) +- [e2bcc4a8](https://github.com/appscode/stash-enterprise/commit/e2bcc4a8) Use ionice and nice with Restic CMD (#716) +- [bf91db4e](https://github.com/appscode/stash-enterprise/commit/bf91db4e) Use cleanup-cache flag (#717) +- [f2669f17](https://github.com/appscode/stash-enterprise/commit/f2669f17) Add TempDir and PSP settings for Function (#720) +- [dfc3fbd6](https://github.com/appscode/stash-enterprise/commit/dfc3fbd6) Add support for rest backend (#713) +- [47cf2dd4](https://github.com/appscode/stash-enterprise/commit/47cf2dd4) Add support for OpenShift DeploymentConfig (#714) +- [8c2b81b0](https://github.com/appscode/stash-enterprise/commit/8c2b81b0) Backup and restore Mongo DB (#699) +- [2849319a](https://github.com/appscode/stash-enterprise/commit/2849319a) Backup and restore MySQL DB (#696) +- [49fe8404](https://github.com/appscode/stash-enterprise/commit/49fe8404) Backup and restore Postgres DB (#695) +- [dbff05f6](https://github.com/appscode/stash-enterprise/commit/dbff05f6) Backup from stdin and dump to stdout (#694) +- [08ff2fa5](https://github.com/appscode/stash-enterprise/commit/08ff2fa5) Add BackupSession Controller for Sidecar (#701) +- [83f1c6e5](https://github.com/appscode/stash-enterprise/commit/83f1c6e5) Update workload controller for new design (#675) +- [13fb68bd](https://github.com/appscode/stash-enterprise/commit/13fb68bd) Post backup/restore status update (#691) +- [30993c08](https://github.com/appscode/stash-enterprise/commit/30993c08) Backup and restore PVC (#676) +- [7bdf0752](https://github.com/appscode/stash-enterprise/commit/7bdf0752) Resolve tasks for backup/restore sessions (#674) +- [6a74602a](https://github.com/appscode/stash-enterprise/commit/6a74602a) Add restic wrapper library (#673) +- [7b8309a5](https://github.com/appscode/stash-enterprise/commit/7b8309a5) Add BackupConfiguration Controller (#671) +- [6f6c25d1](https://github.com/appscode/stash-enterprise/commit/6f6c25d1) Use ContainerRuntimeSettings in Function spec (#689) +- [4d80cf6b](https://github.com/appscode/stash-enterprise/commit/4d80cf6b) Update Kubernetes client libraries to 1.13.0 (#687) +- [361d4ad3](https://github.com/appscode/stash-enterprise/commit/361d4ad3) Fix v1beta1 api for BackupConfigurationTemplate (#688) +- [302311af](https://github.com/appscode/stash-enterprise/commit/302311af) Introduce v1beta1 api (#647) +- [ccf4469b](https://github.com/appscode/stash-enterprise/commit/ccf4469b) Prepare docs for 0.8.3 release (#683) +- [54fb4998](https://github.com/appscode/stash-enterprise/commit/54fb4998) Update changelog for 0.8.3 (#682) +- [277ef3b7](https://github.com/appscode/stash-enterprise/commit/277ef3b7) Update dependencies (#681) +- [80d55446](https://github.com/appscode/stash-enterprise/commit/80d55446) Don't add hostname label to Prometheus metrics. (#680) +- [e5b7f32c](https://github.com/appscode/stash-enterprise/commit/e5b7f32c) Pass pod annotation to deployment (#679) +- [b342a954](https://github.com/appscode/stash-enterprise/commit/b342a954) Fix the case for deploying using MINGW64 for windows (#678) +- [4cdc5596](https://github.com/appscode/stash-enterprise/commit/4cdc5596) Use onessl 0.10.0 (#677) +- [296712f0](https://github.com/appscode/stash-enterprise/commit/296712f0) Fix typo +- [fbb98590](https://github.com/appscode/stash-enterprise/commit/fbb98590) s/rook/azure/ in possible copy/paste error. (#669) +- [29e7b6ce](https://github.com/appscode/stash-enterprise/commit/29e7b6ce) Fix builtin monitoring doc (#668) +- [4b7fe1e4](https://github.com/appscode/stash-enterprise/commit/4b7fe1e4) Update install.md +- [8a3b2ee6](https://github.com/appscode/stash-enterprise/commit/8a3b2ee6) Don't use priority class when operator namespace is not kube-system (#666) +- [5bf48b1b](https://github.com/appscode/stash-enterprise/commit/5bf48b1b) Separate type definitions into individual files (#646) +- [80f21a0d](https://github.com/appscode/stash-enterprise/commit/80f21a0d) Update changelog for 0.8.2 +- [ed5c6b86](https://github.com/appscode/stash-enterprise/commit/ed5c6b86) Prepare docs for 0.8.2 release (#644) +- [a56261b0](https://github.com/appscode/stash-enterprise/commit/a56261b0) Update copyright notice for 2019 (#643) +- [812f13e1](https://github.com/appscode/stash-enterprise/commit/812f13e1) Use fullname to generate cleaner name in chart +- [9daa8a0e](https://github.com/appscode/stash-enterprise/commit/9daa8a0e) apply stash.labels to operator pods +- [c36875f0](https://github.com/appscode/stash-enterprise/commit/c36875f0) Use stash.labels template in chart (#642) +- [946df536](https://github.com/appscode/stash-enterprise/commit/946df536) Fixed broken link for bakend (#641) +- [38d3c734](https://github.com/appscode/stash-enterprise/commit/38d3c734) Only mount stash apiserver `tls.crt` into Prometheus (#639) +- [9e6a6604](https://github.com/appscode/stash-enterprise/commit/9e6a6604) Fix typo in installer (#638) +- [0a4488cf](https://github.com/appscode/stash-enterprise/commit/0a4488cf) Fix monitoring in helm + update doc to match with third-party-tools tutorial (#637) +- [903d9649](https://github.com/appscode/stash-enterprise/commit/903d9649) Add certificate health checker (#636) +- [a931bbd9](https://github.com/appscode/stash-enterprise/commit/a931bbd9) Update install.md +- [99e6afba](https://github.com/appscode/stash-enterprise/commit/99e6afba) Update chart readme (#632) +- [d19ae9fa](https://github.com/appscode/stash-enterprise/commit/d19ae9fa) Update webhook error message format for Kubernetes 1.13+ (#631) +- [cd9b42df](https://github.com/appscode/stash-enterprise/commit/cd9b42df) Fix typos (#630) +- [ce1e0d98](https://github.com/appscode/stash-enterprise/commit/ce1e0d98) Fix dependencies. +- [c2e41214](https://github.com/appscode/stash-enterprise/commit/c2e41214) Update changelog +- [55233451](https://github.com/appscode/stash-enterprise/commit/55233451) Prepare docs for 0.8.1 release (#629) +- [d5086aa6](https://github.com/appscode/stash-enterprise/commit/d5086aa6) Add missing validator for respository resource in chart (#628) +- [d9d7f1d4](https://github.com/appscode/stash-enterprise/commit/d9d7f1d4) Update version matrix +- [7af5e82c](https://github.com/appscode/stash-enterprise/commit/7af5e82c) Prepare docs for 0.8.0 release (#626) +- [a1e250f6](https://github.com/appscode/stash-enterprise/commit/a1e250f6) Update docs (Minio, Rook, NFS) (#625) +- [92779d6c](https://github.com/appscode/stash-enterprise/commit/92779d6c) Use flags.DumpAll to dump flags (#624) +- [affdebf6](https://github.com/appscode/stash-enterprise/commit/affdebf6) Merge commit '619323825a3fabc55ce2584dd63f8005fd3b78b3' +- [dddb09f8](https://github.com/appscode/stash-enterprise/commit/dddb09f8) Set periodic analytics (#623) +- [f054ecf7](https://github.com/appscode/stash-enterprise/commit/f054ecf7) Fix e2e test (#622) +- [92bcb0e9](https://github.com/appscode/stash-enterprise/commit/92bcb0e9) Recovery Job: Use nodeName for DaemonSet and nodeSelector for other workloads (#620) +- [3dc6fc5d](https://github.com/appscode/stash-enterprise/commit/3dc6fc5d) Pass --enable-***-webhook flags to operator (#619) +- [257b33e0](https://github.com/appscode/stash-enterprise/commit/257b33e0) Add validation webhook xray (#618) +- [fcb6cfdf](https://github.com/appscode/stash-enterprise/commit/fcb6cfdf) Add docs for AKS and EKS (#609) +- [d1594955](https://github.com/appscode/stash-enterprise/commit/d1594955) Improve monitoring facility (#606) +- [f484b196](https://github.com/appscode/stash-enterprise/commit/f484b196) Use dynamic pushgateway url (#614) +- [78b288d3](https://github.com/appscode/stash-enterprise/commit/78b288d3) Pass image pull secrets for cleaner job in chart (#598) +- [773bd24c](https://github.com/appscode/stash-enterprise/commit/773bd24c) Update kubernetes client libraries to 1.12.0 (#597) +- [2ff8cb30](https://github.com/appscode/stash-enterprise/commit/2ff8cb30) Support LogLevel in chart (#594) +- [c71b4cdf](https://github.com/appscode/stash-enterprise/commit/c71b4cdf) Check if Kubernetes version is supported before running operator (#593) +- [3b443c68](https://github.com/appscode/stash-enterprise/commit/3b443c68) Enable webhooks by default in chart (#591) +- [9b28c755](https://github.com/appscode/stash-enterprise/commit/9b28c755) Update chart readme for cleaner values (#590) +- [0da860c2](https://github.com/appscode/stash-enterprise/commit/0da860c2) Update values.yaml +- [ef90bd48](https://github.com/appscode/stash-enterprise/commit/ef90bd48) Fix #583 and pushgateway version (#584) +- [fbbaf380](https://github.com/appscode/stash-enterprise/commit/fbbaf380) Use --pull flag with docker build (#581) +- [0cc79ee4](https://github.com/appscode/stash-enterprise/commit/0cc79ee4) Merge commit '593cbc0910006952073295cea802d37f30ab8e3f' +- [8a7e068d](https://github.com/appscode/stash-enterprise/commit/8a7e068d) Use kubernetes-1.11.3 (#578) +- [bd5e17b7](https://github.com/appscode/stash-enterprise/commit/bd5e17b7) Update CertStore (#576) +- [ea4b0243](https://github.com/appscode/stash-enterprise/commit/ea4b0243) Use apps/v1 apigroup in installer scripts (#574) +- [fc043125](https://github.com/appscode/stash-enterprise/commit/fc043125) Support pod annotations in chart (#573) +- [8c840810](https://github.com/appscode/stash-enterprise/commit/8c840810) Set serviceAccount for clearner job (#572) +- [4506adea](https://github.com/appscode/stash-enterprise/commit/4506adea) Set SecurityContext for stash sidecar (#570) +- [82416111](https://github.com/appscode/stash-enterprise/commit/82416111) Cleanup webhooks when chart is deleted (#569) +- [5e466ace](https://github.com/appscode/stash-enterprise/commit/5e466ace) fix success list (#567) +- [e65fcbf0](https://github.com/appscode/stash-enterprise/commit/e65fcbf0) Use IntHash as status.observedGeneration (#568) +- [3848ad8d](https://github.com/appscode/stash-enterprise/commit/3848ad8d) Update pipeline (#565) +- [dcf5c40b](https://github.com/appscode/stash-enterprise/commit/dcf5c40b) Merge commit 'dc51668e81aad9349769f0287cb885477836f2b1' +- [14797878](https://github.com/appscode/stash-enterprise/commit/14797878) Add observedGenerationHash field (#564) +- [83ceccc2](https://github.com/appscode/stash-enterprise/commit/83ceccc2) Merge commit 'c73f89c561b2e686d2898b0c8dea8c0bd327e6fd' +- [af105158](https://github.com/appscode/stash-enterprise/commit/af105158) Fix uninstall for concourse (#563) +- [41bb7c71](https://github.com/appscode/stash-enterprise/commit/41bb7c71) Fix chart values file (#562) +- [761d2af9](https://github.com/appscode/stash-enterprise/commit/761d2af9) Improve Helm chart options (#561) +- [7c69854a](https://github.com/appscode/stash-enterprise/commit/7c69854a) Use apps/v1 apigroup (#555) +- [067fd837](https://github.com/appscode/stash-enterprise/commit/067fd837) Merge commit 'e0a3eef3ad5bb45a6967704531a303bc7ea7d865' +- [b93bdb20](https://github.com/appscode/stash-enterprise/commit/b93bdb20) Refactor concourse scripts (#554) +- [6ba7fc6c](https://github.com/appscode/stash-enterprise/commit/6ba7fc6c) Merge commit '2a5664a73d8d23ced4598e61327a3d7003db2e04' +- [5f769633](https://github.com/appscode/stash-enterprise/commit/5f769633) Add AlreadyObserved methods (#553) +- [98998f2c](https://github.com/appscode/stash-enterprise/commit/98998f2c) Add categories support to crds (#552) +- [cc46dc11](https://github.com/appscode/stash-enterprise/commit/cc46dc11) Improve doc (#550) +- [59a763c5](https://github.com/appscode/stash-enterprise/commit/59a763c5) Fix concourse test (#496) +- [7a7145da](https://github.com/appscode/stash-enterprise/commit/7a7145da) Check for snapshot existence before delete (#548) +- [a3a91ebc](https://github.com/appscode/stash-enterprise/commit/a3a91ebc) Improve logging (#551) +- [9bb3bbfd](https://github.com/appscode/stash-enterprise/commit/9bb3bbfd) Fix offline backup (#537) +- [cb676e37](https://github.com/appscode/stash-enterprise/commit/cb676e37) Enable status sub resource for crd yamls (#546) +- [4f1e66a4](https://github.com/appscode/stash-enterprise/commit/4f1e66a4) Remove old UpdateRecoveryStatus +- [6d6d5dcf](https://github.com/appscode/stash-enterprise/commit/6d6d5dcf) Retry UpdateStatus calls (#544) +- [3d191095](https://github.com/appscode/stash-enterprise/commit/3d191095) Retry UpdateStatus calls (#543) +- [38401b36](https://github.com/appscode/stash-enterprise/commit/38401b36) Revendor objectstore api (#542) +- [8dc3b6a2](https://github.com/appscode/stash-enterprise/commit/8dc3b6a2) Use kmodules.xyz/objectstore-api (#541) +- [1d3b1ea1](https://github.com/appscode/stash-enterprise/commit/1d3b1ea1) Merge commit 'da9eaba42e9b93d6975059b7f37c7863e54e1db1' +- [cee03417](https://github.com/appscode/stash-enterprise/commit/cee03417) Update install.md +- [e0a00726](https://github.com/appscode/stash-enterprise/commit/e0a00726) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [4ee36486](https://github.com/appscode/stash-enterprise/commit/4ee36486) Correctly handle ignored openapi prefixes (#533) +- [ee3945c4](https://github.com/appscode/stash-enterprise/commit/ee3945c4) Rename dev script (#532) +- [1bbc5632](https://github.com/appscode/stash-enterprise/commit/1bbc5632) Add rbac permissions for snapshots (#531) +- [0de9fa5f](https://github.com/appscode/stash-enterprise/commit/0de9fa5f) Use version and additional columns for crds (#530) +- [dde60d6b](https://github.com/appscode/stash-enterprise/commit/dde60d6b) Don't add admission/v1beta1 group as a prioritized version (#529) +- [6913f840](https://github.com/appscode/stash-enterprise/commit/6913f840) Update client-go to v8.0.0 (#528) +- [160b1162](https://github.com/appscode/stash-enterprise/commit/160b1162) Update chart installation instruction for Kubernetes 1.11 (#527) +- [8cce9279](https://github.com/appscode/stash-enterprise/commit/8cce9279) Format shell scripts (#526) +- [07a44f72](https://github.com/appscode/stash-enterprise/commit/07a44f72) Merge commit 'bcebfb5adef7b4de9d4da7e48d9ba50a66e75fd3' +- [e14f357b](https://github.com/appscode/stash-enterprise/commit/e14f357b) Merge commit '2c8b49681a6875886b6be4d90c35908f12b73c65' +- [0c019e96](https://github.com/appscode/stash-enterprise/commit/0c019e96) Enable status subresource for crds (#524) +- [54270853](https://github.com/appscode/stash-enterprise/commit/54270853) Remove status from crd.yaml (#523) +- [97e97d1f](https://github.com/appscode/stash-enterprise/commit/97e97d1f) Upgrade to restic 0.9.1 (#522) +- [f7910af6](https://github.com/appscode/stash-enterprise/commit/f7910af6) Support node selector for recovery job (#516) +- [5b4981a1](https://github.com/appscode/stash-enterprise/commit/5b4981a1) Upgrade to prom/pushgateway:v0.5.2 (#519) +- [05ead203](https://github.com/appscode/stash-enterprise/commit/05ead203) Remove ops-address port (#518) +- [ceb699f4](https://github.com/appscode/stash-enterprise/commit/ceb699f4) Set cpu limits to 100m (#517) +- [e426c6cb](https://github.com/appscode/stash-enterprise/commit/e426c6cb) Update stash.sh +- [97a7d622](https://github.com/appscode/stash-enterprise/commit/97a7d622) Add links to java client +- [9f6b9a17](https://github.com/appscode/stash-enterprise/commit/9f6b9a17) Move openapi-spec to api folder (#513) +- [1a2a1af1](https://github.com/appscode/stash-enterprise/commit/1a2a1af1) Deploy operator in kube-system namespace via Helm (#511) +- [3476b49f](https://github.com/appscode/stash-enterprise/commit/3476b49f) Add togglable tabs for Installation: Script & Helm (#509) +- [b386851d](https://github.com/appscode/stash-enterprise/commit/b386851d) Revendor dependencies (#508) +- [0c5d5a41](https://github.com/appscode/stash-enterprise/commit/0c5d5a41) added front matter (#507) +- [42b26588](https://github.com/appscode/stash-enterprise/commit/42b26588) Improve installer (#504) +- [705ecd09](https://github.com/appscode/stash-enterprise/commit/705ecd09) Prepare docs for 0.7.0 release. (#502) +- [72c9e20e](https://github.com/appscode/stash-enterprise/commit/72c9e20e) Prepare docs for 0.7.0-rc.5 (#498) +- [0da98a7b](https://github.com/appscode/stash-enterprise/commit/0da98a7b) Fix storage implementation for snapshots (#497) +- [247c0168](https://github.com/appscode/stash-enterprise/commit/247c0168) Update changelog (#495) +- [8181d490](https://github.com/appscode/stash-enterprise/commit/8181d490) Delete user roles on purge. (#494) +- [b2f4ab9e](https://github.com/appscode/stash-enterprise/commit/b2f4ab9e) Revert "Add app: stash label to user roles. (#493)" +- [c7ae0d44](https://github.com/appscode/stash-enterprise/commit/c7ae0d44) Add app: stash label to user roles. (#493) +- [5ee7ff1d](https://github.com/appscode/stash-enterprise/commit/5ee7ff1d) Use hooks for user roles and fix hook deletion policy +- [872450a3](https://github.com/appscode/stash-enterprise/commit/872450a3) Use post-install hooks to install admission controller in chart (#492) +- [5448cd43](https://github.com/appscode/stash-enterprise/commit/5448cd43) Revert "Remove stash crds before uninstalling operator (#458)" +- [a1d73a47](https://github.com/appscode/stash-enterprise/commit/a1d73a47) Update changelog (#491) +- [100dd7e4](https://github.com/appscode/stash-enterprise/commit/100dd7e4) Prepare docs for 0.7.0-rc.4 (#483) +- [7f2665dd](https://github.com/appscode/stash-enterprise/commit/7f2665dd) Avoid creating apiservice when webhooks are not used. (#490) +- [ff32a4aa](https://github.com/appscode/stash-enterprise/commit/ff32a4aa) Install correct version of stash chart (#489) +- [74e6f4aa](https://github.com/appscode/stash-enterprise/commit/74e6f4aa) Concourse (#486) +- [cd2cf249](https://github.com/appscode/stash-enterprise/commit/cd2cf249) Use wait-until instead of fixed delay (#488) +- [9f023116](https://github.com/appscode/stash-enterprise/commit/9f023116) Removed owner reference from repo-reader role-binding (#484) +- [d2d3d49f](https://github.com/appscode/stash-enterprise/commit/d2d3d49f) Revendor (#481) +- [5dc386d6](https://github.com/appscode/stash-enterprise/commit/5dc386d6) Support recovering from repository in different namespace (#474) +- [b694835b](https://github.com/appscode/stash-enterprise/commit/b694835b) Add support for initial backoff to the apiserver call on recover (#476) +- [b921d4ed](https://github.com/appscode/stash-enterprise/commit/b921d4ed) Fix enableRBAC flag for sidecar (#480) +- [c8c18fb5](https://github.com/appscode/stash-enterprise/commit/c8c18fb5) Typo (`Weclome` → `Welcome`) in page title (#479) +- [4bddc2e1](https://github.com/appscode/stash-enterprise/commit/4bddc2e1) Update docs (run minio in v1.9.4+ cluster and add example yaml files in respective backends) (#473) +- [fd676b12](https://github.com/appscode/stash-enterprise/commit/fd676b12) Limit the GCS file permissions to owner only (#472) +- [0dc74e93](https://github.com/appscode/stash-enterprise/commit/0dc74e93) Fix a typo (#471) +- [3ca33f76](https://github.com/appscode/stash-enterprise/commit/3ca33f76) Don't panic if admission options is nil (#469) +- [bc889236](https://github.com/appscode/stash-enterprise/commit/bc889236) Disable admission controllers for webhook server (#468) +- [4b5ac49d](https://github.com/appscode/stash-enterprise/commit/4b5ac49d) Added SSL support for deleting restic repository from Minio backend (#464) +- [c8d023a8](https://github.com/appscode/stash-enterprise/commit/c8d023a8) Use new UpdateRecoveryStatus method (#466) +- [6c0166e2](https://github.com/appscode/stash-enterprise/commit/6c0166e2) Add Update***Status helpers (#465) +- [5c5ff150](https://github.com/appscode/stash-enterprise/commit/5c5ff150) Update client-go to 7.0.0 (#463) +- [476a9a88](https://github.com/appscode/stash-enterprise/commit/476a9a88) Rename webhook files in chart (#460) +- [3e828ad4](https://github.com/appscode/stash-enterprise/commit/3e828ad4) Update workload api (#459) +- [d3d766d9](https://github.com/appscode/stash-enterprise/commit/d3d766d9) Remove stash crds before uninstalling operator (#458) +- [8fa3ef63](https://github.com/appscode/stash-enterprise/commit/8fa3ef63) Export kube-ca only if required (#457) +- [6a294acc](https://github.com/appscode/stash-enterprise/commit/6a294acc) Improve installer (#456) +- [5c0b35fa](https://github.com/appscode/stash-enterprise/commit/5c0b35fa) Update changelog (#455) +- [bd9b4b50](https://github.com/appscode/stash-enterprise/commit/bd9b4b50) Various installer fixes (#454) +- [6f2d013f](https://github.com/appscode/stash-enterprise/commit/6f2d013f) Update workload client (#453) +- [5d4faa22](https://github.com/appscode/stash-enterprise/commit/5d4faa22) Update workload client (#452) +- [cbea156f](https://github.com/appscode/stash-enterprise/commit/cbea156f) Revendor workload client (#451) +- [81a18190](https://github.com/appscode/stash-enterprise/commit/81a18190) Update workload api (#450) +- [468e6489](https://github.com/appscode/stash-enterprise/commit/468e6489) Fixes RBAC issue in test (#449) +- [4ba3af7b](https://github.com/appscode/stash-enterprise/commit/4ba3af7b) fixed wipeOut + fixed doc (#447) +- [3940c79c](https://github.com/appscode/stash-enterprise/commit/3940c79c) Some cleanup (#446) +- [45f070ff](https://github.com/appscode/stash-enterprise/commit/45f070ff) Delete profile.out +- [3af16023](https://github.com/appscode/stash-enterprise/commit/3af16023) Add docs for GKE and Rook (#430) +- [db31cbeb](https://github.com/appscode/stash-enterprise/commit/db31cbeb) concourse configs (#429) +- [5f288cbc](https://github.com/appscode/stash-enterprise/commit/5f288cbc) Delete restic repository from backend if Repository CRD is deleted (#438) +- [9940d367](https://github.com/appscode/stash-enterprise/commit/9940d367) Recover specific snapshot (#437) +- [26571992](https://github.com/appscode/stash-enterprise/commit/26571992) Use Repository data in Recovery CRD (#436) +- [e1d44499](https://github.com/appscode/stash-enterprise/commit/e1d44499) Update StatefulSet doc (#445) +- [c6e62f34](https://github.com/appscode/stash-enterprise/commit/c6e62f34) pkg/util: fix error found by vet (#442) +- [d5b93f8a](https://github.com/appscode/stash-enterprise/commit/d5b93f8a) Move Stash swagger.json to top level folder (#441) +- [c7753f9b](https://github.com/appscode/stash-enterprise/commit/c7753f9b) Fix go_vet error (#440) +- [564e63ad](https://github.com/appscode/stash-enterprise/commit/564e63ad) Increase qps and burst limits (#435) +- [442bfb40](https://github.com/appscode/stash-enterprise/commit/442bfb40) Permit stash operator to perform pods/exec (#433) +- [4243e931](https://github.com/appscode/stash-enterprise/commit/4243e931) Add RBAC instructions for GKE cluster (#432) +- [6df2f677](https://github.com/appscode/stash-enterprise/commit/6df2f677) Update charts location (#431) +- [a980a2c2](https://github.com/appscode/stash-enterprise/commit/a980a2c2) Skip lock while listing snapshots (#428) +- [a74e2637](https://github.com/appscode/stash-enterprise/commit/a74e2637) Purge repository objects in installer (#427) +- [435359e0](https://github.com/appscode/stash-enterprise/commit/435359e0) Add SCRIPT_LOCATION variable to installer (#426) +- [4d6f7eac](https://github.com/appscode/stash-enterprise/commit/4d6f7eac) Show repository snapshot list (#417) +- [733ec93d](https://github.com/appscode/stash-enterprise/commit/733ec93d) Fixed Repository YAML (#425) +- [6f50f168](https://github.com/appscode/stash-enterprise/commit/6f50f168) Add delete method for snapshots to swagger.json (#424) +- [d43b4890](https://github.com/appscode/stash-enterprise/commit/d43b4890) Generate swagger.json (#423) +- [9ad3d098](https://github.com/appscode/stash-enterprise/commit/9ad3d098) Add install pkg for stash crds (#422) +- [6ff11a1c](https://github.com/appscode/stash-enterprise/commit/6ff11a1c) Fix openapi spec for stash crds (#421) +- [a76f6ac5](https://github.com/appscode/stash-enterprise/commit/a76f6ac5) Expose swagger.json (#420) +- [3f62a44d](https://github.com/appscode/stash-enterprise/commit/3f62a44d) Add missing batch jobs get RBAC permission (#419) +- [3775b7f9](https://github.com/appscode/stash-enterprise/commit/3775b7f9) Update README.md +- [8ed47d37](https://github.com/appscode/stash-enterprise/commit/8ed47d37) Add registry skeleton for snapshots (#415) +- [9d95f38f](https://github.com/appscode/stash-enterprise/commit/9d95f38f) Update chart readme (#413) +- [429afdaa](https://github.com/appscode/stash-enterprise/commit/429afdaa) Add enableAnalytics to chart readme +- [b0a197df](https://github.com/appscode/stash-enterprise/commit/b0a197df) Add frontmatter for repository crd (#412) +- [0dac6862](https://github.com/appscode/stash-enterprise/commit/0dac6862) Use separate registry key for docker images (#410) +- [b09d7bf9](https://github.com/appscode/stash-enterprise/commit/b09d7bf9) Prepare docs for 0.7.0-rc.3 (#411) +- [fce51b73](https://github.com/appscode/stash-enterprise/commit/fce51b73) Add test for recovery (#409) +- [a7dae2e7](https://github.com/appscode/stash-enterprise/commit/a7dae2e7) Skip setting ListKind (#407) +- [9ecb57c1](https://github.com/appscode/stash-enterprise/commit/9ecb57c1) Add CRD Validation (#406) +- [7568e62e](https://github.com/appscode/stash-enterprise/commit/7568e62e) Create repository crd for each Restic repository (#394) +- [f2e78da4](https://github.com/appscode/stash-enterprise/commit/f2e78da4) Generate openapi spec for stash api (#405) +- [3ef2eed4](https://github.com/appscode/stash-enterprise/commit/3ef2eed4) Fix install script for minikube 0.24.x (Kube 1.8.0) (#404) +- [301fb68c](https://github.com/appscode/stash-enterprise/commit/301fb68c) Skip downloading onessl if already installed (#401) +- [9f389a13](https://github.com/appscode/stash-enterprise/commit/9f389a13) Use Restic spec hash instead of resource version to restart pods (#399) +- [ee28df02](https://github.com/appscode/stash-enterprise/commit/ee28df02) Revendor webhook util and jsonpatch fixes (#400) +- [716a3548](https://github.com/appscode/stash-enterprise/commit/716a3548) Check for valid owner object (#397) +- [3b340c16](https://github.com/appscode/stash-enterprise/commit/3b340c16) Revendor webhook library (#393) +- [cd3c0005](https://github.com/appscode/stash-enterprise/commit/cd3c0005) Update changelog +- [c556745f](https://github.com/appscode/stash-enterprise/commit/c556745f) Prepare docs for 0.7.0-rc.2 (#391) +- [e5aee757](https://github.com/appscode/stash-enterprise/commit/e5aee757) Update chart version +- [270a4983](https://github.com/appscode/stash-enterprise/commit/270a4983) Add variable for dockerRegistry (#390) +- [c694593b](https://github.com/appscode/stash-enterprise/commit/c694593b) Reorg objects deleted in uninstall command (#389) +- [d29aa374](https://github.com/appscode/stash-enterprise/commit/d29aa374) Fix --enable-analytics flag (#387) +- [798253c1](https://github.com/appscode/stash-enterprise/commit/798253c1) Fix flag parsing in tests (#386) +- [7834ce77](https://github.com/appscode/stash-enterprise/commit/7834ce77) Fix Statefulset Example (#385) +- [d53219d0](https://github.com/appscode/stash-enterprise/commit/d53219d0) Rename --analytics to --enable-analytics (#384) +- [0c9daeb1](https://github.com/appscode/stash-enterprise/commit/0c9daeb1) Use separated appscode/kubernetes-webhook-util package (#383) +- [05686c2a](https://github.com/appscode/stash-enterprise/commit/05686c2a) Update the image tag in operator.yaml (#382) +- [7e52922b](https://github.com/appscode/stash-enterprise/commit/7e52922b) Don't enable mutator for StatefulSet updates (#381) +- [6f5cc417](https://github.com/appscode/stash-enterprise/commit/6f5cc417) Update docs to 0.7.0-rc.1 (#380) +- [208f89b7](https://github.com/appscode/stash-enterprise/commit/208f89b7) Stop using field selectors for CRDs (#379) +- [da0362b5](https://github.com/appscode/stash-enterprise/commit/da0362b5) Add types for Repository apigroup (#377) +- [f1b12fea](https://github.com/appscode/stash-enterprise/commit/f1b12fea) Replace initializers with mutation webhook for workloads (#363) +- [55309b0f](https://github.com/appscode/stash-enterprise/commit/55309b0f) Merge pull request #375 from galexrt/fix373 +- [6acc5711](https://github.com/appscode/stash-enterprise/commit/6acc5711) Add missing front matter (#376) +- [17254282](https://github.com/appscode/stash-enterprise/commit/17254282) Added error log on restic command error +- [1685f179](https://github.com/appscode/stash-enterprise/commit/1685f179) Don't fail if check Job already exists +- [224a1713](https://github.com/appscode/stash-enterprise/commit/224a1713) Update README.md +- [3992df7d](https://github.com/appscode/stash-enterprise/commit/3992df7d) Fix buid +- [98eae3a0](https://github.com/appscode/stash-enterprise/commit/98eae3a0) Add travis.yaml (#370) +- [fc14b6d2](https://github.com/appscode/stash-enterprise/commit/fc14b6d2) Add --purge flag (#369) +- [c3c18ebe](https://github.com/appscode/stash-enterprise/commit/c3c18ebe) Make it clear that installer is a single command (#365) +- [182cc702](https://github.com/appscode/stash-enterprise/commit/182cc702) Update installer (#364) +- [cb573593](https://github.com/appscode/stash-enterprise/commit/cb573593) Update chart to match RBAC best practices for charts (#362) +- [248bba94](https://github.com/appscode/stash-enterprise/commit/248bba94) Add checks to installer script (#361) +- [41df1df4](https://github.com/appscode/stash-enterprise/commit/41df1df4) Use admission hook helpers from kutil (#360) +- [b90a4564](https://github.com/appscode/stash-enterprise/commit/b90a4564) Fix admission webhook flag (#359) +- [201c871d](https://github.com/appscode/stash-enterprise/commit/201c871d) Support --enable-admission-webhook=false (#358) +- [d70fc0b2](https://github.com/appscode/stash-enterprise/commit/d70fc0b2) Support multiple webhooks of same apiversion (#357) +- [da965aee](https://github.com/appscode/stash-enterprise/commit/da965aee) Sync chart to stable charts repo (#356) +- [34f364f3](https://github.com/appscode/stash-enterprise/commit/34f364f3) Use restic 0.8.3 (#355) +- [0b0e2cd2](https://github.com/appscode/stash-enterprise/commit/0b0e2cd2) Update README.md (#352) +- [0d781b4b](https://github.com/appscode/stash-enterprise/commit/0d781b4b) Set RollingUpdate for DaemonSet (#349) +- [25b60645](https://github.com/appscode/stash-enterprise/commit/25b60645) Document user roles (#348) +- [a1796d2e](https://github.com/appscode/stash-enterprise/commit/a1796d2e) Add upgrade instructions. +- [2616f6f7](https://github.com/appscode/stash-enterprise/commit/2616f6f7) Add changelog for 0.7.0-rc.0 (#347) +- [6f3e7883](https://github.com/appscode/stash-enterprise/commit/6f3e7883) Implement offline backup for multiple replica (#335) +- [3140f3ab](https://github.com/appscode/stash-enterprise/commit/3140f3ab) Update readme to point to 0.6.4 (#345) +- [5a2e635a](https://github.com/appscode/stash-enterprise/commit/5a2e635a) Don't block deletion of owner by default (#342) +- [e6cb9a31](https://github.com/appscode/stash-enterprise/commit/e6cb9a31) Skip generating UpdateStatus method (#341) +- [9d93b3ed](https://github.com/appscode/stash-enterprise/commit/9d93b3ed) Remove internal types (#340) +- [59ccb497](https://github.com/appscode/stash-enterprise/commit/59ccb497) Use rbac/v1 apis (#339) +- [1a532f9b](https://github.com/appscode/stash-enterprise/commit/1a532f9b) Add user roles (#338) +- [76f18553](https://github.com/appscode/stash-enterprise/commit/76f18553) Use restic 0.8.2 (#337) +- [fb47ea99](https://github.com/appscode/stash-enterprise/commit/fb47ea99) Use official code generator scripts (#336) +- [4367fe03](https://github.com/appscode/stash-enterprise/commit/4367fe03) Update rbac-list.yaml +- [8bcff71f](https://github.com/appscode/stash-enterprise/commit/8bcff71f) Rename appendGroupVersion to appendUniqueGroupVersion +- [050c9991](https://github.com/appscode/stash-enterprise/commit/050c9991) Update charts to support api registration (#334) +- [dd82aec9](https://github.com/appscode/stash-enterprise/commit/dd82aec9) Fix e2e tests after webhook merger (#333) +- [1df3e40a](https://github.com/appscode/stash-enterprise/commit/1df3e40a) Ensure stash can be run locally (#332) +- [9d8ff669](https://github.com/appscode/stash-enterprise/commit/9d8ff669) Label all stash installer resources +- [da602cf3](https://github.com/appscode/stash-enterprise/commit/da602cf3) Update Grafana dashboard (#330) +- [2127401f](https://github.com/appscode/stash-enterprise/commit/2127401f) Delete all stash installer resources +- [29a51e21](https://github.com/appscode/stash-enterprise/commit/29a51e21) Use binary operator for checking stauts of semver command +- [5d726907](https://github.com/appscode/stash-enterprise/commit/5d726907) Leave secure port unset +- [5cba3d0f](https://github.com/appscode/stash-enterprise/commit/5cba3d0f) Use ${} form for onessl envsubst +- [0b4aa075](https://github.com/appscode/stash-enterprise/commit/0b4aa075) Vendor client-go auth pkg (#331) +- [4b702a47](https://github.com/appscode/stash-enterprise/commit/4b702a47) Don't append duplicate group versions +- [ccffa360](https://github.com/appscode/stash-enterprise/commit/ccffa360) Merge admission webhook and operator into one binary (#329) +- [c3e76f96](https://github.com/appscode/stash-enterprise/commit/c3e76f96) Use envsubst from onessl +- [639e3fec](https://github.com/appscode/stash-enterprise/commit/639e3fec) Install admission webhook for Kubernetes >=1.9.0 +- [85562989](https://github.com/appscode/stash-enterprise/commit/85562989) Merge uninstall script into the stash.sh script (#328) +- [cb11fca0](https://github.com/appscode/stash-enterprise/commit/cb11fca0) Implement informer factory for backup scheduler (#325) +- [29c489e5](https://github.com/appscode/stash-enterprise/commit/29c489e5) Fixed abnormal pod recreation when Restic is deleted (#322) +- [4238fabc](https://github.com/appscode/stash-enterprise/commit/4238fabc) Implement Pause Restic (#315) +- [f96cff24](https://github.com/appscode/stash-enterprise/commit/f96cff24) Cleanup apiserver +- [c13df9c6](https://github.com/appscode/stash-enterprise/commit/c13df9c6) Copy generic-admission-server into pkg (#318) +- [2b0cf064](https://github.com/appscode/stash-enterprise/commit/2b0cf064) Use shared infromer factory (#317) +- [b5d67a67](https://github.com/appscode/stash-enterprise/commit/b5d67a67) Support self-signed ca cert for backends (#294) +- [50639b72](https://github.com/appscode/stash-enterprise/commit/50639b72) Use GetBaseVersion method from kutil (#316) +- [603c42a1](https://github.com/appscode/stash-enterprise/commit/603c42a1) Update install.md +- [b1b72d4b](https://github.com/appscode/stash-enterprise/commit/b1b72d4b) Remove system prefix from admission server rbac +- [1666bc34](https://github.com/appscode/stash-enterprise/commit/1666bc34) Fix webhook command description (#314) +- [b44f26b2](https://github.com/appscode/stash-enterprise/commit/b44f26b2) Use rbac/v1beta1 api. (#313) +- [c77b2ccd](https://github.com/appscode/stash-enterprise/commit/c77b2ccd) Reduce log level for admission webhook +- [147c0788](https://github.com/appscode/stash-enterprise/commit/147c0788) Support Create & Update operations in admission webhook (#312) +- [45ee2879](https://github.com/appscode/stash-enterprise/commit/45ee2879) Merge webhook plugins into one. (#311) +- [4403d50c](https://github.com/appscode/stash-enterprise/commit/4403d50c) Fix installer script +- [2c9166fc](https://github.com/appscode/stash-enterprise/commit/2c9166fc) Support private docker registry in installer (#310) +- [cfe79458](https://github.com/appscode/stash-enterprise/commit/cfe79458) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [5a93ff74](https://github.com/appscode/stash-enterprise/commit/5a93ff74) Compress go binaries (#309) +- [24307b0f](https://github.com/appscode/stash-enterprise/commit/24307b0f) Merge commit 'dd01a18d6821b218669437b491e71eff9cf82c89' +- [75be0ffe](https://github.com/appscode/stash-enterprise/commit/75be0ffe) Merge commit '6cd6efaa2491aea24a0f7f588c86b0ff5ff03283' +- [6dc58fe7](https://github.com/appscode/stash-enterprise/commit/6dc58fe7) Rename --initializer flag to --enable-initializer (#308) +- [976e674a](https://github.com/appscode/stash-enterprise/commit/976e674a) Remove STASH_ROLE_TYPE from installer scripts (#307) +- [310f7395](https://github.com/appscode/stash-enterprise/commit/310f7395) Use rbac/v1 api (#306) +- [d6be7daf](https://github.com/appscode/stash-enterprise/commit/d6be7daf) Use kubectl auth reconcile (#305) +- [8a420951](https://github.com/appscode/stash-enterprise/commit/8a420951) Fixed backup count (#295) +- [38282b43](https://github.com/appscode/stash-enterprise/commit/38282b43) Write restic stderror in error events (#296) +- [c71ac206](https://github.com/appscode/stash-enterprise/commit/c71ac206) Added support for private docker registry (#300) +- [1a190437](https://github.com/appscode/stash-enterprise/commit/1a190437) Add --initializer flag to installer (#304) +- [da0ad798](https://github.com/appscode/stash-enterprise/commit/da0ad798) Prepare docs for 0.7.0-alpha.0 (#302) +- [3faece70](https://github.com/appscode/stash-enterprise/commit/3faece70) Change installer script (#301) +- [654bc988](https://github.com/appscode/stash-enterprise/commit/654bc988) Merge commit '5e307d69dbf7e02331cc5bc60154e79a52285060' +- [0e9ebfc6](https://github.com/appscode/stash-enterprise/commit/0e9ebfc6) Remove TPR to CRD migrator (#298) +- [b6086636](https://github.com/appscode/stash-enterprise/commit/b6086636) Update dependencies to Kubernetes 1.9 (#297) +- [4b00589b](https://github.com/appscode/stash-enterprise/commit/4b00589b) Cleanup headless service (#292) +- [58da0f35](https://github.com/appscode/stash-enterprise/commit/58da0f35) Prepare docs for 0.6.3 +- [fb1629fb](https://github.com/appscode/stash-enterprise/commit/fb1629fb) Fixed parsing argument error (#291) +- [edd09058](https://github.com/appscode/stash-enterprise/commit/edd09058) Update reference docs +- [27948f53](https://github.com/appscode/stash-enterprise/commit/27948f53) Update appscode/go log wrapper (#287) +- [b9526600](https://github.com/appscode/stash-enterprise/commit/b9526600) Fix inline volumeSource marshalling for LocalSpec (#289) +- [1fe92cef](https://github.com/appscode/stash-enterprise/commit/1fe92cef) Fix roadmap link +- [f8c6641e](https://github.com/appscode/stash-enterprise/commit/f8c6641e) Added Grafana Stash overview dashboard (#286) +- [12916afc](https://github.com/appscode/stash-enterprise/commit/12916afc) Pass --pushgateway-url for injected containers. (#284) +- [321d7414](https://github.com/appscode/stash-enterprise/commit/321d7414) Prepare docs for 0.6.2 release (#278) +- [001d1592](https://github.com/appscode/stash-enterprise/commit/001d1592) Merge pull request #277 from whereisaaron/master +- [ae8e801a](https://github.com/appscode/stash-enterprise/commit/ae8e801a) Update Helm chart to use newer 'fullname' template that avoid duplicate (e.g. 'stash-stash-...') resource names +- [fac516a2](https://github.com/appscode/stash-enterprise/commit/fac516a2) Fix RBAC roles in chart (#276) +- [6f10418a](https://github.com/appscode/stash-enterprise/commit/6f10418a) Garbage collect service-accounts and role-bindings for jobs (#275) +- [a021b63f](https://github.com/appscode/stash-enterprise/commit/a021b63f) Update initializer.md +- [bc24ae45](https://github.com/appscode/stash-enterprise/commit/bc24ae45) Update initializer.md +- [b1573eba](https://github.com/appscode/stash-enterprise/commit/b1573eba) Fix new restic format in upgrade docs (#274) +- [c1f54279](https://github.com/appscode/stash-enterprise/commit/c1f54279) Add statefulsets to stash-sidecar ClusterRole creation (#273) +- [1bc0a02a](https://github.com/appscode/stash-enterprise/commit/1bc0a02a) Reduce operator permissions for service accounts (#270) +- [d2502bbe](https://github.com/appscode/stash-enterprise/commit/d2502bbe) Fix formatting of uninstall.md (#269) +- [1341a5fd](https://github.com/appscode/stash-enterprise/commit/1341a5fd) Prepare docs for 0.6.1 (#268) +- [ac4e8c93](https://github.com/appscode/stash-enterprise/commit/ac4e8c93) Fix kubectl version parsing generation in GKE (#267) +- [588a2947](https://github.com/appscode/stash-enterprise/commit/588a2947) Fix upgrade instructions. +- [ea46d9a9](https://github.com/appscode/stash-enterprise/commit/ea46d9a9) Detect analytics client id using env vars (#265) +- [078f5cfb](https://github.com/appscode/stash-enterprise/commit/078f5cfb) Cleanup release script +- [937b682c](https://github.com/appscode/stash-enterprise/commit/937b682c) Prepare docs for 0.6.0 release (#264) +- [ee6e1068](https://github.com/appscode/stash-enterprise/commit/ee6e1068) Reorganize docs (#263) +- [721dace8](https://github.com/appscode/stash-enterprise/commit/721dace8) Add support for B2 (#262) +- [39405c0c](https://github.com/appscode/stash-enterprise/commit/39405c0c) Update restic website link (#261) +- [9058a9bc](https://github.com/appscode/stash-enterprise/commit/9058a9bc) Revendor kutil +- [f472517e](https://github.com/appscode/stash-enterprise/commit/f472517e) Fix doc +- [915c53ff](https://github.com/appscode/stash-enterprise/commit/915c53ff) Update docs for unified LocalSpec (#260) +- [e2bd7c1b](https://github.com/appscode/stash-enterprise/commit/e2bd7c1b) Unify LocalSpec and RecoveredVolume (#259) +- [cde4f137](https://github.com/appscode/stash-enterprise/commit/cde4f137) Remove restic-dependency from recovery (#258) +- [6e599853](https://github.com/appscode/stash-enterprise/commit/6e599853) Update restic version to 0.8.1 (#257) +- [d66a53df](https://github.com/appscode/stash-enterprise/commit/d66a53df) Use cmp methods from kutil (#255) +- [da8f2331](https://github.com/appscode/stash-enterprise/commit/da8f2331) Remove TryPatch methods (#254) +- [41e1ff43](https://github.com/appscode/stash-enterprise/commit/41e1ff43) Use log.LEVEL() instead of fmt.Printf() (#252) +- [aa91dadd](https://github.com/appscode/stash-enterprise/commit/aa91dadd) Log operator version on start (#253) +- [8b36f5d1](https://github.com/appscode/stash-enterprise/commit/8b36f5d1) Use verb type for mutation (#251) +- [4a3afb07](https://github.com/appscode/stash-enterprise/commit/4a3afb07) Use CreateOrPatchCronJob from kutil (#250) +- [fad6e8bb](https://github.com/appscode/stash-enterprise/commit/fad6e8bb) Indicate mutation in PATCH helper method return (#249) +- [7bd56db6](https://github.com/appscode/stash-enterprise/commit/7bd56db6) Update RBAC for analytics +- [afa4f8fa](https://github.com/appscode/stash-enterprise/commit/afa4f8fa) Simplify clientID generation for analytics (#247) +- [fb31ed72](https://github.com/appscode/stash-enterprise/commit/fb31ed72) Set analytics clientID (#246) +- [29812d44](https://github.com/appscode/stash-enterprise/commit/29812d44) Update README.md +- [8dd9bb20](https://github.com/appscode/stash-enterprise/commit/8dd9bb20) Cleanup docs +- [cebe13bf](https://github.com/appscode/stash-enterprise/commit/cebe13bf) Reorganize docs (#245) +- [4987b08a](https://github.com/appscode/stash-enterprise/commit/4987b08a) Upgrade procedure for 0.5.1 to 0.6.0 (#243) +- [7997564b](https://github.com/appscode/stash-enterprise/commit/7997564b) Update docs (#236) +- [8d614880](https://github.com/appscode/stash-enterprise/commit/8d614880) Enable Restic cahce-dir flag (#241) +- [780754d9](https://github.com/appscode/stash-enterprise/commit/780754d9) Fix retentionPolicyName not found error (#242) +- [4d291178](https://github.com/appscode/stash-enterprise/commit/4d291178) Lower case workload.kind in prefix (#240) +- [eaaae57f](https://github.com/appscode/stash-enterprise/commit/eaaae57f) Use RegisterCRDs helper (#239) +- [2becb354](https://github.com/appscode/stash-enterprise/commit/2becb354) Change left_menu -> menu_name (#235) +- [a1e2f14d](https://github.com/appscode/stash-enterprise/commit/a1e2f14d) Revendor dependencies (#234) +- [7241c6dd](https://github.com/appscode/stash-enterprise/commit/7241c6dd) Implement offline backup (#229) +- [03318f1a](https://github.com/appscode/stash-enterprise/commit/03318f1a) Add aliases for README file (#233) +- [a560bcb0](https://github.com/appscode/stash-enterprise/commit/a560bcb0) Add Docs Front Matter for 0.5.1 (#231) +- [a8ff09c0](https://github.com/appscode/stash-enterprise/commit/a8ff09c0) Update bundles restic to 0.8.0 (#232) +- [84238d2c](https://github.com/appscode/stash-enterprise/commit/84238d2c) Revendor kutil (#230) +- [0cfe9187](https://github.com/appscode/stash-enterprise/commit/0cfe9187) Fix configmap-lock-name (#228) +- [cd3c9e36](https://github.com/appscode/stash-enterprise/commit/cd3c9e36) Minor fixes +- [86157814](https://github.com/appscode/stash-enterprise/commit/86157814) Run `restic check` once every 3 days (#223) +- [1161ff0b](https://github.com/appscode/stash-enterprise/commit/1161ff0b) Record recovery status for individual FileGroup (#222) +- [9aeba2e6](https://github.com/appscode/stash-enterprise/commit/9aeba2e6) PollInfinitely for recovery job to succeed +- [aa3459e6](https://github.com/appscode/stash-enterprise/commit/aa3459e6) Dynamically create stash-sidecar ClusterRole in operator (#221) +- [6ae7222c](https://github.com/appscode/stash-enterprise/commit/6ae7222c) Implement workload initializer in stash operator (#207) +- [ef10c66e](https://github.com/appscode/stash-enterprise/commit/ef10c66e) Leader election for deployment, replica set and rc (#206) +- [106d049d](https://github.com/appscode/stash-enterprise/commit/106d049d) Generate docs +- [f476f444](https://github.com/appscode/stash-enterprise/commit/f476f444) Implement Recovery for Restic Backup (#202) +- [d56e913c](https://github.com/appscode/stash-enterprise/commit/d56e913c) Update install.md +- [7bbe582d](https://github.com/appscode/stash-enterprise/commit/7bbe582d) Update install.md +- [aa8aaa48](https://github.com/appscode/stash-enterprise/commit/aa8aaa48) Update install.md +- [b97ebbaf](https://github.com/appscode/stash-enterprise/commit/b97ebbaf) Update chart +- [0751780f](https://github.com/appscode/stash-enterprise/commit/0751780f) Update install.md +- [edcab803](https://github.com/appscode/stash-enterprise/commit/edcab803) Update _helpers.tpl +- [565ae057](https://github.com/appscode/stash-enterprise/commit/565ae057) Support imagePullSecrets in chart +- [8ae6dc7e](https://github.com/appscode/stash-enterprise/commit/8ae6dc7e) Update _helpers.tpl +- [2085d5b5](https://github.com/appscode/stash-enterprise/commit/2085d5b5) Make stash chart namespaced (#210) +- [88e512f5](https://github.com/appscode/stash-enterprise/commit/88e512f5) Update docs to point to 0.4.2 release +- [88885373](https://github.com/appscode/stash-enterprise/commit/88885373) Update codegen.sh +- [39108498](https://github.com/appscode/stash-enterprise/commit/39108498) Use typed versioned client for CRD +- [484df692](https://github.com/appscode/stash-enterprise/commit/484df692) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [b854e1cb](https://github.com/appscode/stash-enterprise/commit/b854e1cb) Use client-go 5.x +- [e2488aa5](https://github.com/appscode/stash-enterprise/commit/e2488aa5) Update rbac.md +- [8b51195d](https://github.com/appscode/stash-enterprise/commit/8b51195d) Add recovery CRD (#201) +- [779c373f](https://github.com/appscode/stash-enterprise/commit/779c373f) Merge commit 'bf3f3307acbd69e5147db8abdb75b1529147f0c5' +- [ad5d6c98](https://github.com/appscode/stash-enterprise/commit/ad5d6c98) Clarify support for DO +- [f87995af](https://github.com/appscode/stash-enterprise/commit/f87995af) Prepare docs for 0.5.1 +- [cb99e324](https://github.com/appscode/stash-enterprise/commit/cb99e324) Update RBAC permissions +- [4656ba57](https://github.com/appscode/stash-enterprise/commit/4656ba57) Correctly detect "default" service account (#200) +- [3e4af9b2](https://github.com/appscode/stash-enterprise/commit/3e4af9b2) Add label to installer objects in rbac mode +- [1057d95e](https://github.com/appscode/stash-enterprise/commit/1057d95e) Clarify that --tag foo,tag bar style tags are not supported. (#199) +- [9b6bb88e](https://github.com/appscode/stash-enterprise/commit/9b6bb88e) Set hostname based on resource type (#198) +- [d2cd1c2d](https://github.com/appscode/stash-enterprise/commit/d2cd1c2d) Manage RoleBinding for rbac enabled cluster (#197) +- [3b2a281d](https://github.com/appscode/stash-enterprise/commit/3b2a281d) Update install.md +- [2a550c40](https://github.com/appscode/stash-enterprise/commit/2a550c40) Update install.md +- [c3ca4669](https://github.com/appscode/stash-enterprise/commit/c3ca4669) Document how to detect operator version (#196) +- [85b0f16a](https://github.com/appscode/stash-enterprise/commit/85b0f16a) Prepare docs for 0.5.0 release +- [3003c01a](https://github.com/appscode/stash-enterprise/commit/3003c01a) Rename Scheduler to Controller +- [e69ec81d](https://github.com/appscode/stash-enterprise/commit/e69ec81d) Stop dumping env vars +- [657fa06a](https://github.com/appscode/stash-enterprise/commit/657fa06a) Prepare docs for 0.5.0-beta.3 release +- [a6a98e51](https://github.com/appscode/stash-enterprise/commit/a6a98e51) Use workqueue for scheduler (#194) +- [cccc23cf](https://github.com/appscode/stash-enterprise/commit/cccc23cf) Register events api group +- [fadd0ab8](https://github.com/appscode/stash-enterprise/commit/fadd0ab8) Revise RBAC permissions +- [d3dc55f7](https://github.com/appscode/stash-enterprise/commit/d3dc55f7) Prepare docs for 0.5.0-beta.2 +- [770ff1cd](https://github.com/appscode/stash-enterprise/commit/770ff1cd) Update tutorial.md (#186) +- [2c0b4836](https://github.com/appscode/stash-enterprise/commit/2c0b4836) Add tests for DO (#193) +- [2aeef6da](https://github.com/appscode/stash-enterprise/commit/2aeef6da) Use object reference to write events +- [0ccaa324](https://github.com/appscode/stash-enterprise/commit/0ccaa324) Disable StatefulSet support +- [0a55c0b8](https://github.com/appscode/stash-enterprise/commit/0a55c0b8) Prepare docs for 0.5.0-beta.1 +- [c268e249](https://github.com/appscode/stash-enterprise/commit/c268e249) Fix prometheus metrics collection (#192) +- [17da332e](https://github.com/appscode/stash-enterprise/commit/17da332e) Disable StatefulSet controller. +- [7191de11](https://github.com/appscode/stash-enterprise/commit/7191de11) Fix StatefulSet tests (#190) +- [c91b9292](https://github.com/appscode/stash-enterprise/commit/c91b9292) Replace reflect.Equal with github.com/google/go-cmp (#188) +- [027c6d98](https://github.com/appscode/stash-enterprise/commit/027c6d98) Only handle Restic when spec changes. +- [c80f1a9f](https://github.com/appscode/stash-enterprise/commit/c80f1a9f) Reorder cache controller +- [9dd89304](https://github.com/appscode/stash-enterprise/commit/9dd89304) Skip ReplicaSet owned by Deployments (#187) +- [06df8f94](https://github.com/appscode/stash-enterprise/commit/06df8f94) Merge commit '32217c844015816b86c46a8d74a175c42f0e307a' +- [6ad7ada4](https://github.com/appscode/stash-enterprise/commit/6ad7ada4) Prepare docs for 5.0.0-beta.0 (#185) +- [f7939ceb](https://github.com/appscode/stash-enterprise/commit/f7939ceb) Don't store status in annotations +- [94419091](https://github.com/appscode/stash-enterprise/commit/94419091) Rename LastAppliedConfiguration +- [2237978f](https://github.com/appscode/stash-enterprise/commit/2237978f) Fix patching +- [ec02f851](https://github.com/appscode/stash-enterprise/commit/ec02f851) Set namespaceIndex as indexer (#184) +- [3868041c](https://github.com/appscode/stash-enterprise/commit/3868041c) Fix e2e tests (#183) +- [94c7d2d4](https://github.com/appscode/stash-enterprise/commit/94c7d2d4) Rename injector methods +- [755e28bc](https://github.com/appscode/stash-enterprise/commit/755e28bc) Use workqueue (#182) +- [2d41478f](https://github.com/appscode/stash-enterprise/commit/2d41478f) Use Deployment from apps/v1beta1 (#181) +- [a5229147](https://github.com/appscode/stash-enterprise/commit/a5229147) Delete *.generated.go files for ugorji (#180) +- [05abff50](https://github.com/appscode/stash-enterprise/commit/05abff50) Use WaitForCRDReady from kutil (#179) +- [096e1410](https://github.com/appscode/stash-enterprise/commit/096e1410) Only watch apps/v1beta1 Deployment (#178) +- [ade40c61](https://github.com/appscode/stash-enterprise/commit/ade40c61) Move kutil to client package (#177) +- [226ffe83](https://github.com/appscode/stash-enterprise/commit/226ffe83) Generate ugorji stuff (#176) +- [030e7b32](https://github.com/appscode/stash-enterprise/commit/030e7b32) Remove kubernetes/code-generator from builddeps +- [5c2773d1](https://github.com/appscode/stash-enterprise/commit/5c2773d1) Prepare docs for 0.5.0 (#174) +- [04afd1cf](https://github.com/appscode/stash-enterprise/commit/04afd1cf) Install stash as a critical addon (#173) +- [d59093d1](https://github.com/appscode/stash-enterprise/commit/d59093d1) Update chart to add roles for CRD +- [7ec22dfc](https://github.com/appscode/stash-enterprise/commit/7ec22dfc) Use Namespace() method from kutil. +- [f4850c29](https://github.com/appscode/stash-enterprise/commit/f4850c29) Add release script. +- [9a91e124](https://github.com/appscode/stash-enterprise/commit/9a91e124) Prepare docs for 0.5.0-rc.0 +- [324a62fb](https://github.com/appscode/stash-enterprise/commit/324a62fb) Revendor kutil. +- [2c8add5f](https://github.com/appscode/stash-enterprise/commit/2c8add5f) Set RESTIC_VER to 0.7.3 (#172) +- [a04187d5](https://github.com/appscode/stash-enterprise/commit/a04187d5) Refresh charts to match recent convention (#171) +- [c9b5662a](https://github.com/appscode/stash-enterprise/commit/c9b5662a) Fix deployment name in tutorial (#169) +- [1356b31b](https://github.com/appscode/stash-enterprise/commit/1356b31b) Update kutil (#170) +- [4ea31986](https://github.com/appscode/stash-enterprise/commit/4ea31986) Set RESTIC_VER to 0.7.2 +- [f7d9c903](https://github.com/appscode/stash-enterprise/commit/f7d9c903) Use object ref for Restic +- [49e5a33b](https://github.com/appscode/stash-enterprise/commit/49e5a33b) Fix command in Developer-guide (#168) +- [9bacd5bb](https://github.com/appscode/stash-enterprise/commit/9bacd5bb) Set root scope kinds +- [6bb6c582](https://github.com/appscode/stash-enterprise/commit/6bb6c582) Use apis/v1alpha1 instead of internal version (#167) +- [1206be03](https://github.com/appscode/stash-enterprise/commit/1206be03) Remove resource:path (#166) +- [d1b790de](https://github.com/appscode/stash-enterprise/commit/d1b790de) Use kubernetes/code-generator (#163) +- [9cfb37cf](https://github.com/appscode/stash-enterprise/commit/9cfb37cf) Update kutil +- [cac94ede](https://github.com/appscode/stash-enterprise/commit/cac94ede) Expose resync-period as flag +- [e31dd8f7](https://github.com/appscode/stash-enterprise/commit/e31dd8f7) Remove pkg/analytics +- [5f79c4da](https://github.com/appscode/stash-enterprise/commit/5f79c4da) Move analytics collector to root command (#164) +- [e4a88e55](https://github.com/appscode/stash-enterprise/commit/e4a88e55) Revendor k8s.io/apiextensions-apiserver (#162) +- [2fe16a61](https://github.com/appscode/stash-enterprise/commit/2fe16a61) Migrate TPR to CRD (#160) +- [cc22b572](https://github.com/appscode/stash-enterprise/commit/cc22b572) Fix Restic (#159) +- [ae0d9406](https://github.com/appscode/stash-enterprise/commit/ae0d9406) Update kutil dependency (#158) +- [cc9ee0e5](https://github.com/appscode/stash-enterprise/commit/cc9ee0e5) Use CheckAPIVersion() (#157) +- [b7e97424](https://github.com/appscode/stash-enterprise/commit/b7e97424) Use PATCH api instead of UPDATE (#156) +- [5a50804a](https://github.com/appscode/stash-enterprise/commit/5a50804a) Check version using semver library (#152) +- [8364234d](https://github.com/appscode/stash-enterprise/commit/8364234d) Support adding Sidecar containers for StatefulSet. (#151) +- [d20e52ed](https://github.com/appscode/stash-enterprise/commit/d20e52ed) Update client-go to 4.0.0 (#150) +- [24c79bf5](https://github.com/appscode/stash-enterprise/commit/24c79bf5) Update build commands for restic. (#149) +- [f276cd38](https://github.com/appscode/stash-enterprise/commit/f276cd38) Update client-go to 3.0.0 from 3.0.0-beta (#148) +- [c4a3bfe3](https://github.com/appscode/stash-enterprise/commit/c4a3bfe3) Add DCO +- [f98d1877](https://github.com/appscode/stash-enterprise/commit/f98d1877) Fix typos of tutorial.md file (#138) +- [e7c5154b](https://github.com/appscode/stash-enterprise/commit/e7c5154b) Add uninstall.sh script (#144) +- [15deeba0](https://github.com/appscode/stash-enterprise/commit/15deeba0) Change receiver for Invocation to fi +- [7b8829fc](https://github.com/appscode/stash-enterprise/commit/7b8829fc) Use console type instead of sh +- [e6065cb2](https://github.com/appscode/stash-enterprise/commit/e6065cb2) Prepare docs for 0.4.1 release +- [1d1dbbfb](https://github.com/appscode/stash-enterprise/commit/1d1dbbfb) Build binary inside Docker image +- [ceafa959](https://github.com/appscode/stash-enterprise/commit/ceafa959) Merge commit 'b8c45d0d4379587a31302b834334047cc77e59db' +- [b629d0cd](https://github.com/appscode/stash-enterprise/commit/b629d0cd) Revendor forked robfig/cron (#139) +- [5e34ea69](https://github.com/appscode/stash-enterprise/commit/5e34ea69) Update stash-without-rbac.yaml +- [9ae078bb](https://github.com/appscode/stash-enterprise/commit/9ae078bb) Add omitempty for Local storage +- [7ac0a7a2](https://github.com/appscode/stash-enterprise/commit/7ac0a7a2) Move resource consts to api pkg +- [42ccbccd](https://github.com/appscode/stash-enterprise/commit/42ccbccd) Fix Fake restic resource Url (#137) +- [c25545b6](https://github.com/appscode/stash-enterprise/commit/c25545b6) Clarify bucket location +- [cec2d878](https://github.com/appscode/stash-enterprise/commit/cec2d878) Update gcs-restic.yaml +- [8bf7efc1](https://github.com/appscode/stash-enterprise/commit/8bf7efc1) Update backends.md +- [cc75a55a](https://github.com/appscode/stash-enterprise/commit/cc75a55a) Update tutorial.md +- [f05372b9](https://github.com/appscode/stash-enterprise/commit/f05372b9) Update backends.md +- [f657a4cf](https://github.com/appscode/stash-enterprise/commit/f657a4cf) Add example e2e env file for OpenStack swift. +- [53f97fe3](https://github.com/appscode/stash-enterprise/commit/53f97fe3) Update docs to 0.4.0 release. +- [e2bf7234](https://github.com/appscode/stash-enterprise/commit/e2bf7234) Update docs to remove setting name for local.VolumeSource +- [50aff91d](https://github.com/appscode/stash-enterprise/commit/50aff91d) Support selecting restic branch +- [a7f0a995](https://github.com/appscode/stash-enterprise/commit/a7f0a995) Prepare docs for 0.4.0 release. +- [df7bd521](https://github.com/appscode/stash-enterprise/commit/df7bd521) Update concept.md +- [bc4f6f13](https://github.com/appscode/stash-enterprise/commit/bc4f6f13) Rename RepositorySecretName to StorageSecretName (#135) +- [8ff66993](https://github.com/appscode/stash-enterprise/commit/8ff66993) Rename Volume to VolumeSource (#134) +- [39a390f9](https://github.com/appscode/stash-enterprise/commit/39a390f9) Use updated URL format (: after container) +- [993faac2](https://github.com/appscode/stash-enterprise/commit/993faac2) Update charts +- [3f68045b](https://github.com/appscode/stash-enterprise/commit/3f68045b) Use VolumeSource instead of Volume for Local backend. (#132) +- [883cebd4](https://github.com/appscode/stash-enterprise/commit/883cebd4) Update concept.md +- [387ac071](https://github.com/appscode/stash-enterprise/commit/387ac071) Fix linting issues in chart +- [dc19110f](https://github.com/appscode/stash-enterprise/commit/dc19110f) Add String() method to PrefixType. +- [f4cf5e67](https://github.com/appscode/stash-enterprise/commit/f4cf5e67) Remove unused type Source +- [f1a21897](https://github.com/appscode/stash-enterprise/commit/f1a21897) Update readme +- [a3827bf5](https://github.com/appscode/stash-enterprise/commit/a3827bf5) Various corrections to chart based on code review. +- [c12c3fab](https://github.com/appscode/stash-enterprise/commit/c12c3fab) Prepare docs for 0.3.1 release. +- [def4f783](https://github.com/appscode/stash-enterprise/commit/def4f783) Add tests for swift (#130) +- [12ee8e9e](https://github.com/appscode/stash-enterprise/commit/12ee8e9e) Support setting compute resources for sidecar (#129) +- [6eb6ba6e](https://github.com/appscode/stash-enterprise/commit/6eb6ba6e) Update chart with rbac +- [0ba63fb7](https://github.com/appscode/stash-enterprise/commit/0ba63fb7) Update rbac.md +- [fdbd84a2](https://github.com/appscode/stash-enterprise/commit/fdbd84a2) Fix RBAC docs (#127) +- [68b6b0c5](https://github.com/appscode/stash-enterprise/commit/68b6b0c5) Update release.md +- [33a59ad8](https://github.com/appscode/stash-enterprise/commit/33a59ad8) Merge commit 'fba07b3994b0e1fd3a95c91d890353aa23a0f3c1' +- [c0ed3b61](https://github.com/appscode/stash-enterprise/commit/c0ed3b61) Print commit timestamp with version command +- [5c6f2d27](https://github.com/appscode/stash-enterprise/commit/5c6f2d27) Prepare docs for 0.3.0 release +- [97630f69](https://github.com/appscode/stash-enterprise/commit/97630f69) Document RBAC +- [59e09023](https://github.com/appscode/stash-enterprise/commit/59e09023) Document behavior in case of multiple Restic +- [9ae9107d](https://github.com/appscode/stash-enterprise/commit/9ae9107d) Document e2e test setup +- [a6ba0787](https://github.com/appscode/stash-enterprise/commit/a6ba0787) Document swift (#124) +- [2a38a883](https://github.com/appscode/stash-enterprise/commit/2a38a883) Remove support for B2 & Rest server for now. +- [8a4ca945](https://github.com/appscode/stash-enterprise/commit/8a4ca945) Remove Location choice for GCS +- [c89b9109](https://github.com/appscode/stash-enterprise/commit/c89b9109) Fix spelling +- [7ecffb1f](https://github.com/appscode/stash-enterprise/commit/7ecffb1f) Update backends.md +- [61385e73](https://github.com/appscode/stash-enterprise/commit/61385e73) Update uninstall.md +- [50e98026](https://github.com/appscode/stash-enterprise/commit/50e98026) Update uninstall.md +- [c1fd8915](https://github.com/appscode/stash-enterprise/commit/c1fd8915) Use TPR labels to verify installation +- [d896d763](https://github.com/appscode/stash-enterprise/commit/d896d763) Add labels to TPR registration +- [0644dc8a](https://github.com/appscode/stash-enterprise/commit/0644dc8a) Remove pod template name +- [011bba8e](https://github.com/appscode/stash-enterprise/commit/011bba8e) Don't fail scheduler if bad credetials are given +- [50d5b35d](https://github.com/appscode/stash-enterprise/commit/50d5b35d) Fix google sa file permission +- [569b1289](https://github.com/appscode/stash-enterprise/commit/569b1289) Change mount path for labels to /etc/stash +- [7483b929](https://github.com/appscode/stash-enterprise/commit/7483b929) Fix remote backend repository format +- [d6ba05c6](https://github.com/appscode/stash-enterprise/commit/d6ba05c6) Part 6 - Update docs (#121) +- [6c95f2d6](https://github.com/appscode/stash-enterprise/commit/6c95f2d6) Update docs (#120) +- [a979c4bc](https://github.com/appscode/stash-enterprise/commit/a979c4bc) Update docs for 0.2.0 release +- [ba6bf1bb](https://github.com/appscode/stash-enterprise/commit/ba6bf1bb) Fix build. +- [e27cf027](https://github.com/appscode/stash-enterprise/commit/e27cf027) Various bug fixes (#118) +- [33fe5ebe](https://github.com/appscode/stash-enterprise/commit/33fe5ebe) Mention swift in readme +- [4df56363](https://github.com/appscode/stash-enterprise/commit/4df56363) Update pitch (#117) +- [e92e6f93](https://github.com/appscode/stash-enterprise/commit/e92e6f93) Various changes to RetentionPolicy (#116) +- [bbf726ee](https://github.com/appscode/stash-enterprise/commit/bbf726ee) Set TMPDIR env var for restic (#115) +- [7e2944aa](https://github.com/appscode/stash-enterprise/commit/7e2944aa) Update ROADMAP.md +- [ac262649](https://github.com/appscode/stash-enterprise/commit/ac262649) Update tutorial.md +- [1405e499](https://github.com/appscode/stash-enterprise/commit/1405e499) Update ROADMAP.md +- [9ba3bf8a](https://github.com/appscode/stash-enterprise/commit/9ba3bf8a) Update workloads.md +- [a3e41c8e](https://github.com/appscode/stash-enterprise/commit/a3e41c8e) Part 5 - User Guide (#114) +- [3484d8fc](https://github.com/appscode/stash-enterprise/commit/3484d8fc) Update ROADMAP.md +- [d3369091](https://github.com/appscode/stash-enterprise/commit/d3369091) Part 4- User Guide (#113) +- [6ada7f4b](https://github.com/appscode/stash-enterprise/commit/6ada7f4b) Part 3 - User Guide (#110) +- [565e2a34](https://github.com/appscode/stash-enterprise/commit/565e2a34) Part - 2 of User guide (#99) +- [e32edec6](https://github.com/appscode/stash-enterprise/commit/e32edec6) Update user guide (#94) +- [ba7ef578](https://github.com/appscode/stash-enterprise/commit/ba7ef578) Update release.md +- [40a12019](https://github.com/appscode/stash-enterprise/commit/40a12019) Update Prometheus job name to use restic ns & name (#93) +- [46da38ea](https://github.com/appscode/stash-enterprise/commit/46da38ea) Create separate restic for each type of backend. (#92) +- [b5a8abea](https://github.com/appscode/stash-enterprise/commit/b5a8abea) Update README.md +- [f42511ea](https://github.com/appscode/stash-enterprise/commit/f42511ea) Use app & release name labels together in chart +- [cdeb926d](https://github.com/appscode/stash-enterprise/commit/cdeb926d) Update chart readme +- [56fa7765](https://github.com/appscode/stash-enterprise/commit/56fa7765) Update Stash chart (#89) +- [1ed35f09](https://github.com/appscode/stash-enterprise/commit/1ed35f09) Remove selectors so that `template.metadata.labels` are used (#91) +- [8d9065de](https://github.com/appscode/stash-enterprise/commit/8d9065de) Update CONTRIBUTING.md +- [550eb7e4](https://github.com/appscode/stash-enterprise/commit/550eb7e4) Update contribution guide +- [8f0e31e6](https://github.com/appscode/stash-enterprise/commit/8f0e31e6) Fix dev guide (#88) +- [6b61ee27](https://github.com/appscode/stash-enterprise/commit/6b61ee27) Add docs for commands (#90) +- [d85cd5f9](https://github.com/appscode/stash-enterprise/commit/d85cd5f9) Update stash.yaml +- [8577bee3](https://github.com/appscode/stash-enterprise/commit/8577bee3) Update stash.yaml +- [a948319b](https://github.com/appscode/stash-enterprise/commit/a948319b) Change stash version to 0.1.0 +- [db3d1813](https://github.com/appscode/stash-enterprise/commit/db3d1813) Cleanup test commands +- [a6144456](https://github.com/appscode/stash-enterprise/commit/a6144456) Add e2e tests for major cloud providers (#84) +- [4d219217](https://github.com/appscode/stash-enterprise/commit/4d219217) Fix headless service for statefulset e2e test +- [7fbc6cd6](https://github.com/appscode/stash-enterprise/commit/7fbc6cd6) Create separate selectors for each invocation of framework +- [7e949c96](https://github.com/appscode/stash-enterprise/commit/7e949c96) Move check for sidecars inside retry loop +- [60e0cec4](https://github.com/appscode/stash-enterprise/commit/60e0cec4) Don't update resource from update calls. +- [5c75cb0d](https://github.com/appscode/stash-enterprise/commit/5c75cb0d) Fix selectors for Deployment e2e tests +- [87ae2427](https://github.com/appscode/stash-enterprise/commit/87ae2427) Add node selector for DaemonSet e2e test +- [9b946345](https://github.com/appscode/stash-enterprise/commit/9b946345) Check for successful backup events +- [30bd7d6b](https://github.com/appscode/stash-enterprise/commit/30bd7d6b) Fix e2e tests (#83) +- [a220d50a](https://github.com/appscode/stash-enterprise/commit/a220d50a) Add /snapshots endpoint in operator (#82) +- [35428b88](https://github.com/appscode/stash-enterprise/commit/35428b88) Mount scratchDir with operator (#80) +- [887c432b](https://github.com/appscode/stash-enterprise/commit/887c432b) Fix scheduler (#79) +- [f120695e](https://github.com/appscode/stash-enterprise/commit/f120695e) Handle update conflicts (#78) +- [36245014](https://github.com/appscode/stash-enterprise/commit/36245014) Test e2e tests (#76) +- [7410da10](https://github.com/appscode/stash-enterprise/commit/7410da10) Remove restic source downloaded for building binary +- [01b72b61](https://github.com/appscode/stash-enterprise/commit/01b72b61) . import custom matchers +- [44416b81](https://github.com/appscode/stash-enterprise/commit/44416b81) Review analytics events. +- [5d6169e3](https://github.com/appscode/stash-enterprise/commit/5d6169e3) Remove unused and/or duplicate constants +- [d425d674](https://github.com/appscode/stash-enterprise/commit/d425d674) Delete old testify tests (#75) +- [80a96849](https://github.com/appscode/stash-enterprise/commit/80a96849) Add ginkgo based e2e tests (#70) +- [8de3189a](https://github.com/appscode/stash-enterprise/commit/8de3189a) Create a cli wrapper for restic (#74) +- [da41f6ed](https://github.com/appscode/stash-enterprise/commit/da41f6ed) Revise EnsureXXXSidecar methods (#73) +- [75aa7458](https://github.com/appscode/stash-enterprise/commit/75aa7458) Avoid pushing metrics if missing gateway URL +- [c42c6cae](https://github.com/appscode/stash-enterprise/commit/c42c6cae) Fix pushgateway --web.listen-address flag +- [efd42e00](https://github.com/appscode/stash-enterprise/commit/efd42e00) Use service account with operator pods +- [5729f7b0](https://github.com/appscode/stash-enterprise/commit/5729f7b0) Create RBAC objects for operator (#69) +- [3b5b0291](https://github.com/appscode/stash-enterprise/commit/3b5b0291) Push metrics to Prometheus push gateway (#67) +- [6ec35ada](https://github.com/appscode/stash-enterprise/commit/6ec35ada) Mount labels using Downward api (#66) +- [76a9ced7](https://github.com/appscode/stash-enterprise/commit/76a9ced7) Vendor go-sh dependency (#65) +- [d505ad0e](https://github.com/appscode/stash-enterprise/commit/d505ad0e) Use go-sh to execute restic commands (#63) +- [585b33f9](https://github.com/appscode/stash-enterprise/commit/585b33f9) Add scratchPad Dir & prefixHostname flags (#62) +- [e5c9f69b](https://github.com/appscode/stash-enterprise/commit/e5c9f69b) Support remote backends (#58) +- [af2e14a7](https://github.com/appscode/stash-enterprise/commit/af2e14a7) Expose metrics port from Docker +- [87dfdae4](https://github.com/appscode/stash-enterprise/commit/87dfdae4) Rename cron pkg to scheduler. +- [0503fe64](https://github.com/appscode/stash-enterprise/commit/0503fe64) Organize backup code. (#54) +- [12c0921a](https://github.com/appscode/stash-enterprise/commit/12c0921a) Synchronize scheduler reconfiguration (#53) +- [cbebb9de](https://github.com/appscode/stash-enterprise/commit/cbebb9de) Build master branch of restic +- [23e92576](https://github.com/appscode/stash-enterprise/commit/23e92576) Fix tag detection from Version +- [af2f9271](https://github.com/appscode/stash-enterprise/commit/af2f9271) Update e2e tests (#52) +- [e7b85533](https://github.com/appscode/stash-enterprise/commit/e7b85533) Fix NPE +- [8308dd26](https://github.com/appscode/stash-enterprise/commit/8308dd26) Fix unit tests (#51) +- [52b6cfb7](https://github.com/appscode/stash-enterprise/commit/52b6cfb7) Update README.md +- [d41bd0db](https://github.com/appscode/stash-enterprise/commit/d41bd0db) Run watchers for preferred api group version kind (#50) +- [f8878a34](https://github.com/appscode/stash-enterprise/commit/f8878a34) Build restic from source by default (#49) +- [7d240bbf](https://github.com/appscode/stash-enterprise/commit/7d240bbf) Use updated docker build script format +- [f87445d4](https://github.com/appscode/stash-enterprise/commit/f87445d4) Merge commit '6d30c353f174f641159a88f6280f6be163a44cb4' +- [abd7fcca](https://github.com/appscode/stash-enterprise/commit/abd7fcca) Rename variable watcher to ctrl +- [e8cb5c06](https://github.com/appscode/stash-enterprise/commit/e8cb5c06) Watch individual object types. (#48) +- [3bc3fc81](https://github.com/appscode/stash-enterprise/commit/3bc3fc81) Various code cleanup (#47) +- [1ba94a88](https://github.com/appscode/stash-enterprise/commit/1ba94a88) Reorganize cron controller (#46) +- [d9c5ead9](https://github.com/appscode/stash-enterprise/commit/d9c5ead9) Check docker image tag before starting operator (#45) +- [3887dd92](https://github.com/appscode/stash-enterprise/commit/3887dd92) Expose metrics from operator (#44) +- [cadf7c1d](https://github.com/appscode/stash-enterprise/commit/cadf7c1d) Run push gateway as a side-car for restik operator. (#43) +- [966564b0](https://github.com/appscode/stash-enterprise/commit/966564b0) Pre-install ca-certificates. +- [bb5b24b2](https://github.com/appscode/stash-enterprise/commit/bb5b24b2) Send analytics for start & stop events. +- [95e4209a](https://github.com/appscode/stash-enterprise/commit/95e4209a) Move all commands to root folder. +- [f6816d8e](https://github.com/appscode/stash-enterprise/commit/f6816d8e) Remove all reference to k8s.io/kubernetes repo. +- [edb64910](https://github.com/appscode/stash-enterprise/commit/edb64910) Move main.go to root folder. +- [f7bfd1a8](https://github.com/appscode/stash-enterprise/commit/f7bfd1a8) Merge commit 'e6c0614c629d719cc9300e71a668a43f42b37f68' +- [4c1a638b](https://github.com/appscode/stash-enterprise/commit/4c1a638b) Point to client-go in versioning policy. +- [17fbce2b](https://github.com/appscode/stash-enterprise/commit/17fbce2b) Update README.md +- [d57ddc79](https://github.com/appscode/stash-enterprise/commit/d57ddc79) Add analytics (#41) +- [59d38bd5](https://github.com/appscode/stash-enterprise/commit/59d38bd5) Use V1alpha1SchemeGroupVersion for Restik (#40) +- [b258051b](https://github.com/appscode/stash-enterprise/commit/b258051b) Fix registration of wrong group (#39) +- [572eab2b](https://github.com/appscode/stash-enterprise/commit/572eab2b) fix status update (#38) +- [f3b0e990](https://github.com/appscode/stash-enterprise/commit/f3b0e990) Upgrade restic version to 0.6.1 (#37) +- [52f44f88](https://github.com/appscode/stash-enterprise/commit/52f44f88) Use client-go (#36) +- [8f9eaa75](https://github.com/appscode/stash-enterprise/commit/8f9eaa75) Merge commit '4a5c3083fd86cbe409e8a0f8db02ebc92b403cdc' +- [fa30bfde](https://github.com/appscode/stash-enterprise/commit/fa30bfde) Create conversion_v1alpha1.go +- [71dd7331](https://github.com/appscode/stash-enterprise/commit/71dd7331) Create register_v1alpha1.go +- [a4dd5595](https://github.com/appscode/stash-enterprise/commit/a4dd5595) fmt api & client pkg-es +- [34651f88](https://github.com/appscode/stash-enterprise/commit/34651f88) Use same var as receiver +- [028e312f](https://github.com/appscode/stash-enterprise/commit/028e312f) Add version policy & analytics collection to readme +- [7377c5e0](https://github.com/appscode/stash-enterprise/commit/7377c5e0) Change api version to v1alpha1 (#30) +- [f893fd1d](https://github.com/appscode/stash-enterprise/commit/f893fd1d) Merge commit '7ade13456a688a54292abaf589c2e9f1804f7d8b' +- [ce677bb9](https://github.com/appscode/stash-enterprise/commit/ce677bb9) Rename clientset +- [570bea8c](https://github.com/appscode/stash-enterprise/commit/570bea8c) Rename function and structure (#29) +- [db1643f2](https://github.com/appscode/stash-enterprise/commit/db1643f2) Rename Backup into Restik (#28) +- [f5db80b4](https://github.com/appscode/stash-enterprise/commit/f5db80b4) Move api from k8s-addons (#27) +- [94ce3a20](https://github.com/appscode/stash-enterprise/commit/94ce3a20) Add Restik chart (#20) +- [f1955669](https://github.com/appscode/stash-enterprise/commit/f1955669) Bubble up errors to caller (#26) +- [2b6d4735](https://github.com/appscode/stash-enterprise/commit/2b6d4735) Update README.md +- [90fbf2ab](https://github.com/appscode/stash-enterprise/commit/90fbf2ab) Allow modifying the cron expression (#25) +- [3e416598](https://github.com/appscode/stash-enterprise/commit/3e416598) Merge commit '958f7da4904598c85aabadf104c687e321eacb33' +- [0f787535](https://github.com/appscode/stash-enterprise/commit/0f787535) Use unversioned time (#23) +- [3521adfb](https://github.com/appscode/stash-enterprise/commit/3521adfb) Update design.md +- [ebfa0624](https://github.com/appscode/stash-enterprise/commit/ebfa0624) Update design.md +- [7785bc86](https://github.com/appscode/stash-enterprise/commit/7785bc86) example added (#19) +- [ca8a2ec6](https://github.com/appscode/stash-enterprise/commit/ca8a2ec6) Use restik api and client from k8s-addons (#18) +- [2aae97a9](https://github.com/appscode/stash-enterprise/commit/2aae97a9) Error print fix (#17) +- [379b853e](https://github.com/appscode/stash-enterprise/commit/379b853e) Check group registration Before Register Groups (#16) +- [f2643e91](https://github.com/appscode/stash-enterprise/commit/f2643e91) Add Restik docs (#15) +- [fb8e6c12](https://github.com/appscode/stash-enterprise/commit/fb8e6c12) Restik unit test, e2e test (#14) +- [45f9bc69](https://github.com/appscode/stash-enterprise/commit/45f9bc69) Restik create delete initial implementation (#12) +- [829887a0](https://github.com/appscode/stash-enterprise/commit/829887a0) Update restic to 0.5.0 +- [4e0c40f9](https://github.com/appscode/stash-enterprise/commit/4e0c40f9) Don't allow push with tags. +- [b33d8142](https://github.com/appscode/stash-enterprise/commit/b33d8142) Unify restic and restik docker images. +- [6c7484ad](https://github.com/appscode/stash-enterprise/commit/6c7484ad) Make restic executable. +- [67272949](https://github.com/appscode/stash-enterprise/commit/67272949) Build docker image (#11) +- [1d3b939c](https://github.com/appscode/stash-enterprise/commit/1d3b939c) Add links to proposal in readme +- [6548fd84](https://github.com/appscode/stash-enterprise/commit/6548fd84) Use cobra to structure restik commands. +- [8c6425b6](https://github.com/appscode/stash-enterprise/commit/8c6425b6) Clone skeleton from appscode/k3pc (#10) +- [ba60c6d4](https://github.com/appscode/stash-enterprise/commit/ba60c6d4) Merge commit 'a3e8a4a46d31a8c6e9fcceda85d3a55f36293f67' as 'hack/libbuild' + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.10.0](https://github.com/stashed/apimachinery/releases/tag/v0.10.0) + +- [7dbdff5f](https://github.com/stashed/apimachinery/commit/7dbdff5f) Update README.md +- [254ee64e](https://github.com/stashed/apimachinery/commit/254ee64e) Rename param annotation (#42) +- [2210ed42](https://github.com/stashed/apimachinery/commit/2210ed42) Update Kubernetes v1.18.3 dependencies (#41) +- [835c0358](https://github.com/stashed/apimachinery/commit/835c0358) Update Kubernetes v1.18.3 dependencies (#40) +- [692909fe](https://github.com/stashed/apimachinery/commit/692909fe) Add params and schedule annotation (#38) +- [b9ff4f14](https://github.com/stashed/apimachinery/commit/b9ff4f14) Update Kubernetes v1.18.3 dependencies (#37) +- [c44c52c8](https://github.com/stashed/apimachinery/commit/c44c52c8) Update Kubernetes v1.18.3 dependencies (#36) +- [073a93c8](https://github.com/stashed/apimachinery/commit/073a93c8) Rename StashLocalBackendAccessor to StashNetVolAccessor (#35) +- [e29c2724](https://github.com/stashed/apimachinery/commit/e29c2724) Update Kubernetes v1.18.3 dependencies (#34) +- [a4807149](https://github.com/stashed/apimachinery/commit/a4807149) Update Kubernetes v1.18.3 dependencies (#33) +- [d6fcb2c6](https://github.com/stashed/apimachinery/commit/d6fcb2c6) Fix protobuf tags (#32) +- [d255d800](https://github.com/stashed/apimachinery/commit/d255d800) Pass target reference for restore job condition (#31) +- [a3ce1cee](https://github.com/stashed/apimachinery/commit/a3ce1cee) Add helper method for NFS backend (#30) +- [a4be15a1](https://github.com/stashed/apimachinery/commit/a4be15a1) Introduce RestoreBatch CRD + Additional Improvements (#22) +- [710228f4](https://github.com/stashed/apimachinery/commit/710228f4) Update to Kubernetes v1.18.3 (#29) +- [0f69a3ab](https://github.com/stashed/apimachinery/commit/0f69a3ab) Update to Kubernetes v1.18.3 (#28) +- [504a57e7](https://github.com/stashed/apimachinery/commit/504a57e7) Update to Kubernetes v1.18.3 (#27) +- [843421e4](https://github.com/stashed/apimachinery/commit/843421e4) Show AppsCode in copyright file header (#26) +- [ad462cc4](https://github.com/stashed/apimachinery/commit/ad462cc4) Update to Kubernetes v1.18.3 (#25) +- [28d53699](https://github.com/stashed/apimachinery/commit/28d53699) Update update-release-tracker.sh +- [34624044](https://github.com/stashed/apimachinery/commit/34624044) Update update-release-tracker.sh +- [5f5de63c](https://github.com/stashed/apimachinery/commit/5f5de63c) Fix openapi path (#24) +- [6e0ad5f8](https://github.com/stashed/apimachinery/commit/6e0ad5f8) Add script to update release tracker on pr merge (#23) +- [cbf9b376](https://github.com/stashed/apimachinery/commit/cbf9b376) Update .kodiak.toml +- [d12b3d4b](https://github.com/stashed/apimachinery/commit/d12b3d4b) Update to Kubernetes v1.18.3 (#21) +- [1956a312](https://github.com/stashed/apimachinery/commit/1956a312) Update to Kubernetes v1.18.3 +- [c3966002](https://github.com/stashed/apimachinery/commit/c3966002) Unwrap top level api folder (#20) +- [5ba03fb5](https://github.com/stashed/apimachinery/commit/5ba03fb5) Update to Kubernetes v1.18.3 (#19) +- [abeb620e](https://github.com/stashed/apimachinery/commit/abeb620e) Update to Kubernetes v1.18.3 +- [6fdf8a60](https://github.com/stashed/apimachinery/commit/6fdf8a60) Enable https://kodiakhq.com (#13) +- [479258ed](https://github.com/stashed/apimachinery/commit/479258ed) Update dev scripts (#12) +- [a85ced99](https://github.com/stashed/apimachinery/commit/a85ced99) Merge pull request #11 from stashed/k8s-gomod-refresher-1591208266 +- [82df6f26](https://github.com/stashed/apimachinery/commit/82df6f26) Update to Kubernetes v1.18.3 +- [788f6921](https://github.com/stashed/apimachinery/commit/788f6921) Add default annotation for Snapshotter (#9) +- [d2f3f5d4](https://github.com/stashed/apimachinery/commit/d2f3f5d4) Remove defaults from crd v1beta1 YAML (#8) +- [1a09ffde](https://github.com/stashed/apimachinery/commit/1a09ffde) Update dependencies +- [58525b4b](https://github.com/stashed/apimachinery/commit/58525b4b) Update dependencies +- [c34c2ec1](https://github.com/stashed/apimachinery/commit/c34c2ec1) Generate both v1beta1 and v1 CRD YAML (#7) +- [e81205a3](https://github.com/stashed/apimachinery/commit/e81205a3) Bring back mistakenly removed SetRecoveryStats +- [5f8cf3a6](https://github.com/stashed/apimachinery/commit/5f8cf3a6) Merge pull request #6 from stashed/k-1.18.3 +- [723f4de9](https://github.com/stashed/apimachinery/commit/723f4de9) Add context to crd utils +- [59478af4](https://github.com/stashed/apimachinery/commit/59478af4) Update to Kubernetes 1.18.3 +- [e83b90a7](https://github.com/stashed/apimachinery/commit/e83b90a7) Merge pull request #3 from stashed/wait-for-target +- [a5b9a011](https://github.com/stashed/apimachinery/commit/a5b9a011) Simplify targetMatched() function +- [58948bd9](https://github.com/stashed/apimachinery/commit/58948bd9) Refactor +- [5568cb90](https://github.com/stashed/apimachinery/commit/5568cb90) Add RestoreSession conditions +- [906c5910](https://github.com/stashed/apimachinery/commit/906c5910) Add TypeMeta to invoker +- [22843fdb](https://github.com/stashed/apimachinery/commit/22843fdb) Use Go 1.14.3 +- [238d1bd0](https://github.com/stashed/apimachinery/commit/238d1bd0) Add backup invoker condition transion reasons +- [275965f9](https://github.com/stashed/apimachinery/commit/275965f9) Introduce conditions for BackupConfiguration and BackupBatch +- [35159c81](https://github.com/stashed/apimachinery/commit/35159c81) Merge pull request #5 from stashed/fix-updatestatus +- [f1d78326](https://github.com/stashed/apimachinery/commit/f1d78326) Fix helper methods +- [dbb02873](https://github.com/stashed/apimachinery/commit/dbb02873) Fix UpdateStatus() function +- [a7bd75ad](https://github.com/stashed/apimachinery/commit/a7bd75ad) Update crazy-max/ghaction-docker-buildx flag +- [1d65a7d4](https://github.com/stashed/apimachinery/commit/1d65a7d4) Use recommended kubernetes app labels (#4) +- [5b322e9f](https://github.com/stashed/apimachinery/commit/5b322e9f) Add Enum markers to api types +- [e6017151](https://github.com/stashed/apimachinery/commit/e6017151) Trigger the workflow on push or pull request +- [54097441](https://github.com/stashed/apimachinery/commit/54097441) Use kubectl v1.17 (#1) +- [43743e92](https://github.com/stashed/apimachinery/commit/43743e92) Update module path +- [9c16896f](https://github.com/stashed/apimachinery/commit/9c16896f) Add support for specifying "region" for S3 backend (#1050) +- [b8c83f74](https://github.com/stashed/apimachinery/commit/b8c83f74) Fix Repository CRDs print column (#1046) +- [52367e1b](https://github.com/stashed/apimachinery/commit/52367e1b) Update README.md to v0.9.0-rc.4 +- [48dba9c9](https://github.com/stashed/apimachinery/commit/48dba9c9) Fix ServiceAccount name mitchmatch (#1025) +- [a0fceff6](https://github.com/stashed/apimachinery/commit/a0fceff6) Suspend CronJob but keep instant backup working while backup is paused (#1024) +- [3d591020](https://github.com/stashed/apimachinery/commit/3d591020) Add stash specific prefix to automatically created resources (#1023) +- [b113839c](https://github.com/stashed/apimachinery/commit/b113839c) Use Go 1.13.6 +- [50071f71](https://github.com/stashed/apimachinery/commit/50071f71) Enable tests for K8s 1.11 (#1013) +- [e1069c9a](https://github.com/stashed/apimachinery/commit/e1069c9a) Bring back support for k8s 1.11 (#1008) +- [427a9c57](https://github.com/stashed/apimachinery/commit/427a9c57) Remove creationTimestamp from PartialObjectMeta (#1006) +- [62ce8323](https://github.com/stashed/apimachinery/commit/62ce8323) Add BackupBatch support (#985) +- [190e4cc3](https://github.com/stashed/apimachinery/commit/190e4cc3) Update twitter account (#1003) +- [35e8db63](https://github.com/stashed/apimachinery/commit/35e8db63) Add Repository Validation for local backend `mountPath` (#947) +- [f28abce2](https://github.com/stashed/apimachinery/commit/f28abce2) Add Backend e2e Test (#975) +- [4283b841](https://github.com/stashed/apimachinery/commit/4283b841) Update client-go to kubernetes-1.16.3 (#987) +- [999fc6e3](https://github.com/stashed/apimachinery/commit/999fc6e3) Use RWX for restic output.json (#1001) +- [3bd3b357](https://github.com/stashed/apimachinery/commit/3bd3b357) Run `chmod` on `output.json` only by owner container + Improve… (#1000) +- [fa597188](https://github.com/stashed/apimachinery/commit/fa597188) Add Backup and Restore hooks (#978) +- [cc11d985](https://github.com/stashed/apimachinery/commit/cc11d985) Use helm chart instead of script to install operator (#999) +- [7fa6e4c2](https://github.com/stashed/apimachinery/commit/7fa6e4c2) Update hack/fmt.sh script +- [56ef2680](https://github.com/stashed/apimachinery/commit/56ef2680) Add helper library for CRDs (#977) +- [1c1c41c2](https://github.com/stashed/apimachinery/commit/1c1c41c2) Use kubebuilder generated CRD yamls (#971) +- [9c43c131](https://github.com/stashed/apimachinery/commit/9c43c131) Use controller-tools@v0.2.2 to generate structural schema (#974) +- [7e1a1899](https://github.com/stashed/apimachinery/commit/7e1a1899) Generate protobuf files for api types (#967) +- [a9e058d8](https://github.com/stashed/apimachinery/commit/a9e058d8) Fix Repository returned error message (#961) +- [1bfbca9b](https://github.com/stashed/apimachinery/commit/1bfbca9b) Apply valid name functionality (#950) +- [1cd02749](https://github.com/stashed/apimachinery/commit/1cd02749) Test installer against multiple k8s version (#953) +- [a6808bfa](https://github.com/stashed/apimachinery/commit/a6808bfa) Format shell scripts (#952) +- [1e513927](https://github.com/stashed/apimachinery/commit/1e513927) Add missing license header +- [00596ec8](https://github.com/stashed/apimachinery/commit/00596ec8) Rename Dockerfiles (#946) +- [b8eea322](https://github.com/stashed/apimachinery/commit/b8eea322) Add AutoBackup e2e test (#939) +- [e469e86e](https://github.com/stashed/apimachinery/commit/e469e86e) Enable race detector (#944) +- [81778745](https://github.com/stashed/apimachinery/commit/81778745) Add license header to files (#943) +- [f5000aa5](https://github.com/stashed/apimachinery/commit/f5000aa5) Don't add AppBinding labels in metric when AppBinding is not available (#942) +- [06537e5e](https://github.com/stashed/apimachinery/commit/06537e5e) Fix klog flag parsing +- [926f960a](https://github.com/stashed/apimachinery/commit/926f960a) Revendor +- [6ce2ee96](https://github.com/stashed/apimachinery/commit/6ce2ee96) Use crazy-max/ghaction-docker-buildx@v1 +- [5adb77e4](https://github.com/stashed/apimachinery/commit/5adb77e4) Show diff when files `make verify` fails (#937) +- [86be7d3e](https://github.com/stashed/apimachinery/commit/86be7d3e) Update make fmt +- [d3c773c2](https://github.com/stashed/apimachinery/commit/d3c773c2) Split imports into 3 blocks (#936) +- [a1326209](https://github.com/stashed/apimachinery/commit/a1326209) Volume e2e test github action (#933) +- [497a062a](https://github.com/stashed/apimachinery/commit/497a062a) Fix BackupSession additional print column (#932) +- [ed8fc701](https://github.com/stashed/apimachinery/commit/ed8fc701) Remove spec.backupConfiguration from BackupSession (#931) +- [5b202733](https://github.com/stashed/apimachinery/commit/5b202733) Update e2e tests to run on GitHub actions (#917) +- [c35f0b5f](https://github.com/stashed/apimachinery/commit/c35f0b5f) Enable make ci (#928) +- [18559697](https://github.com/stashed/apimachinery/commit/18559697) Don't restart workload on backup pause+Use ImagePullPolicy: "Always" for Function-Task model (#929) +- [65095dfe](https://github.com/stashed/apimachinery/commit/65095dfe) Add status.observedGeneration (#927) +- [f6181414](https://github.com/stashed/apimachinery/commit/f6181414) Implement RetentionPolicy for VolumeSnapshot (#926) +- [e69a37ca](https://github.com/stashed/apimachinery/commit/e69a37ca) Verify generated files are up to date (#925) +- [9514193d](https://github.com/stashed/apimachinery/commit/9514193d) Update and rename go.yml to ci.yml (#922) +- [675769a7](https://github.com/stashed/apimachinery/commit/675769a7) Add probe and BackupBatch api (#890) +- [149cf02d](https://github.com/stashed/apimachinery/commit/149cf02d) Use core package from k8s.io/api repo (#921) +- [f5cf5adf](https://github.com/stashed/apimachinery/commit/f5cf5adf) Bring back dependency to github.com/golang/protobuf@v1.2.0 (#918) +- [76e892de](https://github.com/stashed/apimachinery/commit/76e892de) Update tag pattern for release pipeline +- [8329fa4f](https://github.com/stashed/apimachinery/commit/8329fa4f) Run e2e tests using GitHub actions (#909) +- [11dabe80](https://github.com/stashed/apimachinery/commit/11dabe80) Add app=stash label to crd yamls +- [b1c9e012](https://github.com/stashed/apimachinery/commit/b1c9e012) Generate swagger.json for v1beta1 (#916) +- [538973b8](https://github.com/stashed/apimachinery/commit/538973b8) Add release pipeline (#915) +- [eeb53e04](https://github.com/stashed/apimachinery/commit/eeb53e04) Fix VolumeSnapshot Issues (#912) +- [d61e7bac](https://github.com/stashed/apimachinery/commit/d61e7bac) Add Kubebuilder annotations (#911) +- [e190f29a](https://github.com/stashed/apimachinery/commit/e190f29a) Use kubebuilder to generate crd yamls (#843) +- [bb4b5267](https://github.com/stashed/apimachinery/commit/bb4b5267) Update go.yml +- [84fbd266](https://github.com/stashed/apimachinery/commit/84fbd266) Introduce InterimVolumeTemplate and BackupHistoryLimit field. (#907) +- [4fda42c8](https://github.com/stashed/apimachinery/commit/4fda42c8) Make RetentionPolicy required in v1beta1 api (#905) +- [75c2560e](https://github.com/stashed/apimachinery/commit/75c2560e) Enable GitHub actions (#903) +- [326051df](https://github.com/stashed/apimachinery/commit/326051df) Fix snapshot listing for local backend (#902) +- [3950661b](https://github.com/stashed/apimachinery/commit/3950661b) Improve Error Handling + Code refactor (#891) +- [215680ee](https://github.com/stashed/apimachinery/commit/215680ee) Add `NICE` and `IONICE` into distroless image (#883) +- [91ff6961](https://github.com/stashed/apimachinery/commit/91ff6961) Improve metrics handling + make update status uniform (#872) +- [54acd006](https://github.com/stashed/apimachinery/commit/54acd006) Add DumpEnv func to Restic Config file (#870) +- [02f7f1e5](https://github.com/stashed/apimachinery/commit/02f7f1e5) Allow to specify subPath in auto-backup annotation (#871) +- [8a67406f](https://github.com/stashed/apimachinery/commit/8a67406f) Silence docker buildx command (#866) +- [50110a2d](https://github.com/stashed/apimachinery/commit/50110a2d) Update README.md (#865) +- [9dfef064](https://github.com/stashed/apimachinery/commit/9dfef064) Use docker buildx to build docker image (#864) +- [67974206](https://github.com/stashed/apimachinery/commit/67974206) Update version in gendocs script +- [d3613ff4](https://github.com/stashed/apimachinery/commit/d3613ff4) Use github.com/Azure/go-autorest/autorest@v0.7.0 (#862) +- [da23461d](https://github.com/stashed/apimachinery/commit/da23461d) Remove the `bs` short name for BackupSession (#859) +- [f4c425ec](https://github.com/stashed/apimachinery/commit/f4c425ec) Use github.com/golang/protobuf@v1.2.0 (#855) +- [90a9cd35](https://github.com/stashed/apimachinery/commit/90a9cd35) New variable from type field of AppBinding + Fix RoleBinding nam… (#845) +- [26a35938](https://github.com/stashed/apimachinery/commit/26a35938) Fix resolving Task if volumeClaimTemplate is set in RestoreSession(#852) +- [f6de2e47](https://github.com/stashed/apimachinery/commit/f6de2e47) Rename BackupConfigurationTemplate to BackupBlueprint (#847) +- [a18041a9](https://github.com/stashed/apimachinery/commit/a18041a9) Pass replicas from RestoreSession to Function (#848) +- [e061c7df](https://github.com/stashed/apimachinery/commit/e061c7df) Use variable for version in BackupConfigurationTemplate name (#846) +- [18ee8f1e](https://github.com/stashed/apimachinery/commit/18ee8f1e) Fix Platforms Issue (#844) +- [a3e48977](https://github.com/stashed/apimachinery/commit/a3e48977) Add GetSnapshotSize() function (#839) +- [a2563e2a](https://github.com/stashed/apimachinery/commit/a2563e2a) Fix travis build (#837) +- [737a9f9f](https://github.com/stashed/apimachinery/commit/737a9f9f) Add support for parallel backup & restore (#833) +- [ff29a86f](https://github.com/stashed/apimachinery/commit/ff29a86f) Use cron.ParseStandard helper +- [60dfc70e](https://github.com/stashed/apimachinery/commit/60dfc70e) Update azure-sdk-for-go dependencies (#836) +- [690424c6](https://github.com/stashed/apimachinery/commit/690424c6) Update github.com/appscode/go@master +- [975b72f7](https://github.com/stashed/apimachinery/commit/975b72f7) Use robfig/cron@v3 (#834) +- [db237826](https://github.com/stashed/apimachinery/commit/db237826) Remove unused code (#829) +- [cf8d0316](https://github.com/stashed/apimachinery/commit/cf8d0316) Generate docs files inside docs repo (#828) +- [0b7642b2](https://github.com/stashed/apimachinery/commit/0b7642b2) Add License notice to makefile (#825) +- [7aeda1a7](https://github.com/stashed/apimachinery/commit/7aeda1a7) Always attempt to pull a newer image for `make container` (#818) +- [2dd72ed0](https://github.com/stashed/apimachinery/commit/2dd72ed0) Update constants.go +- [6b54344b](https://github.com/stashed/apimachinery/commit/6b54344b) Add PusgatewayURL input for Functions (#816) +- [48f909ff](https://github.com/stashed/apimachinery/commit/48f909ff) Restore PVCs from templates using Restic (#809) +- [9c01bc29](https://github.com/stashed/apimachinery/commit/9c01bc29) Add TARGET_RESOURCE variable for BackupConfigurationTemplate (#814) +- [f88e6ce6](https://github.com/stashed/apimachinery/commit/f88e6ce6) Add make install, uninstall, purge commands (#813) +- [ecbe5573](https://github.com/stashed/apimachinery/commit/ecbe5573) Move chart & deploy scripts to github.com/stashed/installer (#811) +- [41bb5197](https://github.com/stashed/apimachinery/commit/41bb5197) Use stashed/docs repo +- [1348e419](https://github.com/stashed/apimachinery/commit/1348e419) Move docs to github.com/stashed/docs repo (#810) +- [7ebb2319](https://github.com/stashed/apimachinery/commit/7ebb2319) Fix travis build (#804) +- [06f0bf36](https://github.com/stashed/apimachinery/commit/06f0bf36) Pass labels to offshoot + add generic offshoot labels (#801) +- [e66ed12a](https://github.com/stashed/apimachinery/commit/e66ed12a) Remove canary support (#805) +- [7a2d937b](https://github.com/stashed/apimachinery/commit/7a2d937b) Update Version.go (#803) +- [1f00c4e5](https://github.com/stashed/apimachinery/commit/1f00c4e5) Added ARM64 support to the install script and manifest (#802) +- [b7582d56](https://github.com/stashed/apimachinery/commit/b7582d56) Load modules from vendor folder for linter +- [3afc2b8c](https://github.com/stashed/apimachinery/commit/3afc2b8c) Add Makefile (#800) +- [27d43b71](https://github.com/stashed/apimachinery/commit/27d43b71) VolumeSnapshot (#787) +- [31d0538c](https://github.com/stashed/apimachinery/commit/31d0538c) Remove importance of order of rule in RestoreSession (#795) +- [840611ac](https://github.com/stashed/apimachinery/commit/840611ac) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3d514977](https://github.com/stashed/apimachinery/commit/3d514977) Use absolute path as aliases for reference docs. (#796) +- [c7cd13cd](https://github.com/stashed/apimachinery/commit/c7cd13cd) Support PSP enabled cluster (#729) +- [74b90737](https://github.com/stashed/apimachinery/commit/74b90737) Use restic 0.9.5 (#789) +- [7b52a1d9](https://github.com/stashed/apimachinery/commit/7b52a1d9) Fix: User and group creation of stash for mongodb and mysql (#786) +- [42eb3082](https://github.com/stashed/apimachinery/commit/42eb3082) Update concept doc (#739) +- [34516293](https://github.com/stashed/apimachinery/commit/34516293) Update backup manager (#782) +- [d451c9e6](https://github.com/stashed/apimachinery/commit/d451c9e6) Configure Env variables for Functions (#780) +- [3045aa70](https://github.com/stashed/apimachinery/commit/3045aa70) Add support for backup cluster resources YAML (#721) +- [84be8e6f](https://github.com/stashed/apimachinery/commit/84be8e6f) Add "Supported Backends" doc to new guides (#756) +- [43700290](https://github.com/stashed/apimachinery/commit/43700290) Fix rest backend for workloads + add more authentication method for swift backend (#778) +- [c347fecc](https://github.com/stashed/apimachinery/commit/c347fecc) Backup and restore Elasticsearch (#702) +- [1a90ede6](https://github.com/stashed/apimachinery/commit/1a90ede6) Add guides template for new design (#755) +- [b784b8ee](https://github.com/stashed/apimachinery/commit/b784b8ee) Update package path to stash.appscode.dev/stash (#776) +- [bd05d186](https://github.com/stashed/apimachinery/commit/bd05d186) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eaa16de0](https://github.com/stashed/apimachinery/commit/eaa16de0) Introduce VolumeSnapshot APIs (#772) +- [2265c79d](https://github.com/stashed/apimachinery/commit/2265c79d) Use osm pkg from kmodules/objectstore-api (#770) +- [fc13863f](https://github.com/stashed/apimachinery/commit/fc13863f) Remove --rbac flag (#761) +- [039d0fd7](https://github.com/stashed/apimachinery/commit/039d0fd7) Skip creating/processing backup-session when backup-config is paused (#759) +- [2be48d23](https://github.com/stashed/apimachinery/commit/2be48d23) Stash v1beta1 E2E test for PVC (#753) +- [8c1949c2](https://github.com/stashed/apimachinery/commit/8c1949c2) Update Kubernetes client libraries to 1.13.5 (#752) +- [b40b5d72](https://github.com/stashed/apimachinery/commit/b40b5d72) Enable pipefail and update restore yamls (#750) +- [ba94ee71](https://github.com/stashed/apimachinery/commit/ba94ee71) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [a5d80180](https://github.com/stashed/apimachinery/commit/a5d80180) Add Stash CLI (#734) +- [fdb56095](https://github.com/stashed/apimachinery/commit/fdb56095) Stash v1beta1 E2E test for DaemonSet (#741) +- [04344b00](https://github.com/stashed/apimachinery/commit/04344b00) Apply nice/ionice settings from env (#746) +- [7782f71b](https://github.com/stashed/apimachinery/commit/7782f71b) Stash V1beta1 E2E test for Deployment (#710) +- [263f7f6e](https://github.com/stashed/apimachinery/commit/263f7f6e) Fix openapi path prefixes for validators and mutators (#732) +- [fe9c3ecb](https://github.com/stashed/apimachinery/commit/fe9c3ecb) Add max-connections for GCS, Azure, B2 backend (#730) +- [3af1ee29](https://github.com/stashed/apimachinery/commit/3af1ee29) Rename admission webhooks to avoid name collision (#725) +- [b1f960cd](https://github.com/stashed/apimachinery/commit/b1f960cd) Apply EmptyDir settings to TmpDir (#719) +- [a8749398](https://github.com/stashed/apimachinery/commit/a8749398) Use FailurePolicy ignore for K8s resource webhooks (#726) +- [af242f16](https://github.com/stashed/apimachinery/commit/af242f16) Don't write secret data inside temp dir (#724) +- [1ede0246](https://github.com/stashed/apimachinery/commit/1ede0246) Use ionice and nice with Restic CMD (#716) +- [ccdd4294](https://github.com/stashed/apimachinery/commit/ccdd4294) Use cleanup-cache flag (#717) +- [9e0bd095](https://github.com/stashed/apimachinery/commit/9e0bd095) Add TempDir and PSP settings for Function (#720) +- [117e6f0b](https://github.com/stashed/apimachinery/commit/117e6f0b) Add support for rest backend (#713) +- [f7d9de0f](https://github.com/stashed/apimachinery/commit/f7d9de0f) Add support for OpenShift DeploymentConfig (#714) +- [94b53f5f](https://github.com/stashed/apimachinery/commit/94b53f5f) Backup and restore Mongo DB (#699) +- [a505764b](https://github.com/stashed/apimachinery/commit/a505764b) Backup and restore MySQL DB (#696) +- [260f79d5](https://github.com/stashed/apimachinery/commit/260f79d5) Backup and restore Postgres DB (#695) +- [dc5d0ce4](https://github.com/stashed/apimachinery/commit/dc5d0ce4) Backup from stdin and dump to stdout (#694) +- [b911253c](https://github.com/stashed/apimachinery/commit/b911253c) Add BackupSession Controller for Sidecar (#701) +- [886adaa9](https://github.com/stashed/apimachinery/commit/886adaa9) Update workload controller for new design (#675) +- [30e17229](https://github.com/stashed/apimachinery/commit/30e17229) Post backup/restore status update (#691) +- [ef3ca6ba](https://github.com/stashed/apimachinery/commit/ef3ca6ba) Backup and restore PVC (#676) +- [e98d1357](https://github.com/stashed/apimachinery/commit/e98d1357) Resolve tasks for backup/restore sessions (#674) +- [2d5e2a40](https://github.com/stashed/apimachinery/commit/2d5e2a40) Add restic wrapper library (#673) +- [22ce2f85](https://github.com/stashed/apimachinery/commit/22ce2f85) Add BackupConfiguration Controller (#671) +- [73478a31](https://github.com/stashed/apimachinery/commit/73478a31) Use ContainerRuntimeSettings in Function spec (#689) +- [8daa144d](https://github.com/stashed/apimachinery/commit/8daa144d) Update Kubernetes client libraries to 1.13.0 (#687) +- [ffe7eff3](https://github.com/stashed/apimachinery/commit/ffe7eff3) Fix v1beta1 api for BackupConfigurationTemplate (#688) +- [6310146c](https://github.com/stashed/apimachinery/commit/6310146c) Introduce v1beta1 api (#647) +- [a806c546](https://github.com/stashed/apimachinery/commit/a806c546) Prepare docs for 0.8.3 release (#683) +- [c0a281a2](https://github.com/stashed/apimachinery/commit/c0a281a2) Update changelog for 0.8.3 (#682) +- [057b41d4](https://github.com/stashed/apimachinery/commit/057b41d4) Update dependencies (#681) +- [ccf44b55](https://github.com/stashed/apimachinery/commit/ccf44b55) Pass pod annotation to deployment (#679) +- [322e9812](https://github.com/stashed/apimachinery/commit/322e9812) Fix the case for deploying using MINGW64 for windows (#678) +- [c096b55a](https://github.com/stashed/apimachinery/commit/c096b55a) Use onessl 0.10.0 (#677) +- [ffa27f22](https://github.com/stashed/apimachinery/commit/ffa27f22) Fix typo +- [f4d6ecc1](https://github.com/stashed/apimachinery/commit/f4d6ecc1) s/rook/azure/ in possible copy/paste error. (#669) +- [99f44fa1](https://github.com/stashed/apimachinery/commit/99f44fa1) Fix builtin monitoring doc (#668) +- [747b7ba2](https://github.com/stashed/apimachinery/commit/747b7ba2) Update install.md +- [85ecd963](https://github.com/stashed/apimachinery/commit/85ecd963) Don't use priority class when operator namespace is not kube-system (#666) +- [78c88a52](https://github.com/stashed/apimachinery/commit/78c88a52) Separate type definitions into individual files (#646) +- [760613d2](https://github.com/stashed/apimachinery/commit/760613d2) Update changelog for 0.8.2 +- [fe861de7](https://github.com/stashed/apimachinery/commit/fe861de7) Prepare docs for 0.8.2 release (#644) +- [a9c7e3da](https://github.com/stashed/apimachinery/commit/a9c7e3da) Update copyright notice for 2019 (#643) +- [5a9efe76](https://github.com/stashed/apimachinery/commit/5a9efe76) Use fullname to generate cleaner name in chart +- [a876a9da](https://github.com/stashed/apimachinery/commit/a876a9da) apply stash.labels to operator pods +- [09b83f2e](https://github.com/stashed/apimachinery/commit/09b83f2e) Use stash.labels template in chart (#642) +- [70d2af23](https://github.com/stashed/apimachinery/commit/70d2af23) Fixed broken link for bakend (#641) +- [21b91a96](https://github.com/stashed/apimachinery/commit/21b91a96) Only mount stash apiserver `tls.crt` into Prometheus (#639) +- [d9c87802](https://github.com/stashed/apimachinery/commit/d9c87802) Fix typo in installer (#638) +- [893b3a41](https://github.com/stashed/apimachinery/commit/893b3a41) Fix monitoring in helm + update doc to match with third-party-tools tutorial (#637) +- [5fd484ba](https://github.com/stashed/apimachinery/commit/5fd484ba) Add certificate health checker (#636) +- [ecbefd44](https://github.com/stashed/apimachinery/commit/ecbefd44) Update install.md +- [5e8221d4](https://github.com/stashed/apimachinery/commit/5e8221d4) Update chart readme (#632) +- [960dac71](https://github.com/stashed/apimachinery/commit/960dac71) Update webhook error message format for Kubernetes 1.13+ (#631) +- [096afccb](https://github.com/stashed/apimachinery/commit/096afccb) Fix typos (#630) +- [e2a7f03a](https://github.com/stashed/apimachinery/commit/e2a7f03a) Fix dependencies. +- [591a7cec](https://github.com/stashed/apimachinery/commit/591a7cec) Update changelog +- [248daebf](https://github.com/stashed/apimachinery/commit/248daebf) Prepare docs for 0.8.1 release (#629) +- [7ce0d537](https://github.com/stashed/apimachinery/commit/7ce0d537) Add missing validator for respository resource in chart (#628) +- [2114829d](https://github.com/stashed/apimachinery/commit/2114829d) Update version matrix +- [18c29c62](https://github.com/stashed/apimachinery/commit/18c29c62) Prepare docs for 0.8.0 release (#626) +- [b5779f22](https://github.com/stashed/apimachinery/commit/b5779f22) Update docs (Minio, Rook, NFS) (#625) +- [fb104264](https://github.com/stashed/apimachinery/commit/fb104264) Use flags.DumpAll to dump flags (#624) +- [7e11a97c](https://github.com/stashed/apimachinery/commit/7e11a97c) Merge commit '619323825a3fabc55ce2584dd63f8005fd3b78b3' +- [8f32db19](https://github.com/stashed/apimachinery/commit/8f32db19) Set periodic analytics (#623) +- [b8b20447](https://github.com/stashed/apimachinery/commit/b8b20447) Fix e2e test (#622) +- [e4da720f](https://github.com/stashed/apimachinery/commit/e4da720f) Pass --enable-***-webhook flags to operator (#619) +- [e5a91c47](https://github.com/stashed/apimachinery/commit/e5a91c47) Add validation webhook xray (#618) +- [de6a6c03](https://github.com/stashed/apimachinery/commit/de6a6c03) Add docs for AKS and EKS (#609) +- [2eb4e9df](https://github.com/stashed/apimachinery/commit/2eb4e9df) Improve monitoring facility (#606) +- [6b1b8f3f](https://github.com/stashed/apimachinery/commit/6b1b8f3f) Use dynamic pushgateway url (#614) +- [4f2aaca3](https://github.com/stashed/apimachinery/commit/4f2aaca3) Pass image pull secrets for cleaner job in chart (#598) +- [5f59b5ba](https://github.com/stashed/apimachinery/commit/5f59b5ba) Update kubernetes client libraries to 1.12.0 (#597) +- [9a9916ac](https://github.com/stashed/apimachinery/commit/9a9916ac) Support LogLevel in chart (#594) +- [b7c9253a](https://github.com/stashed/apimachinery/commit/b7c9253a) Check if Kubernetes version is supported before running operator (#593) +- [a3a0c8d2](https://github.com/stashed/apimachinery/commit/a3a0c8d2) Enable webhooks by default in chart (#591) +- [d84b36ae](https://github.com/stashed/apimachinery/commit/d84b36ae) Update chart readme for cleaner values (#590) +- [dde9fe0f](https://github.com/stashed/apimachinery/commit/dde9fe0f) Update values.yaml +- [b401f6af](https://github.com/stashed/apimachinery/commit/b401f6af) Fix #583 and pushgateway version (#584) +- [df29c67d](https://github.com/stashed/apimachinery/commit/df29c67d) Use --pull flag with docker build (#581) +- [bab17f30](https://github.com/stashed/apimachinery/commit/bab17f30) Merge commit '593cbc0910006952073295cea802d37f30ab8e3f' +- [36a54348](https://github.com/stashed/apimachinery/commit/36a54348) Use kubernetes-1.11.3 (#578) +- [0f78cc59](https://github.com/stashed/apimachinery/commit/0f78cc59) Update CertStore (#576) +- [b6ad4fd8](https://github.com/stashed/apimachinery/commit/b6ad4fd8) Use apps/v1 apigroup in installer scripts (#574) +- [21a3a0fa](https://github.com/stashed/apimachinery/commit/21a3a0fa) Support pod annotations in chart (#573) +- [f4188df6](https://github.com/stashed/apimachinery/commit/f4188df6) Set serviceAccount for clearner job (#572) +- [71419568](https://github.com/stashed/apimachinery/commit/71419568) Cleanup webhooks when chart is deleted (#569) +- [1afecd9c](https://github.com/stashed/apimachinery/commit/1afecd9c) Use IntHash as status.observedGeneration (#568) +- [06fb96ef](https://github.com/stashed/apimachinery/commit/06fb96ef) Update pipeline (#565) +- [a5c10e03](https://github.com/stashed/apimachinery/commit/a5c10e03) Merge commit 'dc51668e81aad9349769f0287cb885477836f2b1' +- [f3e41a08](https://github.com/stashed/apimachinery/commit/f3e41a08) Add observedGenerationHash field (#564) +- [a228cfd5](https://github.com/stashed/apimachinery/commit/a228cfd5) Merge commit 'c73f89c561b2e686d2898b0c8dea8c0bd327e6fd' +- [b9c2405b](https://github.com/stashed/apimachinery/commit/b9c2405b) Fix uninstall for concourse (#563) +- [9b494b4b](https://github.com/stashed/apimachinery/commit/9b494b4b) Fix chart values file (#562) +- [dac75e67](https://github.com/stashed/apimachinery/commit/dac75e67) Improve Helm chart options (#561) +- [fdcd84af](https://github.com/stashed/apimachinery/commit/fdcd84af) Use apps/v1 apigroup (#555) +- [7a3d3a6d](https://github.com/stashed/apimachinery/commit/7a3d3a6d) Merge commit 'e0a3eef3ad5bb45a6967704531a303bc7ea7d865' +- [7ecb7aa6](https://github.com/stashed/apimachinery/commit/7ecb7aa6) Refactor concourse scripts (#554) +- [97675d40](https://github.com/stashed/apimachinery/commit/97675d40) Merge commit '2a5664a73d8d23ced4598e61327a3d7003db2e04' +- [0dde94b8](https://github.com/stashed/apimachinery/commit/0dde94b8) Add AlreadyObserved methods (#553) +- [1471ef4b](https://github.com/stashed/apimachinery/commit/1471ef4b) Add categories support to crds (#552) +- [a49b2e35](https://github.com/stashed/apimachinery/commit/a49b2e35) Improve doc (#550) +- [0f3876ce](https://github.com/stashed/apimachinery/commit/0f3876ce) Fix concourse test (#496) +- [1c7af39a](https://github.com/stashed/apimachinery/commit/1c7af39a) Check for snapshot existence before delete (#548) +- [a06e72b5](https://github.com/stashed/apimachinery/commit/a06e72b5) Fix offline backup (#537) +- [dafa74fb](https://github.com/stashed/apimachinery/commit/dafa74fb) Enable status sub resource for crd yamls (#546) +- [f2a91600](https://github.com/stashed/apimachinery/commit/f2a91600) Remove old UpdateRecoveryStatus +- [6da21a36](https://github.com/stashed/apimachinery/commit/6da21a36) Retry UpdateStatus calls (#544) +- [acfcf7a5](https://github.com/stashed/apimachinery/commit/acfcf7a5) Retry UpdateStatus calls (#543) +- [e180ef6a](https://github.com/stashed/apimachinery/commit/e180ef6a) Revendor objectstore api (#542) +- [71bb0853](https://github.com/stashed/apimachinery/commit/71bb0853) Use kmodules.xyz/objectstore-api (#541) +- [dd3cf1ca](https://github.com/stashed/apimachinery/commit/dd3cf1ca) Merge commit 'da9eaba42e9b93d6975059b7f37c7863e54e1db1' +- [e6370a8b](https://github.com/stashed/apimachinery/commit/e6370a8b) Update install.md +- [676e1d02](https://github.com/stashed/apimachinery/commit/676e1d02) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [e8249dde](https://github.com/stashed/apimachinery/commit/e8249dde) Correctly handle ignored openapi prefixes (#533) +- [90f9a296](https://github.com/stashed/apimachinery/commit/90f9a296) Add rbac permissions for snapshots (#531) +- [f7976e7e](https://github.com/stashed/apimachinery/commit/f7976e7e) Use version and additional columns for crds (#530) +- [f3ec9a1e](https://github.com/stashed/apimachinery/commit/f3ec9a1e) Update client-go to v8.0.0 (#528) +- [3321c0c0](https://github.com/stashed/apimachinery/commit/3321c0c0) Update chart installation instruction for Kubernetes 1.11 (#527) +- [2bfa4a03](https://github.com/stashed/apimachinery/commit/2bfa4a03) Format shell scripts (#526) +- [f83f57d5](https://github.com/stashed/apimachinery/commit/f83f57d5) Merge commit 'bcebfb5adef7b4de9d4da7e48d9ba50a66e75fd3' +- [7a184805](https://github.com/stashed/apimachinery/commit/7a184805) Merge commit '2c8b49681a6875886b6be4d90c35908f12b73c65' +- [ec81f6b9](https://github.com/stashed/apimachinery/commit/ec81f6b9) Enable status subresource for crds (#524) +- [8a3a3bad](https://github.com/stashed/apimachinery/commit/8a3a3bad) Remove status from crd.yaml (#523) +- [0ebf9294](https://github.com/stashed/apimachinery/commit/0ebf9294) Upgrade to restic 0.9.1 (#522) +- [820a432c](https://github.com/stashed/apimachinery/commit/820a432c) Support node selector for recovery job (#516) +- [7313940f](https://github.com/stashed/apimachinery/commit/7313940f) Upgrade to prom/pushgateway:v0.5.2 (#519) +- [762193ce](https://github.com/stashed/apimachinery/commit/762193ce) Remove ops-address port (#518) +- [a944b88a](https://github.com/stashed/apimachinery/commit/a944b88a) Set cpu limits to 100m (#517) +- [02eca27a](https://github.com/stashed/apimachinery/commit/02eca27a) Update stash.sh +- [63783cc8](https://github.com/stashed/apimachinery/commit/63783cc8) Add links to java client +- [25005f65](https://github.com/stashed/apimachinery/commit/25005f65) Move openapi-spec to api folder (#513) +- [02ac221a](https://github.com/stashed/apimachinery/commit/02ac221a) Deploy operator in kube-system namespace via Helm (#511) +- [472d823a](https://github.com/stashed/apimachinery/commit/472d823a) Add togglable tabs for Installation: Script & Helm (#509) +- [60d571e4](https://github.com/stashed/apimachinery/commit/60d571e4) Revendor dependencies (#508) +- [5d56183b](https://github.com/stashed/apimachinery/commit/5d56183b) added front matter (#507) +- [ec715ab3](https://github.com/stashed/apimachinery/commit/ec715ab3) Improve installer (#504) +- [935db661](https://github.com/stashed/apimachinery/commit/935db661) Prepare docs for 0.7.0 release. (#502) +- [ecd85f2a](https://github.com/stashed/apimachinery/commit/ecd85f2a) Prepare docs for 0.7.0-rc.5 (#498) +- [6df2325b](https://github.com/stashed/apimachinery/commit/6df2325b) Fix storage implementation for snapshots (#497) +- [d3fdad71](https://github.com/stashed/apimachinery/commit/d3fdad71) Update changelog (#495) +- [794d4aca](https://github.com/stashed/apimachinery/commit/794d4aca) Delete user roles on purge. (#494) +- [f8744a6f](https://github.com/stashed/apimachinery/commit/f8744a6f) Revert "Add app: stash label to user roles. (#493)" +- [c506dc4c](https://github.com/stashed/apimachinery/commit/c506dc4c) Add app: stash label to user roles. (#493) +- [e1b0d6c7](https://github.com/stashed/apimachinery/commit/e1b0d6c7) Use hooks for user roles and fix hook deletion policy +- [bf59c614](https://github.com/stashed/apimachinery/commit/bf59c614) Use post-install hooks to install admission controller in chart (#492) +- [b50824e2](https://github.com/stashed/apimachinery/commit/b50824e2) Revert "Remove stash crds before uninstalling operator (#458)" +- [7b15b320](https://github.com/stashed/apimachinery/commit/7b15b320) Update changelog (#491) +- [8ec73428](https://github.com/stashed/apimachinery/commit/8ec73428) Prepare docs for 0.7.0-rc.4 (#483) +- [e1967d97](https://github.com/stashed/apimachinery/commit/e1967d97) Avoid creating apiservice when webhooks are not used. (#490) +- [ee1ef7c1](https://github.com/stashed/apimachinery/commit/ee1ef7c1) Install correct version of stash chart (#489) +- [5e5181fc](https://github.com/stashed/apimachinery/commit/5e5181fc) Concourse (#486) +- [02366a87](https://github.com/stashed/apimachinery/commit/02366a87) Revendor (#481) +- [b69f01df](https://github.com/stashed/apimachinery/commit/b69f01df) Support recovering from repository in different namespace (#474) +- [42c42112](https://github.com/stashed/apimachinery/commit/42c42112) Add support for initial backoff to the apiserver call on recover (#476) +- [b3ffb323](https://github.com/stashed/apimachinery/commit/b3ffb323) Typo (`Weclome` → `Welcome`) in page title (#479) +- [c448e138](https://github.com/stashed/apimachinery/commit/c448e138) Update docs (run minio in v1.9.4+ cluster and add example yaml files in respective backends) (#473) +- [6510947d](https://github.com/stashed/apimachinery/commit/6510947d) Fix a typo (#471) +- [5ce9da2d](https://github.com/stashed/apimachinery/commit/5ce9da2d) Don't panic if admission options is nil (#469) +- [7fdf126a](https://github.com/stashed/apimachinery/commit/7fdf126a) Disable admission controllers for webhook server (#468) +- [89f5b0c8](https://github.com/stashed/apimachinery/commit/89f5b0c8) Added SSL support for deleting restic repository from Minio backend (#464) +- [4e328d3e](https://github.com/stashed/apimachinery/commit/4e328d3e) Use new UpdateRecoveryStatus method (#466) +- [166e9283](https://github.com/stashed/apimachinery/commit/166e9283) Add Update***Status helpers (#465) +- [9a3c0b21](https://github.com/stashed/apimachinery/commit/9a3c0b21) Update client-go to 7.0.0 (#463) +- [7f995931](https://github.com/stashed/apimachinery/commit/7f995931) Rename webhook files in chart (#460) +- [2cf5cceb](https://github.com/stashed/apimachinery/commit/2cf5cceb) Update workload api (#459) +- [eeca55cf](https://github.com/stashed/apimachinery/commit/eeca55cf) Remove stash crds before uninstalling operator (#458) +- [b5319061](https://github.com/stashed/apimachinery/commit/b5319061) Export kube-ca only if required (#457) +- [37510e21](https://github.com/stashed/apimachinery/commit/37510e21) Improve installer (#456) +- [9b5fcbb2](https://github.com/stashed/apimachinery/commit/9b5fcbb2) Update changelog (#455) +- [b17c2190](https://github.com/stashed/apimachinery/commit/b17c2190) Various installer fixes (#454) +- [ca561960](https://github.com/stashed/apimachinery/commit/ca561960) Update workload client (#453) +- [28298bd1](https://github.com/stashed/apimachinery/commit/28298bd1) Update workload client (#452) +- [2d5b2882](https://github.com/stashed/apimachinery/commit/2d5b2882) Revendor workload client (#451) +- [274410b9](https://github.com/stashed/apimachinery/commit/274410b9) Update workload api (#450) +- [3899e0b7](https://github.com/stashed/apimachinery/commit/3899e0b7) Fixes RBAC issue in test (#449) +- [5afb9c7f](https://github.com/stashed/apimachinery/commit/5afb9c7f) fixed wipeOut + fixed doc (#447) +- [6565cb35](https://github.com/stashed/apimachinery/commit/6565cb35) Delete profile.out +- [3f7945c2](https://github.com/stashed/apimachinery/commit/3f7945c2) Add docs for GKE and Rook (#430) +- [d317210a](https://github.com/stashed/apimachinery/commit/d317210a) concourse configs (#429) +- [ff9d8e99](https://github.com/stashed/apimachinery/commit/ff9d8e99) Delete restic repository from backend if Repository CRD is deleted (#438) +- [2af3de25](https://github.com/stashed/apimachinery/commit/2af3de25) Use Repository data in Recovery CRD (#436) +- [1f71dae1](https://github.com/stashed/apimachinery/commit/1f71dae1) Update StatefulSet doc (#445) +- [d5a461b3](https://github.com/stashed/apimachinery/commit/d5a461b3) Move Stash swagger.json to top level folder (#441) +- [2a2eb1dd](https://github.com/stashed/apimachinery/commit/2a2eb1dd) Fix go_vet error (#440) +- [40a357e4](https://github.com/stashed/apimachinery/commit/40a357e4) Increase qps and burst limits (#435) +- [ceb8d0fc](https://github.com/stashed/apimachinery/commit/ceb8d0fc) Permit stash operator to perform pods/exec (#433) +- [0aaaf1bf](https://github.com/stashed/apimachinery/commit/0aaaf1bf) Add RBAC instructions for GKE cluster (#432) +- [1c414b05](https://github.com/stashed/apimachinery/commit/1c414b05) Update charts location (#431) +- [4a08b918](https://github.com/stashed/apimachinery/commit/4a08b918) Purge repository objects in installer (#427) +- [a25ff455](https://github.com/stashed/apimachinery/commit/a25ff455) Add SCRIPT_LOCATION variable to installer (#426) +- [4dcfe82f](https://github.com/stashed/apimachinery/commit/4dcfe82f) Show repository snapshot list (#417) +- [d33ffd85](https://github.com/stashed/apimachinery/commit/d33ffd85) Fixed Repository YAML (#425) +- [367009a4](https://github.com/stashed/apimachinery/commit/367009a4) Add delete method for snapshots to swagger.json (#424) +- [84085086](https://github.com/stashed/apimachinery/commit/84085086) Generate swagger.json (#423) +- [36cfec54](https://github.com/stashed/apimachinery/commit/36cfec54) Add install pkg for stash crds (#422) +- [18dc29a5](https://github.com/stashed/apimachinery/commit/18dc29a5) Fix openapi spec for stash crds (#421) +- [22256ccc](https://github.com/stashed/apimachinery/commit/22256ccc) Update README.md +- [12a039f9](https://github.com/stashed/apimachinery/commit/12a039f9) Add registry skeleton for snapshots (#415) +- [c18af633](https://github.com/stashed/apimachinery/commit/c18af633) Update chart readme (#413) +- [5ef3ca58](https://github.com/stashed/apimachinery/commit/5ef3ca58) Add enableAnalytics to chart readme +- [fd0ece69](https://github.com/stashed/apimachinery/commit/fd0ece69) Add frontmatter for repository crd (#412) +- [af50930a](https://github.com/stashed/apimachinery/commit/af50930a) Use separate registry key for docker images (#410) +- [c59e3fbb](https://github.com/stashed/apimachinery/commit/c59e3fbb) Prepare docs for 0.7.0-rc.3 (#411) +- [159c2750](https://github.com/stashed/apimachinery/commit/159c2750) Add test for recovery (#409) +- [aa36b115](https://github.com/stashed/apimachinery/commit/aa36b115) Skip setting ListKind (#407) +- [964c6f35](https://github.com/stashed/apimachinery/commit/964c6f35) Add CRD Validation (#406) +- [a7351a48](https://github.com/stashed/apimachinery/commit/a7351a48) Create repository crd for each Restic repository (#394) +- [273794d8](https://github.com/stashed/apimachinery/commit/273794d8) Generate openapi spec for stash api (#405) +- [9c2df315](https://github.com/stashed/apimachinery/commit/9c2df315) Fix install script for minikube 0.24.x (Kube 1.8.0) (#404) +- [aca52873](https://github.com/stashed/apimachinery/commit/aca52873) Skip downloading onessl if already installed (#401) +- [afb1746b](https://github.com/stashed/apimachinery/commit/afb1746b) Use Restic spec hash instead of resource version to restart pods (#399) +- [44867248](https://github.com/stashed/apimachinery/commit/44867248) Revendor webhook util and jsonpatch fixes (#400) +- [ce710f86](https://github.com/stashed/apimachinery/commit/ce710f86) Check for valid owner object (#397) +- [7b7821da](https://github.com/stashed/apimachinery/commit/7b7821da) Revendor webhook library (#393) +- [f763a5c1](https://github.com/stashed/apimachinery/commit/f763a5c1) Update changelog +- [b9b409e0](https://github.com/stashed/apimachinery/commit/b9b409e0) Prepare docs for 0.7.0-rc.2 (#391) +- [472e7cad](https://github.com/stashed/apimachinery/commit/472e7cad) Update chart version +- [296a6b4d](https://github.com/stashed/apimachinery/commit/296a6b4d) Add variable for dockerRegistry (#390) +- [2f29b8dd](https://github.com/stashed/apimachinery/commit/2f29b8dd) Reorg objects deleted in uninstall command (#389) +- [8a44a744](https://github.com/stashed/apimachinery/commit/8a44a744) Fix --enable-analytics flag (#387) +- [85c0a2a1](https://github.com/stashed/apimachinery/commit/85c0a2a1) Fix flag parsing in tests (#386) +- [e1c1d543](https://github.com/stashed/apimachinery/commit/e1c1d543) Fix Statefulset Example (#385) +- [d0b7eb1c](https://github.com/stashed/apimachinery/commit/d0b7eb1c) Rename --analytics to --enable-analytics (#384) +- [44383721](https://github.com/stashed/apimachinery/commit/44383721) Use separated appscode/kubernetes-webhook-util package (#383) +- [e5199369](https://github.com/stashed/apimachinery/commit/e5199369) Update the image tag in operator.yaml (#382) +- [dd9f165d](https://github.com/stashed/apimachinery/commit/dd9f165d) Don't enable mutator for StatefulSet updates (#381) +- [fe9fcda6](https://github.com/stashed/apimachinery/commit/fe9fcda6) Update docs to 0.7.0-rc.1 (#380) +- [2e5d9bb5](https://github.com/stashed/apimachinery/commit/2e5d9bb5) Add types for Repository apigroup (#377) +- [59f3eb1b](https://github.com/stashed/apimachinery/commit/59f3eb1b) Replace initializers with mutation webhook for workloads (#363) +- [ef98338c](https://github.com/stashed/apimachinery/commit/ef98338c) Merge pull request #375 from galexrt/fix373 +- [37e6f8a8](https://github.com/stashed/apimachinery/commit/37e6f8a8) Add missing front matter (#376) +- [293f27f7](https://github.com/stashed/apimachinery/commit/293f27f7) Update README.md +- [3e1a16ae](https://github.com/stashed/apimachinery/commit/3e1a16ae) Fix buid +- [7d300d87](https://github.com/stashed/apimachinery/commit/7d300d87) Add travis.yaml (#370) +- [9f14db3b](https://github.com/stashed/apimachinery/commit/9f14db3b) Add --purge flag (#369) +- [3e9ac0bc](https://github.com/stashed/apimachinery/commit/3e9ac0bc) Make it clear that installer is a single command (#365) +- [f1f3228d](https://github.com/stashed/apimachinery/commit/f1f3228d) Update installer (#364) +- [048e2f42](https://github.com/stashed/apimachinery/commit/048e2f42) Update chart to match RBAC best practices for charts (#362) +- [b0a50b64](https://github.com/stashed/apimachinery/commit/b0a50b64) Add checks to installer script (#361) +- [d96dd1c8](https://github.com/stashed/apimachinery/commit/d96dd1c8) Use admission hook helpers from kutil (#360) +- [18501324](https://github.com/stashed/apimachinery/commit/18501324) Fix admission webhook flag (#359) +- [731c6e1b](https://github.com/stashed/apimachinery/commit/731c6e1b) Support --enable-admission-webhook=false (#358) +- [41a93897](https://github.com/stashed/apimachinery/commit/41a93897) Sync chart to stable charts repo (#356) +- [f2cb99dd](https://github.com/stashed/apimachinery/commit/f2cb99dd) Use restic 0.8.3 (#355) +- [ce618fd3](https://github.com/stashed/apimachinery/commit/ce618fd3) Update README.md (#352) +- [9b82c516](https://github.com/stashed/apimachinery/commit/9b82c516) Document user roles (#348) +- [ab638a29](https://github.com/stashed/apimachinery/commit/ab638a29) Add upgrade instructions. +- [9369e1bb](https://github.com/stashed/apimachinery/commit/9369e1bb) Add changelog for 0.7.0-rc.0 (#347) +- [03bd2d5f](https://github.com/stashed/apimachinery/commit/03bd2d5f) Implement offline backup for multiple replica (#335) +- [628b1713](https://github.com/stashed/apimachinery/commit/628b1713) Update readme to point to 0.6.4 (#345) +- [68f09062](https://github.com/stashed/apimachinery/commit/68f09062) Don't block deletion of owner by default (#342) +- [7a8f7e29](https://github.com/stashed/apimachinery/commit/7a8f7e29) Skip generating UpdateStatus method (#341) +- [ffd0701b](https://github.com/stashed/apimachinery/commit/ffd0701b) Remove internal types (#340) +- [9b497a83](https://github.com/stashed/apimachinery/commit/9b497a83) Use rbac/v1 apis (#339) +- [5f1a8d58](https://github.com/stashed/apimachinery/commit/5f1a8d58) Add user roles (#338) +- [e909732f](https://github.com/stashed/apimachinery/commit/e909732f) Use restic 0.8.2 (#337) +- [f811c096](https://github.com/stashed/apimachinery/commit/f811c096) Use official code generator scripts (#336) +- [45fe6695](https://github.com/stashed/apimachinery/commit/45fe6695) Update rbac-list.yaml +- [4bab2035](https://github.com/stashed/apimachinery/commit/4bab2035) Update charts to support api registration (#334) +- [e882132d](https://github.com/stashed/apimachinery/commit/e882132d) Fix e2e tests after webhook merger (#333) +- [327dc4d6](https://github.com/stashed/apimachinery/commit/327dc4d6) Ensure stash can be run locally (#332) +- [8b69538e](https://github.com/stashed/apimachinery/commit/8b69538e) Label all stash installer resources +- [201a9e23](https://github.com/stashed/apimachinery/commit/201a9e23) Update Grafana dashboard (#330) +- [ab583820](https://github.com/stashed/apimachinery/commit/ab583820) Delete all stash installer resources +- [f933585b](https://github.com/stashed/apimachinery/commit/f933585b) Use binary operator for checking stauts of semver command +- [3e9418ab](https://github.com/stashed/apimachinery/commit/3e9418ab) Leave secure port unset +- [fedfa749](https://github.com/stashed/apimachinery/commit/fedfa749) Use ${} form for onessl envsubst +- [a6a0a3ec](https://github.com/stashed/apimachinery/commit/a6a0a3ec) Vendor client-go auth pkg (#331) +- [f6f821f3](https://github.com/stashed/apimachinery/commit/f6f821f3) Merge admission webhook and operator into one binary (#329) +- [adf04545](https://github.com/stashed/apimachinery/commit/adf04545) Use envsubst from onessl +- [f90dc3c1](https://github.com/stashed/apimachinery/commit/f90dc3c1) Install admission webhook for Kubernetes >=1.9.0 +- [d4ff727c](https://github.com/stashed/apimachinery/commit/d4ff727c) Merge uninstall script into the stash.sh script (#328) +- [98e2b892](https://github.com/stashed/apimachinery/commit/98e2b892) Implement Pause Restic (#315) +- [f2d86207](https://github.com/stashed/apimachinery/commit/f2d86207) Copy generic-admission-server into pkg (#318) +- [2381c8bc](https://github.com/stashed/apimachinery/commit/2381c8bc) Use shared infromer factory (#317) +- [da343f4e](https://github.com/stashed/apimachinery/commit/da343f4e) Support self-signed ca cert for backends (#294) +- [e3ef7e8e](https://github.com/stashed/apimachinery/commit/e3ef7e8e) Use GetBaseVersion method from kutil (#316) +- [0c3b7cc6](https://github.com/stashed/apimachinery/commit/0c3b7cc6) Update install.md +- [e3e52e79](https://github.com/stashed/apimachinery/commit/e3e52e79) Remove system prefix from admission server rbac +- [373f7a1f](https://github.com/stashed/apimachinery/commit/373f7a1f) Fix webhook command description (#314) +- [57ddc07c](https://github.com/stashed/apimachinery/commit/57ddc07c) Use rbac/v1beta1 api. (#313) +- [5a58a810](https://github.com/stashed/apimachinery/commit/5a58a810) Reduce log level for admission webhook +- [0dee8016](https://github.com/stashed/apimachinery/commit/0dee8016) Support Create & Update operations in admission webhook (#312) +- [2af05ccb](https://github.com/stashed/apimachinery/commit/2af05ccb) Merge webhook plugins into one. (#311) +- [326a2151](https://github.com/stashed/apimachinery/commit/326a2151) Fix installer script +- [f13b1a52](https://github.com/stashed/apimachinery/commit/f13b1a52) Support private docker registry in installer (#310) +- [bb97b9f2](https://github.com/stashed/apimachinery/commit/bb97b9f2) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [5d6fe487](https://github.com/stashed/apimachinery/commit/5d6fe487) Compress go binaries (#309) +- [be4c3242](https://github.com/stashed/apimachinery/commit/be4c3242) Merge commit 'dd01a18d6821b218669437b491e71eff9cf82c89' +- [a7add4ea](https://github.com/stashed/apimachinery/commit/a7add4ea) Merge commit '6cd6efaa2491aea24a0f7f588c86b0ff5ff03283' +- [02c433af](https://github.com/stashed/apimachinery/commit/02c433af) Rename --initializer flag to --enable-initializer (#308) +- [d711439e](https://github.com/stashed/apimachinery/commit/d711439e) Remove STASH_ROLE_TYPE from installer scripts (#307) +- [b607b2ab](https://github.com/stashed/apimachinery/commit/b607b2ab) Use rbac/v1 api (#306) +- [eb4e3fac](https://github.com/stashed/apimachinery/commit/eb4e3fac) Use kubectl auth reconcile (#305) +- [c90dd8e1](https://github.com/stashed/apimachinery/commit/c90dd8e1) Added support for private docker registry (#300) +- [6a624c75](https://github.com/stashed/apimachinery/commit/6a624c75) Add --initializer flag to installer (#304) +- [89115fb2](https://github.com/stashed/apimachinery/commit/89115fb2) Prepare docs for 0.7.0-alpha.0 (#302) +- [9b0130f4](https://github.com/stashed/apimachinery/commit/9b0130f4) Change installer script (#301) +- [e9233056](https://github.com/stashed/apimachinery/commit/e9233056) Merge commit '5e307d69dbf7e02331cc5bc60154e79a52285060' +- [6fda8eb8](https://github.com/stashed/apimachinery/commit/6fda8eb8) Remove TPR to CRD migrator (#298) +- [7216f7b7](https://github.com/stashed/apimachinery/commit/7216f7b7) Update dependencies to Kubernetes 1.9 (#297) +- [f43201d5](https://github.com/stashed/apimachinery/commit/f43201d5) Prepare docs for 0.6.3 +- [ef1196ba](https://github.com/stashed/apimachinery/commit/ef1196ba) Fixed parsing argument error (#291) +- [d88d57cc](https://github.com/stashed/apimachinery/commit/d88d57cc) Update reference docs +- [7398bce7](https://github.com/stashed/apimachinery/commit/7398bce7) Update appscode/go log wrapper (#287) +- [85deef48](https://github.com/stashed/apimachinery/commit/85deef48) Fix inline volumeSource marshalling for LocalSpec (#289) +- [d62b7a77](https://github.com/stashed/apimachinery/commit/d62b7a77) Fix roadmap link +- [96211379](https://github.com/stashed/apimachinery/commit/96211379) Added Grafana Stash overview dashboard (#286) +- [76878d55](https://github.com/stashed/apimachinery/commit/76878d55) Prepare docs for 0.6.2 release (#278) +- [976257be](https://github.com/stashed/apimachinery/commit/976257be) Merge pull request #277 from whereisaaron/master +- [0d5b2f92](https://github.com/stashed/apimachinery/commit/0d5b2f92) Update Helm chart to use newer 'fullname' template that avoid duplicate (e.g. 'stash-stash-...') resource names +- [f1c7ab64](https://github.com/stashed/apimachinery/commit/f1c7ab64) Fix RBAC roles in chart (#276) +- [8f13869d](https://github.com/stashed/apimachinery/commit/8f13869d) Update initializer.md +- [43c1a121](https://github.com/stashed/apimachinery/commit/43c1a121) Update initializer.md +- [3031ea25](https://github.com/stashed/apimachinery/commit/3031ea25) Fix new restic format in upgrade docs (#274) +- [d8bdd9ed](https://github.com/stashed/apimachinery/commit/d8bdd9ed) Reduce operator permissions for service accounts (#270) +- [33e15c12](https://github.com/stashed/apimachinery/commit/33e15c12) Fix formatting of uninstall.md (#269) +- [ac0bcc4e](https://github.com/stashed/apimachinery/commit/ac0bcc4e) Prepare docs for 0.6.1 (#268) +- [bf7406f9](https://github.com/stashed/apimachinery/commit/bf7406f9) Fix upgrade instructions. +- [d1814caa](https://github.com/stashed/apimachinery/commit/d1814caa) Detect analytics client id using env vars (#265) +- [0a320152](https://github.com/stashed/apimachinery/commit/0a320152) Cleanup release script +- [197c7f90](https://github.com/stashed/apimachinery/commit/197c7f90) Prepare docs for 0.6.0 release (#264) +- [68fa5fd3](https://github.com/stashed/apimachinery/commit/68fa5fd3) Reorganize docs (#263) +- [8a189576](https://github.com/stashed/apimachinery/commit/8a189576) Add support for B2 (#262) +- [7dabc027](https://github.com/stashed/apimachinery/commit/7dabc027) Update restic website link (#261) +- [450ed8a7](https://github.com/stashed/apimachinery/commit/450ed8a7) Revendor kutil +- [1411550c](https://github.com/stashed/apimachinery/commit/1411550c) Fix doc +- [c751baa0](https://github.com/stashed/apimachinery/commit/c751baa0) Update docs for unified LocalSpec (#260) +- [d614bdb6](https://github.com/stashed/apimachinery/commit/d614bdb6) Unify LocalSpec and RecoveredVolume (#259) +- [7a8cfd9f](https://github.com/stashed/apimachinery/commit/7a8cfd9f) Remove restic-dependency from recovery (#258) +- [a24707a0](https://github.com/stashed/apimachinery/commit/a24707a0) Update restic version to 0.8.1 (#257) +- [61e86c73](https://github.com/stashed/apimachinery/commit/61e86c73) Use cmp methods from kutil (#255) +- [2677c1d5](https://github.com/stashed/apimachinery/commit/2677c1d5) Remove TryPatch methods (#254) +- [7706452d](https://github.com/stashed/apimachinery/commit/7706452d) Use verb type for mutation (#251) +- [2b3eff73](https://github.com/stashed/apimachinery/commit/2b3eff73) Use CreateOrPatchCronJob from kutil (#250) +- [d86c9ddb](https://github.com/stashed/apimachinery/commit/d86c9ddb) Indicate mutation in PATCH helper method return (#249) +- [98f87c60](https://github.com/stashed/apimachinery/commit/98f87c60) Update RBAC for analytics +- [b1a6b198](https://github.com/stashed/apimachinery/commit/b1a6b198) Simplify clientID generation for analytics (#247) +- [dfbd6691](https://github.com/stashed/apimachinery/commit/dfbd6691) Set analytics clientID (#246) +- [266190d0](https://github.com/stashed/apimachinery/commit/266190d0) Update README.md +- [6e56e5d4](https://github.com/stashed/apimachinery/commit/6e56e5d4) Cleanup docs +- [d7fd65de](https://github.com/stashed/apimachinery/commit/d7fd65de) Reorganize docs (#245) +- [e314b186](https://github.com/stashed/apimachinery/commit/e314b186) Upgrade procedure for 0.5.1 to 0.6.0 (#243) +- [dfc5eeba](https://github.com/stashed/apimachinery/commit/dfc5eeba) Update docs (#236) +- [e30693ac](https://github.com/stashed/apimachinery/commit/e30693ac) Fix retentionPolicyName not found error (#242) +- [d9d63b9f](https://github.com/stashed/apimachinery/commit/d9d63b9f) Lower case workload.kind in prefix (#240) +- [e9796acc](https://github.com/stashed/apimachinery/commit/e9796acc) Use RegisterCRDs helper (#239) +- [a347ce80](https://github.com/stashed/apimachinery/commit/a347ce80) Change left_menu -> menu_name (#235) +- [f5a15dd4](https://github.com/stashed/apimachinery/commit/f5a15dd4) Revendor dependencies (#234) +- [3a63651b](https://github.com/stashed/apimachinery/commit/3a63651b) Implement offline backup (#229) +- [fd5b997c](https://github.com/stashed/apimachinery/commit/fd5b997c) Add aliases for README file (#233) +- [9fa96d42](https://github.com/stashed/apimachinery/commit/9fa96d42) Add Docs Front Matter for 0.5.1 (#231) +- [20f207ea](https://github.com/stashed/apimachinery/commit/20f207ea) Update bundles restic to 0.8.0 (#232) +- [46b995a0](https://github.com/stashed/apimachinery/commit/46b995a0) Revendor kutil (#230) +- [06f4dade](https://github.com/stashed/apimachinery/commit/06f4dade) Run `restic check` once every 3 days (#223) +- [88d0679a](https://github.com/stashed/apimachinery/commit/88d0679a) Record recovery status for individual FileGroup (#222) +- [5bbeab6c](https://github.com/stashed/apimachinery/commit/5bbeab6c) PollInfinitely for recovery job to succeed +- [d18c00b9](https://github.com/stashed/apimachinery/commit/d18c00b9) Dynamically create stash-sidecar ClusterRole in operator (#221) +- [51530bed](https://github.com/stashed/apimachinery/commit/51530bed) Implement workload initializer in stash operator (#207) +- [2739bf10](https://github.com/stashed/apimachinery/commit/2739bf10) Leader election for deployment, replica set and rc (#206) +- [836f8395](https://github.com/stashed/apimachinery/commit/836f8395) Generate docs +- [fd5261e5](https://github.com/stashed/apimachinery/commit/fd5261e5) Implement Recovery for Restic Backup (#202) +- [44062f68](https://github.com/stashed/apimachinery/commit/44062f68) Update install.md +- [1fc29cbf](https://github.com/stashed/apimachinery/commit/1fc29cbf) Update install.md +- [3bf7fb00](https://github.com/stashed/apimachinery/commit/3bf7fb00) Update install.md +- [14ad778f](https://github.com/stashed/apimachinery/commit/14ad778f) Update chart +- [5b35477e](https://github.com/stashed/apimachinery/commit/5b35477e) Update install.md +- [59f2943c](https://github.com/stashed/apimachinery/commit/59f2943c) Update _helpers.tpl +- [a80b1f9d](https://github.com/stashed/apimachinery/commit/a80b1f9d) Support imagePullSecrets in chart +- [dee95f21](https://github.com/stashed/apimachinery/commit/dee95f21) Update _helpers.tpl +- [1fd9876f](https://github.com/stashed/apimachinery/commit/1fd9876f) Make stash chart namespaced (#210) +- [ea616292](https://github.com/stashed/apimachinery/commit/ea616292) Update docs to point to 0.4.2 release +- [1458c97a](https://github.com/stashed/apimachinery/commit/1458c97a) Update codegen.sh +- [8e1ca40b](https://github.com/stashed/apimachinery/commit/8e1ca40b) Use typed versioned client for CRD +- [ed12717a](https://github.com/stashed/apimachinery/commit/ed12717a) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [d938ead0](https://github.com/stashed/apimachinery/commit/d938ead0) Use client-go 5.x +- [499b759a](https://github.com/stashed/apimachinery/commit/499b759a) Update rbac.md +- [da60e496](https://github.com/stashed/apimachinery/commit/da60e496) Add recovery CRD (#201) +- [9b5b6ba9](https://github.com/stashed/apimachinery/commit/9b5b6ba9) Merge commit 'bf3f3307acbd69e5147db8abdb75b1529147f0c5' +- [acd149eb](https://github.com/stashed/apimachinery/commit/acd149eb) Clarify support for DO +- [9d65b92b](https://github.com/stashed/apimachinery/commit/9d65b92b) Prepare docs for 0.5.1 +- [8eedf90f](https://github.com/stashed/apimachinery/commit/8eedf90f) Update RBAC permissions +- [041e109b](https://github.com/stashed/apimachinery/commit/041e109b) Add label to installer objects in rbac mode +- [fad14779](https://github.com/stashed/apimachinery/commit/fad14779) Clarify that --tag foo,tag bar style tags are not supported. (#199) +- [0da46f7d](https://github.com/stashed/apimachinery/commit/0da46f7d) Set hostname based on resource type (#198) +- [d04f26f3](https://github.com/stashed/apimachinery/commit/d04f26f3) Manage RoleBinding for rbac enabled cluster (#197) +- [44b9ea19](https://github.com/stashed/apimachinery/commit/44b9ea19) Update install.md +- [1c098d38](https://github.com/stashed/apimachinery/commit/1c098d38) Update install.md +- [002ee683](https://github.com/stashed/apimachinery/commit/002ee683) Document how to detect operator version (#196) +- [a7fd4940](https://github.com/stashed/apimachinery/commit/a7fd4940) Prepare docs for 0.5.0 release +- [a0cea425](https://github.com/stashed/apimachinery/commit/a0cea425) Rename Scheduler to Controller +- [c094e627](https://github.com/stashed/apimachinery/commit/c094e627) Stop dumping env vars +- [43881e0b](https://github.com/stashed/apimachinery/commit/43881e0b) Prepare docs for 0.5.0-beta.3 release +- [d1654675](https://github.com/stashed/apimachinery/commit/d1654675) Use workqueue for scheduler (#194) +- [7d27c516](https://github.com/stashed/apimachinery/commit/7d27c516) Revise RBAC permissions +- [d53e59a8](https://github.com/stashed/apimachinery/commit/d53e59a8) Prepare docs for 0.5.0-beta.2 +- [fb496b89](https://github.com/stashed/apimachinery/commit/fb496b89) Update tutorial.md (#186) +- [717ee431](https://github.com/stashed/apimachinery/commit/717ee431) Add tests for DO (#193) +- [0306530e](https://github.com/stashed/apimachinery/commit/0306530e) Use object reference to write events +- [dc1fe141](https://github.com/stashed/apimachinery/commit/dc1fe141) Prepare docs for 0.5.0-beta.1 +- [b0f94976](https://github.com/stashed/apimachinery/commit/b0f94976) Fix prometheus metrics collection (#192) +- [060a4748](https://github.com/stashed/apimachinery/commit/060a4748) Replace reflect.Equal with github.com/google/go-cmp (#188) +- [0002e64c](https://github.com/stashed/apimachinery/commit/0002e64c) Skip ReplicaSet owned by Deployments (#187) +- [daf989e6](https://github.com/stashed/apimachinery/commit/daf989e6) Merge commit '32217c844015816b86c46a8d74a175c42f0e307a' +- [cfea8b51](https://github.com/stashed/apimachinery/commit/cfea8b51) Prepare docs for 5.0.0-beta.0 (#185) +- [8cac1df7](https://github.com/stashed/apimachinery/commit/8cac1df7) Rename LastAppliedConfiguration +- [d8ed50dc](https://github.com/stashed/apimachinery/commit/d8ed50dc) Fix e2e tests (#183) +- [9dcef9ef](https://github.com/stashed/apimachinery/commit/9dcef9ef) Use workqueue (#182) +- [c37c155b](https://github.com/stashed/apimachinery/commit/c37c155b) Use Deployment from apps/v1beta1 (#181) +- [7f4653e9](https://github.com/stashed/apimachinery/commit/7f4653e9) Delete *.generated.go files for ugorji (#180) +- [f98e1f7e](https://github.com/stashed/apimachinery/commit/f98e1f7e) Use WaitForCRDReady from kutil (#179) +- [003980d8](https://github.com/stashed/apimachinery/commit/003980d8) Only watch apps/v1beta1 Deployment (#178) +- [1e5eb1ba](https://github.com/stashed/apimachinery/commit/1e5eb1ba) Move kutil to client package (#177) +- [87b78d76](https://github.com/stashed/apimachinery/commit/87b78d76) Generate ugorji stuff (#176) +- [a92313c0](https://github.com/stashed/apimachinery/commit/a92313c0) Remove kubernetes/code-generator from builddeps +- [e74eeb0e](https://github.com/stashed/apimachinery/commit/e74eeb0e) Prepare docs for 0.5.0 (#174) +- [02cd8fe9](https://github.com/stashed/apimachinery/commit/02cd8fe9) Install stash as a critical addon (#173) +- [f1b74850](https://github.com/stashed/apimachinery/commit/f1b74850) Update chart to add roles for CRD +- [5f3061a2](https://github.com/stashed/apimachinery/commit/5f3061a2) Use Namespace() method from kutil. +- [16eaf13c](https://github.com/stashed/apimachinery/commit/16eaf13c) Add release script. +- [2f9775fd](https://github.com/stashed/apimachinery/commit/2f9775fd) Prepare docs for 0.5.0-rc.0 +- [60949d9f](https://github.com/stashed/apimachinery/commit/60949d9f) Revendor kutil. +- [6c3f64fa](https://github.com/stashed/apimachinery/commit/6c3f64fa) Set RESTIC_VER to 0.7.3 (#172) +- [0676e71f](https://github.com/stashed/apimachinery/commit/0676e71f) Refresh charts to match recent convention (#171) +- [ceb87bf7](https://github.com/stashed/apimachinery/commit/ceb87bf7) Fix deployment name in tutorial (#169) +- [081e1fe1](https://github.com/stashed/apimachinery/commit/081e1fe1) Update kutil (#170) +- [5cfd7024](https://github.com/stashed/apimachinery/commit/5cfd7024) Set RESTIC_VER to 0.7.2 +- [7ed720e6](https://github.com/stashed/apimachinery/commit/7ed720e6) Use object ref for Restic +- [e391de24](https://github.com/stashed/apimachinery/commit/e391de24) Fix command in Developer-guide (#168) +- [4fc51330](https://github.com/stashed/apimachinery/commit/4fc51330) Set root scope kinds +- [25b61d96](https://github.com/stashed/apimachinery/commit/25b61d96) Use apis/v1alpha1 instead of internal version (#167) +- [51d82b9b](https://github.com/stashed/apimachinery/commit/51d82b9b) Remove resource:path (#166) +- [fc386932](https://github.com/stashed/apimachinery/commit/fc386932) Use kubernetes/code-generator (#163) +- [0e086fec](https://github.com/stashed/apimachinery/commit/0e086fec) Update kutil +- [819b0364](https://github.com/stashed/apimachinery/commit/819b0364) Expose resync-period as flag +- [ffdecbc7](https://github.com/stashed/apimachinery/commit/ffdecbc7) Remove pkg/analytics +- [4a448fbd](https://github.com/stashed/apimachinery/commit/4a448fbd) Move analytics collector to root command (#164) +- [378e869a](https://github.com/stashed/apimachinery/commit/378e869a) Revendor k8s.io/apiextensions-apiserver (#162) +- [a9b2bb4a](https://github.com/stashed/apimachinery/commit/a9b2bb4a) Migrate TPR to CRD (#160) +- [42e52e41](https://github.com/stashed/apimachinery/commit/42e52e41) Fix Restic (#159) +- [9f04a977](https://github.com/stashed/apimachinery/commit/9f04a977) Update kutil dependency (#158) +- [772866f7](https://github.com/stashed/apimachinery/commit/772866f7) Use CheckAPIVersion() (#157) +- [35bd52a0](https://github.com/stashed/apimachinery/commit/35bd52a0) Use PATCH api instead of UPDATE (#156) +- [0c4d7901](https://github.com/stashed/apimachinery/commit/0c4d7901) Check version using semver library (#152) +- [dee5c57d](https://github.com/stashed/apimachinery/commit/dee5c57d) Update client-go to 4.0.0 (#150) +- [b351150d](https://github.com/stashed/apimachinery/commit/b351150d) Update build commands for restic. (#149) +- [1f3b2d7c](https://github.com/stashed/apimachinery/commit/1f3b2d7c) Update client-go to 3.0.0 from 3.0.0-beta (#148) +- [59e7171e](https://github.com/stashed/apimachinery/commit/59e7171e) Add DCO +- [22ed31d1](https://github.com/stashed/apimachinery/commit/22ed31d1) Fix typos of tutorial.md file (#138) +- [757186ec](https://github.com/stashed/apimachinery/commit/757186ec) Add uninstall.sh script (#144) +- [d3328e52](https://github.com/stashed/apimachinery/commit/d3328e52) Use console type instead of sh +- [1d3c6c27](https://github.com/stashed/apimachinery/commit/1d3c6c27) Prepare docs for 0.4.1 release +- [c1906d66](https://github.com/stashed/apimachinery/commit/c1906d66) Build binary inside Docker image +- [7c528e4a](https://github.com/stashed/apimachinery/commit/7c528e4a) Merge commit 'b8c45d0d4379587a31302b834334047cc77e59db' +- [ad005cab](https://github.com/stashed/apimachinery/commit/ad005cab) Revendor forked robfig/cron (#139) +- [46720dff](https://github.com/stashed/apimachinery/commit/46720dff) Update stash-without-rbac.yaml +- [244f7ca8](https://github.com/stashed/apimachinery/commit/244f7ca8) Add omitempty for Local storage +- [8f479b3c](https://github.com/stashed/apimachinery/commit/8f479b3c) Move resource consts to api pkg +- [ace063eb](https://github.com/stashed/apimachinery/commit/ace063eb) Fix Fake restic resource Url (#137) +- [7ec252b1](https://github.com/stashed/apimachinery/commit/7ec252b1) Clarify bucket location +- [6d31b48b](https://github.com/stashed/apimachinery/commit/6d31b48b) Update gcs-restic.yaml +- [bc394d4a](https://github.com/stashed/apimachinery/commit/bc394d4a) Update backends.md +- [98d90308](https://github.com/stashed/apimachinery/commit/98d90308) Update tutorial.md +- [9a6ea80f](https://github.com/stashed/apimachinery/commit/9a6ea80f) Update backends.md +- [191dd168](https://github.com/stashed/apimachinery/commit/191dd168) Update docs to 0.4.0 release. +- [0ebf939c](https://github.com/stashed/apimachinery/commit/0ebf939c) Update docs to remove setting name for local.VolumeSource +- [7369ffde](https://github.com/stashed/apimachinery/commit/7369ffde) Support selecting restic branch +- [b038ac58](https://github.com/stashed/apimachinery/commit/b038ac58) Prepare docs for 0.4.0 release. +- [df04e61f](https://github.com/stashed/apimachinery/commit/df04e61f) Update concept.md +- [168b1d51](https://github.com/stashed/apimachinery/commit/168b1d51) Rename RepositorySecretName to StorageSecretName (#135) +- [b783c47b](https://github.com/stashed/apimachinery/commit/b783c47b) Rename Volume to VolumeSource (#134) +- [40340c60](https://github.com/stashed/apimachinery/commit/40340c60) Update charts +- [b2e9e439](https://github.com/stashed/apimachinery/commit/b2e9e439) Use VolumeSource instead of Volume for Local backend. (#132) +- [c1a10199](https://github.com/stashed/apimachinery/commit/c1a10199) Update concept.md +- [522e057b](https://github.com/stashed/apimachinery/commit/522e057b) Fix linting issues in chart +- [335b721c](https://github.com/stashed/apimachinery/commit/335b721c) Add String() method to PrefixType. +- [158bdabd](https://github.com/stashed/apimachinery/commit/158bdabd) Remove unused type Source +- [ebee1005](https://github.com/stashed/apimachinery/commit/ebee1005) Update readme +- [13ebd392](https://github.com/stashed/apimachinery/commit/13ebd392) Various corrections to chart based on code review. +- [a96ddcda](https://github.com/stashed/apimachinery/commit/a96ddcda) Prepare docs for 0.3.1 release. +- [dcf34f1c](https://github.com/stashed/apimachinery/commit/dcf34f1c) Support setting compute resources for sidecar (#129) +- [ef468bc0](https://github.com/stashed/apimachinery/commit/ef468bc0) Update chart with rbac +- [fd9d6c02](https://github.com/stashed/apimachinery/commit/fd9d6c02) Update rbac.md +- [f743cb66](https://github.com/stashed/apimachinery/commit/f743cb66) Fix RBAC docs (#127) +- [3cd9c508](https://github.com/stashed/apimachinery/commit/3cd9c508) Update release.md +- [6ff18600](https://github.com/stashed/apimachinery/commit/6ff18600) Merge commit 'fba07b3994b0e1fd3a95c91d890353aa23a0f3c1' +- [0fe79c4b](https://github.com/stashed/apimachinery/commit/0fe79c4b) Print commit timestamp with version command +- [7379cec6](https://github.com/stashed/apimachinery/commit/7379cec6) Prepare docs for 0.3.0 release +- [8632871c](https://github.com/stashed/apimachinery/commit/8632871c) Document RBAC +- [703edc49](https://github.com/stashed/apimachinery/commit/703edc49) Document behavior in case of multiple Restic +- [0282621a](https://github.com/stashed/apimachinery/commit/0282621a) Document e2e test setup +- [8f320ccc](https://github.com/stashed/apimachinery/commit/8f320ccc) Document swift (#124) +- [b6068d83](https://github.com/stashed/apimachinery/commit/b6068d83) Remove support for B2 & Rest server for now. +- [f3f02ecb](https://github.com/stashed/apimachinery/commit/f3f02ecb) Remove Location choice for GCS +- [2ad0c18c](https://github.com/stashed/apimachinery/commit/2ad0c18c) Fix spelling +- [a56137ea](https://github.com/stashed/apimachinery/commit/a56137ea) Update backends.md +- [a0e3f118](https://github.com/stashed/apimachinery/commit/a0e3f118) Update uninstall.md +- [0c270985](https://github.com/stashed/apimachinery/commit/0c270985) Update uninstall.md +- [bca4db3f](https://github.com/stashed/apimachinery/commit/bca4db3f) Use TPR labels to verify installation +- [6cdbd8f5](https://github.com/stashed/apimachinery/commit/6cdbd8f5) Don't fail scheduler if bad credetials are given +- [a61a45eb](https://github.com/stashed/apimachinery/commit/a61a45eb) Change mount path for labels to /etc/stash +- [84c1149a](https://github.com/stashed/apimachinery/commit/84c1149a) Fix remote backend repository format +- [58eeed1c](https://github.com/stashed/apimachinery/commit/58eeed1c) Part 6 - Update docs (#121) +- [21034ebe](https://github.com/stashed/apimachinery/commit/21034ebe) Update docs (#120) +- [f24a1f03](https://github.com/stashed/apimachinery/commit/f24a1f03) Update docs for 0.2.0 release +- [9478e1d6](https://github.com/stashed/apimachinery/commit/9478e1d6) Various bug fixes (#118) +- [ee8fca49](https://github.com/stashed/apimachinery/commit/ee8fca49) Mention swift in readme +- [1b5dd702](https://github.com/stashed/apimachinery/commit/1b5dd702) Update pitch (#117) +- [f6153296](https://github.com/stashed/apimachinery/commit/f6153296) Various changes to RetentionPolicy (#116) +- [943cf880](https://github.com/stashed/apimachinery/commit/943cf880) Update ROADMAP.md +- [5b1bf69e](https://github.com/stashed/apimachinery/commit/5b1bf69e) Update tutorial.md +- [46047d57](https://github.com/stashed/apimachinery/commit/46047d57) Update ROADMAP.md +- [91fc8541](https://github.com/stashed/apimachinery/commit/91fc8541) Update workloads.md +- [6e004526](https://github.com/stashed/apimachinery/commit/6e004526) Part 5 - User Guide (#114) +- [a1d825b5](https://github.com/stashed/apimachinery/commit/a1d825b5) Update ROADMAP.md +- [f8c093a4](https://github.com/stashed/apimachinery/commit/f8c093a4) Part 4- User Guide (#113) +- [735536c4](https://github.com/stashed/apimachinery/commit/735536c4) Part 3 - User Guide (#110) +- [53c775b3](https://github.com/stashed/apimachinery/commit/53c775b3) Part - 2 of User guide (#99) +- [b9d61921](https://github.com/stashed/apimachinery/commit/b9d61921) Update user guide (#94) +- [38612df3](https://github.com/stashed/apimachinery/commit/38612df3) Update release.md +- [612a019b](https://github.com/stashed/apimachinery/commit/612a019b) Update Prometheus job name to use restic ns & name (#93) +- [47b3b9fe](https://github.com/stashed/apimachinery/commit/47b3b9fe) Update README.md +- [6c186ba0](https://github.com/stashed/apimachinery/commit/6c186ba0) Use app & release name labels together in chart +- [b5ed18bc](https://github.com/stashed/apimachinery/commit/b5ed18bc) Update chart readme +- [09c69811](https://github.com/stashed/apimachinery/commit/09c69811) Update Stash chart (#89) +- [a3d0ca9a](https://github.com/stashed/apimachinery/commit/a3d0ca9a) Update CONTRIBUTING.md +- [be57d29e](https://github.com/stashed/apimachinery/commit/be57d29e) Update contribution guide +- [d7cc52af](https://github.com/stashed/apimachinery/commit/d7cc52af) Fix dev guide (#88) +- [b51e6516](https://github.com/stashed/apimachinery/commit/b51e6516) Add docs for commands (#90) +- [c7cac80e](https://github.com/stashed/apimachinery/commit/c7cac80e) Update stash.yaml +- [b6108163](https://github.com/stashed/apimachinery/commit/b6108163) Update stash.yaml +- [0d6b20fc](https://github.com/stashed/apimachinery/commit/0d6b20fc) Change stash version to 0.1.0 +- [aede78dd](https://github.com/stashed/apimachinery/commit/aede78dd) Cleanup test commands +- [272cd162](https://github.com/stashed/apimachinery/commit/272cd162) Add e2e tests for major cloud providers (#84) +- [75c10a5c](https://github.com/stashed/apimachinery/commit/75c10a5c) Add node selector for DaemonSet e2e test +- [51052056](https://github.com/stashed/apimachinery/commit/51052056) Check for successful backup events +- [a22f6c68](https://github.com/stashed/apimachinery/commit/a22f6c68) Fix e2e tests (#83) +- [b4a8af40](https://github.com/stashed/apimachinery/commit/b4a8af40) Add /snapshots endpoint in operator (#82) +- [a6571440](https://github.com/stashed/apimachinery/commit/a6571440) Mount scratchDir with operator (#80) +- [27e45297](https://github.com/stashed/apimachinery/commit/27e45297) Fix scheduler (#79) +- [5617d2ef](https://github.com/stashed/apimachinery/commit/5617d2ef) Test e2e tests (#76) +- [343b29e2](https://github.com/stashed/apimachinery/commit/343b29e2) Remove restic source downloaded for building binary +- [d66b5f7e](https://github.com/stashed/apimachinery/commit/d66b5f7e) Review analytics events. +- [d6c926e3](https://github.com/stashed/apimachinery/commit/d6c926e3) Remove unused and/or duplicate constants +- [97c801aa](https://github.com/stashed/apimachinery/commit/97c801aa) Add ginkgo based e2e tests (#70) +- [a636d882](https://github.com/stashed/apimachinery/commit/a636d882) Create a cli wrapper for restic (#74) +- [365f7478](https://github.com/stashed/apimachinery/commit/365f7478) Revise EnsureXXXSidecar methods (#73) +- [3c0ed950](https://github.com/stashed/apimachinery/commit/3c0ed950) Avoid pushing metrics if missing gateway URL +- [663a7f47](https://github.com/stashed/apimachinery/commit/663a7f47) Fix pushgateway --web.listen-address flag +- [6c120054](https://github.com/stashed/apimachinery/commit/6c120054) Use service account with operator pods +- [7b908422](https://github.com/stashed/apimachinery/commit/7b908422) Create RBAC objects for operator (#69) +- [b29d5e3a](https://github.com/stashed/apimachinery/commit/b29d5e3a) Push metrics to Prometheus push gateway (#67) +- [472a3396](https://github.com/stashed/apimachinery/commit/472a3396) Vendor go-sh dependency (#65) +- [90140fbe](https://github.com/stashed/apimachinery/commit/90140fbe) Use go-sh to execute restic commands (#63) +- [f8173749](https://github.com/stashed/apimachinery/commit/f8173749) Add scratchPad Dir & prefixHostname flags (#62) +- [25d006a7](https://github.com/stashed/apimachinery/commit/25d006a7) Support remote backends (#58) +- [6e13780f](https://github.com/stashed/apimachinery/commit/6e13780f) Expose metrics port from Docker +- [4ce7c500](https://github.com/stashed/apimachinery/commit/4ce7c500) Rename cron pkg to scheduler. +- [94e8dacc](https://github.com/stashed/apimachinery/commit/94e8dacc) Organize backup code. (#54) +- [72992971](https://github.com/stashed/apimachinery/commit/72992971) Synchronize scheduler reconfiguration (#53) +- [23a65283](https://github.com/stashed/apimachinery/commit/23a65283) Build master branch of restic +- [db3db58e](https://github.com/stashed/apimachinery/commit/db3db58e) Fix tag detection from Version +- [8ed3b177](https://github.com/stashed/apimachinery/commit/8ed3b177) Fix unit tests (#51) +- [b4c1e981](https://github.com/stashed/apimachinery/commit/b4c1e981) Update README.md +- [cf75d645](https://github.com/stashed/apimachinery/commit/cf75d645) Run watchers for preferred api group version kind (#50) +- [1d8ffe81](https://github.com/stashed/apimachinery/commit/1d8ffe81) Build restic from source by default (#49) +- [2ceb34ce](https://github.com/stashed/apimachinery/commit/2ceb34ce) Use updated docker build script format +- [1a5464f3](https://github.com/stashed/apimachinery/commit/1a5464f3) Merge commit '6d30c353f174f641159a88f6280f6be163a44cb4' +- [84da3fea](https://github.com/stashed/apimachinery/commit/84da3fea) Watch individual object types. (#48) +- [7e496f22](https://github.com/stashed/apimachinery/commit/7e496f22) Various code cleanup (#47) +- [7a3e1fc6](https://github.com/stashed/apimachinery/commit/7a3e1fc6) Reorganize cron controller (#46) +- [4a85189c](https://github.com/stashed/apimachinery/commit/4a85189c) Check docker image tag before starting operator (#45) +- [3c6c7cd6](https://github.com/stashed/apimachinery/commit/3c6c7cd6) Expose metrics from operator (#44) +- [4a3e8bc3](https://github.com/stashed/apimachinery/commit/4a3e8bc3) Run push gateway as a side-car for restik operator. (#43) +- [51509a81](https://github.com/stashed/apimachinery/commit/51509a81) Pre-install ca-certificates. +- [10fc9162](https://github.com/stashed/apimachinery/commit/10fc9162) Send analytics for start & stop events. +- [1bb9c517](https://github.com/stashed/apimachinery/commit/1bb9c517) Move all commands to root folder. +- [92778ce7](https://github.com/stashed/apimachinery/commit/92778ce7) Remove all reference to k8s.io/kubernetes repo. +- [e010916a](https://github.com/stashed/apimachinery/commit/e010916a) Move main.go to root folder. +- [ab5c7220](https://github.com/stashed/apimachinery/commit/ab5c7220) Merge commit 'e6c0614c629d719cc9300e71a668a43f42b37f68' +- [f86c51e0](https://github.com/stashed/apimachinery/commit/f86c51e0) Point to client-go in versioning policy. +- [28fc893b](https://github.com/stashed/apimachinery/commit/28fc893b) Update README.md +- [8b71920b](https://github.com/stashed/apimachinery/commit/8b71920b) Add analytics (#41) +- [e9dfb675](https://github.com/stashed/apimachinery/commit/e9dfb675) Use V1alpha1SchemeGroupVersion for Restik (#40) +- [cf30acfd](https://github.com/stashed/apimachinery/commit/cf30acfd) Fix registration of wrong group (#39) +- [33174390](https://github.com/stashed/apimachinery/commit/33174390) Upgrade restic version to 0.6.1 (#37) +- [d36ac63b](https://github.com/stashed/apimachinery/commit/d36ac63b) Use client-go (#36) +- [00673a90](https://github.com/stashed/apimachinery/commit/00673a90) Merge commit '4a5c3083fd86cbe409e8a0f8db02ebc92b403cdc' +- [6aa832cf](https://github.com/stashed/apimachinery/commit/6aa832cf) Create conversion_v1alpha1.go +- [792dd3cb](https://github.com/stashed/apimachinery/commit/792dd3cb) Create register_v1alpha1.go +- [5168d87f](https://github.com/stashed/apimachinery/commit/5168d87f) fmt api & client pkg-es +- [63bd2a07](https://github.com/stashed/apimachinery/commit/63bd2a07) Add version policy & analytics collection to readme +- [0d32a717](https://github.com/stashed/apimachinery/commit/0d32a717) Change api version to v1alpha1 (#30) +- [476b4e24](https://github.com/stashed/apimachinery/commit/476b4e24) Merge commit '7ade13456a688a54292abaf589c2e9f1804f7d8b' +- [11e8a6b0](https://github.com/stashed/apimachinery/commit/11e8a6b0) Rename clientset +- [352bce7f](https://github.com/stashed/apimachinery/commit/352bce7f) Rename function and structure (#29) +- [d9f6f85d](https://github.com/stashed/apimachinery/commit/d9f6f85d) Rename Backup into Restik (#28) +- [4bdd455c](https://github.com/stashed/apimachinery/commit/4bdd455c) Move api from k8s-addons (#27) +- [9fb9a1ea](https://github.com/stashed/apimachinery/commit/9fb9a1ea) Add Restik chart (#20) +- [ffd4e2f9](https://github.com/stashed/apimachinery/commit/ffd4e2f9) Bubble up errors to caller (#26) +- [f6e1f093](https://github.com/stashed/apimachinery/commit/f6e1f093) Update README.md +- [15723957](https://github.com/stashed/apimachinery/commit/15723957) Merge commit '958f7da4904598c85aabadf104c687e321eacb33' +- [3409789a](https://github.com/stashed/apimachinery/commit/3409789a) Use unversioned time (#23) +- [8e932b24](https://github.com/stashed/apimachinery/commit/8e932b24) Update design.md +- [4dff3b04](https://github.com/stashed/apimachinery/commit/4dff3b04) Update design.md +- [bf01be6f](https://github.com/stashed/apimachinery/commit/bf01be6f) example added (#19) +- [6c3712fd](https://github.com/stashed/apimachinery/commit/6c3712fd) Use restik api and client from k8s-addons (#18) +- [70b9e4ad](https://github.com/stashed/apimachinery/commit/70b9e4ad) Error print fix (#17) +- [c1cfa79d](https://github.com/stashed/apimachinery/commit/c1cfa79d) Check group registration Before Register Groups (#16) +- [16640d0c](https://github.com/stashed/apimachinery/commit/16640d0c) Add Restik docs (#15) +- [caf774ce](https://github.com/stashed/apimachinery/commit/caf774ce) Restik unit test, e2e test (#14) +- [36909bf0](https://github.com/stashed/apimachinery/commit/36909bf0) Restik create delete initial implementation (#12) +- [183b9a7b](https://github.com/stashed/apimachinery/commit/183b9a7b) Update restic to 0.5.0 +- [850131ea](https://github.com/stashed/apimachinery/commit/850131ea) Don't allow push with tags. +- [2111829a](https://github.com/stashed/apimachinery/commit/2111829a) Unify restic and restik docker images. +- [7d93e330](https://github.com/stashed/apimachinery/commit/7d93e330) Make restic executable. +- [ab14ac0b](https://github.com/stashed/apimachinery/commit/ab14ac0b) Build docker image (#11) +- [bc29563f](https://github.com/stashed/apimachinery/commit/bc29563f) Add links to proposal in readme +- [cafc63fb](https://github.com/stashed/apimachinery/commit/cafc63fb) Use cobra to structure restik commands. +- [8c6425b6](https://github.com/stashed/apimachinery/commit/8c6425b6) Clone skeleton from appscode/k3pc (#10) +- [ba60c6d4](https://github.com/stashed/apimachinery/commit/ba60c6d4) Merge commit 'a3e8a4a46d31a8c6e9fcceda85d3a55f36293f67' as 'hack/libbuild' + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.08.27](https://github.com/stashed/catalog/releases/tag/v2020.08.27) + + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.10.0](https://github.com/stashed/cli/releases/tag/v0.10.0) + +- [8921695](https://github.com/stashed/cli/commit/8921695) Prepare for release v0.10.0 (#41) +- [bcff194](https://github.com/stashed/cli/commit/bcff194) Prepare for release v0.10.0-rc.2 (#40) +- [43e0370](https://github.com/stashed/cli/commit/43e0370) Prepare for release v0.10.0-rc.1 (#39) +- [2c90092](https://github.com/stashed/cli/commit/2c90092) Update README.md +- [fdfe6b8](https://github.com/stashed/cli/commit/fdfe6b8) Prepare for release v0.10.0-rc.0 (#38) +- [132ae15](https://github.com/stashed/cli/commit/132ae15) Fix build (#37) +- [77a76a7](https://github.com/stashed/cli/commit/77a76a7) Update Kubernetes v1.18.3 dependencies (#36) +- [efe0fc5](https://github.com/stashed/cli/commit/efe0fc5) Update Kubernetes v1.18.3 dependencies (#35) +- [d39bd97](https://github.com/stashed/cli/commit/d39bd97) Update Kubernetes v1.18.3 dependencies (#34) +- [3e074e7](https://github.com/stashed/cli/commit/3e074e7) Update Kubernetes v1.18.3 dependencies (#33) +- [f020137](https://github.com/stashed/cli/commit/f020137) Update Kubernetes v1.18.3 dependencies (#32) +- [99d27f0](https://github.com/stashed/cli/commit/99d27f0) Update Kubernetes v1.18.3 dependencies (#31) +- [3c78ec5](https://github.com/stashed/cli/commit/3c78ec5) Use actions/upload-artifact@v2 +- [e416569](https://github.com/stashed/cli/commit/e416569) Update to Kubernetes v1.18.3 (#30) +- [2baaae1](https://github.com/stashed/cli/commit/2baaae1) Update to Kubernetes v1.18.3 (#29) +- [44a1514](https://github.com/stashed/cli/commit/44a1514) Update to Kubernetes v1.18.3 (#28) +- [250372c](https://github.com/stashed/cli/commit/250372c) Prepare for release v0.10.0-beta.1 (#27) +- [3728110](https://github.com/stashed/cli/commit/3728110) Prepare for release v0.10.0-beta.0 (#26) +- [e7111a5](https://github.com/stashed/cli/commit/e7111a5) Update License +- [7fe1e07](https://github.com/stashed/cli/commit/7fe1e07) Update to Kubernetes v1.18.3 (#25) +- [66b3b46](https://github.com/stashed/cli/commit/66b3b46) Shorten command name for cli (#24) +- [b913cfc](https://github.com/stashed/cli/commit/b913cfc) Add workflow to update docs (#23) +- [1881c64](https://github.com/stashed/cli/commit/1881c64) Update update-release-tracker.sh +- [0548bdc](https://github.com/stashed/cli/commit/0548bdc) Update update-release-tracker.sh +- [b1b28ff](https://github.com/stashed/cli/commit/b1b28ff) Use GITHUB_BASE_REF to detect target branch +- [1e16b99](https://github.com/stashed/cli/commit/1e16b99) Add script to update release tracker on pr merge (#21) +- [f91bf33](https://github.com/stashed/cli/commit/f91bf33) Make release non-draft +- [d29bdb6](https://github.com/stashed/cli/commit/d29bdb6) Update .kodiak.toml +- [b727108](https://github.com/stashed/cli/commit/b727108) Update to Kubernetes v1.18.3 (#20) +- [f3f03aa](https://github.com/stashed/cli/commit/f3f03aa) Update to Kubernetes v1.18.3 +- [bcd7c5e](https://github.com/stashed/cli/commit/bcd7c5e) Create .kodiak.toml +- [9882aa2](https://github.com/stashed/cli/commit/9882aa2) Add blank line after license header (#19) +- [7774218](https://github.com/stashed/cli/commit/7774218) Update dev scripts (#18) +- [38eb35c](https://github.com/stashed/cli/commit/38eb35c) Run unit tests against SRC_PKGS +- [526949c](https://github.com/stashed/cli/commit/526949c) Update to Kubernetes v1.18.3 (#17) +- [fc3e6c5](https://github.com/stashed/cli/commit/fc3e6c5) Update crazy-max/ghaction-docker-buildx flag +- [3943575](https://github.com/stashed/cli/commit/3943575) Trigger the workflow on push or pull request + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v1](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v1) + +- [840132d](https://github.com/stashed/elasticsearch/commit/840132d) Prepare for release 5.6.4-v1 (#201) +- [51262cc](https://github.com/stashed/elasticsearch/commit/51262cc) Prepare for release 5.6.4-rc.20200827 (#192) +- [bcba1e7](https://github.com/stashed/elasticsearch/commit/bcba1e7) [cherry-pick] Upload charts without updating index (#184) +- [48d00db](https://github.com/stashed/elasticsearch/commit/48d00db) Prepare for release 5.6.4-rc.20200826 (#175) +- [46c78a6](https://github.com/stashed/elasticsearch/commit/46c78a6) [cherry-pick] Update README.md (#167) +- [df82b88](https://github.com/stashed/elasticsearch/commit/df82b88) Prepare for release 5.6.4-beta.20200826 (#158) +- [465a9f0](https://github.com/stashed/elasticsearch/commit/465a9f0) [cherry-pick] Update Stash installation link (#149) (#150) +- [4fd2af7](https://github.com/stashed/elasticsearch/commit/4fd2af7) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#141) +- [f9f6ab1](https://github.com/stashed/elasticsearch/commit/f9f6ab1) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#133) +- [cf70698](https://github.com/stashed/elasticsearch/commit/cf70698) [cherry-pick] Update chart icon (#123) +- [f1c9257](https://github.com/stashed/elasticsearch/commit/f1c9257) [cherry-pick] Make chart registry configurable (#114) (#115) +- [4f6f04d](https://github.com/stashed/elasticsearch/commit/4f6f04d) Prepare for release 5.6.4-beta.20200709 (#105) +- [c0b63a8](https://github.com/stashed/elasticsearch/commit/c0b63a8) [cherry-pick] Build docker image in release workflow (#96) (#97) +- [7115da1](https://github.com/stashed/elasticsearch/commit/7115da1) Prepare for release 5.6.4-beta.20200708 (#87) +- [f5ab33d](https://github.com/stashed/elasticsearch/commit/f5ab33d) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [7d73d30](https://github.com/stashed/elasticsearch/commit/7d73d30) [cherry-pick] Update License (#69) (#70) +- [04e8a63](https://github.com/stashed/elasticsearch/commit/04e8a63) Add commands to update chart version (#68) +- [3a5cd78](https://github.com/stashed/elasticsearch/commit/3a5cd78) [cherry-pick] Update update-release-tracker.sh (#60) +- [77bb76e](https://github.com/stashed/elasticsearch/commit/77bb76e) [cherry-pick] Update update-release-tracker.sh (#52) +- [3b47ba6](https://github.com/stashed/elasticsearch/commit/3b47ba6) [cherry-pick] Update release.yml (#43) (#44) +- [444cb3b](https://github.com/stashed/elasticsearch/commit/444cb3b) [cherry-pick] Add script to update release tracker on pr merge (#34) (#35) +- [d349617](https://github.com/stashed/elasticsearch/commit/d349617) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#26) +- [4038abd](https://github.com/stashed/elasticsearch/commit/4038abd) Fix chart release process (#24) +- [895a73f](https://github.com/stashed/elasticsearch/commit/895a73f) Update .kodiak.toml +- [6b9451c](https://github.com/stashed/elasticsearch/commit/6b9451c) Allow overwriting secret key via SecretTransformation (#23) +- [0fcb64e](https://github.com/stashed/elasticsearch/commit/0fcb64e) Make waitTimeout Configurable through flag (#22) +- [b3859b9](https://github.com/stashed/elasticsearch/commit/b3859b9) Create .kodiak.toml +- [c0f3b97](https://github.com/stashed/elasticsearch/commit/c0f3b97) Update to Kubernetes v1.18.3 (#21) +- [210dd08](https://github.com/stashed/elasticsearch/commit/210dd08) Update crazy-max/ghaction-docker-buildx flag +- [5c74a42](https://github.com/stashed/elasticsearch/commit/5c74a42) Trigger the workflow on push or pull request +- [76424d0](https://github.com/stashed/elasticsearch/commit/76424d0) Auto generate chart readme file +- [fc144c2](https://github.com/stashed/elasticsearch/commit/fc144c2) Correctly mark optional fields +- [3559c2c](https://github.com/stashed/elasticsearch/commit/3559c2c) Add openapi v3 schema for values file (#18) + + +### [6.2.4-v1](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v1) + +- [931aab3](https://github.com/stashed/elasticsearch/commit/931aab3) Prepare for release 6.2.4-v1 (#202) +- [00cc0e7](https://github.com/stashed/elasticsearch/commit/00cc0e7) Prepare for release 6.2.4-rc.20200827 (#193) +- [54bab71](https://github.com/stashed/elasticsearch/commit/54bab71) [cherry-pick] Upload charts without updating index (#185) +- [e73aada](https://github.com/stashed/elasticsearch/commit/e73aada) Prepare for release 6.2.4-rc.20200826 (#176) +- [3547a90](https://github.com/stashed/elasticsearch/commit/3547a90) [cherry-pick] Update README.md (#168) +- [6c3dfa5](https://github.com/stashed/elasticsearch/commit/6c3dfa5) Prepare for release 6.2.4-beta.20200826 (#159) +- [4aa0746](https://github.com/stashed/elasticsearch/commit/4aa0746) [cherry-pick] Update Stash installation link (#149) (#151) +- [9847b08](https://github.com/stashed/elasticsearch/commit/9847b08) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#142) +- [e13632d](https://github.com/stashed/elasticsearch/commit/e13632d) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#134) +- [94dc85b](https://github.com/stashed/elasticsearch/commit/94dc85b) [cherry-pick] Update chart icon (#124) +- [efc6ad0](https://github.com/stashed/elasticsearch/commit/efc6ad0) [cherry-pick] Make chart registry configurable (#114) (#116) +- [eb90a4d](https://github.com/stashed/elasticsearch/commit/eb90a4d) Prepare for release 6.2.4-beta.20200709 (#106) +- [341d4ad](https://github.com/stashed/elasticsearch/commit/341d4ad) [cherry-pick] Build docker image in release workflow (#96) (#98) +- [ec42b5c](https://github.com/stashed/elasticsearch/commit/ec42b5c) Prepare for release 6.2.4-beta.20200708 (#88) +- [89d065d](https://github.com/stashed/elasticsearch/commit/89d065d) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#80) +- [0210d13](https://github.com/stashed/elasticsearch/commit/0210d13) [cherry-pick] Update License (#69) (#71) +- [a2e7d5f](https://github.com/stashed/elasticsearch/commit/a2e7d5f) Add commands to update chart version (#68) +- [e60d8f5](https://github.com/stashed/elasticsearch/commit/e60d8f5) [cherry-pick] Update update-release-tracker.sh (#61) +- [a91e4a3](https://github.com/stashed/elasticsearch/commit/a91e4a3) [cherry-pick] Update update-release-tracker.sh (#53) +- [0cab17a](https://github.com/stashed/elasticsearch/commit/0cab17a) [cherry-pick] Update release.yml (#43) (#45) +- [778f2fa](https://github.com/stashed/elasticsearch/commit/778f2fa) [cherry-pick] Add script to update release tracker on pr merge (#34) (#36) +- [6ed9b1e](https://github.com/stashed/elasticsearch/commit/6ed9b1e) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#27) +- [fdcde29](https://github.com/stashed/elasticsearch/commit/fdcde29) Fix chart release process (#24) +- [906159b](https://github.com/stashed/elasticsearch/commit/906159b) Update .kodiak.toml +- [dd28147](https://github.com/stashed/elasticsearch/commit/dd28147) Allow overwriting secret key via SecretTransformation (#23) +- [e0be3ed](https://github.com/stashed/elasticsearch/commit/e0be3ed) Make waitTimeout Configurable through flag (#22) +- [ef3a476](https://github.com/stashed/elasticsearch/commit/ef3a476) Create .kodiak.toml +- [cac2d27](https://github.com/stashed/elasticsearch/commit/cac2d27) Update to Kubernetes v1.18.3 (#21) +- [2a32dad](https://github.com/stashed/elasticsearch/commit/2a32dad) Update crazy-max/ghaction-docker-buildx flag +- [eebd43c](https://github.com/stashed/elasticsearch/commit/eebd43c) Trigger the workflow on push or pull request +- [ecf774c](https://github.com/stashed/elasticsearch/commit/ecf774c) Auto generate chart readme file +- [5e0f88c](https://github.com/stashed/elasticsearch/commit/5e0f88c) Correctly mark optional fields +- [59e28fe](https://github.com/stashed/elasticsearch/commit/59e28fe) Add openapi v3 schema for values file (#18) + + +### [6.3.0-v1](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v1) + +- [bbfd144](https://github.com/stashed/elasticsearch/commit/bbfd144) Prepare for release 6.3.0-v1 (#203) +- [4bf05ac](https://github.com/stashed/elasticsearch/commit/4bf05ac) Prepare for release 6.3.0-rc.20200827 (#194) +- [16053f8](https://github.com/stashed/elasticsearch/commit/16053f8) [cherry-pick] Upload charts without updating index (#186) +- [0cafcc1](https://github.com/stashed/elasticsearch/commit/0cafcc1) Prepare for release 6.3.0-rc.20200826 (#177) +- [c1ac9ec](https://github.com/stashed/elasticsearch/commit/c1ac9ec) [cherry-pick] Update README.md (#169) +- [4a32c49](https://github.com/stashed/elasticsearch/commit/4a32c49) Prepare for release 6.3.0-beta.20200826 (#160) +- [4bc4449](https://github.com/stashed/elasticsearch/commit/4bc4449) [cherry-pick] Update Stash installation link (#149) (#152) +- [31d3860](https://github.com/stashed/elasticsearch/commit/31d3860) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#143) +- [c19466a](https://github.com/stashed/elasticsearch/commit/c19466a) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#135) +- [1aaa172](https://github.com/stashed/elasticsearch/commit/1aaa172) [cherry-pick] Update chart icon (#125) +- [30412a8](https://github.com/stashed/elasticsearch/commit/30412a8) [cherry-pick] Make chart registry configurable (#114) (#117) +- [ba97538](https://github.com/stashed/elasticsearch/commit/ba97538) Prepare for release 6.3.0-beta.20200709 (#107) +- [fe8fad4](https://github.com/stashed/elasticsearch/commit/fe8fad4) [cherry-pick] Build docker image in release workflow (#96) (#99) +- [671e33a](https://github.com/stashed/elasticsearch/commit/671e33a) Prepare for release 6.3.0-beta.20200708 (#89) +- [c5b5810](https://github.com/stashed/elasticsearch/commit/c5b5810) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#81) +- [a2139f0](https://github.com/stashed/elasticsearch/commit/a2139f0) [cherry-pick] Update License (#69) (#72) +- [3ffe99c](https://github.com/stashed/elasticsearch/commit/3ffe99c) Add commands to update chart version (#68) +- [4232c66](https://github.com/stashed/elasticsearch/commit/4232c66) [cherry-pick] Update update-release-tracker.sh (#62) +- [edbc756](https://github.com/stashed/elasticsearch/commit/edbc756) [cherry-pick] Update update-release-tracker.sh (#54) +- [476a2ef](https://github.com/stashed/elasticsearch/commit/476a2ef) [cherry-pick] Update release.yml (#43) (#46) +- [f0b82c7](https://github.com/stashed/elasticsearch/commit/f0b82c7) [cherry-pick] Add script to update release tracker on pr merge (#34) (#37) +- [4908f3a](https://github.com/stashed/elasticsearch/commit/4908f3a) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#28) +- [5a35f5c](https://github.com/stashed/elasticsearch/commit/5a35f5c) Fix chart release process (#24) +- [6b491ca](https://github.com/stashed/elasticsearch/commit/6b491ca) Update .kodiak.toml +- [4aaf57b](https://github.com/stashed/elasticsearch/commit/4aaf57b) Allow overwriting secret key via SecretTransformation (#23) +- [eaaa73a](https://github.com/stashed/elasticsearch/commit/eaaa73a) Make waitTimeout Configurable through flag (#22) +- [a4d67ec](https://github.com/stashed/elasticsearch/commit/a4d67ec) Create .kodiak.toml +- [f644e81](https://github.com/stashed/elasticsearch/commit/f644e81) Update to Kubernetes v1.18.3 (#21) +- [1f37605](https://github.com/stashed/elasticsearch/commit/1f37605) Update crazy-max/ghaction-docker-buildx flag +- [1e8d99b](https://github.com/stashed/elasticsearch/commit/1e8d99b) Trigger the workflow on push or pull request +- [07ae51e](https://github.com/stashed/elasticsearch/commit/07ae51e) Auto generate chart readme file +- [e8e4382](https://github.com/stashed/elasticsearch/commit/e8e4382) Correctly mark optional fields +- [cd05619](https://github.com/stashed/elasticsearch/commit/cd05619) Add openapi v3 schema for values file (#18) + + +### [6.4.0-v1](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v1) + +- [32230ba](https://github.com/stashed/elasticsearch/commit/32230ba) Prepare for release 6.4.0-v1 (#204) +- [c37a5b5](https://github.com/stashed/elasticsearch/commit/c37a5b5) Prepare for release 6.4.0-rc.20200827 (#195) +- [6a44a65](https://github.com/stashed/elasticsearch/commit/6a44a65) [cherry-pick] Upload charts without updating index (#187) +- [92d193d](https://github.com/stashed/elasticsearch/commit/92d193d) Prepare for release 6.4.0-rc.20200826 (#178) +- [6c2c0c1](https://github.com/stashed/elasticsearch/commit/6c2c0c1) [cherry-pick] Update README.md (#170) +- [0770775](https://github.com/stashed/elasticsearch/commit/0770775) Prepare for release 6.4.0-beta.20200826 (#161) +- [38be1db](https://github.com/stashed/elasticsearch/commit/38be1db) [cherry-pick] Update Stash installation link (#149) (#153) +- [87ca905](https://github.com/stashed/elasticsearch/commit/87ca905) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#144) +- [75dd0a5](https://github.com/stashed/elasticsearch/commit/75dd0a5) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#136) +- [ad75b67](https://github.com/stashed/elasticsearch/commit/ad75b67) [cherry-pick] Update chart icon (#126) +- [e5e9c7b](https://github.com/stashed/elasticsearch/commit/e5e9c7b) [cherry-pick] Make chart registry configurable (#114) (#118) +- [223de60](https://github.com/stashed/elasticsearch/commit/223de60) Prepare for release 6.4.0-beta.20200709 (#108) +- [3eb01b0](https://github.com/stashed/elasticsearch/commit/3eb01b0) [cherry-pick] Build docker image in release workflow (#96) (#100) +- [cc612b9](https://github.com/stashed/elasticsearch/commit/cc612b9) Prepare for release 6.4.0-beta.20200708 (#90) +- [f92c1c7](https://github.com/stashed/elasticsearch/commit/f92c1c7) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#82) +- [f54017a](https://github.com/stashed/elasticsearch/commit/f54017a) [cherry-pick] Update License (#69) (#73) +- [7ad416e](https://github.com/stashed/elasticsearch/commit/7ad416e) Add commands to update chart version (#68) +- [af7e6b4](https://github.com/stashed/elasticsearch/commit/af7e6b4) [cherry-pick] Update update-release-tracker.sh (#63) +- [a7477ba](https://github.com/stashed/elasticsearch/commit/a7477ba) [cherry-pick] Update update-release-tracker.sh (#55) +- [98c4094](https://github.com/stashed/elasticsearch/commit/98c4094) [cherry-pick] Update release.yml (#43) (#47) +- [59323ef](https://github.com/stashed/elasticsearch/commit/59323ef) [cherry-pick] Add script to update release tracker on pr merge (#34) (#38) +- [0b9c91c](https://github.com/stashed/elasticsearch/commit/0b9c91c) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#29) +- [900203b](https://github.com/stashed/elasticsearch/commit/900203b) Fix chart release process (#24) +- [cfe9a92](https://github.com/stashed/elasticsearch/commit/cfe9a92) Update .kodiak.toml +- [aa1fe2c](https://github.com/stashed/elasticsearch/commit/aa1fe2c) Allow overwriting secret key via SecretTransformation (#23) +- [a8153db](https://github.com/stashed/elasticsearch/commit/a8153db) Make waitTimeout Configurable through flag (#22) +- [55c09d2](https://github.com/stashed/elasticsearch/commit/55c09d2) Create .kodiak.toml +- [1623bac](https://github.com/stashed/elasticsearch/commit/1623bac) Update to Kubernetes v1.18.3 (#21) +- [5467acc](https://github.com/stashed/elasticsearch/commit/5467acc) Update crazy-max/ghaction-docker-buildx flag +- [82a9e18](https://github.com/stashed/elasticsearch/commit/82a9e18) Trigger the workflow on push or pull request +- [50e977c](https://github.com/stashed/elasticsearch/commit/50e977c) Auto generate chart readme file +- [9057ff5](https://github.com/stashed/elasticsearch/commit/9057ff5) Correctly mark optional fields +- [13753df](https://github.com/stashed/elasticsearch/commit/13753df) Add openapi v3 schema for values file (#18) + + +### [6.5.3-v1](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v1) + +- [03483cd](https://github.com/stashed/elasticsearch/commit/03483cd) Prepare for release 6.5.3-v1 (#205) +- [68b5356](https://github.com/stashed/elasticsearch/commit/68b5356) Prepare for release 6.5.3-rc.20200827 (#196) +- [babe6ed](https://github.com/stashed/elasticsearch/commit/babe6ed) [cherry-pick] Upload charts without updating index (#188) +- [b50a46f](https://github.com/stashed/elasticsearch/commit/b50a46f) Prepare for release 6.5.3-rc.20200826 (#179) +- [c600cf4](https://github.com/stashed/elasticsearch/commit/c600cf4) [cherry-pick] Update README.md (#171) +- [58af00f](https://github.com/stashed/elasticsearch/commit/58af00f) Prepare for release 6.5.3-beta.20200826 (#162) +- [1365067](https://github.com/stashed/elasticsearch/commit/1365067) [cherry-pick] Update Stash installation link (#149) (#154) +- [16f9593](https://github.com/stashed/elasticsearch/commit/16f9593) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#145) +- [8413eba](https://github.com/stashed/elasticsearch/commit/8413eba) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#137) +- [b0237a3](https://github.com/stashed/elasticsearch/commit/b0237a3) [cherry-pick] Update chart icon (#127) +- [daec12d](https://github.com/stashed/elasticsearch/commit/daec12d) [cherry-pick] Make chart registry configurable (#114) (#119) +- [27ca5d7](https://github.com/stashed/elasticsearch/commit/27ca5d7) Prepare for release 6.5.3-beta.20200709 (#109) +- [cfc95c6](https://github.com/stashed/elasticsearch/commit/cfc95c6) [cherry-pick] Build docker image in release workflow (#96) (#101) +- [398bb23](https://github.com/stashed/elasticsearch/commit/398bb23) Prepare for release 6.5.3-beta.20200708 (#91) +- [2644470](https://github.com/stashed/elasticsearch/commit/2644470) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#83) +- [f2550a7](https://github.com/stashed/elasticsearch/commit/f2550a7) [cherry-pick] Update License (#69) (#74) +- [a6e78ba](https://github.com/stashed/elasticsearch/commit/a6e78ba) Add commands to update chart version (#68) +- [f748f8a](https://github.com/stashed/elasticsearch/commit/f748f8a) [cherry-pick] Update update-release-tracker.sh (#64) +- [3834375](https://github.com/stashed/elasticsearch/commit/3834375) [cherry-pick] Update update-release-tracker.sh (#56) +- [199053c](https://github.com/stashed/elasticsearch/commit/199053c) [cherry-pick] Update release.yml (#43) (#48) +- [c1e785f](https://github.com/stashed/elasticsearch/commit/c1e785f) [cherry-pick] Add script to update release tracker on pr merge (#34) (#39) +- [8b7e78c](https://github.com/stashed/elasticsearch/commit/8b7e78c) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#30) +- [d36469f](https://github.com/stashed/elasticsearch/commit/d36469f) Fix chart release process (#24) +- [973b2c0](https://github.com/stashed/elasticsearch/commit/973b2c0) Update .kodiak.toml +- [f85e675](https://github.com/stashed/elasticsearch/commit/f85e675) Allow overwriting secret key via SecretTransformation (#23) +- [6d12042](https://github.com/stashed/elasticsearch/commit/6d12042) Make waitTimeout Configurable through flag (#22) +- [e7cfd20](https://github.com/stashed/elasticsearch/commit/e7cfd20) Create .kodiak.toml +- [bc228b6](https://github.com/stashed/elasticsearch/commit/bc228b6) Update to Kubernetes v1.18.3 (#21) +- [12c840e](https://github.com/stashed/elasticsearch/commit/12c840e) Update crazy-max/ghaction-docker-buildx flag +- [4cbb496](https://github.com/stashed/elasticsearch/commit/4cbb496) Trigger the workflow on push or pull request +- [9a6392c](https://github.com/stashed/elasticsearch/commit/9a6392c) Auto generate chart readme file +- [44be3d5](https://github.com/stashed/elasticsearch/commit/44be3d5) Correctly mark optional fields +- [86d7264](https://github.com/stashed/elasticsearch/commit/86d7264) Add openapi v3 schema for values file (#18) + + +### [6.8.0-v1](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v1) + +- [94537ac](https://github.com/stashed/elasticsearch/commit/94537ac) Prepare for release 6.8.0-v1 (#206) +- [74bcf84](https://github.com/stashed/elasticsearch/commit/74bcf84) Prepare for release 6.8.0-rc.20200827 (#197) +- [a836713](https://github.com/stashed/elasticsearch/commit/a836713) [cherry-pick] Upload charts without updating index (#189) +- [0f1874b](https://github.com/stashed/elasticsearch/commit/0f1874b) Prepare for release 6.8.0-rc.20200826 (#180) +- [db75b3b](https://github.com/stashed/elasticsearch/commit/db75b3b) [cherry-pick] Update README.md (#172) +- [8811915](https://github.com/stashed/elasticsearch/commit/8811915) Prepare for release 6.8.0-beta.20200826 (#163) +- [46e0b2a](https://github.com/stashed/elasticsearch/commit/46e0b2a) [cherry-pick] Update Stash installation link (#149) (#155) +- [9a00bba](https://github.com/stashed/elasticsearch/commit/9a00bba) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#146) +- [f0ae71f](https://github.com/stashed/elasticsearch/commit/f0ae71f) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#138) +- [9561dd8](https://github.com/stashed/elasticsearch/commit/9561dd8) [cherry-pick] Update chart icon (#128) +- [bc40c89](https://github.com/stashed/elasticsearch/commit/bc40c89) [cherry-pick] Make chart registry configurable (#114) (#120) +- [ebff50b](https://github.com/stashed/elasticsearch/commit/ebff50b) Prepare for release 6.8.0-beta.20200709 (#110) +- [c4322e7](https://github.com/stashed/elasticsearch/commit/c4322e7) [cherry-pick] Build docker image in release workflow (#96) (#102) +- [7c3b8da](https://github.com/stashed/elasticsearch/commit/7c3b8da) Prepare for release 6.8.0-beta.20200708 (#92) +- [3f7975e](https://github.com/stashed/elasticsearch/commit/3f7975e) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#84) +- [ee4b2d9](https://github.com/stashed/elasticsearch/commit/ee4b2d9) [cherry-pick] Update License (#69) (#75) +- [5658bcf](https://github.com/stashed/elasticsearch/commit/5658bcf) Add commands to update chart version (#68) +- [e79b0c3](https://github.com/stashed/elasticsearch/commit/e79b0c3) [cherry-pick] Update update-release-tracker.sh (#65) +- [d3a4ebb](https://github.com/stashed/elasticsearch/commit/d3a4ebb) [cherry-pick] Update update-release-tracker.sh (#57) +- [22f1387](https://github.com/stashed/elasticsearch/commit/22f1387) [cherry-pick] Update release.yml (#43) (#49) +- [94f3e61](https://github.com/stashed/elasticsearch/commit/94f3e61) [cherry-pick] Add script to update release tracker on pr merge (#34) (#40) +- [00e3510](https://github.com/stashed/elasticsearch/commit/00e3510) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#31) +- [f9ed864](https://github.com/stashed/elasticsearch/commit/f9ed864) Fix chart release process (#24) +- [b629030](https://github.com/stashed/elasticsearch/commit/b629030) Update .kodiak.toml +- [0c4cd3b](https://github.com/stashed/elasticsearch/commit/0c4cd3b) Allow overwriting secret key via SecretTransformation (#23) +- [dbd81ad](https://github.com/stashed/elasticsearch/commit/dbd81ad) Make waitTimeout Configurable through flag (#22) +- [fc71aac](https://github.com/stashed/elasticsearch/commit/fc71aac) Create .kodiak.toml +- [da8f470](https://github.com/stashed/elasticsearch/commit/da8f470) Update to Kubernetes v1.18.3 (#21) +- [ee7cc8d](https://github.com/stashed/elasticsearch/commit/ee7cc8d) Update crazy-max/ghaction-docker-buildx flag +- [66e3fa8](https://github.com/stashed/elasticsearch/commit/66e3fa8) Trigger the workflow on push or pull request +- [af6e9ba](https://github.com/stashed/elasticsearch/commit/af6e9ba) Auto generate chart readme file +- [ae3168a](https://github.com/stashed/elasticsearch/commit/ae3168a) Correctly mark optional fields +- [700bda7](https://github.com/stashed/elasticsearch/commit/700bda7) Add openapi v3 schema for values file (#18) + + +### [7.2.0-v1](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v1) + +- [a4f5de4](https://github.com/stashed/elasticsearch/commit/a4f5de4) Prepare for release 7.2.0-v1 (#207) +- [036e850](https://github.com/stashed/elasticsearch/commit/036e850) Prepare for release 7.2.0-rc.20200827 (#198) +- [54fd94d](https://github.com/stashed/elasticsearch/commit/54fd94d) [cherry-pick] Upload charts without updating index (#190) +- [592ebd3](https://github.com/stashed/elasticsearch/commit/592ebd3) Prepare for release 7.2.0-rc.20200826 (#181) +- [29f8c8f](https://github.com/stashed/elasticsearch/commit/29f8c8f) [cherry-pick] Update README.md (#173) +- [bd2c6bc](https://github.com/stashed/elasticsearch/commit/bd2c6bc) Prepare for release 7.2.0-beta.20200826 (#164) +- [2c3a9e1](https://github.com/stashed/elasticsearch/commit/2c3a9e1) [cherry-pick] Update Stash installation link (#149) (#156) +- [c862e31](https://github.com/stashed/elasticsearch/commit/c862e31) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#147) +- [1010749](https://github.com/stashed/elasticsearch/commit/1010749) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#139) +- [b0cac90](https://github.com/stashed/elasticsearch/commit/b0cac90) [cherry-pick] Update chart icon (#129) +- [abd52d3](https://github.com/stashed/elasticsearch/commit/abd52d3) [cherry-pick] Make chart registry configurable (#114) (#121) +- [bf94d4d](https://github.com/stashed/elasticsearch/commit/bf94d4d) Prepare for release 7.2.0-beta.20200709 (#111) +- [d1cdabd](https://github.com/stashed/elasticsearch/commit/d1cdabd) [cherry-pick] Build docker image in release workflow (#96) (#103) +- [756fd43](https://github.com/stashed/elasticsearch/commit/756fd43) Prepare for release 7.2.0-beta.20200708 (#93) +- [b3432e1](https://github.com/stashed/elasticsearch/commit/b3432e1) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#85) +- [281635d](https://github.com/stashed/elasticsearch/commit/281635d) [cherry-pick] Update License (#69) (#76) +- [497de33](https://github.com/stashed/elasticsearch/commit/497de33) Add commands to update chart version (#68) +- [fd38969](https://github.com/stashed/elasticsearch/commit/fd38969) [cherry-pick] Update update-release-tracker.sh (#66) +- [e5941de](https://github.com/stashed/elasticsearch/commit/e5941de) [cherry-pick] Update update-release-tracker.sh (#58) +- [e59ef4e](https://github.com/stashed/elasticsearch/commit/e59ef4e) [cherry-pick] Update release.yml (#43) (#50) +- [05145d3](https://github.com/stashed/elasticsearch/commit/05145d3) [cherry-pick] Add script to update release tracker on pr merge (#34) (#41) +- [ee1d54b](https://github.com/stashed/elasticsearch/commit/ee1d54b) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#32) +- [2179a5b](https://github.com/stashed/elasticsearch/commit/2179a5b) Fix chart release process (#24) +- [846f589](https://github.com/stashed/elasticsearch/commit/846f589) Update .kodiak.toml +- [fe25329](https://github.com/stashed/elasticsearch/commit/fe25329) Allow overwriting secret key via SecretTransformation (#23) +- [14c4329](https://github.com/stashed/elasticsearch/commit/14c4329) Make waitTimeout Configurable through flag (#22) +- [9e9da11](https://github.com/stashed/elasticsearch/commit/9e9da11) Create .kodiak.toml +- [a4136d6](https://github.com/stashed/elasticsearch/commit/a4136d6) Update to Kubernetes v1.18.3 (#21) +- [76eeee5](https://github.com/stashed/elasticsearch/commit/76eeee5) Update crazy-max/ghaction-docker-buildx flag +- [c7b7250](https://github.com/stashed/elasticsearch/commit/c7b7250) Trigger the workflow on push or pull request +- [cebf7fc](https://github.com/stashed/elasticsearch/commit/cebf7fc) Auto generate chart readme file +- [64104e9](https://github.com/stashed/elasticsearch/commit/64104e9) Correctly mark optional fields +- [d7807e4](https://github.com/stashed/elasticsearch/commit/d7807e4) Add openapi v3 schema for values file (#18) + + +### [7.3.2-v1](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v1) + +- [c451831](https://github.com/stashed/elasticsearch/commit/c451831) Prepare for release 7.3.2-v1 (#208) +- [c6f8b5d](https://github.com/stashed/elasticsearch/commit/c6f8b5d) Prepare for release 7.3.2-rc.20200827 (#199) +- [0f8ba19](https://github.com/stashed/elasticsearch/commit/0f8ba19) [cherry-pick] Upload charts without updating index (#191) +- [d502610](https://github.com/stashed/elasticsearch/commit/d502610) Prepare for release 7.3.2-rc.20200826 (#182) +- [00b3cee](https://github.com/stashed/elasticsearch/commit/00b3cee) [cherry-pick] Update README.md (#174) +- [a163678](https://github.com/stashed/elasticsearch/commit/a163678) Prepare for release 7.3.2-beta.20200826 (#165) +- [152792e](https://github.com/stashed/elasticsearch/commit/152792e) [cherry-pick] Update Stash installation link (#149) (#157) +- [2d0f427](https://github.com/stashed/elasticsearch/commit/2d0f427) [cherry-pick] Make image.tag in values.yaml file same as the $APP_VERSION (#132) (#148) +- [281a0ce](https://github.com/stashed/elasticsearch/commit/281a0ce) [cherry-pick] Fix output format + Add PreBackupActions logic (#131) (#140) +- [e89cbde](https://github.com/stashed/elasticsearch/commit/e89cbde) [cherry-pick] Update chart icon (#130) +- [a4c3327](https://github.com/stashed/elasticsearch/commit/a4c3327) [cherry-pick] Make chart registry configurable (#114) (#122) +- [d0e8ff7](https://github.com/stashed/elasticsearch/commit/d0e8ff7) Prepare for release 7.3.2-beta.20200709 (#112) +- [0b0df2e](https://github.com/stashed/elasticsearch/commit/0b0df2e) [cherry-pick] Build docker image in release workflow (#96) (#104) +- [7ca1e93](https://github.com/stashed/elasticsearch/commit/7ca1e93) Prepare for release 7.3.2-beta.20200708 (#94) +- [8d81227](https://github.com/stashed/elasticsearch/commit/8d81227) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#86) +- [a095aa8](https://github.com/stashed/elasticsearch/commit/a095aa8) [cherry-pick] Update License (#69) (#77) +- [28fd99f](https://github.com/stashed/elasticsearch/commit/28fd99f) Add commands to update chart version (#68) +- [40ea5b4](https://github.com/stashed/elasticsearch/commit/40ea5b4) [cherry-pick] Update update-release-tracker.sh (#67) +- [83391c5](https://github.com/stashed/elasticsearch/commit/83391c5) [cherry-pick] Update update-release-tracker.sh (#59) +- [3968178](https://github.com/stashed/elasticsearch/commit/3968178) [cherry-pick] Update release.yml (#43) (#51) +- [b8a89f4](https://github.com/stashed/elasticsearch/commit/b8a89f4) [cherry-pick] Add script to update release tracker on pr merge (#34) (#42) +- [2d87390](https://github.com/stashed/elasticsearch/commit/2d87390) [cherry-pick] Add workflow to cherry pick commits to master (#25) (#33) +- [f367b58](https://github.com/stashed/elasticsearch/commit/f367b58) Fix chart release process (#24) +- [74b4d4b](https://github.com/stashed/elasticsearch/commit/74b4d4b) Update .kodiak.toml +- [40f7aa5](https://github.com/stashed/elasticsearch/commit/40f7aa5) Allow overwriting secret key via SecretTransformation (#23) +- [f223f71](https://github.com/stashed/elasticsearch/commit/f223f71) Make waitTimeout Configurable through flag (#22) +- [911d6cb](https://github.com/stashed/elasticsearch/commit/911d6cb) Create .kodiak.toml +- [ea27783](https://github.com/stashed/elasticsearch/commit/ea27783) Update to Kubernetes v1.18.3 (#21) +- [2e1b526](https://github.com/stashed/elasticsearch/commit/2e1b526) Update crazy-max/ghaction-docker-buildx flag +- [987346a](https://github.com/stashed/elasticsearch/commit/987346a) Trigger the workflow on push or pull request +- [83197f1](https://github.com/stashed/elasticsearch/commit/83197f1) Auto generate chart readme file +- [da8d9f0](https://github.com/stashed/elasticsearch/commit/da8d9f0) Correctly mark optional fields +- [808a7c0](https://github.com/stashed/elasticsearch/commit/808a7c0) Add openapi v3 schema for values file (#18) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.10.0](https://github.com/stashed/installer/releases/tag/v0.10.0) + +- [cc6a53e](https://github.com/stashed/installer/commit/cc6a53e) Prepare for release v0.10.0 (#93) +- [7d5e440](https://github.com/stashed/installer/commit/7d5e440) Prepare for release v0.10.0-rc.2 (#92) +- [f4cae9f](https://github.com/stashed/installer/commit/f4cae9f) Upload charts without updating index +- [90d9c52](https://github.com/stashed/installer/commit/90d9c52) Update Kubernetes v1.18.3 dependencies (#91) +- [037a349](https://github.com/stashed/installer/commit/037a349) Prepare for release v0.10.0-rc.1 (#90) +- [f94e175](https://github.com/stashed/installer/commit/f94e175) Correctly pass license to CI workflow +- [9f6539d](https://github.com/stashed/installer/commit/9f6539d) Update stash-enterprise chart version +- [5904e2c](https://github.com/stashed/installer/commit/5904e2c) Update README.md +- [d3d30cc](https://github.com/stashed/installer/commit/d3d30cc) Add link to the steps to get a license (#89) +- [1fb05d9](https://github.com/stashed/installer/commit/1fb05d9) Issue license for testing enterprise charts (#88) +- [6018270](https://github.com/stashed/installer/commit/6018270) Prepare for release v0.10.0-rc.0 (#87) +- [9da1502](https://github.com/stashed/installer/commit/9da1502) Port changes from enterprise version (#85) +- [0838112](https://github.com/stashed/installer/commit/0838112) Add offline license verification (#84) +- [d869f33](https://github.com/stashed/installer/commit/d869f33) Always give use permission for baseline psp to operator (#83) +- [d1e0142](https://github.com/stashed/installer/commit/d1e0142) Support Snapshot listing for NFS backend without workload running (#80) +- [53bab27](https://github.com/stashed/installer/commit/53bab27) Pass imagePullSecrets as operator flag (#71) +- [4e3a984](https://github.com/stashed/installer/commit/4e3a984) Update to Kubernetes v1.18.3 (#79) +- [6e57dd4](https://github.com/stashed/installer/commit/6e57dd4) Update to Kubernetes v1.18.3 (#78) +- [5c681fe](https://github.com/stashed/installer/commit/5c681fe) Update to Kubernetes v1.18.3 (#77) +- [c268a57](https://github.com/stashed/installer/commit/c268a57) Make chart registry configurable +- [bed8319](https://github.com/stashed/installer/commit/bed8319) Prepare for release v0.10.0-beta.1 (#76) +- [cd44ba9](https://github.com/stashed/installer/commit/cd44ba9) Prepare for release v0.10.0-beta.0 (#75) +- [a04e173](https://github.com/stashed/installer/commit/a04e173) Publish to testing dir for alpha/beta releases +- [4b23e1c](https://github.com/stashed/installer/commit/4b23e1c) Update License (#74) +- [9b7a4e0](https://github.com/stashed/installer/commit/9b7a4e0) Update to Kubernetes v1.18.3 (#72) +- [4318306](https://github.com/stashed/installer/commit/4318306) Update ci.yml +- [15d1594](https://github.com/stashed/installer/commit/15d1594) Fix Stash Enterprise installer (#70) +- [31c9dcc](https://github.com/stashed/installer/commit/31c9dcc) Tag chart and app version as string for yq (#69) +- [1782049](https://github.com/stashed/installer/commit/1782049) Update links (#68) +- [634da4d](https://github.com/stashed/installer/commit/634da4d) Update update-release-tracker.sh +- [1155610](https://github.com/stashed/installer/commit/1155610) Update update-release-tracker.sh +- [1b10b5e](https://github.com/stashed/installer/commit/1b10b5e) Add script to update release tracker on pr merge (#67) +- [ce0b28e](https://github.com/stashed/installer/commit/ce0b28e) Update release workflow +- [c3ac668](https://github.com/stashed/installer/commit/c3ac668) Update ci.yml +- [98bad7e](https://github.com/stashed/installer/commit/98bad7e) Add Stash Enterprise chart (#63) +- [73f52a6](https://github.com/stashed/installer/commit/73f52a6) Add commands to update chart (#65) +- [0dc7f91](https://github.com/stashed/installer/commit/0dc7f91) Fix chart release process (#64) +- [0d5c4e1](https://github.com/stashed/installer/commit/0d5c4e1) Update .kodiak.toml +- [3b53e64](https://github.com/stashed/installer/commit/3b53e64) Update to Kubernetes v1.18.3 (#58) +- [43c5dbe](https://github.com/stashed/installer/commit/43c5dbe) Update to Kubernetes v1.18.3 +- [b9e784c](https://github.com/stashed/installer/commit/b9e784c) Create .kodiak.toml +- [b30b3b0](https://github.com/stashed/installer/commit/b30b3b0) Merge pull request #57 from stashed/psp +- [1b89401](https://github.com/stashed/installer/commit/1b89401) Disable apparmor and seccomp by default +- [6bed1aa](https://github.com/stashed/installer/commit/6bed1aa) Pass psp names for the jobs through flag +- [bd35d81](https://github.com/stashed/installer/commit/bd35d81) Always use baseline psp for stash +- [4e3474a](https://github.com/stashed/installer/commit/4e3474a) Add RBAC permission for generic-garbage-collector (#56) +- [be006f6](https://github.com/stashed/installer/commit/be006f6) Permit configmap list/watch -ing for delegated authentication checking (#55) +- [5685c15](https://github.com/stashed/installer/commit/5685c15) Update dependencies +- [8b7b805](https://github.com/stashed/installer/commit/8b7b805) Update dependencies +- [d2b2b09](https://github.com/stashed/installer/commit/d2b2b09) Generate both v1beta1 and v1 CRD YAML (#54) +- [7fbcb29](https://github.com/stashed/installer/commit/7fbcb29) Update to Kubernetes v1.18.3 (#53) +- [88e5e8c](https://github.com/stashed/installer/commit/88e5e8c) Use Go 1.14.3 +- [8e56cb1](https://github.com/stashed/installer/commit/8e56cb1) Trigger build on push to only master branch +- [562caf8](https://github.com/stashed/installer/commit/562caf8) Use recommended kubernetes app labels (#52) +- [cc55e5a](https://github.com/stashed/installer/commit/cc55e5a) Trigger the workflow on push or pull request +- [fd8acf5](https://github.com/stashed/installer/commit/fd8acf5) Update chart readme +- [672f37e](https://github.com/stashed/installer/commit/672f37e) Show examples in chart readme +- [39f4ca1](https://github.com/stashed/installer/commit/39f4ca1) Auto generate chart readme file (#50) +- [47f4250](https://github.com/stashed/installer/commit/47f4250) Update release.yml +- [b68d9cb](https://github.com/stashed/installer/commit/b68d9cb) Cleanup newlines +- [20d51b0](https://github.com/stashed/installer/commit/20d51b0) Reformat stash chart template (#49) +- [65f8bee](https://github.com/stashed/installer/commit/65f8bee) Use kubectl v1.16 as cleaner (#48) +- [85a7cfd](https://github.com/stashed/installer/commit/85a7cfd) Rename prometheus.io/coreos-operator to prometheus.io/operator (#47) +- [b042def](https://github.com/stashed/installer/commit/b042def) Move apireg annotation to operator pod (#46) +- [a543953](https://github.com/stashed/installer/commit/a543953) Various cleanup (#44) +- [b6e2bec](https://github.com/stashed/installer/commit/b6e2bec) Fix helm install --wait flag (#42) +- [806aada](https://github.com/stashed/installer/commit/806aada) Do not harcode namespace (#40) +- [a2713aa](https://github.com/stashed/installer/commit/a2713aa) Add release script to upload charts (#39) +- [57f829a](https://github.com/stashed/installer/commit/57f829a) Prepare charts for v0.9.0-rc.6 release (#38) +- [72e0aff](https://github.com/stashed/installer/commit/72e0aff) Properly mark optional fields (#37) +- [388fcc0](https://github.com/stashed/installer/commit/388fcc0) Update chart readme +- [8595fa6](https://github.com/stashed/installer/commit/8595fa6) Properly mark options fields. (#36) +- [4c491b6](https://github.com/stashed/installer/commit/4c491b6) Prepare v0.9.0-rc.4 release (#35) +- [79f59b6](https://github.com/stashed/installer/commit/79f59b6) Allow specifying rather than generating certs (#34) +- [23a9b97](https://github.com/stashed/installer/commit/23a9b97) Test against k8s 1.11 +- [a0b9659](https://github.com/stashed/installer/commit/a0b9659) Bring back support for k8s 1.11 (#33) +- [c753211](https://github.com/stashed/installer/commit/c753211) Change minimum k8s req to 1.12 and use helm 3 in chart readme (#32) +- [3dec466](https://github.com/stashed/installer/commit/3dec466) Update twitter account +- [3ab35e3](https://github.com/stashed/installer/commit/3ab35e3) Delete orphaned apiservice (#31) +- [a9c33b3](https://github.com/stashed/installer/commit/a9c33b3) Delete script based installer (#30) +- [2d9ea3d](https://github.com/stashed/installer/commit/2d9ea3d) Pass imagePullSecrets via service account (#29) +- [04f65d8](https://github.com/stashed/installer/commit/04f65d8) Add endpoint get permission (#26) +- [e5a3418](https://github.com/stashed/installer/commit/e5a3418) Use helm 3 for chart testing (#28) +- [19fa9b6](https://github.com/stashed/installer/commit/19fa9b6) Move chart Vaules of the root of the spec. (#27) +- [26fcf6c](https://github.com/stashed/installer/commit/26fcf6c) Use int32 for Stash operator installer CRD +- [f41c997](https://github.com/stashed/installer/commit/f41c997) Update license headers +- [baa751a](https://github.com/stashed/installer/commit/baa751a) Run fuzz tests for generated API schemas (#25) +- [b92981a](https://github.com/stashed/installer/commit/b92981a) Update client-go to kubernetes-1.16.3 (#24) +- [310e243](https://github.com/stashed/installer/commit/310e243) Fix #981 RBAC permissions missing from chart (#22) +- [77703f3](https://github.com/stashed/installer/commit/77703f3) Properly handle empty image pull secret name in installer (#23) +- [31b4634](https://github.com/stashed/installer/commit/31b4634) Update swagger.json +- [9425820](https://github.com/stashed/installer/commit/9425820) Update Chart.yaml +- [74abc6e](https://github.com/stashed/installer/commit/74abc6e) Add StashOperator crd (#17) +- [c0ff647](https://github.com/stashed/installer/commit/c0ff647) Fix rbac permission for PVC in chart (#20) +- [51a712b](https://github.com/stashed/installer/commit/51a712b) Test against multiple k8s version (#19) +- [2afb705](https://github.com/stashed/installer/commit/2afb705) Update icon +- [ea1561e](https://github.com/stashed/installer/commit/ea1561e) Fix linter errors +- [170af3a](https://github.com/stashed/installer/commit/170af3a) Enable race detector +- [848e9fa](https://github.com/stashed/installer/commit/848e9fa) Test installers (#18) +- [2b3b665](https://github.com/stashed/installer/commit/2b3b665) Prepare for release v0.9.0-rc.2 (#16) +- [b1ef8b5](https://github.com/stashed/installer/commit/b1ef8b5) Remove --enable-status-subresource flag (#15) +- [0c87e77](https://github.com/stashed/installer/commit/0c87e77) Add delete permission ClusterRole to vs (#13) +- [5387b57](https://github.com/stashed/installer/commit/5387b57) Ignore error while delete resources from uninstaller script (#14) +- [b8dc5e9](https://github.com/stashed/installer/commit/b8dc5e9) Prepare for v0.9.0-rc.1 release (#12) +- [48f2f3b](https://github.com/stashed/installer/commit/48f2f3b) Download onessl version v0.13.1 for Kubernetes 1.16 fix (#11) +- [4c0ce1f](https://github.com/stashed/installer/commit/4c0ce1f) Update onessl for Kubernetes 1.16+ (#10) +- [478817b](https://github.com/stashed/installer/commit/478817b) Run as fsGroup: 65535 (#8) +- [366a4f5](https://github.com/stashed/installer/commit/366a4f5) Prepare v0.9.0-rc.0 release (#7) +- [8674bc6](https://github.com/stashed/installer/commit/8674bc6) Rename BackupConfigurationTemplates to BackupBlueprints (#6) +- [fcf2297](https://github.com/stashed/installer/commit/fcf2297) Cleanup default Functions & Tasks while uninstall+ refactor installer script (#4) +- [68de871](https://github.com/stashed/installer/commit/68de871) Always set --image-tag flag (#3) +- [4b3f2a7](https://github.com/stashed/installer/commit/4b3f2a7) Fix purging non-namespaced crd (#2) +- [e9f0e2c](https://github.com/stashed/installer/commit/e9f0e2c) Fix script path for installer repo (#1) +- [525fff8](https://github.com/stashed/installer/commit/525fff8) Add License & DCO +- [257f0f2](https://github.com/stashed/installer/commit/257f0f2) Added ARM64 support to the install script and manifest (#802) +- [e490367](https://github.com/stashed/installer/commit/e490367) Add Makefile (#800) +- [cb2289d](https://github.com/stashed/installer/commit/cb2289d) VolumeSnapshot (#787) +- [bde38a8](https://github.com/stashed/installer/commit/bde38a8) Remove importance of order of rule in RestoreSession (#795) +- [0c150a7](https://github.com/stashed/installer/commit/0c150a7) Support PSP enabled cluster (#729) +- [f0d7e34](https://github.com/stashed/installer/commit/f0d7e34) Update package path to stash.appscode.dev/stash (#776) +- [f10a28c](https://github.com/stashed/installer/commit/f10a28c) Remove --rbac flag (#761) +- [1ab5470](https://github.com/stashed/installer/commit/1ab5470) Stash v1beta1 E2E test for DaemonSet (#741) +- [786b827](https://github.com/stashed/installer/commit/786b827) Stash V1beta1 E2E test for Deployment (#710) +- [0d65d5d](https://github.com/stashed/installer/commit/0d65d5d) Fix openapi path prefixes for validators and mutators (#732) +- [13ddd4b](https://github.com/stashed/installer/commit/13ddd4b) Rename admission webhooks to avoid name collision (#725) +- [bd11979](https://github.com/stashed/installer/commit/bd11979) Use FailurePolicy ignore for K8s resource webhooks (#726) +- [bbd9bd4](https://github.com/stashed/installer/commit/bbd9bd4) Add support for OpenShift DeploymentConfig (#714) +- [8c019a2](https://github.com/stashed/installer/commit/8c019a2) Update workload controller for new design (#675) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-v1](https://github.com/stashed/mongodb/releases/tag/3.4.1-v1) + +- [1ca3960](https://github.com/stashed/mongodb/commit/1ca3960) Prepare for release 3.4.1-v1 (#243) +- [9890353](https://github.com/stashed/mongodb/commit/9890353) Prepare for release 3.4.1-rc.20200827 (#231) +- [d941a98](https://github.com/stashed/mongodb/commit/d941a98) [cherry-pick] Upload charts without updating index (#220) +- [1d2811c](https://github.com/stashed/mongodb/commit/1d2811c) Prepare for release 3.4.1-rc.20200826 (#208) +- [b3501fb](https://github.com/stashed/mongodb/commit/b3501fb) [cherry-pick] Update README.md (#197) +- [1c08dfd](https://github.com/stashed/mongodb/commit/1c08dfd) Prepare for release 3.4.1-beta.20200826 (#185) +- [a4d2b49](https://github.com/stashed/mongodb/commit/a4d2b49) [cherry-pick] Update Stash installation link (#173) (#174) +- [3ae949e](https://github.com/stashed/mongodb/commit/3ae949e) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#162) +- [75ebc36](https://github.com/stashed/mongodb/commit/75ebc36) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#151) +- [c261899](https://github.com/stashed/mongodb/commit/c261899) [cherry-pick] Update chart icon (#138) +- [465f36c](https://github.com/stashed/mongodb/commit/465f36c) [cherry-pick] Make chart registry configurable (#126) (#127) +- [a354b6c](https://github.com/stashed/mongodb/commit/a354b6c) Prepare for release 3.4.1-beta.20200709 (#114) +- [2269fa6](https://github.com/stashed/mongodb/commit/2269fa6) [cherry-pick] Build docker image in release workflow (#102) (#103) +- [47b1d72](https://github.com/stashed/mongodb/commit/47b1d72) Prepare for release 3.4.1-beta.20200708 (#90) +- [67b293a](https://github.com/stashed/mongodb/commit/67b293a) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [d8c9489](https://github.com/stashed/mongodb/commit/d8c9489) [cherry-pick] Update License (#66) (#67) +- [13f91cd](https://github.com/stashed/mongodb/commit/13f91cd) Add commands to update chart version (#65) +- [5ec5c3c](https://github.com/stashed/mongodb/commit/5ec5c3c) [cherry-pick] Update update-release-tracker.sh (#54) +- [409301c](https://github.com/stashed/mongodb/commit/409301c) Add script to update release tracker on pr merge (#41) +- [deed415](https://github.com/stashed/mongodb/commit/deed415) [cherry-pick] Update release.yml (#42) (#43) +- [7efcffb](https://github.com/stashed/mongodb/commit/7efcffb) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#30) +- [2ed8277](https://github.com/stashed/mongodb/commit/2ed8277) Fix chart release process (#28) +- [b7b3bc6](https://github.com/stashed/mongodb/commit/b7b3bc6) Update .kodiak.toml +- [33abf73](https://github.com/stashed/mongodb/commit/33abf73) Allow overwriting secret key via SecretTransformation (#27) +- [ad30b7d](https://github.com/stashed/mongodb/commit/ad30b7d) Make waitTimeout configurable through flag (#26) +- [80f62d1](https://github.com/stashed/mongodb/commit/80f62d1) Create .kodiak.toml +- [d8e7b86](https://github.com/stashed/mongodb/commit/d8e7b86) Fix typos +- [f5dfaea](https://github.com/stashed/mongodb/commit/f5dfaea) Update to Kubernetes v1.18.3 (#25) +- [4a462cb](https://github.com/stashed/mongodb/commit/4a462cb) Update crazy-max/ghaction-docker-buildx flag +- [961fad3](https://github.com/stashed/mongodb/commit/961fad3) Fix typos +- [14024ab](https://github.com/stashed/mongodb/commit/14024ab) Trigger the workflow on push or pull request +- [c80a723](https://github.com/stashed/mongodb/commit/c80a723) Auto generate chart readme file +- [223dbfd](https://github.com/stashed/mongodb/commit/223dbfd) Correctly mark optional fields +- [8b3b75d](https://github.com/stashed/mongodb/commit/8b3b75d) Add openapi v3 schema for values file (#21) +- [6229815](https://github.com/stashed/mongodb/commit/6229815) Update CI configuration +- [3f2f090](https://github.com/stashed/mongodb/commit/3f2f090) Add support for specifying S3 region (#20) +- [55f007d](https://github.com/stashed/mongodb/commit/55f007d) Make output.json file writable to all users + Fix Flag types (#19) +- [93643f3](https://github.com/stashed/mongodb/commit/93643f3) Fix with arguments to mongorestore (#14) +- [0d9595c](https://github.com/stashed/mongodb/commit/0d9595c) Update hugo frontmatter for stash website +- [cb27f47](https://github.com/stashed/mongodb/commit/cb27f47) Added --nsExclude=config.changelog to standalone +- [a941eb0](https://github.com/stashed/mongodb/commit/a941eb0) Enable race detector in e2e tests +- [2ed387f](https://github.com/stashed/mongodb/commit/2ed387f) Fix broken link and add AppBinding scheme field (#13) +- [8dd0ea1](https://github.com/stashed/mongodb/commit/8dd0ea1) Test installers (#12) +- [5199d20](https://github.com/stashed/mongodb/commit/5199d20) Add license header to files (#11) +- [f89adec](https://github.com/stashed/mongodb/commit/f89adec) Split imports into 3 parts (#10) +- [1c447f4](https://github.com/stashed/mongodb/commit/1c447f4) Fix BackupSession's Print Columns (#9) +- [201a06e](https://github.com/stashed/mongodb/commit/201a06e) Enable make ci (#8) +- [613feea](https://github.com/stashed/mongodb/commit/613feea) Remove --enable-status-subresource flag (#7) +- [95c3974](https://github.com/stashed/mongodb/commit/95c3974) Update totalHosts from backup/restore process (#6) +- [3097a67](https://github.com/stashed/mongodb/commit/3097a67) Fix argument passing (#5) +- [ccdf81f](https://github.com/stashed/mongodb/commit/ccdf81f) Remove support for arm and arm64 architecture +- [f0b8e87](https://github.com/stashed/mongodb/commit/f0b8e87) Prepare for 3.4.17 release +- [16ad538](https://github.com/stashed/mongodb/commit/16ad538) Prepare for 3.4 release +- [c4eb920](https://github.com/stashed/mongodb/commit/c4eb920) Add release pipeline (#4) +- [02b9a9f](https://github.com/stashed/mongodb/commit/02b9a9f) Update go.yml +- [7ede5fd](https://github.com/stashed/mongodb/commit/7ede5fd) Finalize doc template (#3) +- [bb3b7fd](https://github.com/stashed/mongodb/commit/bb3b7fd) Enable GitHub actions +- [6874298](https://github.com/stashed/mongodb/commit/6874298) Improve error handling + remove metrics handling part (#2) +- [000f2c6](https://github.com/stashed/mongodb/commit/000f2c6) Use docker buildx to build docker image +- [867a620](https://github.com/stashed/mongodb/commit/867a620) Use github.com/Azure/go-autorest/autorest@v0.7.0 +- [ecb6143](https://github.com/stashed/mongodb/commit/ecb6143) run `go fmt` +- [618886d](https://github.com/stashed/mongodb/commit/618886d) Improve Mongodump for sharded and replicaset cluster && Chart and documentation (#1) +- [4a7d5c8](https://github.com/stashed/mongodb/commit/4a7d5c8) Reorganize repo +- [1972a9a](https://github.com/stashed/mongodb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/mongodb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/mongodb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/mongodb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/mongodb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/mongodb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/mongodb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/mongodb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/mongodb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/mongodb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/mongodb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/mongodb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/mongodb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/mongodb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/mongodb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/mongodb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/mongodb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/mongodb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/mongodb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/mongodb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/mongodb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/mongodb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/mongodb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/mongodb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/mongodb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/mongodb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/mongodb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/mongodb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/mongodb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/mongodb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/mongodb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/mongodb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/mongodb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/mongodb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/mongodb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/mongodb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/mongodb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/mongodb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/mongodb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/mongodb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/mongodb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/mongodb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/mongodb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/mongodb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/mongodb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/mongodb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/mongodb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/mongodb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/mongodb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/mongodb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/mongodb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/mongodb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/mongodb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/mongodb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/mongodb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/mongodb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/mongodb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/mongodb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/mongodb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/mongodb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/mongodb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/mongodb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/mongodb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/mongodb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/mongodb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/mongodb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/mongodb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/mongodb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/mongodb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/mongodb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/mongodb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/mongodb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/mongodb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/mongodb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/mongodb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/mongodb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/mongodb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/mongodb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/mongodb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/mongodb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/mongodb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/mongodb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/mongodb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/mongodb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/mongodb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/mongodb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/mongodb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/mongodb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/mongodb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/mongodb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/mongodb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/mongodb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/mongodb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/mongodb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/mongodb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/mongodb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/mongodb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/mongodb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/mongodb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/mongodb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/mongodb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/mongodb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/mongodb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/mongodb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/mongodb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/mongodb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/mongodb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/mongodb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/mongodb/commit/60ed8f7) Update user guide (#94) + + +### [3.4.2-v1](https://github.com/stashed/mongodb/releases/tag/3.4.2-v1) + + + +### [3.6.1-v1](https://github.com/stashed/mongodb/releases/tag/3.6.1-v1) + + + +### [3.6.8-v1](https://github.com/stashed/mongodb/releases/tag/3.6.8-v1) + +- [384ac18](https://github.com/stashed/mongodb/commit/384ac18) Prepare for release 3.6.8-v1 (#246) +- [fae0fa3](https://github.com/stashed/mongodb/commit/fae0fa3) Prepare for release 3.6.8-rc.20200827 (#234) +- [59da835](https://github.com/stashed/mongodb/commit/59da835) [cherry-pick] Upload charts without updating index (#223) +- [ae2ba11](https://github.com/stashed/mongodb/commit/ae2ba11) Prepare for release 3.6.8-rc.20200826 (#211) +- [f6bbd70](https://github.com/stashed/mongodb/commit/f6bbd70) [cherry-pick] Update README.md (#200) +- [a2098a8](https://github.com/stashed/mongodb/commit/a2098a8) Prepare for release 3.6.8-beta.20200826 (#188) +- [81cad93](https://github.com/stashed/mongodb/commit/81cad93) [cherry-pick] Update Stash installation link (#173) (#177) +- [0711cec](https://github.com/stashed/mongodb/commit/0711cec) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#165) +- [cd921b7](https://github.com/stashed/mongodb/commit/cd921b7) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#154) +- [5d29173](https://github.com/stashed/mongodb/commit/5d29173) [cherry-pick] Update chart icon (#141) +- [a8265a7](https://github.com/stashed/mongodb/commit/a8265a7) [cherry-pick] Make chart registry configurable (#126) (#130) +- [a95f051](https://github.com/stashed/mongodb/commit/a95f051) Prepare for release 3.6.8-beta.20200709 (#117) +- [8f74e62](https://github.com/stashed/mongodb/commit/8f74e62) [cherry-pick] Build docker image in release workflow (#102) (#106) +- [2c74f48](https://github.com/stashed/mongodb/commit/2c74f48) Prepare for release 3.6.8-beta.20200708 (#93) +- [ad45d26](https://github.com/stashed/mongodb/commit/ad45d26) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#82) +- [8eb1169](https://github.com/stashed/mongodb/commit/8eb1169) [cherry-pick] Update License (#66) (#70) +- [0d12f73](https://github.com/stashed/mongodb/commit/0d12f73) Add commands to update chart version (#65) +- [ab1ca6b](https://github.com/stashed/mongodb/commit/ab1ca6b) [cherry-pick] Update update-release-tracker.sh (#57) +- [5c13265](https://github.com/stashed/mongodb/commit/5c13265) Add script to update release tracker on pr merge (#41) +- [300fd5d](https://github.com/stashed/mongodb/commit/300fd5d) [cherry-pick] Update release.yml (#42) (#46) +- [0b1ef75](https://github.com/stashed/mongodb/commit/0b1ef75) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#33) +- [37671b0](https://github.com/stashed/mongodb/commit/37671b0) Fix chart release process (#28) +- [4c11ef1](https://github.com/stashed/mongodb/commit/4c11ef1) Update .kodiak.toml +- [438d408](https://github.com/stashed/mongodb/commit/438d408) Allow overwriting secret key via SecretTransformation (#27) +- [64c3cef](https://github.com/stashed/mongodb/commit/64c3cef) Make waitTimeout configurable through flag (#26) +- [f22e19d](https://github.com/stashed/mongodb/commit/f22e19d) Create .kodiak.toml +- [bbcdca0](https://github.com/stashed/mongodb/commit/bbcdca0) Fix typos +- [cae40f7](https://github.com/stashed/mongodb/commit/cae40f7) Update to Kubernetes v1.18.3 (#25) +- [6e726c5](https://github.com/stashed/mongodb/commit/6e726c5) Update crazy-max/ghaction-docker-buildx flag +- [7e0a42b](https://github.com/stashed/mongodb/commit/7e0a42b) Fix typos +- [a908726](https://github.com/stashed/mongodb/commit/a908726) Trigger the workflow on push or pull request +- [cfda73c](https://github.com/stashed/mongodb/commit/cfda73c) Auto generate chart readme file +- [f38510e](https://github.com/stashed/mongodb/commit/f38510e) Correctly mark optional fields +- [9d9fc23](https://github.com/stashed/mongodb/commit/9d9fc23) Add openapi v3 schema for values file (#21) + + +### [4.0.3-v1](https://github.com/stashed/mongodb/releases/tag/4.0.3-v1) + +- [fa38022](https://github.com/stashed/mongodb/commit/fa38022) Prepare for release 4.0.3-v1 (#248) +- [e6669a9](https://github.com/stashed/mongodb/commit/e6669a9) Prepare for release 4.0.3-rc.20200827 (#236) +- [7a1efc6](https://github.com/stashed/mongodb/commit/7a1efc6) [cherry-pick] Upload charts without updating index (#225) +- [0166946](https://github.com/stashed/mongodb/commit/0166946) Prepare for release 4.0.3-rc.20200826 (#213) +- [0d636e1](https://github.com/stashed/mongodb/commit/0d636e1) [cherry-pick] Update README.md (#202) +- [fd4d40e](https://github.com/stashed/mongodb/commit/fd4d40e) Prepare for release 4.0.3-beta.20200826 (#190) +- [3b2f40b](https://github.com/stashed/mongodb/commit/3b2f40b) [cherry-pick] Update Stash installation link (#173) (#179) +- [5ba31a4](https://github.com/stashed/mongodb/commit/5ba31a4) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#167) +- [349f6c0](https://github.com/stashed/mongodb/commit/349f6c0) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#156) +- [eb32485](https://github.com/stashed/mongodb/commit/eb32485) [cherry-pick] Update chart icon (#143) +- [e2b05d8](https://github.com/stashed/mongodb/commit/e2b05d8) [cherry-pick] Make chart registry configurable (#126) (#132) +- [b7719bd](https://github.com/stashed/mongodb/commit/b7719bd) Prepare for release 4.0.3-beta.20200709 (#119) +- [7c9074d](https://github.com/stashed/mongodb/commit/7c9074d) [cherry-pick] Build docker image in release workflow (#102) (#108) +- [974b230](https://github.com/stashed/mongodb/commit/974b230) Prepare for release 4.0.3-beta.20200708 (#95) +- [70d290e](https://github.com/stashed/mongodb/commit/70d290e) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#84) +- [ffb3cc5](https://github.com/stashed/mongodb/commit/ffb3cc5) [cherry-pick] Update License (#66) (#72) +- [42c182f](https://github.com/stashed/mongodb/commit/42c182f) Add commands to update chart version (#65) +- [602e631](https://github.com/stashed/mongodb/commit/602e631) [cherry-pick] Update update-release-tracker.sh (#59) +- [f2c40c3](https://github.com/stashed/mongodb/commit/f2c40c3) Add script to update release tracker on pr merge (#41) +- [f2fe3de](https://github.com/stashed/mongodb/commit/f2fe3de) [cherry-pick] Update release.yml (#42) (#48) +- [69e0816](https://github.com/stashed/mongodb/commit/69e0816) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#35) +- [5d3ebfa](https://github.com/stashed/mongodb/commit/5d3ebfa) Fix chart release process (#28) +- [6c1edad](https://github.com/stashed/mongodb/commit/6c1edad) Update .kodiak.toml +- [6ec1e40](https://github.com/stashed/mongodb/commit/6ec1e40) Allow overwriting secret key via SecretTransformation (#27) +- [8ec94bf](https://github.com/stashed/mongodb/commit/8ec94bf) Make waitTimeout configurable through flag (#26) +- [ebd3f81](https://github.com/stashed/mongodb/commit/ebd3f81) Create .kodiak.toml +- [ade156f](https://github.com/stashed/mongodb/commit/ade156f) Fix typos +- [b5e7b0f](https://github.com/stashed/mongodb/commit/b5e7b0f) Update to Kubernetes v1.18.3 (#25) +- [41fa9af](https://github.com/stashed/mongodb/commit/41fa9af) Update crazy-max/ghaction-docker-buildx flag +- [55eb7fe](https://github.com/stashed/mongodb/commit/55eb7fe) Fix typos +- [a94509b](https://github.com/stashed/mongodb/commit/a94509b) Trigger the workflow on push or pull request +- [d00083a](https://github.com/stashed/mongodb/commit/d00083a) Auto generate chart readme file +- [2347473](https://github.com/stashed/mongodb/commit/2347473) Correctly mark optional fields +- [22c33b8](https://github.com/stashed/mongodb/commit/22c33b8) Add openapi v3 schema for values file (#21) + + +### [4.0.5-v1](https://github.com/stashed/mongodb/releases/tag/4.0.5-v1) + +- [0559144](https://github.com/stashed/mongodb/commit/0559144) Prepare for release 4.0.5-v1 (#249) +- [8bded32](https://github.com/stashed/mongodb/commit/8bded32) Prepare for release 4.0.5-rc.20200827 (#237) +- [58fa99e](https://github.com/stashed/mongodb/commit/58fa99e) [cherry-pick] Upload charts without updating index (#226) +- [77353e5](https://github.com/stashed/mongodb/commit/77353e5) Prepare for release 4.0.5-rc.20200826 (#214) +- [8d3af1e](https://github.com/stashed/mongodb/commit/8d3af1e) [cherry-pick] Update README.md (#203) +- [1bbff77](https://github.com/stashed/mongodb/commit/1bbff77) Prepare for release 4.0.5-beta.20200826 (#191) +- [51d0388](https://github.com/stashed/mongodb/commit/51d0388) [cherry-pick] Update Stash installation link (#173) (#180) +- [444ed15](https://github.com/stashed/mongodb/commit/444ed15) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#168) +- [00cfb11](https://github.com/stashed/mongodb/commit/00cfb11) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#157) +- [8a0c6ce](https://github.com/stashed/mongodb/commit/8a0c6ce) [cherry-pick] Update chart icon (#144) +- [e514864](https://github.com/stashed/mongodb/commit/e514864) [cherry-pick] Make chart registry configurable (#126) (#133) +- [78ab8d2](https://github.com/stashed/mongodb/commit/78ab8d2) Prepare for release 4.0.5-beta.20200709 (#120) +- [12af669](https://github.com/stashed/mongodb/commit/12af669) [cherry-pick] Build docker image in release workflow (#102) (#109) +- [18a8386](https://github.com/stashed/mongodb/commit/18a8386) Prepare for release 4.0.5-beta.20200708 (#96) +- [cdba01e](https://github.com/stashed/mongodb/commit/cdba01e) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#85) +- [54ac1e0](https://github.com/stashed/mongodb/commit/54ac1e0) [cherry-pick] Update License (#66) (#73) +- [84c004f](https://github.com/stashed/mongodb/commit/84c004f) Add commands to update chart version (#65) +- [46d5d4c](https://github.com/stashed/mongodb/commit/46d5d4c) [cherry-pick] Update update-release-tracker.sh (#60) +- [a4d76a8](https://github.com/stashed/mongodb/commit/a4d76a8) Add script to update release tracker on pr merge (#41) +- [49bffca](https://github.com/stashed/mongodb/commit/49bffca) [cherry-pick] Update release.yml (#42) (#49) +- [f55af9c](https://github.com/stashed/mongodb/commit/f55af9c) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#36) +- [2e094ad](https://github.com/stashed/mongodb/commit/2e094ad) Fix chart release process (#28) +- [57335b4](https://github.com/stashed/mongodb/commit/57335b4) Update .kodiak.toml +- [d2be592](https://github.com/stashed/mongodb/commit/d2be592) Allow overwriting secret key via SecretTransformation (#27) +- [123c843](https://github.com/stashed/mongodb/commit/123c843) Make waitTimeout configurable through flag (#26) +- [e63c62b](https://github.com/stashed/mongodb/commit/e63c62b) Create .kodiak.toml +- [96a2417](https://github.com/stashed/mongodb/commit/96a2417) Fix typos +- [2a8fd96](https://github.com/stashed/mongodb/commit/2a8fd96) Update to Kubernetes v1.18.3 (#25) +- [b9efbb1](https://github.com/stashed/mongodb/commit/b9efbb1) Update crazy-max/ghaction-docker-buildx flag +- [048464c](https://github.com/stashed/mongodb/commit/048464c) Fix typos +- [fc3d4aa](https://github.com/stashed/mongodb/commit/fc3d4aa) Trigger the workflow on push or pull request +- [901f4d0](https://github.com/stashed/mongodb/commit/901f4d0) Auto generate chart readme file +- [7775e7c](https://github.com/stashed/mongodb/commit/7775e7c) Correctly mark optional fields +- [480ad5b](https://github.com/stashed/mongodb/commit/480ad5b) Add openapi v3 schema for values file (#21) + + +### [4.0.11-v1](https://github.com/stashed/mongodb/releases/tag/4.0.11-v1) + +- [bc7a353](https://github.com/stashed/mongodb/commit/bc7a353) Prepare for release 4.0.11-v1 (#247) +- [2dfe220](https://github.com/stashed/mongodb/commit/2dfe220) Prepare for release 4.0.11-rc.20200827 (#235) +- [7ccf88d](https://github.com/stashed/mongodb/commit/7ccf88d) [cherry-pick] Upload charts without updating index (#224) +- [5f7ae55](https://github.com/stashed/mongodb/commit/5f7ae55) Prepare for release 4.0.11-rc.20200826 (#212) +- [359a868](https://github.com/stashed/mongodb/commit/359a868) [cherry-pick] Update README.md (#201) +- [b794eee](https://github.com/stashed/mongodb/commit/b794eee) Prepare for release 4.0.1-beta.20200826 (#189) +- [8e835ce](https://github.com/stashed/mongodb/commit/8e835ce) [cherry-pick] Update Stash installation link (#173) (#178) +- [0025cc4](https://github.com/stashed/mongodb/commit/0025cc4) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#166) +- [bc8f7a5](https://github.com/stashed/mongodb/commit/bc8f7a5) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#155) +- [7b0bb50](https://github.com/stashed/mongodb/commit/7b0bb50) [cherry-pick] Update chart icon (#142) +- [a9621b6](https://github.com/stashed/mongodb/commit/a9621b6) [cherry-pick] Make chart registry configurable (#126) (#131) +- [4168a4b](https://github.com/stashed/mongodb/commit/4168a4b) Prepare for release 4.0.1-beta.20200709 (#118) +- [90723f4](https://github.com/stashed/mongodb/commit/90723f4) [cherry-pick] Build docker image in release workflow (#102) (#107) +- [0304c42](https://github.com/stashed/mongodb/commit/0304c42) Prepare for release 4.0.1-beta.20200708 (#94) +- [276fcb6](https://github.com/stashed/mongodb/commit/276fcb6) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#83) +- [bf8701f](https://github.com/stashed/mongodb/commit/bf8701f) [cherry-pick] Update License (#66) (#71) +- [6aaff28](https://github.com/stashed/mongodb/commit/6aaff28) Add commands to update chart version (#65) +- [222720b](https://github.com/stashed/mongodb/commit/222720b) [cherry-pick] Update update-release-tracker.sh (#58) +- [3184ed5](https://github.com/stashed/mongodb/commit/3184ed5) Add script to update release tracker on pr merge (#41) +- [fa39e11](https://github.com/stashed/mongodb/commit/fa39e11) [cherry-pick] Update release.yml (#42) (#47) +- [3bbadab](https://github.com/stashed/mongodb/commit/3bbadab) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#34) +- [576171a](https://github.com/stashed/mongodb/commit/576171a) Fix chart release process (#28) +- [2b84c51](https://github.com/stashed/mongodb/commit/2b84c51) Update .kodiak.toml +- [bfcfd1e](https://github.com/stashed/mongodb/commit/bfcfd1e) Allow overwriting secret key via SecretTransformation (#27) +- [4830c47](https://github.com/stashed/mongodb/commit/4830c47) Make waitTimeout configurable through flag (#26) +- [cf7ae46](https://github.com/stashed/mongodb/commit/cf7ae46) Create .kodiak.toml +- [3c23777](https://github.com/stashed/mongodb/commit/3c23777) Fix typos +- [b774f8d](https://github.com/stashed/mongodb/commit/b774f8d) Update to Kubernetes v1.18.3 (#25) +- [83bfeeb](https://github.com/stashed/mongodb/commit/83bfeeb) Update crazy-max/ghaction-docker-buildx flag +- [ec8d37a](https://github.com/stashed/mongodb/commit/ec8d37a) Fix typos +- [5478e9b](https://github.com/stashed/mongodb/commit/5478e9b) Trigger the workflow on push or pull request +- [b35efa4](https://github.com/stashed/mongodb/commit/b35efa4) Auto generate chart readme file +- [f6c6cf8](https://github.com/stashed/mongodb/commit/f6c6cf8) Correctly mark optional fields +- [3e35f9b](https://github.com/stashed/mongodb/commit/3e35f9b) Add openapi v3 schema for values file (#21) + + +### [4.1.1-v1](https://github.com/stashed/mongodb/releases/tag/4.1.1-v1) + + + +### [4.1.4-v1](https://github.com/stashed/mongodb/releases/tag/4.1.4-v1) + +- [2fba087](https://github.com/stashed/mongodb/commit/2fba087) Prepare for release 4.1.4-v1 (#251) +- [84e97a4](https://github.com/stashed/mongodb/commit/84e97a4) Prepare for release 4.1.4-rc.20200827 (#239) +- [3a168e8](https://github.com/stashed/mongodb/commit/3a168e8) [cherry-pick] Upload charts without updating index (#228) +- [14aaf6c](https://github.com/stashed/mongodb/commit/14aaf6c) Prepare for release 4.1.4-rc.20200826 (#216) +- [20d3e9d](https://github.com/stashed/mongodb/commit/20d3e9d) [cherry-pick] Update README.md (#205) +- [c092f8a](https://github.com/stashed/mongodb/commit/c092f8a) Prepare for release 4.1.4-beta.20200826 (#193) +- [cbb683a](https://github.com/stashed/mongodb/commit/cbb683a) [cherry-pick] Update Stash installation link (#173) (#182) +- [f8b1f2c](https://github.com/stashed/mongodb/commit/f8b1f2c) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#170) +- [b99744e](https://github.com/stashed/mongodb/commit/b99744e) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#159) +- [9ee1654](https://github.com/stashed/mongodb/commit/9ee1654) [cherry-pick] Update chart icon (#146) +- [8604d7b](https://github.com/stashed/mongodb/commit/8604d7b) [cherry-pick] Make chart registry configurable (#126) (#135) +- [e3cd383](https://github.com/stashed/mongodb/commit/e3cd383) Prepare for release 4.1.4-beta.20200709 (#122) +- [a310c43](https://github.com/stashed/mongodb/commit/a310c43) [cherry-pick] Build docker image in release workflow (#102) (#111) +- [ae591b4](https://github.com/stashed/mongodb/commit/ae591b4) Prepare for release 4.1.4-beta.20200708 (#98) +- [266e031](https://github.com/stashed/mongodb/commit/266e031) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#87) +- [50a7cbd](https://github.com/stashed/mongodb/commit/50a7cbd) [cherry-pick] Update License (#66) (#75) +- [8bbbe69](https://github.com/stashed/mongodb/commit/8bbbe69) Add commands to update chart version (#65) +- [10150b9](https://github.com/stashed/mongodb/commit/10150b9) [cherry-pick] Update update-release-tracker.sh (#62) +- [119fea1](https://github.com/stashed/mongodb/commit/119fea1) Add script to update release tracker on pr merge (#41) +- [1ac6874](https://github.com/stashed/mongodb/commit/1ac6874) [cherry-pick] Update release.yml (#42) (#51) +- [1df644f](https://github.com/stashed/mongodb/commit/1df644f) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#38) +- [053a6bb](https://github.com/stashed/mongodb/commit/053a6bb) Fix chart release process (#28) +- [b65cd98](https://github.com/stashed/mongodb/commit/b65cd98) Update .kodiak.toml +- [b477602](https://github.com/stashed/mongodb/commit/b477602) Allow overwriting secret key via SecretTransformation (#27) +- [77eb85a](https://github.com/stashed/mongodb/commit/77eb85a) Make waitTimeout configurable through flag (#26) +- [4efe18c](https://github.com/stashed/mongodb/commit/4efe18c) Create .kodiak.toml +- [fceb614](https://github.com/stashed/mongodb/commit/fceb614) Fix typos +- [bba7918](https://github.com/stashed/mongodb/commit/bba7918) Update to Kubernetes v1.18.3 (#25) +- [a6540e2](https://github.com/stashed/mongodb/commit/a6540e2) Update crazy-max/ghaction-docker-buildx flag +- [b4b3d8d](https://github.com/stashed/mongodb/commit/b4b3d8d) Fix typos +- [85802fd](https://github.com/stashed/mongodb/commit/85802fd) Trigger the workflow on push or pull request +- [da3e334](https://github.com/stashed/mongodb/commit/da3e334) Auto generate chart readme file +- [56f2d0f](https://github.com/stashed/mongodb/commit/56f2d0f) Correctly mark optional fields +- [f96b2a0](https://github.com/stashed/mongodb/commit/f96b2a0) Add openapi v3 schema for values file (#21) + + +### [4.1.7-v1](https://github.com/stashed/mongodb/releases/tag/4.1.7-v1) + +- [c3f18aa](https://github.com/stashed/mongodb/commit/c3f18aa) Prepare for release 4.1.7-v1 (#252) +- [df9852f](https://github.com/stashed/mongodb/commit/df9852f) Prepare for release 4.1.7-rc.20200827 (#240) +- [b22a028](https://github.com/stashed/mongodb/commit/b22a028) [cherry-pick] Upload charts without updating index (#229) +- [5f2dd1f](https://github.com/stashed/mongodb/commit/5f2dd1f) Prepare for release 4.1.7-rc.20200826 (#217) +- [57fc2d0](https://github.com/stashed/mongodb/commit/57fc2d0) [cherry-pick] Update README.md (#206) +- [8334c89](https://github.com/stashed/mongodb/commit/8334c89) Prepare for release 4.1.7-beta.20200826 (#194) +- [905bdde](https://github.com/stashed/mongodb/commit/905bdde) [cherry-pick] Update Stash installation link (#173) (#183) +- [1eea836](https://github.com/stashed/mongodb/commit/1eea836) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#171) +- [52c06d6](https://github.com/stashed/mongodb/commit/52c06d6) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#160) +- [7765f65](https://github.com/stashed/mongodb/commit/7765f65) [cherry-pick] Update chart icon (#147) +- [7426cba](https://github.com/stashed/mongodb/commit/7426cba) [cherry-pick] Make chart registry configurable (#126) (#136) +- [3eccd08](https://github.com/stashed/mongodb/commit/3eccd08) Prepare for release 4.1.7-beta.20200709 (#123) +- [6377c55](https://github.com/stashed/mongodb/commit/6377c55) [cherry-pick] Build docker image in release workflow (#102) (#112) +- [984ef29](https://github.com/stashed/mongodb/commit/984ef29) Prepare for release 4.1.7-beta.20200708 (#99) +- [09a6e49](https://github.com/stashed/mongodb/commit/09a6e49) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#88) +- [6ae5da1](https://github.com/stashed/mongodb/commit/6ae5da1) [cherry-pick] Update License (#66) (#76) +- [e110d7f](https://github.com/stashed/mongodb/commit/e110d7f) Add commands to update chart version (#65) +- [d98d524](https://github.com/stashed/mongodb/commit/d98d524) [cherry-pick] Update update-release-tracker.sh (#63) +- [e7400cf](https://github.com/stashed/mongodb/commit/e7400cf) Add script to update release tracker on pr merge (#41) +- [5917bb7](https://github.com/stashed/mongodb/commit/5917bb7) [cherry-pick] Update release.yml (#42) (#52) +- [2cf14b2](https://github.com/stashed/mongodb/commit/2cf14b2) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#39) +- [e4467cf](https://github.com/stashed/mongodb/commit/e4467cf) Fix chart release process (#28) +- [98ff251](https://github.com/stashed/mongodb/commit/98ff251) Update .kodiak.toml +- [58e7c6b](https://github.com/stashed/mongodb/commit/58e7c6b) Allow overwriting secret key via SecretTransformation (#27) +- [d9381b5](https://github.com/stashed/mongodb/commit/d9381b5) Make waitTimeout configurable through flag (#26) +- [8f0549f](https://github.com/stashed/mongodb/commit/8f0549f) Create .kodiak.toml +- [e06d601](https://github.com/stashed/mongodb/commit/e06d601) Fix typos +- [e2f9971](https://github.com/stashed/mongodb/commit/e2f9971) Update to Kubernetes v1.18.3 (#25) +- [7a93c56](https://github.com/stashed/mongodb/commit/7a93c56) Update crazy-max/ghaction-docker-buildx flag +- [1518e46](https://github.com/stashed/mongodb/commit/1518e46) Fix typos +- [95f7060](https://github.com/stashed/mongodb/commit/95f7060) Trigger the workflow on push or pull request +- [4cc04fb](https://github.com/stashed/mongodb/commit/4cc04fb) Auto generate chart readme file +- [250c96d](https://github.com/stashed/mongodb/commit/250c96d) Correctly mark optional fields +- [672f36e](https://github.com/stashed/mongodb/commit/672f36e) Add openapi v3 schema for values file (#21) + + +### [4.2.3-v1](https://github.com/stashed/mongodb/releases/tag/4.2.3-v1) + +- [3c800d5](https://github.com/stashed/mongodb/commit/3c800d5) Prepare for release 4.2.3-v1 (#253) +- [e4c8466](https://github.com/stashed/mongodb/commit/e4c8466) Prepare for release 4.2.3-rc.20200827 (#241) +- [b45397b](https://github.com/stashed/mongodb/commit/b45397b) [cherry-pick] Upload charts without updating index (#230) +- [ed39fa9](https://github.com/stashed/mongodb/commit/ed39fa9) Prepare for release 4.2.3-rc.20200826 (#218) +- [d4b3301](https://github.com/stashed/mongodb/commit/d4b3301) [cherry-pick] Update README.md (#207) +- [244da2c](https://github.com/stashed/mongodb/commit/244da2c) Prepare for release 4.2.3-beta.20200826 (#195) +- [953e51f](https://github.com/stashed/mongodb/commit/953e51f) Update Stash installation link (#173) (#184) +- [d9c6d0b](https://github.com/stashed/mongodb/commit/d9c6d0b) [cherry-pick] Fix output format + Add PreBackupActions logic (#149) (#172) +- [0ef5cc0](https://github.com/stashed/mongodb/commit/0ef5cc0) [cherry-pick] Make image.tag in values.yaml same as $APP_VERSION (#150) (#161) +- [a51bdac](https://github.com/stashed/mongodb/commit/a51bdac) [cherry-pick] Update chart icon (#148) +- [2ad3b80](https://github.com/stashed/mongodb/commit/2ad3b80) [cherry-pick] Make chart registry configurable (#126) (#137) +- [149e6ba](https://github.com/stashed/mongodb/commit/149e6ba) Prepare for release 4.2.3-beta.20200709 (#124) +- [47879da](https://github.com/stashed/mongodb/commit/47879da) [cherry-pick] Build docker image in release workflow (#102) (#113) +- [51831a5](https://github.com/stashed/mongodb/commit/51831a5) Prepare for release 4.2.3-beta.20200708 (#100) +- [a165f10](https://github.com/stashed/mongodb/commit/a165f10) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#89) +- [bff9a6c](https://github.com/stashed/mongodb/commit/bff9a6c) [cherry-pick] Update License (#66) (#77) +- [453ee35](https://github.com/stashed/mongodb/commit/453ee35) Add commands to update chart version (#65) +- [aa8bb11](https://github.com/stashed/mongodb/commit/aa8bb11) [cherry-pick] Update update-release-tracker.sh (#64) +- [14cbd6b](https://github.com/stashed/mongodb/commit/14cbd6b) Add script to update release tracker on pr merge (#41) +- [9c196ca](https://github.com/stashed/mongodb/commit/9c196ca) [cherry-pick] Update release.yml (#42) (#53) +- [e23a429](https://github.com/stashed/mongodb/commit/e23a429) [cherry-pick] Add workflow to cherry pick commits to master (#29) (#40) +- [9e025b1](https://github.com/stashed/mongodb/commit/9e025b1) Fix chart release process (#28) +- [3eff74c](https://github.com/stashed/mongodb/commit/3eff74c) Update .kodiak.toml +- [d0b7108](https://github.com/stashed/mongodb/commit/d0b7108) Allow overwriting secret key via SecretTransformation (#27) +- [5fc5d46](https://github.com/stashed/mongodb/commit/5fc5d46) Make waitTimeout configurable through flag (#26) +- [b5df21e](https://github.com/stashed/mongodb/commit/b5df21e) Create .kodiak.toml +- [7ee7c62](https://github.com/stashed/mongodb/commit/7ee7c62) Fix typos +- [28c4d75](https://github.com/stashed/mongodb/commit/28c4d75) Update to Kubernetes v1.18.3 (#25) +- [579ca21](https://github.com/stashed/mongodb/commit/579ca21) Update crazy-max/ghaction-docker-buildx flag +- [0f7868a](https://github.com/stashed/mongodb/commit/0f7868a) Fix typos +- [812f4a6](https://github.com/stashed/mongodb/commit/812f4a6) Trigger the workflow on push or pull request +- [47f71ff](https://github.com/stashed/mongodb/commit/47f71ff) Auto generate chart readme file +- [c6e0879](https://github.com/stashed/mongodb/commit/c6e0879) Correctly mark optional fields +- [ce90c63](https://github.com/stashed/mongodb/commit/ce90c63) Add openapi v3 schema for values file (#21) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v1](https://github.com/stashed/mysql/releases/tag/5.7.25-v1) + +- [87d41e0](https://github.com/stashed/mysql/commit/87d41e0) Prepare for release 5.7.25-v1 (#103) +- [263f795](https://github.com/stashed/mysql/commit/263f795) Prepare for release 5.7.25-rc.20200827 (#99) +- [96023d1](https://github.com/stashed/mysql/commit/96023d1) [cherry-pick] Upload charts without updating index (#96) +- [3cb98d3](https://github.com/stashed/mysql/commit/3cb98d3) Prepare for release 5.7.25-rc.20200826 (#92) +- [d5b1978](https://github.com/stashed/mysql/commit/d5b1978) [cherry-pick] Update README.md (#89) +- [813ee01](https://github.com/stashed/mysql/commit/813ee01) Prepare for release 5.7.25-beta.20200826 (#85) +- [e646be7](https://github.com/stashed/mysql/commit/e646be7) [cherry-pick] Update Stash installation link (#81) (#82) +- [ecc7d0c](https://github.com/stashed/mysql/commit/ecc7d0c) [cherry-pick] Fix output format (#46) (#78) +- [7fcbd24](https://github.com/stashed/mysql/commit/7fcbd24) [cherry-pick] Pass image tag in values.yaml file (#74) (#75) +- [3188584](https://github.com/stashed/mysql/commit/3188584) [cherry-pick] Update chart icon (#71) +- [9060c7a](https://github.com/stashed/mysql/commit/9060c7a) [cherry-pick] Make chart registry configurable (#67) (#68) +- [422a411](https://github.com/stashed/mysql/commit/422a411) Prepare for release 5.7.25-beta.20200709 (#63) +- [e345110](https://github.com/stashed/mysql/commit/e345110) [cherry-pick] Build docker image in release workflow (#59) (#60) +- [3a44b41](https://github.com/stashed/mysql/commit/3a44b41) Prepare for release 5.7.25-beta.20200708 (#55) +- [7e2984b](https://github.com/stashed/mysql/commit/7e2984b) [cherry-pick] Publish to testing dir for alpha/beta releases (#51) (#52) +- [aa1eac2](https://github.com/stashed/mysql/commit/aa1eac2) [cherry-pick] Update License (#47) (#48) +- [d4370c9](https://github.com/stashed/mysql/commit/d4370c9) Add commands to update chart version (#45) +- [38fb308](https://github.com/stashed/mysql/commit/38fb308) [cherry-pick] Update update-release-tracker.sh (#42) +- [f3bfd48](https://github.com/stashed/mysql/commit/f3bfd48) [cherry-pick] Update update-release-tracker.sh (#39) +- [56e92c4](https://github.com/stashed/mysql/commit/56e92c4) [cherry-pick] Update release.yml (#36) +- [be341e7](https://github.com/stashed/mysql/commit/be341e7) [cherry-pick] Add script to update release tracker on pr merge (#32) (#33) +- [96504a7](https://github.com/stashed/mysql/commit/96504a7) [cherry-pick] Add workflow to cherry pick commits to master (#28) (#29) +- [fcbe891](https://github.com/stashed/mysql/commit/fcbe891) Fix chart release process (#27) +- [c012edf](https://github.com/stashed/mysql/commit/c012edf) Update .kodiak.toml +- [0d22657](https://github.com/stashed/mysql/commit/0d22657) Allow overwriting secret key via SecretTransformation (#26) +- [f717a19](https://github.com/stashed/mysql/commit/f717a19) Fix unit tests (#25) +- [d4f5c4c](https://github.com/stashed/mysql/commit/d4f5c4c) Create .kodiak.toml +- [2bfa098](https://github.com/stashed/mysql/commit/2bfa098) Fix typos +- [5c1a53d](https://github.com/stashed/mysql/commit/5c1a53d) mend +- [9eb402f](https://github.com/stashed/mysql/commit/9eb402f) Update to Kubernetes v1.18.3 (#24) +- [4d4afa2](https://github.com/stashed/mysql/commit/4d4afa2) Fix waitForDBReady() logic + Make timeout configurable (#23) +- [4548802](https://github.com/stashed/mysql/commit/4548802) Update crazy-max/ghaction-docker-buildx flag +- [ce1fa72](https://github.com/stashed/mysql/commit/ce1fa72) Trigger the workflow on push or pull request +- [dad10df](https://github.com/stashed/mysql/commit/dad10df) Auto generate chart readme file +- [462eecf](https://github.com/stashed/mysql/commit/462eecf) Correctly mark optional fields +- [424ec5a](https://github.com/stashed/mysql/commit/424ec5a) Add openapi v3 schema for values file (#20) + + +### [8.0.3-v1](https://github.com/stashed/mysql/releases/tag/8.0.3-v1) + +- [cc49837](https://github.com/stashed/mysql/commit/cc49837) Prepare for release 8.0.3-v1 (#105) +- [7d02720](https://github.com/stashed/mysql/commit/7d02720) Prepare for release 8.0.3-rc.20200827 (#101) +- [dc8e2b5](https://github.com/stashed/mysql/commit/dc8e2b5) [cherry-pick] Upload charts without updating index (#98) +- [f80506e](https://github.com/stashed/mysql/commit/f80506e) Prepare for release 8.0.3-rc.20200826 (#94) +- [130b967](https://github.com/stashed/mysql/commit/130b967) [cherry-pick] Update README.md (#91) +- [7326b37](https://github.com/stashed/mysql/commit/7326b37) Prepare for release 8.0.3-beta.20200826 (#87) +- [72ba0ee](https://github.com/stashed/mysql/commit/72ba0ee) [cherry-pick] Update Stash installation link (#81) (#84) +- [3e856a9](https://github.com/stashed/mysql/commit/3e856a9) [cherry-pick] Fix output format (#46) (#80) +- [8621d51](https://github.com/stashed/mysql/commit/8621d51) [cherry-pick] Pass image tag in values.yaml file (#74) (#77) +- [41702eb](https://github.com/stashed/mysql/commit/41702eb) [cherry-pick] Update chart icon (#73) +- [31740f9](https://github.com/stashed/mysql/commit/31740f9) [cherry-pick] Make chart registry configurable (#67) (#70) +- [ced3feb](https://github.com/stashed/mysql/commit/ced3feb) Prepare for release 8.0.3-beta.20200709 (#65) +- [8299693](https://github.com/stashed/mysql/commit/8299693) [cherry-pick] Build docker image in release workflow (#59) (#62) +- [18cc48f](https://github.com/stashed/mysql/commit/18cc48f) Prepare for release 8.0.3-beta.20200708 (#57) +- [4e94b93](https://github.com/stashed/mysql/commit/4e94b93) [cherry-pick] Publish to testing dir for alpha/beta releases (#51) (#54) +- [1c7bfc4](https://github.com/stashed/mysql/commit/1c7bfc4) [cherry-pick] Update License (#47) (#50) +- [56485b1](https://github.com/stashed/mysql/commit/56485b1) Add commands to update chart version (#45) +- [4f200fd](https://github.com/stashed/mysql/commit/4f200fd) [cherry-pick] Update update-release-tracker.sh (#44) +- [0df0fc6](https://github.com/stashed/mysql/commit/0df0fc6) [cherry-pick] Update update-release-tracker.sh (#41) +- [432da4e](https://github.com/stashed/mysql/commit/432da4e) [cherry-pick] Update release.yml (#38) +- [0f1c7b3](https://github.com/stashed/mysql/commit/0f1c7b3) [cherry-pick] Add script to update release tracker on pr merge (#32) (#35) +- [287a12f](https://github.com/stashed/mysql/commit/287a12f) [cherry-pick] Add workflow to cherry pick commits to master (#28) (#31) +- [a962fe3](https://github.com/stashed/mysql/commit/a962fe3) Fix chart release process (#27) +- [83c0565](https://github.com/stashed/mysql/commit/83c0565) Update .kodiak.toml +- [a87889d](https://github.com/stashed/mysql/commit/a87889d) Allow overwriting secret key via SecretTransformation (#26) +- [ca8f6b8](https://github.com/stashed/mysql/commit/ca8f6b8) Fix unit tests (#25) +- [a38f3d9](https://github.com/stashed/mysql/commit/a38f3d9) Create .kodiak.toml +- [119de10](https://github.com/stashed/mysql/commit/119de10) Fix typos +- [71efc34](https://github.com/stashed/mysql/commit/71efc34) mend +- [d4b025d](https://github.com/stashed/mysql/commit/d4b025d) Update to Kubernetes v1.18.3 (#24) +- [270997e](https://github.com/stashed/mysql/commit/270997e) Fix waitForDBReady() logic + Make timeout configurable (#23) +- [764ab66](https://github.com/stashed/mysql/commit/764ab66) Update crazy-max/ghaction-docker-buildx flag +- [1325c75](https://github.com/stashed/mysql/commit/1325c75) Trigger the workflow on push or pull request +- [dc106c2](https://github.com/stashed/mysql/commit/dc106c2) Auto generate chart readme file +- [cb99aeb](https://github.com/stashed/mysql/commit/cb99aeb) Correctly mark optional fields +- [0d30048](https://github.com/stashed/mysql/commit/0d30048) Add openapi v3 schema for values file (#20) + + +### [8.0.14-v1](https://github.com/stashed/mysql/releases/tag/8.0.14-v1) + +- [ced706b](https://github.com/stashed/mysql/commit/ced706b) Prepare for release 8.0.14-v1 (#104) +- [720aa02](https://github.com/stashed/mysql/commit/720aa02) Prepare for release 8.0.14-rc.20200827 (#100) +- [7019c00](https://github.com/stashed/mysql/commit/7019c00) [cherry-pick] Upload charts without updating index (#97) +- [0b6f158](https://github.com/stashed/mysql/commit/0b6f158) Prepare for release 8.0.14-rc.20200826 (#93) +- [e4c86da](https://github.com/stashed/mysql/commit/e4c86da) [cherry-pick] Update README.md (#90) +- [5816915](https://github.com/stashed/mysql/commit/5816915) Prepare for release 8.0.14-beta.20200826 (#86) +- [96b78ca](https://github.com/stashed/mysql/commit/96b78ca) [cherry-pick] Update Stash installation link (#81) (#83) +- [4f6c15b](https://github.com/stashed/mysql/commit/4f6c15b) [cherry-pick] Fix output format (#46) (#79) +- [9da1616](https://github.com/stashed/mysql/commit/9da1616) [cherry-pick] Pass image tag in values.yaml file (#74) (#76) +- [72edf00](https://github.com/stashed/mysql/commit/72edf00) [cherry-pick] Update chart icon (#72) +- [9f253db](https://github.com/stashed/mysql/commit/9f253db) [cherry-pick] Make chart registry configurable (#67) (#69) +- [bf2dd2d](https://github.com/stashed/mysql/commit/bf2dd2d) Prepare for release 8.0.14-beta.20200709 (#64) +- [226b3a9](https://github.com/stashed/mysql/commit/226b3a9) [cherry-pick] Build docker image in release workflow (#59) (#61) +- [5a303f2](https://github.com/stashed/mysql/commit/5a303f2) Prepare for release 8.0.14-beta.20200708 (#56) +- [840101a](https://github.com/stashed/mysql/commit/840101a) [cherry-pick] Publish to testing dir for alpha/beta releases (#51) (#53) +- [9cf212d](https://github.com/stashed/mysql/commit/9cf212d) [cherry-pick] Update License (#47) (#49) +- [4d460b1](https://github.com/stashed/mysql/commit/4d460b1) Add commands to update chart version (#45) +- [ad14dcd](https://github.com/stashed/mysql/commit/ad14dcd) [cherry-pick] Update update-release-tracker.sh (#43) +- [7612f08](https://github.com/stashed/mysql/commit/7612f08) [cherry-pick] Update update-release-tracker.sh (#40) +- [bb67fea](https://github.com/stashed/mysql/commit/bb67fea) [cherry-pick] Update release.yml (#37) +- [5551469](https://github.com/stashed/mysql/commit/5551469) [cherry-pick] Add script to update release tracker on pr merge (#32) (#34) +- [cf2d0a5](https://github.com/stashed/mysql/commit/cf2d0a5) [cherry-pick] Add workflow to cherry pick commits to master (#28) (#30) +- [b983837](https://github.com/stashed/mysql/commit/b983837) Fix chart release process (#27) +- [e2d3718](https://github.com/stashed/mysql/commit/e2d3718) Update .kodiak.toml +- [1779968](https://github.com/stashed/mysql/commit/1779968) Allow overwriting secret key via SecretTransformation (#26) +- [1ff9fa6](https://github.com/stashed/mysql/commit/1ff9fa6) Fix unit tests (#25) +- [8c86606](https://github.com/stashed/mysql/commit/8c86606) Create .kodiak.toml +- [d6cfde9](https://github.com/stashed/mysql/commit/d6cfde9) Fix typos +- [065eb14](https://github.com/stashed/mysql/commit/065eb14) mend +- [43335f5](https://github.com/stashed/mysql/commit/43335f5) Update to Kubernetes v1.18.3 (#24) +- [9d5a550](https://github.com/stashed/mysql/commit/9d5a550) Fix waitForDBReady() logic + Make timeout configurable (#23) +- [1ce533a](https://github.com/stashed/mysql/commit/1ce533a) Update crazy-max/ghaction-docker-buildx flag +- [4daf2f0](https://github.com/stashed/mysql/commit/4daf2f0) Trigger the workflow on push or pull request +- [dee1282](https://github.com/stashed/mysql/commit/dee1282) Auto generate chart readme file +- [857d7dc](https://github.com/stashed/mysql/commit/857d7dc) Correctly mark optional fields +- [915ff47](https://github.com/stashed/mysql/commit/915ff47) Add openapi v3 schema for values file (#20) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v1](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v1) + + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6-v1](https://github.com/stashed/postgres/releases/tag/9.6-v1) + +- [473cc47](https://github.com/stashed/postgres/commit/473cc47) Prepare for release 9.6-v1 (#169) +- [e9febb8](https://github.com/stashed/postgres/commit/e9febb8) Prepare for release 9.6-rc.20200827 (#163) +- [3f724ee](https://github.com/stashed/postgres/commit/3f724ee) [cherry-pick] Upload charts without updating index (#158) +- [5715456](https://github.com/stashed/postgres/commit/5715456) Prepare for release 9.6-rc.20200826 (#152) +- [0442f99](https://github.com/stashed/postgres/commit/0442f99) [cherry-pick] Update README.md (#147) +- [61c4425](https://github.com/stashed/postgres/commit/61c4425) Prepare for release 9.6-beta.20200826 (#141) +- [b313c2c](https://github.com/stashed/postgres/commit/b313c2c) Update Stash installation link (#131) (#136) +- [d73595e](https://github.com/stashed/postgres/commit/d73595e) [cherry-pick] Update twitter handle (#125) (#130) +- [875edd5](https://github.com/stashed/postgres/commit/875edd5) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#124) +- [5a9a784](https://github.com/stashed/postgres/commit/5a9a784) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#119) +- [ce47f3a](https://github.com/stashed/postgres/commit/ce47f3a) [cherry-pick] Update chart icon (#112) +- [decfbb0](https://github.com/stashed/postgres/commit/decfbb0) [cherry-pick] Make chart registry configurable (#102) (#107) +- [5befa82](https://github.com/stashed/postgres/commit/5befa82) Prepare for release 9.6-beta.20200709 (#100) +- [52fab57](https://github.com/stashed/postgres/commit/52fab57) [cherry-pick] Build docker images in release workflow (#90) (#95) +- [d85fc80](https://github.com/stashed/postgres/commit/d85fc80) Prepare for release 9.6-beta.20200708 (#88) +- [fbd6766](https://github.com/stashed/postgres/commit/fbd6766) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#83) +- [1b32879](https://github.com/stashed/postgres/commit/1b32879) [cherry-pick] Update License (#72) (#77) +- [388ddee](https://github.com/stashed/postgres/commit/388ddee) Add commands to update chart version (#71) +- [875c1f0](https://github.com/stashed/postgres/commit/875c1f0) [cherry-pick] Update update-release-tracker.sh (#70) +- [0e71e2d](https://github.com/stashed/postgres/commit/0e71e2d) [cherry-pick] Update update-release-tracker.sh (#65) +- [bbfac61](https://github.com/stashed/postgres/commit/bbfac61) [cherry-pick] Update release.yml (#55) (#60) +- [986d0a7](https://github.com/stashed/postgres/commit/986d0a7) [cherry-pick] Add script to update release tracker on pr merge (#49) (#54) +- [6edaf36](https://github.com/stashed/postgres/commit/6edaf36) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#48) +- [6743dbe](https://github.com/stashed/postgres/commit/6743dbe) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#42) +- [fb4f222](https://github.com/stashed/postgres/commit/fb4f222) Fix chart release process (#36) +- [b5ddf5f](https://github.com/stashed/postgres/commit/b5ddf5f) Update .kodiak.toml +- [7951787](https://github.com/stashed/postgres/commit/7951787) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [e7bb18f](https://github.com/stashed/postgres/commit/e7bb18f) Create .kodiak.toml +- [60acc09](https://github.com/stashed/postgres/commit/60acc09) Merge pull request Allow overriding secret keys from AppBinding #33 +- [aaff7fb](https://github.com/stashed/postgres/commit/aaff7fb) Fix typos (#32) +- [568f584](https://github.com/stashed/postgres/commit/568f584) Update to Kubernetes v1.18.3 (#34) +- [098bb78](https://github.com/stashed/postgres/commit/098bb78) Update crazy-max/ghaction-docker-buildx flag +- [4385362](https://github.com/stashed/postgres/commit/4385362) function-args: add pg-back-cmd option +- [7cd065c](https://github.com/stashed/postgres/commit/7cd065c) Trigger the workflow on push or pull request +- [b63e3e5](https://github.com/stashed/postgres/commit/b63e3e5) Auto generate chart readme file +- [dea1a41](https://github.com/stashed/postgres/commit/dea1a41) Correctly mark optional fields +- [efc4283](https://github.com/stashed/postgres/commit/efc4283) Add openapi v3 schema for values file (#27) + + +### [10.2-v1](https://github.com/stashed/postgres/releases/tag/10.2-v1) + +- [7973fe4](https://github.com/stashed/postgres/commit/7973fe4) Prepare for release 10.2-v1 (#165) +- [fd9fc7a](https://github.com/stashed/postgres/commit/fd9fc7a) Prepare for release 10.2-rc.20200827 (#159) +- [7d1033a](https://github.com/stashed/postgres/commit/7d1033a) [cherry-pick] Upload charts without updating index (#154) +- [4777da6](https://github.com/stashed/postgres/commit/4777da6) Prepare for release 10.2-rc.20200826 (#148) +- [2f2a469](https://github.com/stashed/postgres/commit/2f2a469) [cherry-pick] Update README.md (#143) +- [ac65186](https://github.com/stashed/postgres/commit/ac65186) Prepare for release 10.2-beta.20200826 (#137) +- [1757b5f](https://github.com/stashed/postgres/commit/1757b5f) [cherry-pick] Update Stash installation link (#131) (#132) +- [56f90c7](https://github.com/stashed/postgres/commit/56f90c7) [cherry-pick] Update twitter handle (#125) (#126) +- [9734711](https://github.com/stashed/postgres/commit/9734711) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#120) +- [9556ade](https://github.com/stashed/postgres/commit/9556ade) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#115) +- [ce7257e](https://github.com/stashed/postgres/commit/ce7257e) [cherry-pick] Update chart icon (#108) +- [754640f](https://github.com/stashed/postgres/commit/754640f) [cherry-pick] Make chart registry configurable (#102) (#103) +- [d8a2be0](https://github.com/stashed/postgres/commit/d8a2be0) Prepare for release 10.2-beta.20200709 (#96) +- [0bba297](https://github.com/stashed/postgres/commit/0bba297) [cherry-pick] Build docker images in release workflow (#90) (#91) +- [168bd5a](https://github.com/stashed/postgres/commit/168bd5a) Prepare for release 10.2-beta.20200708 (#84) +- [5ad2e00](https://github.com/stashed/postgres/commit/5ad2e00) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#79) +- [8eb154d](https://github.com/stashed/postgres/commit/8eb154d) [cherry-pick] Update License (#72) (#73) +- [27604a5](https://github.com/stashed/postgres/commit/27604a5) Add commands to update chart version (#71) +- [bac456e](https://github.com/stashed/postgres/commit/bac456e) [cherry-pick] Update update-release-tracker.sh (#66) +- [a50a3a8](https://github.com/stashed/postgres/commit/a50a3a8) [cherry-pick] Update update-release-tracker.sh (#61) +- [2d792b7](https://github.com/stashed/postgres/commit/2d792b7) [cherry-pick] Update release.yml (#55) (#56) +- [c4603ac](https://github.com/stashed/postgres/commit/c4603ac) [cherry-pick] Add script to update release tracker on pr merge (#49) (#50) +- [0c08bad](https://github.com/stashed/postgres/commit/0c08bad) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#44) +- [6764fe3](https://github.com/stashed/postgres/commit/6764fe3) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#38) +- [826f678](https://github.com/stashed/postgres/commit/826f678) Fix chart release process (#36) +- [e5146e3](https://github.com/stashed/postgres/commit/e5146e3) Update .kodiak.toml +- [d4d68ef](https://github.com/stashed/postgres/commit/d4d68ef) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [78fa0ac](https://github.com/stashed/postgres/commit/78fa0ac) Create .kodiak.toml +- [23cfc56](https://github.com/stashed/postgres/commit/23cfc56) Merge pull request Allow overriding secret keys from AppBinding #33 +- [0cdc7c9](https://github.com/stashed/postgres/commit/0cdc7c9) Fix typos (#32) +- [a148ace](https://github.com/stashed/postgres/commit/a148ace) Update to Kubernetes v1.18.3 (#34) +- [db126f4](https://github.com/stashed/postgres/commit/db126f4) Update crazy-max/ghaction-docker-buildx flag +- [854a522](https://github.com/stashed/postgres/commit/854a522) function-args: add pg-back-cmd option +- [e64e5b0](https://github.com/stashed/postgres/commit/e64e5b0) Trigger the workflow on push or pull request +- [d667589](https://github.com/stashed/postgres/commit/d667589) Auto generate chart readme file +- [f562d87](https://github.com/stashed/postgres/commit/f562d87) Correctly mark optional fields +- [3c5b7bc](https://github.com/stashed/postgres/commit/3c5b7bc) Add openapi v3 schema for values file (#27) + + +### [10.6-v1](https://github.com/stashed/postgres/releases/tag/10.6-v1) + +- [6b0077a](https://github.com/stashed/postgres/commit/6b0077a) Prepare for release 10.6-v1 (#166) +- [4724218](https://github.com/stashed/postgres/commit/4724218) Prepare for release 10.6-rc.20200827 (#160) +- [1167129](https://github.com/stashed/postgres/commit/1167129) [cherry-pick] Upload charts without updating index (#155) +- [bd548b2](https://github.com/stashed/postgres/commit/bd548b2) Prepare for release 10.6-rc.20200826 (#149) +- [3d86318](https://github.com/stashed/postgres/commit/3d86318) [cherry-pick] Update README.md (#144) +- [1446996](https://github.com/stashed/postgres/commit/1446996) Prepare for release 10.6-beta.20200826 (#138) +- [720cc7b](https://github.com/stashed/postgres/commit/720cc7b) [cherry-pick] Update Stash installation link (#131) (#133) +- [6b17dea](https://github.com/stashed/postgres/commit/6b17dea) [cherry-pick] Update twitter handle (#125) (#127) +- [d1af1c6](https://github.com/stashed/postgres/commit/d1af1c6) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#121) +- [cd2f8ec](https://github.com/stashed/postgres/commit/cd2f8ec) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#116) +- [d89559c](https://github.com/stashed/postgres/commit/d89559c) [cherry-pick] Update chart icon (#109) +- [192c564](https://github.com/stashed/postgres/commit/192c564) [cherry-pick] Make chart registry configurable (#102) (#104) +- [78fdd94](https://github.com/stashed/postgres/commit/78fdd94) Prepare for release 10.6-beta.20200709 (#97) +- [c70d2d9](https://github.com/stashed/postgres/commit/c70d2d9) [cherry-pick] Build docker images in release workflow (#90) (#92) +- [0c873e0](https://github.com/stashed/postgres/commit/0c873e0) Prepare for release 10.6-beta.20200708 (#85) +- [aa80111](https://github.com/stashed/postgres/commit/aa80111) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#80) +- [2989c96](https://github.com/stashed/postgres/commit/2989c96) [cherry-pick] Update License (#72) (#74) +- [8ae0673](https://github.com/stashed/postgres/commit/8ae0673) Add commands to update chart version (#71) +- [44bf83d](https://github.com/stashed/postgres/commit/44bf83d) [cherry-pick] Update update-release-tracker.sh (#67) +- [e20f246](https://github.com/stashed/postgres/commit/e20f246) [cherry-pick] Update update-release-tracker.sh (#62) +- [0120b84](https://github.com/stashed/postgres/commit/0120b84) [cherry-pick] Update release.yml (#55) (#57) +- [ddfc26d](https://github.com/stashed/postgres/commit/ddfc26d) [cherry-pick] Add script to update release tracker on pr merge (#49) (#51) +- [bde7425](https://github.com/stashed/postgres/commit/bde7425) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#45) +- [00a5c97](https://github.com/stashed/postgres/commit/00a5c97) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#39) +- [1720053](https://github.com/stashed/postgres/commit/1720053) Fix chart release process (#36) +- [f67d343](https://github.com/stashed/postgres/commit/f67d343) Update .kodiak.toml +- [6f70879](https://github.com/stashed/postgres/commit/6f70879) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [39a7fc4](https://github.com/stashed/postgres/commit/39a7fc4) Create .kodiak.toml +- [4ba7a9f](https://github.com/stashed/postgres/commit/4ba7a9f) Merge pull request Allow overriding secret keys from AppBinding #33 +- [804433c](https://github.com/stashed/postgres/commit/804433c) Fix typos (#32) +- [42e792f](https://github.com/stashed/postgres/commit/42e792f) Update to Kubernetes v1.18.3 (#34) +- [b15f604](https://github.com/stashed/postgres/commit/b15f604) Update crazy-max/ghaction-docker-buildx flag +- [288b3ea](https://github.com/stashed/postgres/commit/288b3ea) function-args: add pg-back-cmd option +- [d0ff5d9](https://github.com/stashed/postgres/commit/d0ff5d9) Trigger the workflow on push or pull request +- [23e9f4a](https://github.com/stashed/postgres/commit/23e9f4a) Auto generate chart readme file +- [9431b3a](https://github.com/stashed/postgres/commit/9431b3a) Correctly mark optional fields +- [0fe49c0](https://github.com/stashed/postgres/commit/0fe49c0) Add openapi v3 schema for values file (#27) + + +### [11.1-v1](https://github.com/stashed/postgres/releases/tag/11.1-v1) + +- [229fba7](https://github.com/stashed/postgres/commit/229fba7) Prepare for release 11.1-v1 (#167) +- [0fbd548](https://github.com/stashed/postgres/commit/0fbd548) Prepare for release 11.1-rc.20200827 (#161) +- [fc8cb58](https://github.com/stashed/postgres/commit/fc8cb58) [cherry-pick] Upload charts without updating index (#156) +- [32e008c](https://github.com/stashed/postgres/commit/32e008c) Prepare for release 11.1-rc.20200826 (#150) +- [aa588fa](https://github.com/stashed/postgres/commit/aa588fa) [cherry-pick] Update README.md (#145) +- [0cc9647](https://github.com/stashed/postgres/commit/0cc9647) Prepare for release 11.1-beta.20200826 (#139) +- [dff51be](https://github.com/stashed/postgres/commit/dff51be) [cherry-pick] Update Stash installation link (#131) (#134) +- [b8480c8](https://github.com/stashed/postgres/commit/b8480c8) [cherry-pick] Update twitter handle (#125) (#128) +- [33fe94b](https://github.com/stashed/postgres/commit/33fe94b) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#122) +- [6a631b0](https://github.com/stashed/postgres/commit/6a631b0) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#117) +- [8bccb9c](https://github.com/stashed/postgres/commit/8bccb9c) [cherry-pick] Update chart icon (#110) +- [aca1577](https://github.com/stashed/postgres/commit/aca1577) [cherry-pick] Make chart registry configurable (#102) (#105) +- [81b21f0](https://github.com/stashed/postgres/commit/81b21f0) Prepare for release 11.1-beta.20200709 (#98) +- [4fc87ef](https://github.com/stashed/postgres/commit/4fc87ef) [cherry-pick] Build docker images in release workflow (#90) (#93) +- [2a43673](https://github.com/stashed/postgres/commit/2a43673) Prepare for release 11.1-beta.20200708 (#86) +- [296b239](https://github.com/stashed/postgres/commit/296b239) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#81) +- [c811e7e](https://github.com/stashed/postgres/commit/c811e7e) [cherry-pick] Update License (#72) (#75) +- [7bf38e7](https://github.com/stashed/postgres/commit/7bf38e7) Add commands to update chart version (#71) +- [6ecb8bc](https://github.com/stashed/postgres/commit/6ecb8bc) [cherry-pick] Update update-release-tracker.sh (#68) +- [526e335](https://github.com/stashed/postgres/commit/526e335) [cherry-pick] Update update-release-tracker.sh (#63) +- [e5fff5c](https://github.com/stashed/postgres/commit/e5fff5c) [cherry-pick] Update release.yml (#55) (#58) +- [81f3b07](https://github.com/stashed/postgres/commit/81f3b07) [cherry-pick] Add script to update release tracker on pr merge (#49) (#52) +- [5ba7bd6](https://github.com/stashed/postgres/commit/5ba7bd6) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#46) +- [12adf32](https://github.com/stashed/postgres/commit/12adf32) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#40) +- [cac2584](https://github.com/stashed/postgres/commit/cac2584) Fix chart release process (#36) +- [fadf4ec](https://github.com/stashed/postgres/commit/fadf4ec) Update .kodiak.toml +- [46669d7](https://github.com/stashed/postgres/commit/46669d7) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [338ab6c](https://github.com/stashed/postgres/commit/338ab6c) Create .kodiak.toml +- [3acfe21](https://github.com/stashed/postgres/commit/3acfe21) Merge pull request Allow overriding secret keys from AppBinding #33 +- [1c5cd1c](https://github.com/stashed/postgres/commit/1c5cd1c) Fix typos (#32) +- [5c09c1b](https://github.com/stashed/postgres/commit/5c09c1b) Update to Kubernetes v1.18.3 (#34) +- [ed629e5](https://github.com/stashed/postgres/commit/ed629e5) Update crazy-max/ghaction-docker-buildx flag +- [0b8cd43](https://github.com/stashed/postgres/commit/0b8cd43) function-args: add pg-back-cmd option +- [161a325](https://github.com/stashed/postgres/commit/161a325) Trigger the workflow on push or pull request +- [062a652](https://github.com/stashed/postgres/commit/062a652) Auto generate chart readme file +- [ec94eac](https://github.com/stashed/postgres/commit/ec94eac) Correctly mark optional fields +- [5656c62](https://github.com/stashed/postgres/commit/5656c62) Add openapi v3 schema for values file (#27) + + +### [11.2-v1](https://github.com/stashed/postgres/releases/tag/11.2-v1) + +- [e4e7c2c](https://github.com/stashed/postgres/commit/e4e7c2c) Prepare for release 11.2-v1 (#168) +- [342b6bb](https://github.com/stashed/postgres/commit/342b6bb) Prepare for release 11.2-rc.20200827 (#162) +- [4688cde](https://github.com/stashed/postgres/commit/4688cde) [cherry-pick] Upload charts without updating index (#157) +- [a8f414d](https://github.com/stashed/postgres/commit/a8f414d) Prepare for release 11.2-rc.20200826 (#151) +- [f9020fb](https://github.com/stashed/postgres/commit/f9020fb) [cherry-pick] Update README.md (#146) +- [cf876d3](https://github.com/stashed/postgres/commit/cf876d3) Prepare for release 11.2-beta.20200826 (#140) +- [22d4f2c](https://github.com/stashed/postgres/commit/22d4f2c) [cherry-pick] Update Stash installation link (#131) (#135) +- [462bf9f](https://github.com/stashed/postgres/commit/462bf9f) [cherry-pick] Update twitter handle (#125) (#129) +- [baa8b56](https://github.com/stashed/postgres/commit/baa8b56) [cherry-pick] Use image tag same as the $APP_VERSION (#114) (#123) +- [b09b460](https://github.com/stashed/postgres/commit/b09b460) [cherry-pick] Fix output format + Add PreBackupActions logic (#113) (#118) +- [08ea901](https://github.com/stashed/postgres/commit/08ea901) [cherry-pick] Update chart icon (#111) +- [a6b8c9e](https://github.com/stashed/postgres/commit/a6b8c9e) [cherry-pick] Make chart registry configurable (#102) (#106) +- [a3efd1a](https://github.com/stashed/postgres/commit/a3efd1a) Prepare for release 11.2-beta.20200709 (#99) +- [c0a32e5](https://github.com/stashed/postgres/commit/c0a32e5) [cherry-pick] Build docker images in release workflow (#90) (#94) +- [5c4b396](https://github.com/stashed/postgres/commit/5c4b396) Prepare for release 11.2-beta.20200708 (#87) +- [00c2f4e](https://github.com/stashed/postgres/commit/00c2f4e) [cherry-pick] Publish to testing dir for alpha/beta releases (#78) (#82) +- [5d795f9](https://github.com/stashed/postgres/commit/5d795f9) [cherry-pick] Update License (#72) (#76) +- [03fd7d3](https://github.com/stashed/postgres/commit/03fd7d3) Add commands to update chart version (#71) +- [a48d053](https://github.com/stashed/postgres/commit/a48d053) [cherry-pick] Update update-release-tracker.sh (#69) +- [7ac5c11](https://github.com/stashed/postgres/commit/7ac5c11) [cherry-pick] Update update-release-tracker.sh (#64) +- [ecf236a](https://github.com/stashed/postgres/commit/ecf236a) [cherry-pick] Update release.yml (#55) (#59) +- [013242e](https://github.com/stashed/postgres/commit/013242e) [cherry-pick] Add script to update release tracker on pr merge (#49) (#53) +- [c8b360b](https://github.com/stashed/postgres/commit/c8b360b) [cherry-pick] Remove /cherry-pick from cherry picked prs (#43) (#47) +- [2503240](https://github.com/stashed/postgres/commit/2503240) [cherry-pick] Add workflow to cherry pick commits to master (#37) (#41) +- [3f7525c](https://github.com/stashed/postgres/commit/3f7525c) Fix chart release process (#36) +- [4afcc41](https://github.com/stashed/postgres/commit/4afcc41) Update .kodiak.toml +- [861eaa3](https://github.com/stashed/postgres/commit/861eaa3) Fix waitForDBReady() logic + Make timeout configurable (#35) +- [85ea8d6](https://github.com/stashed/postgres/commit/85ea8d6) Create .kodiak.toml +- [f240c25](https://github.com/stashed/postgres/commit/f240c25) Merge pull request Allow overriding secret keys from AppBinding #33 +- [4e5898f](https://github.com/stashed/postgres/commit/4e5898f) Fix typos (#32) +- [b4b61cf](https://github.com/stashed/postgres/commit/b4b61cf) Update to Kubernetes v1.18.3 (#34) +- [62f2714](https://github.com/stashed/postgres/commit/62f2714) Update crazy-max/ghaction-docker-buildx flag +- [962df30](https://github.com/stashed/postgres/commit/962df30) function-args: add pg-back-cmd option +- [55e792e](https://github.com/stashed/postgres/commit/55e792e) Trigger the workflow on push or pull request +- [66b4a51](https://github.com/stashed/postgres/commit/66b4a51) Auto generate chart readme file +- [dd606bf](https://github.com/stashed/postgres/commit/dd606bf) Correctly mark optional fields +- [efe4799](https://github.com/stashed/postgres/commit/efe4799) Add openapi v3 schema for values file (#27) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.10.0](https://github.com/stashed/stash/releases/tag/v0.10.0) + +- [e58a2267](https://github.com/stashed/stash/commit/e58a2267) Prepare for release v0.10.0 (#1182) +- [485f80c6](https://github.com/stashed/stash/commit/485f80c6) Prepare for release v0.10.0-rc.2 (#1181) +- [20d585f4](https://github.com/stashed/stash/commit/20d585f4) Prepare for release v0.10.0-rc.1 (#1180) +- [76fe3ebd](https://github.com/stashed/stash/commit/76fe3ebd) Create GitHub release from release workflow +- [f3e5cccc](https://github.com/stashed/stash/commit/f3e5cccc) Fix installation link +- [3ebb7788](https://github.com/stashed/stash/commit/3ebb7788) Prepare for release v0.10.0-rc.0 (#1179) +- [48e5c87e](https://github.com/stashed/stash/commit/48e5c87e) Update Kubernetes v1.18.3 dependencies (#1178) +- [c269c8ed](https://github.com/stashed/stash/commit/c269c8ed) Port changes from enterprise version (#1176) +- [0fea720b](https://github.com/stashed/stash/commit/0fea720b) Update Kubernetes v1.18.3 dependencies (#1174) +- [c4b6013f](https://github.com/stashed/stash/commit/c4b6013f) Update Kubernetes v1.18.3 dependencies (#1173) +- [77b3eab8](https://github.com/stashed/stash/commit/77b3eab8) Update Kubernetes v1.18.3 dependencies (#1169) +- [64f7c292](https://github.com/stashed/stash/commit/64f7c292) Update Kubernetes v1.18.3 dependencies (#1168) +- [2d6fd7da](https://github.com/stashed/stash/commit/2d6fd7da) Update Kubernetes v1.18.3 dependencies (#1167) +- [378de04d](https://github.com/stashed/stash/commit/378de04d) Update Kubernetes v1.18.3 dependencies (#1159) +- [20decffa](https://github.com/stashed/stash/commit/20decffa) Build images in e2e workflow +- [4919cb03](https://github.com/stashed/stash/commit/4919cb03) Allow configuring k8s in e2e tests (#1155) +- [6e71662a](https://github.com/stashed/stash/commit/6e71662a) Update to Kubernetes v1.18.3 (#1154) +- [a83021fd](https://github.com/stashed/stash/commit/a83021fd) Trigger e2e tests on /ok-to-test command (#1150) +- [6bf44ceb](https://github.com/stashed/stash/commit/6bf44ceb) Update to Kubernetes v1.18.3 (#1149) +- [bcbb3a98](https://github.com/stashed/stash/commit/bcbb3a98) Update to Kubernetes v1.18.3 (#1148) +- [3b717aac](https://github.com/stashed/stash/commit/3b717aac) Prepare for release v0.10.0-beta.1 (#1146) +- [c8b81cf7](https://github.com/stashed/stash/commit/c8b81cf7) Prepare for release v0.10.0-beta.0 (#1145) +- [2d145f47](https://github.com/stashed/stash/commit/2d145f47) Clarify Docker images are dually licensed +- [693ab7df](https://github.com/stashed/stash/commit/693ab7df) Update License (#1144) +- [e13d67eb](https://github.com/stashed/stash/commit/e13d67eb) Update to Kubernetes v1.18.3 (#1142) +- [26ee605a](https://github.com/stashed/stash/commit/26ee605a) Update ci.yml +- [9fa95666](https://github.com/stashed/stash/commit/9fa95666) Add workflow to update docs (#1136) +- [95a62a95](https://github.com/stashed/stash/commit/95a62a95) Update update-release-tracker.sh +- [379c90d5](https://github.com/stashed/stash/commit/379c90d5) Update update-release-tracker.sh +- [cd0a70ee](https://github.com/stashed/stash/commit/cd0a70ee) Use GITHUB_BASE_REF to detect target branch +- [e27c5f66](https://github.com/stashed/stash/commit/e27c5f66) Add script to update release tracker on pr merge (#1132) +- [b0dd5051](https://github.com/stashed/stash/commit/b0dd5051) Update .kodiak.toml +- [e87bad80](https://github.com/stashed/stash/commit/e87bad80) Parameterize installer namespace +- [da8d8956](https://github.com/stashed/stash/commit/da8d8956) Format CI workflows +- [bbde40a3](https://github.com/stashed/stash/commit/bbde40a3) Update to Kubernetes v1.18.3 (#1129) +- [38eb3781](https://github.com/stashed/stash/commit/38eb3781) Update to Kubernetes v1.18.3 +- [197aa7bd](https://github.com/stashed/stash/commit/197aa7bd) Create .kodiak.toml +- [181ca49e](https://github.com/stashed/stash/commit/181ca49e) Update coverage script +- [26602c96](https://github.com/stashed/stash/commit/26602c96) Merge pull request #1125 from stashed/fix-ci-tests +- [54f87b78](https://github.com/stashed/stash/commit/54f87b78) Increase wait timeout +- [43428085](https://github.com/stashed/stash/commit/43428085) Remove unnecessary test codes + run test in parallel +- [8a780e0c](https://github.com/stashed/stash/commit/8a780e0c) Fix clone-pvc tests +- [7027c0f6](https://github.com/stashed/stash/commit/7027c0f6) Fix E2E test +- [31de588a](https://github.com/stashed/stash/commit/31de588a) Change GCS test bucket name to stash-ci (#1122) +- [30a490a6](https://github.com/stashed/stash/commit/30a490a6) Merge pull request #1121 from stashed/baseline-psp +- [419a18e3](https://github.com/stashed/stash/commit/419a18e3) Use StringSlice type flag +- [9dd3804d](https://github.com/stashed/stash/commit/9dd3804d) Make PSP names configurable through flag +- [e4edef44](https://github.com/stashed/stash/commit/e4edef44) Always use baseline PSP +- [cf1538a0](https://github.com/stashed/stash/commit/cf1538a0) Use filepath.Join to generate Repository prefix for BackupBatch (#1120) +- [be189169](https://github.com/stashed/stash/commit/be189169) Go back to using engineerd/setup-kind +- [ae2d74fa](https://github.com/stashed/stash/commit/ae2d74fa) Update dependencies (#1117) +- [a93a5b4c](https://github.com/stashed/stash/commit/a93a5b4c) Remove defaults from CRD v1beta1 (#1116) +- [40e65761](https://github.com/stashed/stash/commit/40e65761) Use CRD v1 for Kubernetes >= 1.16 (#1115) +- [7d851e53](https://github.com/stashed/stash/commit/7d851e53) Merge pull request #1114 from stashed/x7 +- [352ddeed](https://github.com/stashed/stash/commit/352ddeed) Use preinstalled kind +- [11c9e422](https://github.com/stashed/stash/commit/11c9e422) Pass context +- [21053603](https://github.com/stashed/stash/commit/21053603) Update to Kubernetes 1.18.3 +- [f450e9cc](https://github.com/stashed/stash/commit/f450e9cc) Add wait for target logic + add conditions for BackupConfiguration + BackupBatch + RestoreSession (#1108) +- [8f8ff87e](https://github.com/stashed/stash/commit/8f8ff87e) Fix volume snapshot job cleanup (#1090) +- [a4a868b5](https://github.com/stashed/stash/commit/a4a868b5) Merge pull request #1111 from stashed/fix-interimVolume +- [108d0252](https://github.com/stashed/stash/commit/108d0252) Set BackupSession as owner of the pvc created from interimVolumeTemplate +- [fd136c53](https://github.com/stashed/stash/commit/fd136c53) Use Go 1.14.3 +- [74c71d22](https://github.com/stashed/stash/commit/74c71d22) Update crazy-max/ghaction-docker-buildx flag +- [f783899b](https://github.com/stashed/stash/commit/f783899b) Trigger the workflow on push to master +- [e7eceb30](https://github.com/stashed/stash/commit/e7eceb30) Trigger the workflow on push or pull request +- [fe479e8c](https://github.com/stashed/stash/commit/fe479e8c) Use kind v0.8.0 +- [9fc4665a](https://github.com/stashed/stash/commit/9fc4665a) Merge pull request #1093 from robotinfra/master +- [ef2d57e3](https://github.com/stashed/stash/commit/ef2d57e3) fix typo succesSfully +- [d8d35c49](https://github.com/stashed/stash/commit/d8d35c49) fix event types mismatch +- [53dfe8b0](https://github.com/stashed/stash/commit/53dfe8b0) Update stash labels in Makefile +- [c8081c1d](https://github.com/stashed/stash/commit/c8081c1d) Pass image pull secrets to helm chart +- [37b9b312](https://github.com/stashed/stash/commit/37b9b312) Use Go 1.14.2 (#1074) +- [09621974](https://github.com/stashed/stash/commit/09621974) Update K8s version 1.14.6 to 1.14.10 (#1084) +- [8a1ab32c](https://github.com/stashed/stash/commit/8a1ab32c) Give backup triggering CronJob all permissions for Stash crds (#1083) +- [53b932b1](https://github.com/stashed/stash/commit/53b932b1) Use kubectl 1.17 (#1082) +- [5cdeebee](https://github.com/stashed/stash/commit/5cdeebee) Fix nil pointer exception during VolumeSnapshot (#1073) +- [30630d60](https://github.com/stashed/stash/commit/30630d60) Assign returned error properly crateRestoreSessoin() (#1069) +- [3fcbe1b7](https://github.com/stashed/stash/commit/3fcbe1b7) Update README.md to reflect Stash's capability properly (#1060) +- [53513cfe](https://github.com/stashed/stash/commit/53513cfe) Update README.md +- [d615e2c0](https://github.com/stashed/stash/commit/d615e2c0) Add license scan report and status (#1031) +- [473dab81](https://github.com/stashed/stash/commit/473dab81) Use stash.appscode.dev/apimachinery@v0.9.0-rc.6 +- [81be166a](https://github.com/stashed/stash/commit/81be166a) Use stash.appscode.dev/apimachinery (#1051) +- [99dcf0a5](https://github.com/stashed/stash/commit/99dcf0a5) Add support for specifying "region" for S3 backend (#1050) +- [deeaaafe](https://github.com/stashed/stash/commit/deeaaafe) Fix event message (#1048) +- [7bb2ae55](https://github.com/stashed/stash/commit/7bb2ae55) Merge pull request #1047 from stashed/rm-fsgroup +- [a7c3a60b](https://github.com/stashed/stash/commit/a7c3a60b) Remove defaulting FSGroup +- [49bf689d](https://github.com/stashed/stash/commit/49bf689d) Fix Repository CRDs print column (#1046) +- [feb204be](https://github.com/stashed/stash/commit/feb204be) Update README.md to v0.9.0-rc.4 +- [ba1733eb](https://github.com/stashed/stash/commit/ba1733eb) Don't check if target exist from BackupSession creating CronJob (#1028) +- [ddc65ceb](https://github.com/stashed/stash/commit/ddc65ceb) Fix ServiceAccount name mitchmatch (#1025) +- [013e5254](https://github.com/stashed/stash/commit/013e5254) Suspend CronJob but keep instant backup working while backup is paused (#1024) +- [64f75bb7](https://github.com/stashed/stash/commit/64f75bb7) Add stash specific prefix to automatically created resources (#1023) +- [d44e0ae2](https://github.com/stashed/stash/commit/d44e0ae2) Fix CronJob creation failure handling (#1021) +- [b2640d36](https://github.com/stashed/stash/commit/b2640d36) Use Go 1.13.6 +- [1eb8da6e](https://github.com/stashed/stash/commit/1eb8da6e) Update gendocs command (#1016) +- [6f7c8191](https://github.com/stashed/stash/commit/6f7c8191) Add hook tests for BackupBatch (#1014) +- [84272af9](https://github.com/stashed/stash/commit/84272af9) check nil pointer error (#1015) +- [36ef1d2b](https://github.com/stashed/stash/commit/36ef1d2b) Enable tests for K8s 1.11 (#1013) +- [7c774d77](https://github.com/stashed/stash/commit/7c774d77) Fix backup-batch issues (#1004) +- [5bf1e2c2](https://github.com/stashed/stash/commit/5bf1e2c2) Bring back support for k8s 1.11 (#1008) +- [d6e0fe4b](https://github.com/stashed/stash/commit/d6e0fe4b) Remove creationTimestamp from PartialObjectMeta (#1006) +- [6ae79134](https://github.com/stashed/stash/commit/6ae79134) Add BackupBatch support (#985) +- [ed42b159](https://github.com/stashed/stash/commit/ed42b159) Update twitter account (#1003) +- [c8513185](https://github.com/stashed/stash/commit/c8513185) Add Repository Validation for local backend `mountPath` (#947) +- [11f4c5e2](https://github.com/stashed/stash/commit/11f4c5e2) Fix invalid flag name for PVC restorer job (#960) +- [93358115](https://github.com/stashed/stash/commit/93358115) Add Backend e2e Test (#975) +- [ca688540](https://github.com/stashed/stash/commit/ca688540) Update client-go to kubernetes-1.16.3 (#987) +- [e18f30dd](https://github.com/stashed/stash/commit/e18f30dd) Use RWX for restic output.json (#1001) +- [4d9cdbc8](https://github.com/stashed/stash/commit/4d9cdbc8) Run `chmod` on `output.json` only by owner container + Improve… (#1000) +- [8378f141](https://github.com/stashed/stash/commit/8378f141) Add Backup and Restore hooks (#978) +- [a4dd1a1d](https://github.com/stashed/stash/commit/a4dd1a1d) Use helm chart instead of script to install operator (#999) +- [ec5c9efd](https://github.com/stashed/stash/commit/ec5c9efd) Update hack/fmt.sh script +- [54dbef4c](https://github.com/stashed/stash/commit/54dbef4c) Add helper library for CRDs (#977) +- [16483ce1](https://github.com/stashed/stash/commit/16483ce1) Use kubebuilder generated CRD yamls (#971) +- [eacba300](https://github.com/stashed/stash/commit/eacba300) Fix typo (#976) +- [dd500b08](https://github.com/stashed/stash/commit/dd500b08) Use controller-tools@v0.2.2 to generate structural schema (#974) +- [53331837](https://github.com/stashed/stash/commit/53331837) Migrate Repository status.size, Recovery status.observedGeneration (#969) +- [69ef388b](https://github.com/stashed/stash/commit/69ef388b) Generate protobuf files for api types (#967) +- [decea34f](https://github.com/stashed/stash/commit/decea34f) Fix Repository returned error message (#961) +- [5a9e0356](https://github.com/stashed/stash/commit/5a9e0356) Apply valid name functionality (#950) +- [122ed35f](https://github.com/stashed/stash/commit/122ed35f) Test installer against multiple k8s version (#953) +- [63cfc0f9](https://github.com/stashed/stash/commit/63cfc0f9) Format shell scripts (#952) +- [c77dfcd4](https://github.com/stashed/stash/commit/c77dfcd4) Add missing license header +- [780fd2cb](https://github.com/stashed/stash/commit/780fd2cb) Rename Dockerfiles (#946) +- [dc34560a](https://github.com/stashed/stash/commit/dc34560a) Add AutoBackup e2e test (#939) +- [6979ff8b](https://github.com/stashed/stash/commit/6979ff8b) Enable race detector (#944) +- [69acf528](https://github.com/stashed/stash/commit/69acf528) Add license header to files (#943) +- [b2636f8b](https://github.com/stashed/stash/commit/b2636f8b) Don't add AppBinding labels in metric when AppBinding is not available (#942) +- [18e1ab7e](https://github.com/stashed/stash/commit/18e1ab7e) Fix BackupSession creation for ReplicaSet (#940) +- [8ce4ab86](https://github.com/stashed/stash/commit/8ce4ab86) Fix klog flag parsing +- [efd614f9](https://github.com/stashed/stash/commit/efd614f9) Revendor +- [f3fa386f](https://github.com/stashed/stash/commit/f3fa386f) Use crazy-max/ghaction-docker-buildx@v1 +- [5cc99c53](https://github.com/stashed/stash/commit/5cc99c53) Show diff when files `make verify` fails (#937) +- [d20892dd](https://github.com/stashed/stash/commit/d20892dd) Update make fmt +- [fc827b84](https://github.com/stashed/stash/commit/fc827b84) Split imports into 3 blocks (#936) +- [269527cf](https://github.com/stashed/stash/commit/269527cf) Volume e2e test github action (#933) +- [926dcd20](https://github.com/stashed/stash/commit/926dcd20) Fix BackupSession additional print column (#932) +- [f052f7a2](https://github.com/stashed/stash/commit/f052f7a2) Remove spec.backupConfiguration from BackupSession (#931) +- [d378ef2d](https://github.com/stashed/stash/commit/d378ef2d) Update e2e tests to run on GitHub actions (#917) +- [bc27645c](https://github.com/stashed/stash/commit/bc27645c) Enable make ci (#928) +- [9ef3cfeb](https://github.com/stashed/stash/commit/9ef3cfeb) Don't restart workload on backup pause+Use ImagePullPolicy: "Always" for Function-Task model (#929) +- [a5f00836](https://github.com/stashed/stash/commit/a5f00836) Add status.observedGeneration (#927) +- [57eadd03](https://github.com/stashed/stash/commit/57eadd03) Implement RetentionPolicy for VolumeSnapshot (#926) +- [db709fdc](https://github.com/stashed/stash/commit/db709fdc) Verify generated files are up to date (#925) +- [5fb54194](https://github.com/stashed/stash/commit/5fb54194) Update and rename go.yml to ci.yml (#922) +- [0be34c5e](https://github.com/stashed/stash/commit/0be34c5e) Add probe and BackupBatch api (#890) +- [a55b6e84](https://github.com/stashed/stash/commit/a55b6e84) Use core package from k8s.io/api repo (#921) +- [f5a271be](https://github.com/stashed/stash/commit/f5a271be) Bring back dependency to github.com/golang/protobuf@v1.2.0 (#918) +- [5dfeecbc](https://github.com/stashed/stash/commit/5dfeecbc) Update tag pattern for release pipeline +- [e31f5e9a](https://github.com/stashed/stash/commit/e31f5e9a) Run e2e tests using GitHub actions (#909) +- [8bb3ef36](https://github.com/stashed/stash/commit/8bb3ef36) Add app=stash label to crd yamls +- [b50b47c9](https://github.com/stashed/stash/commit/b50b47c9) Generate swagger.json for v1beta1 (#916) +- [095a4a6c](https://github.com/stashed/stash/commit/095a4a6c) Add release pipeline (#915) +- [66926055](https://github.com/stashed/stash/commit/66926055) Fix Restore PVC using Task Function method (#897) +- [404840e4](https://github.com/stashed/stash/commit/404840e4) Fix VolumeSnapshot Issues (#912) +- [7f3b2250](https://github.com/stashed/stash/commit/7f3b2250) Add Kubebuilder annotations (#911) +- [0a499f13](https://github.com/stashed/stash/commit/0a499f13) Use kubebuilder to generate crd yamls (#843) +- [4903508f](https://github.com/stashed/stash/commit/4903508f) Update go.yml +- [23c44bc0](https://github.com/stashed/stash/commit/23c44bc0) Introduce InterimVolumeTemplate and BackupHistoryLimit field. (#907) +- [4ee56d63](https://github.com/stashed/stash/commit/4ee56d63) Make RetentionPolicy required in v1beta1 api (#905) +- [5476cd7a](https://github.com/stashed/stash/commit/5476cd7a) Enable GitHub actions (#903) +- [fe87b789](https://github.com/stashed/stash/commit/fe87b789) Fix snapshot listing for local backend (#902) +- [5f49f5d2](https://github.com/stashed/stash/commit/5f49f5d2) Improve Error Handling + Code refactor (#891) +- [88c84275](https://github.com/stashed/stash/commit/88c84275) Add `NICE` and `IONICE` into distroless image (#883) +- [f63d5c1a](https://github.com/stashed/stash/commit/f63d5c1a) Improve metrics handling + make update status uniform (#872) +- [ea68de24](https://github.com/stashed/stash/commit/ea68de24) Use default fsGroup: 65535 (#874) +- [9bbcabab](https://github.com/stashed/stash/commit/9bbcabab) Add DumpEnv func to Restic Config file (#870) +- [ebde15db](https://github.com/stashed/stash/commit/ebde15db) Allow to specify subPath in auto-backup annotation (#871) +- [6c127323](https://github.com/stashed/stash/commit/6c127323) Silence docker buildx command (#866) +- [5c47abc3](https://github.com/stashed/stash/commit/5c47abc3) Update README.md (#865) +- [50f69ffe](https://github.com/stashed/stash/commit/50f69ffe) Use docker buildx to build docker image (#864) +- [d8c0b1d8](https://github.com/stashed/stash/commit/d8c0b1d8) Update version in gendocs script +- [cb972a98](https://github.com/stashed/stash/commit/cb972a98) Use github.com/Azure/go-autorest/autorest@v0.7.0 (#862) +- [ae5c1325](https://github.com/stashed/stash/commit/ae5c1325) Remove the `bs` short name for BackupSession (#859) +- [1c01d69d](https://github.com/stashed/stash/commit/1c01d69d) Use github.com/golang/protobuf@v1.2.0 (#855) +- [998fac02](https://github.com/stashed/stash/commit/998fac02) New variable from type field of AppBinding + Fix RoleBinding nam… (#845) +- [b97b7622](https://github.com/stashed/stash/commit/b97b7622) Fix resolving Task if volumeClaimTemplate is set in RestoreSession(#852) +- [4ec6caf8](https://github.com/stashed/stash/commit/4ec6caf8) Rename BackupConfigurationTemplate to BackupBlueprint (#847) +- [d8efb120](https://github.com/stashed/stash/commit/d8efb120) Use POD_ORDINAL env var to restore using PVC template (#849) +- [8df5be99](https://github.com/stashed/stash/commit/8df5be99) Pass replicas from RestoreSession to Function (#848) +- [ae5eabd4](https://github.com/stashed/stash/commit/ae5eabd4) Use variable for version in BackupConfigurationTemplate name (#846) +- [fe5b2049](https://github.com/stashed/stash/commit/fe5b2049) Fix Platforms Issue (#844) +- [33fc37cd](https://github.com/stashed/stash/commit/33fc37cd) Add support to restore using volumeClaimTemplate in Function-Task model (#841) +- [3de534ba](https://github.com/stashed/stash/commit/3de534ba) Add GetSnapshotSize() function (#839) +- [6bc80ce2](https://github.com/stashed/stash/commit/6bc80ce2) Fix travis build (#837) +- [1c51a7c5](https://github.com/stashed/stash/commit/1c51a7c5) Add support for parallel backup & restore (#833) +- [e250bb62](https://github.com/stashed/stash/commit/e250bb62) Fix RestoreSession replicas logic (#835) +- [37618091](https://github.com/stashed/stash/commit/37618091) Use cron.ParseStandard helper +- [5015a60d](https://github.com/stashed/stash/commit/5015a60d) Update azure-sdk-for-go dependencies (#836) +- [920dfaea](https://github.com/stashed/stash/commit/920dfaea) Update github.com/appscode/go@master +- [ca2fad07](https://github.com/stashed/stash/commit/ca2fad07) Use robfig/cron@v3 (#834) +- [95728126](https://github.com/stashed/stash/commit/95728126) Fix restore Job parallel execution (#832) +- [94cbae13](https://github.com/stashed/stash/commit/94cbae13) Remove unused code (#829) +- [4dc11263](https://github.com/stashed/stash/commit/4dc11263) Generate docs files inside docs repo (#828) +- [6fb5bc7f](https://github.com/stashed/stash/commit/6fb5bc7f) Create default Functions and Tasks from operator (#824) +- [bb675f67](https://github.com/stashed/stash/commit/bb675f67) Fix restore job RBAC (#821) +- [f96852fc](https://github.com/stashed/stash/commit/f96852fc) Fixed volumeSnapshot Error Issue (#819) +- [08b0f50f](https://github.com/stashed/stash/commit/08b0f50f) fix default securityContext passing to restore init-container/job + fix container name (#823) +- [4aa94675](https://github.com/stashed/stash/commit/4aa94675) Add License notice to makefile (#825) +- [955b1adb](https://github.com/stashed/stash/commit/955b1adb) Make --image-tag a required flag. (#817) +- [9ca08aa6](https://github.com/stashed/stash/commit/9ca08aa6) Always attempt to pull a newer image for `make container` (#818) +- [b88cb9dc](https://github.com/stashed/stash/commit/b88cb9dc) Update constants.go +- [aa0c41f4](https://github.com/stashed/stash/commit/aa0c41f4) Add PusgatewayURL input for Functions (#816) +- [0a45b44a](https://github.com/stashed/stash/commit/0a45b44a) Restore PVCs from templates using Restic (#809) +- [0729ab19](https://github.com/stashed/stash/commit/0729ab19) Add TARGET_RESOURCE variable for BackupConfigurationTemplate (#814) +- [bab795c2](https://github.com/stashed/stash/commit/bab795c2) Add make install, uninstall, purge commands (#813) +- [604af0d5](https://github.com/stashed/stash/commit/604af0d5) Move chart & deploy scripts to github.com/stashed/installer (#811) +- [521f441b](https://github.com/stashed/stash/commit/521f441b) Use stashed/docs repo +- [4c89667d](https://github.com/stashed/stash/commit/4c89667d) Move docs to github.com/stashed/docs repo (#810) +- [e6614482](https://github.com/stashed/stash/commit/e6614482) Fix travis build (#804) +- [d8f565f4](https://github.com/stashed/stash/commit/d8f565f4) Pass labels to offshoot + add generic offshoot labels (#801) +- [eadca45d](https://github.com/stashed/stash/commit/eadca45d) Move HandleResticError to util package (#806) +- [df42b83f](https://github.com/stashed/stash/commit/df42b83f) Remove canary support (#805) +- [82614d32](https://github.com/stashed/stash/commit/82614d32) Update Version.go (#803) +- [74453ad8](https://github.com/stashed/stash/commit/74453ad8) Added ARM64 support to the install script and manifest (#802) +- [24ece6cc](https://github.com/stashed/stash/commit/24ece6cc) Load modules from vendor folder for linter +- [2672ee05](https://github.com/stashed/stash/commit/2672ee05) Add Makefile (#800) +- [ac829f30](https://github.com/stashed/stash/commit/ac829f30) VolumeSnapshot (#787) +- [a8f3172f](https://github.com/stashed/stash/commit/a8f3172f) Remove importance of order of rule in RestoreSession (#795) +- [886649ed](https://github.com/stashed/stash/commit/886649ed) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [f038d86e](https://github.com/stashed/stash/commit/f038d86e) Use absolute path as aliases for reference docs. (#796) +- [b9100307](https://github.com/stashed/stash/commit/b9100307) Support PSP enabled cluster (#729) +- [e94399dc](https://github.com/stashed/stash/commit/e94399dc) Use restic 0.9.5 (#789) +- [e962a1c4](https://github.com/stashed/stash/commit/e962a1c4) Fix: User and group creation of stash for mongodb and mysql (#786) +- [228df5a3](https://github.com/stashed/stash/commit/228df5a3) Update concept doc (#739) +- [de9536cd](https://github.com/stashed/stash/commit/de9536cd) Update backup manager (#782) +- [739273a5](https://github.com/stashed/stash/commit/739273a5) Configure Env variables for Functions (#780) +- [c49b24f6](https://github.com/stashed/stash/commit/c49b24f6) Add support for backup cluster resources YAML (#721) +- [91bce2fd](https://github.com/stashed/stash/commit/91bce2fd) Add "Supported Backends" doc to new guides (#756) +- [a8ef2d36](https://github.com/stashed/stash/commit/a8ef2d36) Fix rest backend for workloads + add more authentication method for swift backend (#778) +- [775b6660](https://github.com/stashed/stash/commit/775b6660) Backup and restore Elasticsearch (#702) +- [0fbb9c75](https://github.com/stashed/stash/commit/0fbb9c75) Add guides template for new design (#755) +- [03689414](https://github.com/stashed/stash/commit/03689414) Update package path to stash.appscode.dev/stash (#776) +- [639d499f](https://github.com/stashed/stash/commit/639d499f) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [9ba906d8](https://github.com/stashed/stash/commit/9ba906d8) MutatingWebhooks must be without side-effect (#773) +- [937012d5](https://github.com/stashed/stash/commit/937012d5) Introduce VolumeSnapshot APIs (#772) +- [2b0f0560](https://github.com/stashed/stash/commit/2b0f0560) Use osm pkg from kmodules/objectstore-api (#770) +- [cd9f6ad6](https://github.com/stashed/stash/commit/cd9f6ad6) Remove --rbac flag (#761) +- [09af5d31](https://github.com/stashed/stash/commit/09af5d31) Skip creating/processing backup-session when backup-config is paused (#759) +- [99753f73](https://github.com/stashed/stash/commit/99753f73) Fix go fmt +- [64bb9bdd](https://github.com/stashed/stash/commit/64bb9bdd) Stash v1beta1 E2E test for PVC (#753) +- [bcf8b90d](https://github.com/stashed/stash/commit/bcf8b90d) Implement snapshots for v1beta1 api (#749) +- [3f0ae2d4](https://github.com/stashed/stash/commit/3f0ae2d4) Run restic commands using docker (#754) +- [17feb41c](https://github.com/stashed/stash/commit/17feb41c) Update Kubernetes client libraries to 1.13.5 (#752) +- [2d413ee0](https://github.com/stashed/stash/commit/2d413ee0) Stash v1beta1 E2E test for ReplicaSet (#747) +- [80b2b3d9](https://github.com/stashed/stash/commit/80b2b3d9) Enable pipefail and update restore yamls (#750) +- [c908df9f](https://github.com/stashed/stash/commit/c908df9f) Stash v1beta1 E2E test for ReplicationController (#742) +- [82c17eaf](https://github.com/stashed/stash/commit/82c17eaf) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [d113b24f](https://github.com/stashed/stash/commit/d113b24f) Add Stash CLI (#734) +- [286792a6](https://github.com/stashed/stash/commit/286792a6) Stash v1beta1 E2E test for DaemonSet (#741) +- [62960e5b](https://github.com/stashed/stash/commit/62960e5b) Apply nice/ionice settings from env (#746) +- [a2534c97](https://github.com/stashed/stash/commit/a2534c97) Stash V1beta1 E2E test for StatefulSet (#737) +- [37087b38](https://github.com/stashed/stash/commit/37087b38) Stash V1beta1 E2E test for Deployment (#710) +- [c08f04e4](https://github.com/stashed/stash/commit/c08f04e4) Attach local backend (#736) +- [7a282d91](https://github.com/stashed/stash/commit/7a282d91) Fix openapi path prefixes for validators and mutators (#732) +- [a8aef590](https://github.com/stashed/stash/commit/a8aef590) Add max-connections for GCS, Azure, B2 backend (#730) +- [dd3f459c](https://github.com/stashed/stash/commit/dd3f459c) Rename admission webhooks to avoid name collision (#725) +- [a32ceff5](https://github.com/stashed/stash/commit/a32ceff5) Apply EmptyDir settings to TmpDir (#719) +- [36fdb9ae](https://github.com/stashed/stash/commit/36fdb9ae) Use FailurePolicy ignore for K8s resource webhooks (#726) +- [4cab69a0](https://github.com/stashed/stash/commit/4cab69a0) Don't write secret data inside temp dir (#724) +- [e2bcc4a8](https://github.com/stashed/stash/commit/e2bcc4a8) Use ionice and nice with Restic CMD (#716) +- [bf91db4e](https://github.com/stashed/stash/commit/bf91db4e) Use cleanup-cache flag (#717) +- [f2669f17](https://github.com/stashed/stash/commit/f2669f17) Add TempDir and PSP settings for Function (#720) +- [dfc3fbd6](https://github.com/stashed/stash/commit/dfc3fbd6) Add support for rest backend (#713) +- [47cf2dd4](https://github.com/stashed/stash/commit/47cf2dd4) Add support for OpenShift DeploymentConfig (#714) +- [8c2b81b0](https://github.com/stashed/stash/commit/8c2b81b0) Backup and restore Mongo DB (#699) +- [2849319a](https://github.com/stashed/stash/commit/2849319a) Backup and restore MySQL DB (#696) +- [49fe8404](https://github.com/stashed/stash/commit/49fe8404) Backup and restore Postgres DB (#695) +- [dbff05f6](https://github.com/stashed/stash/commit/dbff05f6) Backup from stdin and dump to stdout (#694) +- [08ff2fa5](https://github.com/stashed/stash/commit/08ff2fa5) Add BackupSession Controller for Sidecar (#701) +- [83f1c6e5](https://github.com/stashed/stash/commit/83f1c6e5) Update workload controller for new design (#675) +- [13fb68bd](https://github.com/stashed/stash/commit/13fb68bd) Post backup/restore status update (#691) +- [30993c08](https://github.com/stashed/stash/commit/30993c08) Backup and restore PVC (#676) +- [7bdf0752](https://github.com/stashed/stash/commit/7bdf0752) Resolve tasks for backup/restore sessions (#674) +- [6a74602a](https://github.com/stashed/stash/commit/6a74602a) Add restic wrapper library (#673) +- [7b8309a5](https://github.com/stashed/stash/commit/7b8309a5) Add BackupConfiguration Controller (#671) +- [6f6c25d1](https://github.com/stashed/stash/commit/6f6c25d1) Use ContainerRuntimeSettings in Function spec (#689) +- [4d80cf6b](https://github.com/stashed/stash/commit/4d80cf6b) Update Kubernetes client libraries to 1.13.0 (#687) +- [361d4ad3](https://github.com/stashed/stash/commit/361d4ad3) Fix v1beta1 api for BackupConfigurationTemplate (#688) +- [302311af](https://github.com/stashed/stash/commit/302311af) Introduce v1beta1 api (#647) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.09.16.md b/content/docs/v2024.8.27/CHANGELOG-v2020.09.16.md new file mode 100644 index 0000000000..ddbf8762d7 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.09.16.md @@ -0,0 +1,432 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.09.16 + name: Changelog-v2020.09.16 + parent: welcome + weight: 20200916 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.09.16/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.09.16/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.09.16 (2020-09-16) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.0) + +- [8add0e83](https://github.com/appscode/stash-enterprise/commit/8add0e83) Prepare for release v0.11.0 (#24) +- [0b689384](https://github.com/appscode/stash-enterprise/commit/0b689384) Install license handler to operator webhook server (#23) +- [19e8313d](https://github.com/appscode/stash-enterprise/commit/19e8313d) Update Prometheus client version (#22) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.0](https://github.com/stashed/apimachinery/releases/tag/v0.11.0) + +- [0189ba36](https://github.com/stashed/apimachinery/commit/0189ba36) Add license related constants (#47) +- [de630b13](https://github.com/stashed/apimachinery/commit/de630b13) Update Kubernetes v1.18.3 dependencies (#48) +- [546ceea9](https://github.com/stashed/apimachinery/commit/546ceea9) Update Prometheus client version (#44) +- [88df3b0c](https://github.com/stashed/apimachinery/commit/88df3b0c) Update Kubernetes v1.18.3 dependencies (#46) +- [8608f5c5](https://github.com/stashed/apimachinery/commit/8608f5c5) Update Kubernetes v1.18.3 dependencies (#45) +- [41eca8e8](https://github.com/stashed/apimachinery/commit/41eca8e8) Update Kubernetes v1.18.3 dependencies (#43) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.09.16](https://github.com/stashed/catalog/releases/tag/v2020.09.16) + +- [1f44b9a](https://github.com/stashed/catalog/commit/1f44b9a) Prepare for release v2020.09.16 (#38) +- [c49f66f](https://github.com/stashed/catalog/commit/c49f66f) Use AppsCode Community License (#37) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.0](https://github.com/stashed/cli/releases/tag/v0.11.0) + +- [28f863f](https://github.com/stashed/cli/commit/28f863f) Prepare for release v0.11.0 (#48) +- [fe90a5a](https://github.com/stashed/cli/commit/fe90a5a) Update Kubernetes v1.18.3 dependencies (#47) +- [bdc2eb8](https://github.com/stashed/cli/commit/bdc2eb8) Use github.com/prometheus/client_golang@v1.7.1 (#46) +- [fea66e1](https://github.com/stashed/cli/commit/fea66e1) Update Kubernetes v1.18.3 dependencies (#45) +- [334aff0](https://github.com/stashed/cli/commit/334aff0) Use AppsCode Community License (#44) +- [5e07d8f](https://github.com/stashed/cli/commit/5e07d8f) Update Kubernetes v1.18.3 dependencies (#43) +- [c6a8d81](https://github.com/stashed/cli/commit/c6a8d81) Update Kubernetes v1.18.3 dependencies (#42) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v2](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v2) + +- [ced22a9](https://github.com/stashed/elasticsearch/commit/ced22a9) Prepare for release 5.6.4-v2 (#246) +- [2ff93eb](https://github.com/stashed/elasticsearch/commit/2ff93eb) [cherry-pick] Verify license info from stash operator (#237) (#238) +- [9fffb2d](https://github.com/stashed/elasticsearch/commit/9fffb2d) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#229) +- [54e853c](https://github.com/stashed/elasticsearch/commit/54e853c) [cherry-pick] Switch to AppsCode Trial license (#219) (#220) +- [cf45e19](https://github.com/stashed/elasticsearch/commit/cf45e19) [cherry-pick] Use AppsCode Community License (#210) (#211) + + +### [6.2.4-v2](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v2) + +- [a4a25fb](https://github.com/stashed/elasticsearch/commit/a4a25fb) Prepare for release 6.2.4-v2 (#247) +- [faccd9c](https://github.com/stashed/elasticsearch/commit/faccd9c) [cherry-pick] Verify license info from stash operator (#237) (#239) +- [1fcca35](https://github.com/stashed/elasticsearch/commit/1fcca35) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#230) +- [5ff3d49](https://github.com/stashed/elasticsearch/commit/5ff3d49) [cherry-pick] Switch to AppsCode Trial license (#219) (#221) +- [f3fae80](https://github.com/stashed/elasticsearch/commit/f3fae80) [cherry-pick] Use AppsCode Community License (#210) (#212) + + +### [6.3.0-v2](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v2) + +- [0e19668](https://github.com/stashed/elasticsearch/commit/0e19668) Prepare for release 6.3.0-v2 (#248) +- [9648ed3](https://github.com/stashed/elasticsearch/commit/9648ed3) [cherry-pick] Verify license info from stash operator (#237) (#240) +- [4d23c41](https://github.com/stashed/elasticsearch/commit/4d23c41) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#231) +- [58649ad](https://github.com/stashed/elasticsearch/commit/58649ad) [cherry-pick] Switch to AppsCode Trial license (#219) (#222) +- [d950285](https://github.com/stashed/elasticsearch/commit/d950285) [cherry-pick] Use AppsCode Community License (#210) (#213) + + +### [6.4.0-v2](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v2) + +- [1020631](https://github.com/stashed/elasticsearch/commit/1020631) Prepare for release 6.4.0-v2 (#249) +- [7bfb7d7](https://github.com/stashed/elasticsearch/commit/7bfb7d7) [cherry-pick] Verify license info from stash operator (#237) (#241) +- [3eb4fb9](https://github.com/stashed/elasticsearch/commit/3eb4fb9) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#232) +- [f7c6228](https://github.com/stashed/elasticsearch/commit/f7c6228) [cherry-pick] Switch to AppsCode Trial license (#219) (#223) +- [b80c2f4](https://github.com/stashed/elasticsearch/commit/b80c2f4) [cherry-pick] Use AppsCode Community License (#210) (#214) + + +### [6.5.3-v2](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v2) + +- [3793d92](https://github.com/stashed/elasticsearch/commit/3793d92) Prepare for release 6.5.3-v2 (#250) +- [0e38789](https://github.com/stashed/elasticsearch/commit/0e38789) [cherry-pick] Verify license info from stash operator (#237) (#242) +- [3560a7e](https://github.com/stashed/elasticsearch/commit/3560a7e) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#233) +- [b904573](https://github.com/stashed/elasticsearch/commit/b904573) [cherry-pick] Switch to AppsCode Trial license (#219) (#224) +- [7b0b5f9](https://github.com/stashed/elasticsearch/commit/7b0b5f9) [cherry-pick] Use AppsCode Community License (#210) (#215) + + +### [6.8.0-v2](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v2) + +- [3c46fa4](https://github.com/stashed/elasticsearch/commit/3c46fa4) Prepare for release 6.8.0-v2 (#251) +- [489bf75](https://github.com/stashed/elasticsearch/commit/489bf75) [cherry-pick] Verify license info from stash operator (#237) (#243) +- [5dee02e](https://github.com/stashed/elasticsearch/commit/5dee02e) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#234) +- [067642a](https://github.com/stashed/elasticsearch/commit/067642a) [cherry-pick] Switch to AppsCode Trial license (#219) (#225) +- [7f96aea](https://github.com/stashed/elasticsearch/commit/7f96aea) [cherry-pick] Use AppsCode Community License (#210) (#216) + + +### [7.2.0-v2](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v2) + +- [32cffd2](https://github.com/stashed/elasticsearch/commit/32cffd2) Prepare for release 7.2.0-v2 (#252) +- [d123f35](https://github.com/stashed/elasticsearch/commit/d123f35) [cherry-pick] Verify license info from stash operator (#237) (#244) +- [25e8779](https://github.com/stashed/elasticsearch/commit/25e8779) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#235) +- [ddcd7ef](https://github.com/stashed/elasticsearch/commit/ddcd7ef) [cherry-pick] Switch to AppsCode Trial license (#219) (#226) +- [96add80](https://github.com/stashed/elasticsearch/commit/96add80) [cherry-pick] Use AppsCode Community License (#210) (#217) + + +### [7.3.2-v2](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v2) + +- [3acdbad](https://github.com/stashed/elasticsearch/commit/3acdbad) Prepare for release 7.3.2-v2 (#253) +- [346f7d8](https://github.com/stashed/elasticsearch/commit/346f7d8) [cherry-pick] Verify license info from stash operator (#237) (#245) +- [5ad4ebb](https://github.com/stashed/elasticsearch/commit/5ad4ebb) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#228) (#236) +- [fbe8fdc](https://github.com/stashed/elasticsearch/commit/fbe8fdc) [cherry-pick] Switch to AppsCode Trial license (#219) (#227) +- [bfdd1fb](https://github.com/stashed/elasticsearch/commit/bfdd1fb) [cherry-pick] Use AppsCode Community License (#210) (#218) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.0](https://github.com/stashed/installer/releases/tag/v0.11.0) + +- [11a4b97](https://github.com/stashed/installer/commit/11a4b97) Prepare for release v0.11.0 (#101) +- [96e1ea0](https://github.com/stashed/installer/commit/96e1ea0) Add permission to list nodes (#100) +- [e18b2f9](https://github.com/stashed/installer/commit/e18b2f9) Add cluster role for license checker (#98) +- [25ee54b](https://github.com/stashed/installer/commit/25ee54b) Update Kubernetes v1.18.3 dependencies (#99) +- [194b734](https://github.com/stashed/installer/commit/194b734) Update Kubernetes v1.18.3 dependencies (#97) +- [a9c363b](https://github.com/stashed/installer/commit/a9c363b) Use AppsCode Community License (#96) +- [48e8a45](https://github.com/stashed/installer/commit/48e8a45) Update Kubernetes v1.18.3 dependencies (#95) +- [85e89b2](https://github.com/stashed/installer/commit/85e89b2) Update Kubernetes v1.18.3 dependencies (#94) +- [a7ebe2f](https://github.com/stashed/installer/commit/a7ebe2f) Update chart icons + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.1-v2](https://github.com/stashed/mongodb/releases/tag/3.4.1-v2) + +- [d6cd42a](https://github.com/stashed/mongodb/commit/d6cd42a) Prepare for release 3.4.1-v2 (#315) +- [5d846c3](https://github.com/stashed/mongodb/commit/5d846c3) [cherry-pick] Verify license info from stash operator (#303) (#304) +- [f0f5274](https://github.com/stashed/mongodb/commit/f0f5274) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#292) +- [3e1f75b](https://github.com/stashed/mongodb/commit/3e1f75b) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#281) +- [58f36c3](https://github.com/stashed/mongodb/commit/58f36c3) [cherry-pick] Switch to AppsCode Trial license (#268) (#269) +- [d8bfed7](https://github.com/stashed/mongodb/commit/d8bfed7) [cherry-pick] Use AppsCode Community License (#256) (#257) + + +### [3.4.2-v2](https://github.com/stashed/mongodb/releases/tag/3.4.2-v2) + +- [9f39b16](https://github.com/stashed/mongodb/commit/9f39b16) Prepare for release 3.4.2-v2 (#316) +- [342b46f](https://github.com/stashed/mongodb/commit/342b46f) [cherry-pick] Verify license info from stash operator (#303) (#305) +- [056167e](https://github.com/stashed/mongodb/commit/056167e) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#293) +- [a4fbda4](https://github.com/stashed/mongodb/commit/a4fbda4) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#282) +- [10dd2fe](https://github.com/stashed/mongodb/commit/10dd2fe) [cherry-pick] Switch to AppsCode Trial license (#268) (#270) +- [89323b4](https://github.com/stashed/mongodb/commit/89323b4) [cherry-pick] Use AppsCode Community License (#256) (#258) + + +### [3.6.1-v2](https://github.com/stashed/mongodb/releases/tag/3.6.1-v2) + +- [fe0e93b](https://github.com/stashed/mongodb/commit/fe0e93b) Prepare for release 3.6.1-v2 (#317) +- [b53756a](https://github.com/stashed/mongodb/commit/b53756a) [cherry-pick] Verify license info from stash operator (#303) (#306) +- [239ef49](https://github.com/stashed/mongodb/commit/239ef49) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#294) +- [9684b9b](https://github.com/stashed/mongodb/commit/9684b9b) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#283) +- [6697768](https://github.com/stashed/mongodb/commit/6697768) [cherry-pick] Switch to AppsCode Trial license (#268) (#271) +- [b25b9e0](https://github.com/stashed/mongodb/commit/b25b9e0) [cherry-pick] Use AppsCode Community License (#256) (#259) + + +### [3.6.8-v2](https://github.com/stashed/mongodb/releases/tag/3.6.8-v2) + +- [f358adb](https://github.com/stashed/mongodb/commit/f358adb) Prepare for release 3.6.8-v2 (#318) +- [57d51f3](https://github.com/stashed/mongodb/commit/57d51f3) [cherry-pick] Verify license info from stash operator (#303) (#307) +- [e25588b](https://github.com/stashed/mongodb/commit/e25588b) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#295) +- [e727df2](https://github.com/stashed/mongodb/commit/e727df2) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#284) +- [e2a3e54](https://github.com/stashed/mongodb/commit/e2a3e54) [cherry-pick] Switch to AppsCode Trial license (#268) (#272) +- [3125f19](https://github.com/stashed/mongodb/commit/3125f19) [cherry-pick] Use AppsCode Community License (#256) (#260) + + +### [4.0.3-v2](https://github.com/stashed/mongodb/releases/tag/4.0.3-v2) + +- [5734929](https://github.com/stashed/mongodb/commit/5734929) Prepare for release 4.0.3-v2 (#320) +- [554125f](https://github.com/stashed/mongodb/commit/554125f) [cherry-pick] Verify license info from stash operator (#303) (#309) +- [51fc4fc](https://github.com/stashed/mongodb/commit/51fc4fc) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#297) +- [5a25af3](https://github.com/stashed/mongodb/commit/5a25af3) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#286) +- [791057c](https://github.com/stashed/mongodb/commit/791057c) [cherry-pick] Switch to AppsCode Trial license (#268) (#274) +- [cab86cc](https://github.com/stashed/mongodb/commit/cab86cc) [cherry-pick] Use AppsCode Community License (#256) (#262) + + +### [4.0.5-v2](https://github.com/stashed/mongodb/releases/tag/4.0.5-v2) + +- [4939a48](https://github.com/stashed/mongodb/commit/4939a48) Prepare for release 4.0.5-v2 (#321) +- [b5df908](https://github.com/stashed/mongodb/commit/b5df908) [cherry-pick] Verify license info from stash operator (#303) (#310) +- [051f4cd](https://github.com/stashed/mongodb/commit/051f4cd) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#298) +- [3ba1f6c](https://github.com/stashed/mongodb/commit/3ba1f6c) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#287) +- [8f1e9ae](https://github.com/stashed/mongodb/commit/8f1e9ae) [cherry-pick] Switch to AppsCode Trial license (#268) (#275) +- [6ff6079](https://github.com/stashed/mongodb/commit/6ff6079) [cherry-pick] Use AppsCode Community License (#256) (#263) + + +### [4.0.11-v2](https://github.com/stashed/mongodb/releases/tag/4.0.11-v2) + +- [dd45e66](https://github.com/stashed/mongodb/commit/dd45e66) Prepare for release 4.0.11-v2 (#319) +- [909ce13](https://github.com/stashed/mongodb/commit/909ce13) [cherry-pick] Verify license info from stash operator (#303) (#308) +- [27c9145](https://github.com/stashed/mongodb/commit/27c9145) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#296) +- [c0fd352](https://github.com/stashed/mongodb/commit/c0fd352) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#285) +- [9594c13](https://github.com/stashed/mongodb/commit/9594c13) [cherry-pick] Switch to AppsCode Trial license (#268) (#273) +- [4d211b9](https://github.com/stashed/mongodb/commit/4d211b9) [cherry-pick] Use AppsCode Community License (#256) (#261) + + +### [4.1.1-v2](https://github.com/stashed/mongodb/releases/tag/4.1.1-v2) + +- [5740420](https://github.com/stashed/mongodb/commit/5740420) Prepare for release 4.1.1-v2 (#322) +- [2b824a1](https://github.com/stashed/mongodb/commit/2b824a1) [cherry-pick] Verify license info from stash operator (#303) (#311) +- [d19b059](https://github.com/stashed/mongodb/commit/d19b059) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#299) +- [271906b](https://github.com/stashed/mongodb/commit/271906b) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#288) +- [0de8dd3](https://github.com/stashed/mongodb/commit/0de8dd3) [cherry-pick] Switch to AppsCode Trial license (#268) (#276) +- [159d83f](https://github.com/stashed/mongodb/commit/159d83f) [cherry-pick] Use AppsCode Community License (#256) (#264) + + +### [4.1.4-v2](https://github.com/stashed/mongodb/releases/tag/4.1.4-v2) + +- [6507bd9](https://github.com/stashed/mongodb/commit/6507bd9) Prepare for release 4.1.4-v2 (#323) +- [2faa4f1](https://github.com/stashed/mongodb/commit/2faa4f1) [cherry-pick] Verify license info from stash operator (#303) (#312) +- [4201854](https://github.com/stashed/mongodb/commit/4201854) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#300) +- [a106836](https://github.com/stashed/mongodb/commit/a106836) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#289) +- [e1ad15f](https://github.com/stashed/mongodb/commit/e1ad15f) [cherry-pick] Switch to AppsCode Trial license (#268) (#277) +- [721bef2](https://github.com/stashed/mongodb/commit/721bef2) [cherry-pick] Use AppsCode Community License (#256) (#265) + + +### [4.1.7-v2](https://github.com/stashed/mongodb/releases/tag/4.1.7-v2) + +- [833905a](https://github.com/stashed/mongodb/commit/833905a) Prepare for release 4.1.7-v2 (#324) +- [2e06c98](https://github.com/stashed/mongodb/commit/2e06c98) [cherry-pick] Verify license info from stash operator (#303) (#313) +- [d7b6f14](https://github.com/stashed/mongodb/commit/d7b6f14) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#301) +- [1f70c99](https://github.com/stashed/mongodb/commit/1f70c99) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#290) +- [dadc11a](https://github.com/stashed/mongodb/commit/dadc11a) [cherry-pick] Switch to AppsCode Trial license (#268) (#278) +- [9ebe64f](https://github.com/stashed/mongodb/commit/9ebe64f) [cherry-pick] Use AppsCode Community License (#256) (#266) + + +### [4.2.3-v2](https://github.com/stashed/mongodb/releases/tag/4.2.3-v2) + +- [ae039dd](https://github.com/stashed/mongodb/commit/ae039dd) Prepare for release 4.2.3-v2 (#325) +- [99fe171](https://github.com/stashed/mongodb/commit/99fe171) [cherry-pick] Verify license info from stash operator (#303) (#314) +- [60ee4a0](https://github.com/stashed/mongodb/commit/60ee4a0) [cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#302) +- [c24a9bc](https://github.com/stashed/mongodb/commit/c24a9bc) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#280) (#291) +- [add112a](https://github.com/stashed/mongodb/commit/add112a) [cherry-pick] Switch to AppsCode Trial license (#268) (#279) +- [e9dded8](https://github.com/stashed/mongodb/commit/e9dded8) [cherry-pick] Use AppsCode Community License (#256) (#267) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v2](https://github.com/stashed/mysql/releases/tag/5.7.25-v2) + +- [c28b084](https://github.com/stashed/mysql/commit/c28b084) Prepare for release 5.7.25-v2 (#123) +- [c2f5aab](https://github.com/stashed/mysql/commit/c2f5aab) [cherry-pick] Verify license info from stash operator (#119) (#120) +- [4686afa](https://github.com/stashed/mysql/commit/4686afa) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#115) (#116) +- [09c142d](https://github.com/stashed/mysql/commit/09c142d) [cherry-pick] Switch to AppsCode Trial license (#111) (#112) +- [b0b47b4](https://github.com/stashed/mysql/commit/b0b47b4) [cherry-pick] Use AppsCode Community License (#107) (#108) + + +### [8.0.3-v2](https://github.com/stashed/mysql/releases/tag/8.0.3-v2) + +- [0bd9422](https://github.com/stashed/mysql/commit/0bd9422) Prepare for release 8.0.3-v2 (#125) +- [753c3b5](https://github.com/stashed/mysql/commit/753c3b5) [cherry-pick] Verify license info from stash operator (#119) (#122) +- [e931e41](https://github.com/stashed/mysql/commit/e931e41) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#115) (#118) +- [96c677d](https://github.com/stashed/mysql/commit/96c677d) [cherry-pick] Switch to AppsCode Trial license (#111) (#114) +- [3f231cf](https://github.com/stashed/mysql/commit/3f231cf) [cherry-pick] Use AppsCode Community License (#107) (#110) + + +### [8.0.14-v2](https://github.com/stashed/mysql/releases/tag/8.0.14-v2) + +- [5e20d12](https://github.com/stashed/mysql/commit/5e20d12) Prepare for release 8.0.14-v2 (#124) +- [7c4801f](https://github.com/stashed/mysql/commit/7c4801f) [cherry-pick] Verify license info from stash operator (#119) (#121) +- [76980c4](https://github.com/stashed/mysql/commit/76980c4) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#115) (#117) +- [23a26cd](https://github.com/stashed/mysql/commit/23a26cd) [cherry-pick] Switch to AppsCode Trial license (#111) (#113) +- [3954180](https://github.com/stashed/mysql/commit/3954180) [cherry-pick] Use AppsCode Community License (#107) (#109) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v2](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v2) + +- [d33e539](https://github.com/stashed/percona-xtradb/commit/d33e539) Prepare for release 5.7-v2 (#65) +- [b53cfc8](https://github.com/stashed/percona-xtradb/commit/b53cfc8) [cherry-pick] Verify license info from stash operator (#63) (#64) +- [859b6a4](https://github.com/stashed/percona-xtradb/commit/859b6a4) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#61) (#62) +- [14f50b8](https://github.com/stashed/percona-xtradb/commit/14f50b8) Switch to AppsCode Trial license +- [c287878](https://github.com/stashed/percona-xtradb/commit/c287878) Delete LICENSE + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19](https://github.com/stashed/postgres/releases/tag/9.6.19) + +- [6fd2741](https://github.com/stashed/postgres/commit/6fd2741) Prepare for release 9.6.19 (#198) +- [06b6542](https://github.com/stashed/postgres/commit/06b6542) Add support for postgres:9.6.19 +- [e1cfed8](https://github.com/stashed/postgres/commit/e1cfed8) [cherry-pick] Verify license info from stash operator (#189) (#194) +- [82fc42b](https://github.com/stashed/postgres/commit/82fc42b) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#183) (#188) +- [e64c0c7](https://github.com/stashed/postgres/commit/e64c0c7) [cherry-pick] Switch to AppsCode Trial license (#177) (#182) +- [1004dfb](https://github.com/stashed/postgres/commit/1004dfb) [cherry-pick] Use AppsCode Community License (#171) (#176) + + +### [10.14.0](https://github.com/stashed/postgres/releases/tag/10.14.0) + +- [4642779](https://github.com/stashed/postgres/commit/4642779) Prepare for release 10.14.0 (#195) +- [2e94c31](https://github.com/stashed/postgres/commit/2e94c31) Add support for postgres:10.14 +- [9d1856e](https://github.com/stashed/postgres/commit/9d1856e) [cherry-pick] Verify license info from stash operator (#189) (#191) +- [86798e0](https://github.com/stashed/postgres/commit/86798e0) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#183) (#185) +- [f58127c](https://github.com/stashed/postgres/commit/f58127c) [cherry-pick] Switch to AppsCode Trial license (#177) (#179) +- [d1929f1](https://github.com/stashed/postgres/commit/d1929f1) [cherry-pick] Use AppsCode Community License (#171) (#173) + + +### [11.9.0](https://github.com/stashed/postgres/releases/tag/11.9.0) + +- [5138fc7](https://github.com/stashed/postgres/commit/5138fc7) Prepare for release 11.9.0 (#196) +- [81de1d6](https://github.com/stashed/postgres/commit/81de1d6) Add support for postgres:11.9 +- [747613b](https://github.com/stashed/postgres/commit/747613b) [cherry-pick] Verify license info from stash operator (#189) (#193) +- [af40fa9](https://github.com/stashed/postgres/commit/af40fa9) [cherry-pick] Use github.com/prometheus/client_golang@v1.7.1 (#183) (#187) +- [00f48a6](https://github.com/stashed/postgres/commit/00f48a6) [cherry-pick] Switch to AppsCode Trial license (#177) (#181) +- [d673cea](https://github.com/stashed/postgres/commit/d673cea) [cherry-pick] Use AppsCode Community License (#171) (#175) + + +### [12.4.0](https://github.com/stashed/postgres/releases/tag/12.4.0) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.0](https://github.com/stashed/stash/releases/tag/v0.11.0) + +- [a919b347](https://github.com/stashed/stash/commit/a919b347) Prepare for release v0.11.0 (#1198) +- [33cc3131](https://github.com/stashed/stash/commit/33cc3131) Update Kubernetes v1.18.3 dependencies (#1197) +- [58b28e02](https://github.com/stashed/stash/commit/58b28e02) Install license handler to operator webhook server (#1194) +- [642f935c](https://github.com/stashed/stash/commit/642f935c) Update Kubernetes v1.18.3 dependencies (#1196) +- [09f7213e](https://github.com/stashed/stash/commit/09f7213e) Document database addons as enterprise feature (#1195) +- [77b40b2b](https://github.com/stashed/stash/commit/77b40b2b) Update Prometheus client version (#1191) +- [f452230c](https://github.com/stashed/stash/commit/f452230c) Update Kubernetes v1.18.3 dependencies (#1189) +- [9f5e1c70](https://github.com/stashed/stash/commit/9f5e1c70) Use AppsCode Community License (#1188) +- [6802b5aa](https://github.com/stashed/stash/commit/6802b5aa) Update Kubernetes v1.18.3 dependencies (#1186) +- [b5a4a690](https://github.com/stashed/stash/commit/b5a4a690) Update Kubernetes v1.18.3 dependencies (#1185) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.09.29.md b/content/docs/v2024.8.27/CHANGELOG-v2020.09.29.md new file mode 100644 index 0000000000..d89a303f2c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.09.29.md @@ -0,0 +1,174 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.09.29 + name: Changelog-v2020.09.29 + parent: welcome + weight: 20200929 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.09.29/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.09.29/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.09.29 (2020-09-29) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.2](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.2) + +- [b6b0c6ac](https://github.com/appscode/stash-enterprise/commit/b6b0c6ac) Prepare for release v0.11.2 (#28) +- [281b513c](https://github.com/appscode/stash-enterprise/commit/281b513c) Fix database auto-backup + Repository status update (#27) +- [10da79b8](https://github.com/appscode/stash-enterprise/commit/10da79b8) Update repository config (#26) +- [0aecb235](https://github.com/appscode/stash-enterprise/commit/0aecb235) Update repository config (#25) +- [81726ec5](https://github.com/appscode/stash-enterprise/commit/81726ec5) Update features table + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.2](https://github.com/stashed/apimachinery/releases/tag/v0.11.2) + +- [fdc12ac2](https://github.com/stashed/apimachinery/commit/fdc12ac2) Update Kubernetes v1.18.9 dependencies (#56) +- [6ed3a17b](https://github.com/stashed/apimachinery/commit/6ed3a17b) Use POST instead of PUT method to push metrics into pushgateway (#55) +- [1cff3b6b](https://github.com/stashed/apimachinery/commit/1cff3b6b) Update Kubernetes v1.18.9 dependencies (#54) +- [596541c6](https://github.com/stashed/apimachinery/commit/596541c6) Update repository config (#53) +- [64f1e392](https://github.com/stashed/apimachinery/commit/64f1e392) Update repository config (#52) +- [3b73ec67](https://github.com/stashed/apimachinery/commit/3b73ec67) Update Kubernetes v1.18.9 dependencies (#51) +- [0c4ff5e6](https://github.com/stashed/apimachinery/commit/0c4ff5e6) Update Kubernetes v1.18.3 dependencies (#50) +- [01d9fb4d](https://github.com/stashed/apimachinery/commit/01d9fb4d) Update Kubernetes v1.18.3 dependencies (#49) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.09.29](https://github.com/stashed/catalog/releases/tag/v2020.09.29) + +- [c971630](https://github.com/stashed/catalog/commit/c971630) Prepare for release v2020.09.29 (#41) +- [bacd576](https://github.com/stashed/catalog/commit/bacd576) Update repository config (#40) +- [2d001cd](https://github.com/stashed/catalog/commit/2d001cd) Update repository config (#39) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.2](https://github.com/stashed/cli/releases/tag/v0.11.2) + +- [9566b46](https://github.com/stashed/cli/commit/9566b46) Prepare for release v0.11.2 (#56) +- [8eab6d9](https://github.com/stashed/cli/commit/8eab6d9) Update Kubernetes v1.18.9 dependencies (#55) +- [91ae713](https://github.com/stashed/cli/commit/91ae713) Update Kubernetes v1.18.9 dependencies (#54) +- [ae36a24](https://github.com/stashed/cli/commit/ae36a24) Update repository config (#53) +- [a2f4793](https://github.com/stashed/cli/commit/a2f4793) Update Kubernetes v1.18.9 dependencies (#52) +- [6edbe6d](https://github.com/stashed/cli/commit/6edbe6d) Update Kubernetes v1.18.3 dependencies (#51) +- [37eee1c](https://github.com/stashed/cli/commit/37eee1c) Update Kubernetes v1.18.3 dependencies (#50) +- [7045e6b](https://github.com/stashed/cli/commit/7045e6b) Update Kubernetes v1.18.3 dependencies (#49) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.2](https://github.com/stashed/installer/releases/tag/v0.11.2) + +- [6b6c270](https://github.com/stashed/installer/commit/6b6c270) Prepare for release v0.11.2 (#110) +- [15d8827](https://github.com/stashed/installer/commit/15d8827) Update Kubernetes v1.18.9 dependencies (#109) +- [ade81f7](https://github.com/stashed/installer/commit/ade81f7) Update pushgateway version (#108) +- [4b8dcbf](https://github.com/stashed/installer/commit/4b8dcbf) Update Kubernetes v1.18.9 dependencies (#107) +- [72b9d7d](https://github.com/stashed/installer/commit/72b9d7d) Update repository config (#106) +- [d4c3d9f](https://github.com/stashed/installer/commit/d4c3d9f) Update repository config (#105) +- [a1b99bd](https://github.com/stashed/installer/commit/a1b99bd) Update Kubernetes v1.18.9 dependencies (#104) +- [2d13138](https://github.com/stashed/installer/commit/2d13138) Update Kubernetes v1.18.3 dependencies (#103) +- [7f17beb](https://github.com/stashed/installer/commit/7f17beb) Update Kubernetes v1.18.3 dependencies (#102) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.2](https://github.com/stashed/stash/releases/tag/v0.11.2) + +- [ba1cb598](https://github.com/stashed/stash/commit/ba1cb598) Prepare for release v0.11.2 (#1211) +- [09b06beb](https://github.com/stashed/stash/commit/09b06beb) Update Kubernetes v1.18.9 dependencies (#1209) +- [d0bae661](https://github.com/stashed/stash/commit/d0bae661) Fix repository status update (#1208) +- [d7ee2d1e](https://github.com/stashed/stash/commit/d7ee2d1e) Update Kubernetes v1.18.9 dependencies (#1205) +- [b97403dc](https://github.com/stashed/stash/commit/b97403dc) Update repository config (#1204) +- [44173b82](https://github.com/stashed/stash/commit/44173b82) Update repository config (#1203) +- [3e62cd2d](https://github.com/stashed/stash/commit/3e62cd2d) Update repository config (#1202) +- [bfac4f0f](https://github.com/stashed/stash/commit/bfac4f0f) Update Kubernetes v1.18.9 dependencies (#1201) +- [022c5eac](https://github.com/stashed/stash/commit/022c5eac) Update Kubernetes v1.18.3 dependencies (#1200) +- [9793d44b](https://github.com/stashed/stash/commit/9793d44b) Update README.md +- [2970d018](https://github.com/stashed/stash/commit/2970d018) Update Kubernetes v1.18.3 dependencies (#1199) +- [86e90746](https://github.com/stashed/stash/commit/86e90746) Implicitly import go.bytebuilders.dev/license-verifier +- [8acf60c2](https://github.com/stashed/stash/commit/8acf60c2) Update README.md + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.10.21.md b/content/docs/v2024.8.27/CHANGELOG-v2020.10.21.md new file mode 100644 index 0000000000..4fc5dab0c2 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.10.21.md @@ -0,0 +1,683 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.10.21 + name: Changelog-v2020.10.21 + parent: welcome + weight: 20201021 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.10.21/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.10.21/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.10.21 (2020-10-22) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.3](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.3) + +- [371a7035](https://github.com/appscode/stash-enterprise/commit/371a7035) Prepare for release v0.11.3 (#41) +- [2e72fb71](https://github.com/appscode/stash-enterprise/commit/2e72fb71) Pass offshoot labels to CronJob pods (#40) +- [c1c186bf](https://github.com/appscode/stash-enterprise/commit/c1c186bf) Use BackoffLimit=0 for backup/restore job (#30) +- [1d39bbf9](https://github.com/appscode/stash-enterprise/commit/1d39bbf9) Fix ClusterRoleBinding name conflict (#39) +- [07c17b9c](https://github.com/appscode/stash-enterprise/commit/07c17b9c) Use restic 0.10.0 (#35) +- [e6757e0f](https://github.com/appscode/stash-enterprise/commit/e6757e0f) Update Kubernetes v1.18.9 dependencies (#34) +- [22b9bc3a](https://github.com/appscode/stash-enterprise/commit/22b9bc3a) Update repository config (#36) +- [701ba9f1](https://github.com/appscode/stash-enterprise/commit/701ba9f1) Publish docker images to ghcr.io (#33) +- [e975d3e4](https://github.com/appscode/stash-enterprise/commit/e975d3e4) Update repository config (#32) +- [26bfbe64](https://github.com/appscode/stash-enterprise/commit/26bfbe64) Update Kubernetes v1.18.9 dependencies (#29) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.3](https://github.com/stashed/apimachinery/releases/tag/v0.11.3) + +- [e8a63084](https://github.com/stashed/apimachinery/commit/e8a63084) Update dependencies (#63) +- [403ba163](https://github.com/stashed/apimachinery/commit/403ba163) Update Kubernetes v1.18.9 dependencies (#61) +- [8f316890](https://github.com/stashed/apimachinery/commit/8f316890) Use restic 0.10.0 (#60) +- [28c0ca71](https://github.com/stashed/apimachinery/commit/28c0ca71) Update Kubernetes v1.18.9 dependencies (#59) +- [9df9f83e](https://github.com/stashed/apimachinery/commit/9df9f83e) Update Kubernetes v1.18.9 dependencies (#58) +- [fed98cfa](https://github.com/stashed/apimachinery/commit/fed98cfa) Update Kubernetes v1.18.9 dependencies (#57) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.10.21](https://github.com/stashed/catalog/releases/tag/v2020.10.21) + +- [0e40f71](https://github.com/stashed/catalog/commit/0e40f71) Prepare for release v2020.10.21 (#44) +- [1cf5e3e](https://github.com/stashed/catalog/commit/1cf5e3e) Update repository config (#43) +- [ccae76e](https://github.com/stashed/catalog/commit/ccae76e) Update repository config (#42) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.3](https://github.com/stashed/cli/releases/tag/v0.11.3) + +- [1b821c8](https://github.com/stashed/cli/commit/1b821c8) Prepare for release v0.11.3 (#66) +- [2aa47f7](https://github.com/stashed/cli/commit/2aa47f7) Update Kubernetes v1.18.9 dependencies (#65) +- [82b3843](https://github.com/stashed/cli/commit/82b3843) Update Kubernetes v1.18.9 dependencies (#64) +- [51bd7b7](https://github.com/stashed/cli/commit/51bd7b7) Update Kubernetes v1.18.9 dependencies (#63) +- [fc82c5d](https://github.com/stashed/cli/commit/fc82c5d) Don't update krew manifest for pre-releases +- [673758d](https://github.com/stashed/cli/commit/673758d) Change plugin name to stash from kubectl-stash +- [119fefc](https://github.com/stashed/cli/commit/119fefc) Fix krew plugin.yaml +- [5467516](https://github.com/stashed/cli/commit/5467516) Fix plugin name +- [d3c25e5](https://github.com/stashed/cli/commit/d3c25e5) Publish krew manifest via CI (#62) +- [c4552d9](https://github.com/stashed/cli/commit/c4552d9) Publish to krew index (#61) +- [c1389c4](https://github.com/stashed/cli/commit/c1389c4) Update Kubernetes v1.18.9 dependencies (#60) +- [e902dfc](https://github.com/stashed/cli/commit/e902dfc) Add completion command (#59) +- [0037eb7](https://github.com/stashed/cli/commit/0037eb7) Update Kubernetes v1.18.9 dependencies (#58) +- [f94e368](https://github.com/stashed/cli/commit/f94e368) Update Kubernetes v1.18.9 dependencies (#57) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v3](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v3) + +- [85da764](https://github.com/stashed/elasticsearch/commit/85da764) Prepare for release 5.6.4-v3 (#381) +- [8033c85](https://github.com/stashed/elasticsearch/commit/8033c85) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#373) +- [5033b27](https://github.com/stashed/elasticsearch/commit/5033b27) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#364) +- [1cf0819](https://github.com/stashed/elasticsearch/commit/1cf0819) [cherry-pick] Use restic 0.10.0 (#336) (#355) +- [9011d54](https://github.com/stashed/elasticsearch/commit/9011d54) [cherry-pick] Update repository config (#346) (#347) +- [9ef801a](https://github.com/stashed/elasticsearch/commit/9ef801a) [cherry-pick] Update repository config (#337) (#338) +- [8e65c75](https://github.com/stashed/elasticsearch/commit/8e65c75) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#328) +- [0ba0f67](https://github.com/stashed/elasticsearch/commit/0ba0f67) [cherry-pick] Publish docker images to ghcr.io (#318) (#319) +- [ebd8b01](https://github.com/stashed/elasticsearch/commit/ebd8b01) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#310) +- [a3ea8c5](https://github.com/stashed/elasticsearch/commit/a3ea8c5) [cherry-pick] Update repository config (#300) (#301) +- [ba742d4](https://github.com/stashed/elasticsearch/commit/ba742d4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#292) +- [85d6a43](https://github.com/stashed/elasticsearch/commit/85d6a43) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#283) +- [16a665b](https://github.com/stashed/elasticsearch/commit/16a665b) [cherry-pick] Update repository config (#273) (#274) +- [63cd812](https://github.com/stashed/elasticsearch/commit/63cd812) [cherry-pick] Update repository config (#264) (#265) + + +### [6.2.4-v3](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v3) + +- [25d0528](https://github.com/stashed/elasticsearch/commit/25d0528) Prepare for release 6.2.4-v3 (#382) +- [d81f012](https://github.com/stashed/elasticsearch/commit/d81f012) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#374) +- [109eb77](https://github.com/stashed/elasticsearch/commit/109eb77) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#365) +- [05ba1a8](https://github.com/stashed/elasticsearch/commit/05ba1a8) [cherry-pick] Use restic 0.10.0 (#336) (#356) +- [827473f](https://github.com/stashed/elasticsearch/commit/827473f) [cherry-pick] Update repository config (#346) (#348) +- [6f0cde4](https://github.com/stashed/elasticsearch/commit/6f0cde4) [cherry-pick] Update repository config (#337) (#339) +- [4793f49](https://github.com/stashed/elasticsearch/commit/4793f49) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#329) +- [dd6b467](https://github.com/stashed/elasticsearch/commit/dd6b467) [cherry-pick] Publish docker images to ghcr.io (#318) (#320) +- [21be63d](https://github.com/stashed/elasticsearch/commit/21be63d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#311) +- [71db88d](https://github.com/stashed/elasticsearch/commit/71db88d) [cherry-pick] Update repository config (#300) (#302) +- [270ffce](https://github.com/stashed/elasticsearch/commit/270ffce) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#293) +- [3242dd7](https://github.com/stashed/elasticsearch/commit/3242dd7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#284) +- [1c629ba](https://github.com/stashed/elasticsearch/commit/1c629ba) [cherry-pick] Update repository config (#273) (#275) +- [cea5a3d](https://github.com/stashed/elasticsearch/commit/cea5a3d) [cherry-pick] Update repository config (#264) (#266) + + +### [6.3.0-v3](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v3) + +- [e811b13](https://github.com/stashed/elasticsearch/commit/e811b13) Prepare for release 6.3.0-v3 (#383) +- [05dfd0c](https://github.com/stashed/elasticsearch/commit/05dfd0c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#375) +- [4926a53](https://github.com/stashed/elasticsearch/commit/4926a53) Update Kubernetes v1.18.9 dependencies (#363) (#366) +- [567890b](https://github.com/stashed/elasticsearch/commit/567890b) [cherry-pick] Use restic 0.10.0 (#336) (#357) +- [759d6f1](https://github.com/stashed/elasticsearch/commit/759d6f1) [cherry-pick] Update repository config (#346) (#349) +- [7585820](https://github.com/stashed/elasticsearch/commit/7585820) [cherry-pick] Update repository config (#337) (#340) +- [aa7664a](https://github.com/stashed/elasticsearch/commit/aa7664a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#330) +- [f076e39](https://github.com/stashed/elasticsearch/commit/f076e39) [cherry-pick] Publish docker images to ghcr.io (#318) (#321) +- [40bbf42](https://github.com/stashed/elasticsearch/commit/40bbf42) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#312) +- [73e96e2](https://github.com/stashed/elasticsearch/commit/73e96e2) [cherry-pick] Update repository config (#300) (#303) +- [9026cba](https://github.com/stashed/elasticsearch/commit/9026cba) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#294) +- [10a886d](https://github.com/stashed/elasticsearch/commit/10a886d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#285) +- [c15b3f4](https://github.com/stashed/elasticsearch/commit/c15b3f4) [cherry-pick] Update repository config (#273) (#276) +- [3ddc2ed](https://github.com/stashed/elasticsearch/commit/3ddc2ed) [cherry-pick] Update repository config (#264) (#267) + + +### [6.4.0-v3](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v3) + +- [4ae7651](https://github.com/stashed/elasticsearch/commit/4ae7651) Prepare for release 6.4.0-v3 (#384) +- [ceb1e31](https://github.com/stashed/elasticsearch/commit/ceb1e31) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#376) +- [fd798f7](https://github.com/stashed/elasticsearch/commit/fd798f7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#367) +- [5f53d79](https://github.com/stashed/elasticsearch/commit/5f53d79) [cherry-pick] Use restic 0.10.0 (#336) (#358) +- [06e35d1](https://github.com/stashed/elasticsearch/commit/06e35d1) [cherry-pick] Update repository config (#346) (#350) +- [1867c78](https://github.com/stashed/elasticsearch/commit/1867c78) [cherry-pick] Update repository config (#337) (#341) +- [5e24b84](https://github.com/stashed/elasticsearch/commit/5e24b84) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#331) +- [4db1d24](https://github.com/stashed/elasticsearch/commit/4db1d24) [cherry-pick] Publish docker images to ghcr.io (#318) (#322) +- [6e0b947](https://github.com/stashed/elasticsearch/commit/6e0b947) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#313) +- [93daeb7](https://github.com/stashed/elasticsearch/commit/93daeb7) [cherry-pick] Update repository config (#300) (#304) +- [6e5ab75](https://github.com/stashed/elasticsearch/commit/6e5ab75) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#295) +- [606f4b1](https://github.com/stashed/elasticsearch/commit/606f4b1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#286) +- [acee769](https://github.com/stashed/elasticsearch/commit/acee769) [cherry-pick] Update repository config (#273) (#277) +- [637761f](https://github.com/stashed/elasticsearch/commit/637761f) [cherry-pick] Update repository config (#264) (#268) + + +### [6.5.3-v3](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v3) + +- [2cb12c4](https://github.com/stashed/elasticsearch/commit/2cb12c4) Prepare for release 6.5.3-v3 (#385) +- [b32658b](https://github.com/stashed/elasticsearch/commit/b32658b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#377) +- [bd148dc](https://github.com/stashed/elasticsearch/commit/bd148dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#368) +- [4377647](https://github.com/stashed/elasticsearch/commit/4377647) [cherry-pick] Use restic 0.10.0 (#336) (#359) +- [3d78224](https://github.com/stashed/elasticsearch/commit/3d78224) [cherry-pick] Update repository config (#346) (#351) +- [4722acb](https://github.com/stashed/elasticsearch/commit/4722acb) [cherry-pick] Update repository config (#337) (#342) +- [f8a4dec](https://github.com/stashed/elasticsearch/commit/f8a4dec) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#332) +- [b5d9a78](https://github.com/stashed/elasticsearch/commit/b5d9a78) [cherry-pick] Publish docker images to ghcr.io (#318) (#323) +- [b5e6e6b](https://github.com/stashed/elasticsearch/commit/b5e6e6b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#314) +- [a8cb4a7](https://github.com/stashed/elasticsearch/commit/a8cb4a7) [cherry-pick] Update repository config (#300) (#305) +- [2d2506e](https://github.com/stashed/elasticsearch/commit/2d2506e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#296) +- [6516f35](https://github.com/stashed/elasticsearch/commit/6516f35) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#287) +- [e20572d](https://github.com/stashed/elasticsearch/commit/e20572d) [cherry-pick] Update repository config (#273) (#278) +- [19ad8d4](https://github.com/stashed/elasticsearch/commit/19ad8d4) [cherry-pick] Update repository config (#264) (#269) + + +### [6.8.0-v3](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v3) + +- [121adfc](https://github.com/stashed/elasticsearch/commit/121adfc) Prepare for release 6.8.0-v3 (#386) +- [ac6b38c](https://github.com/stashed/elasticsearch/commit/ac6b38c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#378) +- [e862e81](https://github.com/stashed/elasticsearch/commit/e862e81) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#369) +- [6a6168a](https://github.com/stashed/elasticsearch/commit/6a6168a) [cherry-pick] Use restic 0.10.0 (#336) (#360) +- [25dc520](https://github.com/stashed/elasticsearch/commit/25dc520) [cherry-pick] Update repository config (#346) (#352) +- [df21854](https://github.com/stashed/elasticsearch/commit/df21854) [cherry-pick] Update repository config (#337) (#343) +- [2245053](https://github.com/stashed/elasticsearch/commit/2245053) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#333) +- [0edc5c0](https://github.com/stashed/elasticsearch/commit/0edc5c0) [cherry-pick] Publish docker images to ghcr.io (#318) (#324) +- [e79e6e2](https://github.com/stashed/elasticsearch/commit/e79e6e2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#315) +- [0d09a3f](https://github.com/stashed/elasticsearch/commit/0d09a3f) [cherry-pick] Update repository config (#300) (#306) +- [e1610ff](https://github.com/stashed/elasticsearch/commit/e1610ff) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#297) +- [6df475d](https://github.com/stashed/elasticsearch/commit/6df475d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#288) +- [ac5361a](https://github.com/stashed/elasticsearch/commit/ac5361a) [cherry-pick] Update repository config (#273) (#279) +- [ef7e1a4](https://github.com/stashed/elasticsearch/commit/ef7e1a4) [cherry-pick] Update repository config (#264) (#270) + + +### [7.2.0-v3](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v3) + +- [827b433](https://github.com/stashed/elasticsearch/commit/827b433) Prepare for release 7.2.0-v3 (#387) +- [e9af2ff](https://github.com/stashed/elasticsearch/commit/e9af2ff) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#379) +- [32e7298](https://github.com/stashed/elasticsearch/commit/32e7298) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#370) +- [ac680c9](https://github.com/stashed/elasticsearch/commit/ac680c9) [cherry-pick] Use restic 0.10.0 (#336) (#361) +- [1f7630e](https://github.com/stashed/elasticsearch/commit/1f7630e) [cherry-pick] Update repository config (#346) (#353) +- [882b6a3](https://github.com/stashed/elasticsearch/commit/882b6a3) [cherry-pick] Update repository config (#337) (#344) +- [cc0183f](https://github.com/stashed/elasticsearch/commit/cc0183f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#334) +- [d91b62c](https://github.com/stashed/elasticsearch/commit/d91b62c) [cherry-pick] Publish docker images to ghcr.io (#318) (#325) +- [147f502](https://github.com/stashed/elasticsearch/commit/147f502) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#316) +- [a69fe96](https://github.com/stashed/elasticsearch/commit/a69fe96) [cherry-pick] Update repository config (#300) (#307) +- [5071afd](https://github.com/stashed/elasticsearch/commit/5071afd) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#298) +- [d22dbda](https://github.com/stashed/elasticsearch/commit/d22dbda) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#289) +- [16d53cc](https://github.com/stashed/elasticsearch/commit/16d53cc) [cherry-pick] Update repository config (#273) (#280) +- [49b59ff](https://github.com/stashed/elasticsearch/commit/49b59ff) [cherry-pick] Update repository config (#264) (#271) + + +### [7.3.2-v3](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v3) + +- [6186f5a](https://github.com/stashed/elasticsearch/commit/6186f5a) Prepare for release 7.3.2-v3 (#388) +- [f77d957](https://github.com/stashed/elasticsearch/commit/f77d957) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#372) (#380) +- [8be3043](https://github.com/stashed/elasticsearch/commit/8be3043) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#371) +- [b5a442b](https://github.com/stashed/elasticsearch/commit/b5a442b) [cherry-pick] Use restic 0.10.0 (#336) (#362) +- [06b10eb](https://github.com/stashed/elasticsearch/commit/06b10eb) [cherry-pick] Update repository config (#346) (#354) +- [583623a](https://github.com/stashed/elasticsearch/commit/583623a) [cherry-pick] Update repository config (#337) (#345) +- [ba82277](https://github.com/stashed/elasticsearch/commit/ba82277) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#327) (#335) +- [b74b188](https://github.com/stashed/elasticsearch/commit/b74b188) [cherry-pick] Publish docker images to ghcr.io (#318) (#326) +- [6005177](https://github.com/stashed/elasticsearch/commit/6005177) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#309) (#317) +- [fae3083](https://github.com/stashed/elasticsearch/commit/fae3083) [cherry-pick] Update repository config (#300) (#308) +- [9f418d2](https://github.com/stashed/elasticsearch/commit/9f418d2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#299) +- [c14c36d](https://github.com/stashed/elasticsearch/commit/c14c36d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#282) (#290) +- [f088a35](https://github.com/stashed/elasticsearch/commit/f088a35) [cherry-pick] Update repository config (#273) (#281) +- [f12f5b6](https://github.com/stashed/elasticsearch/commit/f12f5b6) [cherry-pick] Update repository config (#264) (#272) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.3](https://github.com/stashed/installer/releases/tag/v0.11.3) + +- [5bc51f3](https://github.com/stashed/installer/commit/5bc51f3) Prepare for release v0.11.3 (#116) +- [c22bc9a](https://github.com/stashed/installer/commit/c22bc9a) Create ServiceMonitor in the same namespace as the operator (#115) +- [003bc08](https://github.com/stashed/installer/commit/003bc08) Update Kubernetes v1.18.9 dependencies (#114) +- [33956a8](https://github.com/stashed/installer/commit/33956a8) Update repository config (#113) +- [501c63e](https://github.com/stashed/installer/commit/501c63e) Update Kubernetes v1.18.9 dependencies (#112) +- [ee560a1](https://github.com/stashed/installer/commit/ee560a1) Update repository config (#111) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v3](https://github.com/stashed/mongodb/releases/tag/3.4.17-v3) + +- [bfdd9972](https://github.com/stashed/mongodb/commit/bfdd9972) Prepare for release 3.4.17-v3 (#495) +- [bda45485](https://github.com/stashed/mongodb/commit/bda45485) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#484) +- [cb43638f](https://github.com/stashed/mongodb/commit/cb43638f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#472) +- [c3adc69f](https://github.com/stashed/mongodb/commit/c3adc69f) [cherry-pick] Use restic 0.10.0 (#435) (#460) +- [d768e676](https://github.com/stashed/mongodb/commit/d768e676) [cherry-pick] Update repository config (#448) (#449) +- [9453ae69](https://github.com/stashed/mongodb/commit/9453ae69) [cherry-pick] Update repository config (#436) (#437) +- [ed7222d7](https://github.com/stashed/mongodb/commit/ed7222d7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#424) +- [cf6ffd6e](https://github.com/stashed/mongodb/commit/cf6ffd6e) [cherry-pick] Publish docker images to ghcr.io (#411) (#412) +- [8e996ed8](https://github.com/stashed/mongodb/commit/8e996ed8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#400) +- [0d9a59d8](https://github.com/stashed/mongodb/commit/0d9a59d8) [cherry-pick] Update repository config (#387) (#388) +- [277a9390](https://github.com/stashed/mongodb/commit/277a9390) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#376) +- [f06e0951](https://github.com/stashed/mongodb/commit/f06e0951) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#364) +- [b00216d6](https://github.com/stashed/mongodb/commit/b00216d6) [cherry-pick] Update repository config (#351) (#352) +- [ab7f8f0c](https://github.com/stashed/mongodb/commit/ab7f8f0c) [cherry-pick] Update repository config (#339) (#340) + + +### [3.4.22-v3](https://github.com/stashed/mongodb/releases/tag/3.4.22-v3) + +- [9255e7b5](https://github.com/stashed/mongodb/commit/9255e7b5) Prepare for release 3.4.22-v3 (#496) +- [89c73b0b](https://github.com/stashed/mongodb/commit/89c73b0b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#485) +- [ee9a261e](https://github.com/stashed/mongodb/commit/ee9a261e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#473) +- [6117deca](https://github.com/stashed/mongodb/commit/6117deca) [cherry-pick] Use restic 0.10.0 (#435) (#461) +- [bee02903](https://github.com/stashed/mongodb/commit/bee02903) [cherry-pick] Update repository config (#448) (#450) +- [c7711aec](https://github.com/stashed/mongodb/commit/c7711aec) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#425) +- [f7a2a2cb](https://github.com/stashed/mongodb/commit/f7a2a2cb) [cherry-pick] Update repository config (#436) (#438) +- [d4e1aef8](https://github.com/stashed/mongodb/commit/d4e1aef8) [cherry-pick] Publish docker images to ghcr.io (#411) (#413) +- [2aceb1cb](https://github.com/stashed/mongodb/commit/2aceb1cb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#401) +- [3b5521bd](https://github.com/stashed/mongodb/commit/3b5521bd) [cherry-pick] Update repository config (#387) (#389) +- [29da42f2](https://github.com/stashed/mongodb/commit/29da42f2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#377) +- [739876b8](https://github.com/stashed/mongodb/commit/739876b8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#365) +- [e7ee7aca](https://github.com/stashed/mongodb/commit/e7ee7aca) [cherry-pick] Update repository config (#351) (#353) +- [2c4f42bd](https://github.com/stashed/mongodb/commit/2c4f42bd) [cherry-pick] Update repository config (#339) (#341) + + +### [3.6.8-v3](https://github.com/stashed/mongodb/releases/tag/3.6.8-v3) + +- [92d7be92](https://github.com/stashed/mongodb/commit/92d7be92) Prepare for release 3.6.8-v3 (#498) +- [51f20d93](https://github.com/stashed/mongodb/commit/51f20d93) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#487) +- [06a92af9](https://github.com/stashed/mongodb/commit/06a92af9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#475) +- [dbabdcdd](https://github.com/stashed/mongodb/commit/dbabdcdd) [cherry-pick] Use restic 0.10.0 (#435) (#463) +- [4cd8e248](https://github.com/stashed/mongodb/commit/4cd8e248) [cherry-pick] Update repository config (#448) (#452) +- [e59cad4a](https://github.com/stashed/mongodb/commit/e59cad4a) [cherry-pick] Update repository config (#436) (#440) +- [e793b48d](https://github.com/stashed/mongodb/commit/e793b48d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#427) +- [726f238c](https://github.com/stashed/mongodb/commit/726f238c) [cherry-pick] Publish docker images to ghcr.io (#411) (#415) +- [15a96fd5](https://github.com/stashed/mongodb/commit/15a96fd5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#403) +- [742141e4](https://github.com/stashed/mongodb/commit/742141e4) [cherry-pick] Update repository config (#387) (#391) +- [dc32bd9f](https://github.com/stashed/mongodb/commit/dc32bd9f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#379) +- [d419ad0f](https://github.com/stashed/mongodb/commit/d419ad0f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#367) +- [0293db64](https://github.com/stashed/mongodb/commit/0293db64) [cherry-pick] Update repository config (#351) (#355) +- [9bb9955a](https://github.com/stashed/mongodb/commit/9bb9955a) [cherry-pick] Update repository config (#339) (#343) + + +### [3.6.13-v3](https://github.com/stashed/mongodb/releases/tag/3.6.13-v3) + +- [68276550](https://github.com/stashed/mongodb/commit/68276550) Prepare for release 3.6.13-v3 (#497) +- [f336cc12](https://github.com/stashed/mongodb/commit/f336cc12) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#486) +- [21c24e47](https://github.com/stashed/mongodb/commit/21c24e47) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#474) +- [e7b8dfa3](https://github.com/stashed/mongodb/commit/e7b8dfa3) [cherry-pick] Use restic 0.10.0 (#435) (#462) +- [98f15137](https://github.com/stashed/mongodb/commit/98f15137) [cherry-pick] Update repository config (#448) (#451) +- [e2a1df01](https://github.com/stashed/mongodb/commit/e2a1df01) [cherry-pick] Update repository config (#436) (#439) +- [6107c923](https://github.com/stashed/mongodb/commit/6107c923) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#426) +- [02466320](https://github.com/stashed/mongodb/commit/02466320) [cherry-pick] Publish docker images to ghcr.io (#411) (#414) +- [6f243714](https://github.com/stashed/mongodb/commit/6f243714) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#402) +- [da2c0f8a](https://github.com/stashed/mongodb/commit/da2c0f8a) [cherry-pick] Update repository config (#387) (#390) +- [914652f8](https://github.com/stashed/mongodb/commit/914652f8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#378) +- [d28b54dc](https://github.com/stashed/mongodb/commit/d28b54dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#366) +- [21f8b4e4](https://github.com/stashed/mongodb/commit/21f8b4e4) [cherry-pick] Update repository config (#351) (#354) +- [c3d7cc46](https://github.com/stashed/mongodb/commit/c3d7cc46) [cherry-pick] Update repository config (#339) (#342) + + +### [4.0.3-v3](https://github.com/stashed/mongodb/releases/tag/4.0.3-v3) + +- [37ee960a](https://github.com/stashed/mongodb/commit/37ee960a) Prepare for release 4.0.3-v3 (#500) +- [dad34b57](https://github.com/stashed/mongodb/commit/dad34b57) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#489) +- [65073380](https://github.com/stashed/mongodb/commit/65073380) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#477) +- [9a3020cd](https://github.com/stashed/mongodb/commit/9a3020cd) [cherry-pick] Use restic 0.10.0 (#435) (#465) +- [00c89fbe](https://github.com/stashed/mongodb/commit/00c89fbe) [cherry-pick] Update repository config (#448) (#454) +- [f49d19fb](https://github.com/stashed/mongodb/commit/f49d19fb) [cherry-pick] Update repository config (#436) (#442) +- [0b0da5eb](https://github.com/stashed/mongodb/commit/0b0da5eb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#429) +- [ea1769a1](https://github.com/stashed/mongodb/commit/ea1769a1) [cherry-pick] Publish docker images to ghcr.io (#411) (#417) +- [65c185b6](https://github.com/stashed/mongodb/commit/65c185b6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#405) +- [091ff716](https://github.com/stashed/mongodb/commit/091ff716) [cherry-pick] Update repository config (#387) (#393) +- [d9c42eba](https://github.com/stashed/mongodb/commit/d9c42eba) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#381) +- [0940ece2](https://github.com/stashed/mongodb/commit/0940ece2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#369) +- [b64ee104](https://github.com/stashed/mongodb/commit/b64ee104) [cherry-pick] Update repository config (#351) (#357) +- [db6b3d2b](https://github.com/stashed/mongodb/commit/db6b3d2b) [cherry-pick] Update repository config (#339) (#345) + + +### [4.0.5-v3](https://github.com/stashed/mongodb/releases/tag/4.0.5-v3) + +- [90d2a873](https://github.com/stashed/mongodb/commit/90d2a873) Prepare for release 4.0.5-v3 (#501) +- [88752110](https://github.com/stashed/mongodb/commit/88752110) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#490) +- [79b382fb](https://github.com/stashed/mongodb/commit/79b382fb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#478) +- [337faf82](https://github.com/stashed/mongodb/commit/337faf82) [cherry-pick] Use restic 0.10.0 (#435) (#466) +- [6d9af4e6](https://github.com/stashed/mongodb/commit/6d9af4e6) [cherry-pick] Update repository config (#448) (#455) +- [74efde48](https://github.com/stashed/mongodb/commit/74efde48) [cherry-pick] Update repository config (#436) (#443) +- [c97e5478](https://github.com/stashed/mongodb/commit/c97e5478) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#430) +- [beeb45d5](https://github.com/stashed/mongodb/commit/beeb45d5) [cherry-pick] Publish docker images to ghcr.io (#411) (#418) +- [da3d70b2](https://github.com/stashed/mongodb/commit/da3d70b2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#406) +- [d410f276](https://github.com/stashed/mongodb/commit/d410f276) [cherry-pick] Update repository config (#387) (#394) +- [35f0003b](https://github.com/stashed/mongodb/commit/35f0003b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#382) +- [2acd384e](https://github.com/stashed/mongodb/commit/2acd384e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#370) +- [aeec3423](https://github.com/stashed/mongodb/commit/aeec3423) [cherry-pick] Update repository config (#351) (#358) +- [825f4c0e](https://github.com/stashed/mongodb/commit/825f4c0e) [cherry-pick] Update repository config (#339) (#346) + + +### [4.0.11-v3](https://github.com/stashed/mongodb/releases/tag/4.0.11-v3) + +- [54a9e1ce](https://github.com/stashed/mongodb/commit/54a9e1ce) Prepare for release 4.0.11-v3 (#499) +- [bfee3d7f](https://github.com/stashed/mongodb/commit/bfee3d7f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#488) +- [72e304a2](https://github.com/stashed/mongodb/commit/72e304a2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#476) +- [bd3b7d54](https://github.com/stashed/mongodb/commit/bd3b7d54) [cherry-pick] Use restic 0.10.0 (#435) (#464) +- [958a2347](https://github.com/stashed/mongodb/commit/958a2347) [cherry-pick] Update repository config (#448) (#453) +- [7d7a9059](https://github.com/stashed/mongodb/commit/7d7a9059) [cherry-pick] Update repository config (#436) (#441) +- [a175a0c3](https://github.com/stashed/mongodb/commit/a175a0c3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#428) +- [0c2f9839](https://github.com/stashed/mongodb/commit/0c2f9839) [cherry-pick] Publish docker images to ghcr.io (#411) (#416) +- [4bb8bc3c](https://github.com/stashed/mongodb/commit/4bb8bc3c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#404) +- [7ec86ea4](https://github.com/stashed/mongodb/commit/7ec86ea4) [cherry-pick] Update repository config (#387) (#392) +- [f53bcb00](https://github.com/stashed/mongodb/commit/f53bcb00) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#380) +- [4329109b](https://github.com/stashed/mongodb/commit/4329109b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#368) +- [c70b759e](https://github.com/stashed/mongodb/commit/c70b759e) [cherry-pick] Update repository config (#351) (#356) +- [903ddcc7](https://github.com/stashed/mongodb/commit/903ddcc7) [cherry-pick] Update repository config (#339) (#344) + + +### [4.1.4-v3](https://github.com/stashed/mongodb/releases/tag/4.1.4-v3) + +- [f613ba52](https://github.com/stashed/mongodb/commit/f613ba52) Prepare for release 4.1.4-v3 (#503) +- [f6ebfa88](https://github.com/stashed/mongodb/commit/f6ebfa88) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#492) +- [10d6f4db](https://github.com/stashed/mongodb/commit/10d6f4db) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#480) +- [4f317902](https://github.com/stashed/mongodb/commit/4f317902) [cherry-pick] Use restic 0.10.0 (#435) (#468) +- [700b1a17](https://github.com/stashed/mongodb/commit/700b1a17) [cherry-pick] Update repository config (#448) (#457) +- [99681cd5](https://github.com/stashed/mongodb/commit/99681cd5) [cherry-pick] Update repository config (#436) (#445) +- [5b571e5d](https://github.com/stashed/mongodb/commit/5b571e5d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#432) +- [056f45d2](https://github.com/stashed/mongodb/commit/056f45d2) [cherry-pick] Publish docker images to ghcr.io (#411) (#420) +- [6a983254](https://github.com/stashed/mongodb/commit/6a983254) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#408) +- [0dbf712c](https://github.com/stashed/mongodb/commit/0dbf712c) [cherry-pick] Update repository config (#387) (#396) +- [8adbb6fe](https://github.com/stashed/mongodb/commit/8adbb6fe) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#384) +- [0d7db778](https://github.com/stashed/mongodb/commit/0d7db778) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#372) +- [e0da102b](https://github.com/stashed/mongodb/commit/e0da102b) [cherry-pick] Update repository config (#351) (#360) +- [37a2bbc2](https://github.com/stashed/mongodb/commit/37a2bbc2) [cherry-pick] Update repository config (#339) (#348) + + +### [4.1.7-v3](https://github.com/stashed/mongodb/releases/tag/4.1.7-v3) + +- [5dc82c7f](https://github.com/stashed/mongodb/commit/5dc82c7f) Prepare for release 4.1.7-v3 (#504) +- [e2263058](https://github.com/stashed/mongodb/commit/e2263058) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#493) +- [5620f9d1](https://github.com/stashed/mongodb/commit/5620f9d1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#481) +- [5d00564b](https://github.com/stashed/mongodb/commit/5d00564b) [cherry-pick] Use restic 0.10.0 (#435) (#469) +- [7765d8ad](https://github.com/stashed/mongodb/commit/7765d8ad) [cherry-pick] Update repository config (#448) (#458) +- [07b43086](https://github.com/stashed/mongodb/commit/07b43086) [cherry-pick] Update repository config (#436) (#446) +- [18e0c740](https://github.com/stashed/mongodb/commit/18e0c740) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#433) +- [ec344370](https://github.com/stashed/mongodb/commit/ec344370) [cherry-pick] Publish docker images to ghcr.io (#411) (#421) +- [a5080eee](https://github.com/stashed/mongodb/commit/a5080eee) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#409) +- [ffc08e7d](https://github.com/stashed/mongodb/commit/ffc08e7d) [cherry-pick] Update repository config (#387) (#397) +- [05e7d62d](https://github.com/stashed/mongodb/commit/05e7d62d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#385) +- [17c7be7f](https://github.com/stashed/mongodb/commit/17c7be7f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#373) +- [1f3a9e97](https://github.com/stashed/mongodb/commit/1f3a9e97) [cherry-pick] Update repository config (#351) (#361) +- [c1606922](https://github.com/stashed/mongodb/commit/c1606922) [cherry-pick] Update repository config (#339) (#349) + + +### [4.1.13-v3](https://github.com/stashed/mongodb/releases/tag/4.1.13-v3) + +- [0894946b](https://github.com/stashed/mongodb/commit/0894946b) Prepare for release 4.1.13-v3 (#502) +- [c314b3ff](https://github.com/stashed/mongodb/commit/c314b3ff) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#491) +- [63228a0e](https://github.com/stashed/mongodb/commit/63228a0e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#479) +- [69573d31](https://github.com/stashed/mongodb/commit/69573d31) [cherry-pick] Use restic 0.10.0 (#435) (#467) +- [d4a1fa82](https://github.com/stashed/mongodb/commit/d4a1fa82) [cherry-pick] Update repository config (#448) (#456) +- [af592612](https://github.com/stashed/mongodb/commit/af592612) [cherry-pick] Update repository config (#436) (#444) +- [4ab1a722](https://github.com/stashed/mongodb/commit/4ab1a722) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#431) +- [0c9f73d1](https://github.com/stashed/mongodb/commit/0c9f73d1) [cherry-pick] Publish docker images to ghcr.io (#411) (#419) +- [4b27ac15](https://github.com/stashed/mongodb/commit/4b27ac15) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#407) +- [029af23f](https://github.com/stashed/mongodb/commit/029af23f) [cherry-pick] Update repository config (#387) (#395) +- [f177f223](https://github.com/stashed/mongodb/commit/f177f223) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#383) +- [5158cad9](https://github.com/stashed/mongodb/commit/5158cad9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#371) +- [3b549e4d](https://github.com/stashed/mongodb/commit/3b549e4d) [cherry-pick] Update repository config (#351) (#359) +- [d4c9d08b](https://github.com/stashed/mongodb/commit/d4c9d08b) [cherry-pick] Update repository config (#339) (#347) + + +### [4.2.3-v3](https://github.com/stashed/mongodb/releases/tag/4.2.3-v3) + +- [7d17e60d](https://github.com/stashed/mongodb/commit/7d17e60d) Prepare for release 4.2.3-v3 (#505) +- [2447962e](https://github.com/stashed/mongodb/commit/2447962e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#483) (#494) +- [096c0d3c](https://github.com/stashed/mongodb/commit/096c0d3c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#471) (#482) +- [0e167aa8](https://github.com/stashed/mongodb/commit/0e167aa8) [cherry-pick] Use restic 0.10.0 (#435) (#470) +- [7e234b8f](https://github.com/stashed/mongodb/commit/7e234b8f) [cherry-pick] Update repository config (#448) (#459) +- [e9be7ed0](https://github.com/stashed/mongodb/commit/e9be7ed0) [cherry-pick] Update repository config (#436) (#447) +- [84a983b8](https://github.com/stashed/mongodb/commit/84a983b8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#423) (#434) +- [31f3c2ca](https://github.com/stashed/mongodb/commit/31f3c2ca) [cherry-pick] Publish docker images to ghcr.io (#411) (#422) +- [ffb3f579](https://github.com/stashed/mongodb/commit/ffb3f579) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#399) (#410) +- [018f5609](https://github.com/stashed/mongodb/commit/018f5609) [cherry-pick] Update repository config (#387) (#398) +- [2b32ca70](https://github.com/stashed/mongodb/commit/2b32ca70) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#375) (#386) +- [f4a3ffd1](https://github.com/stashed/mongodb/commit/f4a3ffd1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#363) (#374) +- [5bf63e9e](https://github.com/stashed/mongodb/commit/5bf63e9e) [cherry-pick] Update repository config (#351) (#362) +- [04de4a95](https://github.com/stashed/mongodb/commit/04de4a95) [cherry-pick] Update repository config (#339) (#350) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v3](https://github.com/stashed/mysql/releases/tag/5.7.25-v3) + +- [8fffb58](https://github.com/stashed/mysql/commit/8fffb58) Prepare for release 5.7.25-v3 (#183) +- [0e93a3e](https://github.com/stashed/mysql/commit/0e93a3e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#179) (#180) +- [01e10af](https://github.com/stashed/mysql/commit/01e10af) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#175) (#176) +- [f781cd8](https://github.com/stashed/mysql/commit/f781cd8) [cherry-pick] Use restic 0.10.0 (#163) (#172) +- [0a0711d](https://github.com/stashed/mysql/commit/0a0711d) [cherry-pick] Update repository config (#168) (#169) +- [97afbc9](https://github.com/stashed/mysql/commit/97afbc9) [cherry-pick] Update repository config (#164) (#165) +- [dc985b5](https://github.com/stashed/mysql/commit/dc985b5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#159) (#160) +- [d1cddb5](https://github.com/stashed/mysql/commit/d1cddb5) [cherry-pick] Publish docker images to ghcr.io (#155) (#156) +- [ac6abcb](https://github.com/stashed/mysql/commit/ac6abcb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#151) (#152) +- [303e216](https://github.com/stashed/mysql/commit/303e216) [cherry-pick] Update repository config (#147) (#148) +- [a24b811](https://github.com/stashed/mysql/commit/a24b811) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#143) (#144) +- [3601274](https://github.com/stashed/mysql/commit/3601274) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#139) (#140) +- [f3a52c3](https://github.com/stashed/mysql/commit/f3a52c3) [cherry-pick] Update repository config (#135) (#136) +- [3432c46](https://github.com/stashed/mysql/commit/3432c46) [cherry-pick] Update repository config (#131) (#132) + + +### [8.0.3-v3](https://github.com/stashed/mysql/releases/tag/8.0.3-v3) + +- [07d878c](https://github.com/stashed/mysql/commit/07d878c) Prepare for release 8.0.3-v3 (#185) +- [dfc1eb2](https://github.com/stashed/mysql/commit/dfc1eb2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#179) (#182) +- [6aa4e78](https://github.com/stashed/mysql/commit/6aa4e78) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#175) (#178) +- [b6c8270](https://github.com/stashed/mysql/commit/b6c8270) [cherry-pick] Use restic 0.10.0 (#163) (#174) +- [02e5cac](https://github.com/stashed/mysql/commit/02e5cac) [cherry-pick] Update repository config (#168) (#171) +- [a31cca9](https://github.com/stashed/mysql/commit/a31cca9) [cherry-pick] Update repository config (#164) (#167) +- [035be38](https://github.com/stashed/mysql/commit/035be38) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#159) (#162) +- [5befb61](https://github.com/stashed/mysql/commit/5befb61) [cherry-pick] Publish docker images to ghcr.io (#155) (#158) +- [faaceb5](https://github.com/stashed/mysql/commit/faaceb5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#151) (#154) +- [e749438](https://github.com/stashed/mysql/commit/e749438) [cherry-pick] Update repository config (#147) (#150) +- [abaf351](https://github.com/stashed/mysql/commit/abaf351) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#143) (#146) +- [e6e71d1](https://github.com/stashed/mysql/commit/e6e71d1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#139) (#142) +- [06a5e8c](https://github.com/stashed/mysql/commit/06a5e8c) [cherry-pick] Update repository config (#135) (#138) +- [9764674](https://github.com/stashed/mysql/commit/9764674) [cherry-pick] Update repository config (#131) (#134) + + +### [8.0.14-v3](https://github.com/stashed/mysql/releases/tag/8.0.14-v3) + +- [c6bebde](https://github.com/stashed/mysql/commit/c6bebde) Prepare for release 8.0.14-v3 (#184) +- [5310d2b](https://github.com/stashed/mysql/commit/5310d2b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#179) (#181) +- [995d648](https://github.com/stashed/mysql/commit/995d648) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#175) (#177) +- [815641c](https://github.com/stashed/mysql/commit/815641c) [cherry-pick] Use restic 0.10.0 (#163) (#173) +- [1935314](https://github.com/stashed/mysql/commit/1935314) [cherry-pick] Update repository config (#168) (#170) +- [9f92086](https://github.com/stashed/mysql/commit/9f92086) [cherry-pick] Update repository config (#164) (#166) +- [1c1676e](https://github.com/stashed/mysql/commit/1c1676e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#159) (#161) +- [4ea5a3a](https://github.com/stashed/mysql/commit/4ea5a3a) [cherry-pick] Publish docker images to ghcr.io (#155) (#157) +- [75c3e72](https://github.com/stashed/mysql/commit/75c3e72) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#151) (#153) +- [4c59612](https://github.com/stashed/mysql/commit/4c59612) [cherry-pick] Update repository config (#147) (#149) +- [a452552](https://github.com/stashed/mysql/commit/a452552) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#143) (#145) +- [0ec08a0](https://github.com/stashed/mysql/commit/0ec08a0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#139) (#141) +- [33bb32c](https://github.com/stashed/mysql/commit/33bb32c) [cherry-pick] Update repository config (#135) (#137) +- [406ff18](https://github.com/stashed/mysql/commit/406ff18) [cherry-pick] Update repository config (#131) (#133) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v3](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v3) + +- [6ec4bc6](https://github.com/stashed/percona-xtradb/commit/6ec4bc6) Prepare for release 5.7-v3 (#95) +- [9220f29](https://github.com/stashed/percona-xtradb/commit/9220f29) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#93) (#94) +- [c4bda0f](https://github.com/stashed/percona-xtradb/commit/c4bda0f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#91) (#92) +- [1c5d488](https://github.com/stashed/percona-xtradb/commit/1c5d488) [cherry-pick] Use restic 0.10.0 (#85) (#90) +- [90ba980](https://github.com/stashed/percona-xtradb/commit/90ba980) [cherry-pick] Update repository config (#88) (#89) +- [dc078b6](https://github.com/stashed/percona-xtradb/commit/dc078b6) [cherry-pick] Update repository config (#86) (#87) +- [c549a51](https://github.com/stashed/percona-xtradb/commit/c549a51) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#83) (#84) +- [f885a87](https://github.com/stashed/percona-xtradb/commit/f885a87) [cherry-pick] Publish docker images to ghcr.io (#81) (#82) +- [055383c](https://github.com/stashed/percona-xtradb/commit/055383c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#79) (#80) +- [360e25e](https://github.com/stashed/percona-xtradb/commit/360e25e) [cherry-pick] Update repository config (#77) (#78) +- [7462c45](https://github.com/stashed/percona-xtradb/commit/7462c45) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#75) (#76) +- [3a85cc3](https://github.com/stashed/percona-xtradb/commit/3a85cc3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#73) (#74) +- [079d748](https://github.com/stashed/percona-xtradb/commit/079d748) [cherry-pick] Update repository config (#71) (#72) +- [7e96bac](https://github.com/stashed/percona-xtradb/commit/7e96bac) [cherry-pick] Update repository config (#69) (#70) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v1](https://github.com/stashed/postgres/releases/tag/9.6.19-v1) + +- [3ecdb2c](https://github.com/stashed/postgres/commit/3ecdb2c) Prepare for release 9.6.19-v1 (#343) +- [0207e35](https://github.com/stashed/postgres/commit/0207e35) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#330) (#339) +- [93a38c4](https://github.com/stashed/postgres/commit/93a38c4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#320) (#329) +- [983a662](https://github.com/stashed/postgres/commit/983a662) [cherry-pick] Use restic 0.10.0 (#290) (#319) +- [77e72e0](https://github.com/stashed/postgres/commit/77e72e0) [cherry-pick] Update repository config (#301) (#310) +- [52e2c2b](https://github.com/stashed/postgres/commit/52e2c2b) [cherry-pick] Update repository config (#291) (#300) +- [57fb376](https://github.com/stashed/postgres/commit/57fb376) [cherry-pick] Publish docker images to ghcr.io (#280) (#289) +- [edb421c](https://github.com/stashed/postgres/commit/edb421c) [cherry-pick] Use username/password as keys in Postgres secret (#270) (#279) +- [16746e3](https://github.com/stashed/postgres/commit/16746e3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#260) (#269) +- [2516277](https://github.com/stashed/postgres/commit/2516277) [cherry-pick] Update repository config (#250) (#259) +- [715c9ce](https://github.com/stashed/postgres/commit/715c9ce) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#240) (#249) +- [11c7486](https://github.com/stashed/postgres/commit/11c7486) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#230) (#239) +- [3f6f398](https://github.com/stashed/postgres/commit/3f6f398) [cherry-pick] Update repository config (#220) (#229) +- [8248525](https://github.com/stashed/postgres/commit/8248525) [cherry-pick] Update repository config (#210) (#219) + + +### [10.14.0-v1](https://github.com/stashed/postgres/releases/tag/10.14.0-v1) + +- [bc318b1](https://github.com/stashed/postgres/commit/bc318b1) Prepare for release 10.14.0-v1 (#340) +- [ed3ba4d](https://github.com/stashed/postgres/commit/ed3ba4d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#330) (#331) +- [475f8df](https://github.com/stashed/postgres/commit/475f8df) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#320) (#321) +- [dc58fd7](https://github.com/stashed/postgres/commit/dc58fd7) [cherry-pick] Use restic 0.10.0 (#290) (#311) +- [e15907e](https://github.com/stashed/postgres/commit/e15907e) [cherry-pick] Update repository config (#301) (#302) +- [6d00f88](https://github.com/stashed/postgres/commit/6d00f88) [cherry-pick] Update repository config (#291) (#292) +- [d1d0d7f](https://github.com/stashed/postgres/commit/d1d0d7f) [cherry-pick] Publish docker images to ghcr.io (#280) (#281) +- [50d9b08](https://github.com/stashed/postgres/commit/50d9b08) [cherry-pick] Use username/password as keys in Postgres secret (#270) (#271) +- [f583dac](https://github.com/stashed/postgres/commit/f583dac) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#260) (#261) +- [e98ef32](https://github.com/stashed/postgres/commit/e98ef32) [cherry-pick] Update repository config (#250) (#251) +- [7fc8ed4](https://github.com/stashed/postgres/commit/7fc8ed4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#240) (#241) +- [a915d80](https://github.com/stashed/postgres/commit/a915d80) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#230) (#231) +- [e057b5b](https://github.com/stashed/postgres/commit/e057b5b) [cherry-pick] Update repository config (#220) (#221) +- [9c4f01e](https://github.com/stashed/postgres/commit/9c4f01e) [cherry-pick] Update repository config (#210) (#211) + + +### [11.9.0-v1](https://github.com/stashed/postgres/releases/tag/11.9.0-v1) + +- [f6ceacc](https://github.com/stashed/postgres/commit/f6ceacc) Prepare for release 11.9.0-v1 (#341) +- [07763d6](https://github.com/stashed/postgres/commit/07763d6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#330) (#336) +- [8727e7f](https://github.com/stashed/postgres/commit/8727e7f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#320) (#326) +- [70ec71b](https://github.com/stashed/postgres/commit/70ec71b) [cherry-pick] Use restic 0.10.0 (#290) (#316) +- [f0353c4](https://github.com/stashed/postgres/commit/f0353c4) [cherry-pick] Update repository config (#301) (#307) +- [ed3a066](https://github.com/stashed/postgres/commit/ed3a066) [cherry-pick] Update repository config (#291) (#297) +- [84d9e99](https://github.com/stashed/postgres/commit/84d9e99) [cherry-pick] Publish docker images to ghcr.io (#280) (#286) +- [8179b10](https://github.com/stashed/postgres/commit/8179b10) [cherry-pick] Use username/password as keys in Postgres secret (#270) (#276) +- [afe907a](https://github.com/stashed/postgres/commit/afe907a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#260) (#266) +- [e983f84](https://github.com/stashed/postgres/commit/e983f84) [cherry-pick] Update repository config (#250) (#256) +- [8c56fc1](https://github.com/stashed/postgres/commit/8c56fc1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#240) (#246) +- [af1b43a](https://github.com/stashed/postgres/commit/af1b43a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#230) (#236) +- [c46c99c](https://github.com/stashed/postgres/commit/c46c99c) [cherry-pick] Update repository config (#220) (#226) +- [d5bfd9a](https://github.com/stashed/postgres/commit/d5bfd9a) [cherry-pick] Update repository config (#210) (#216) + + +### [12.4.0-v1](https://github.com/stashed/postgres/releases/tag/12.4.0-v1) + +- [03355e3](https://github.com/stashed/postgres/commit/03355e3) Prepare for release 12.4.0-v1 (#342) +- [f686d3d](https://github.com/stashed/postgres/commit/f686d3d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#330) (#337) +- [223e0df](https://github.com/stashed/postgres/commit/223e0df) Update Kubernetes v1.18.9 dependencies (#320) (#327) +- [c429d54](https://github.com/stashed/postgres/commit/c429d54) [cherry-pick] Use restic 0.10.0 (#290) (#317) +- [317e415](https://github.com/stashed/postgres/commit/317e415) [cherry-pick] Update repository config (#301) (#308) +- [2050c60](https://github.com/stashed/postgres/commit/2050c60) [cherry-pick] Update repository config (#291) (#298) +- [8e7195e](https://github.com/stashed/postgres/commit/8e7195e) [cherry-pick] Publish docker images to ghcr.io (#280) (#287) +- [d4f998c](https://github.com/stashed/postgres/commit/d4f998c) [cherry-pick] Use username/password as keys in Postgres secret (#270) (#277) +- [a6c0345](https://github.com/stashed/postgres/commit/a6c0345) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#260) (#267) +- [14024cc](https://github.com/stashed/postgres/commit/14024cc) [cherry-pick] Update repository config (#250) (#257) +- [0363817](https://github.com/stashed/postgres/commit/0363817) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#240) (#247) +- [7c742dc](https://github.com/stashed/postgres/commit/7c742dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#230) (#237) +- [2cd3054](https://github.com/stashed/postgres/commit/2cd3054) [cherry-pick] Update repository config (#220) (#227) +- [bbc34f5](https://github.com/stashed/postgres/commit/bbc34f5) [cherry-pick] Update repository config (#210) (#217) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.3](https://github.com/stashed/stash/releases/tag/v0.11.3) + +- [ab872821](https://github.com/stashed/stash/commit/ab872821) Prepare for release v0.11.3 (#1233) +- [d64e9c1e](https://github.com/stashed/stash/commit/d64e9c1e) Pass offshoot labels to CronJob pods (#1232) +- [40a233c2](https://github.com/stashed/stash/commit/40a233c2) Use BackoffLimit=0 for backup/restore job (#1216) +- [a206a9ce](https://github.com/stashed/stash/commit/a206a9ce) Fix ClusterRoleBinding name conflict (#1231) +- [a5ec7562](https://github.com/stashed/stash/commit/a5ec7562) Update Kubernetes v1.18.9 dependencies (#1230) +- [8cf2e397](https://github.com/stashed/stash/commit/8cf2e397) Update Kubernetes v1.18.9 dependencies (#1228) +- [a4c19094](https://github.com/stashed/stash/commit/a4c19094) Use restic 0.10.0 (#1223) +- [fad497a6](https://github.com/stashed/stash/commit/fad497a6) Update repository config (#1226) +- [80933bde](https://github.com/stashed/stash/commit/80933bde) Update repository config (#1225) +- [7974b478](https://github.com/stashed/stash/commit/7974b478) Update repository config (#1224) +- [c7497ebc](https://github.com/stashed/stash/commit/c7497ebc) Update Kubernetes v1.18.9 dependencies (#1222) +- [0280f08d](https://github.com/stashed/stash/commit/0280f08d) Publish docker images to ghcr.io (#1221) +- [bf1df8d5](https://github.com/stashed/stash/commit/bf1df8d5) Update Kubernetes v1.18.9 dependencies (#1220) +- [d2e86335](https://github.com/stashed/stash/commit/d2e86335) Update repository config (#1219) +- [d8ccdd2b](https://github.com/stashed/stash/commit/d8ccdd2b) Update Kubernetes v1.18.9 dependencies (#1218) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.10.29.md b/content/docs/v2024.8.27/CHANGELOG-v2020.10.29.md new file mode 100644 index 0000000000..588c1a0b99 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.10.29.md @@ -0,0 +1,156 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.10.29 + name: Changelog-v2020.10.29 + parent: welcome + weight: 20201029 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.10.29/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.10.29/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.10.29 (2020-10-29) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.4](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.4) + +- [5b7c911d](https://github.com/appscode/stash-enterprise/commit/5b7c911d) Prepare for release v0.11.4 (#45) +- [6c8b88e9](https://github.com/appscode/stash-enterprise/commit/6c8b88e9) Update README.md +- [385ef36d](https://github.com/appscode/stash-enterprise/commit/385ef36d) Fix status updating for backup using RunParallelBackup() (#44) +- [3edaf566](https://github.com/appscode/stash-enterprise/commit/3edaf566) Add preBackupAction and postBackupAction only for Restic driver (#43) +- [3e5ac158](https://github.com/appscode/stash-enterprise/commit/3e5ac158) Update readme + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.4](https://github.com/stashed/apimachinery/releases/tag/v0.11.4) + +- [1b48bb3a](https://github.com/stashed/apimachinery/commit/1b48bb3a) Update Kubernetes v1.18.9 dependencies (#66) +- [24d76627](https://github.com/stashed/apimachinery/commit/24d76627) Update Kubernetes v1.18.9 dependencies (#65) +- [5e34b047](https://github.com/stashed/apimachinery/commit/5e34b047) Update readme +- [04872fc9](https://github.com/stashed/apimachinery/commit/04872fc9) Update Kubernetes v1.18.9 dependencies (#64) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.10.29](https://github.com/stashed/catalog/releases/tag/v2020.10.29) + +- [858d610](https://github.com/stashed/catalog/commit/858d610) Update readme +- [3d011d9](https://github.com/stashed/catalog/commit/3d011d9) Update readme + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.4](https://github.com/stashed/cli/releases/tag/v0.11.4) + +- [236c29f](https://github.com/stashed/cli/commit/236c29f) Prepare for release v0.11.4 (#69) +- [885792c](https://github.com/stashed/cli/commit/885792c) Update README.md +- [80f916f](https://github.com/stashed/cli/commit/80f916f) Update Kubernetes v1.18.9 dependencies (#68) +- [d2b4ad3](https://github.com/stashed/cli/commit/d2b4ad3) Update readme +- [4889acc](https://github.com/stashed/cli/commit/4889acc) Update Kubernetes v1.18.9 dependencies (#67) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.4](https://github.com/stashed/installer/releases/tag/v0.11.4) + +- [4817082](https://github.com/stashed/installer/commit/4817082) Prepare for release v0.11.4 (#120) +- [3f52053](https://github.com/stashed/installer/commit/3f52053) Update README.md +- [20ac983](https://github.com/stashed/installer/commit/20ac983) Update Kubernetes v1.18.9 dependencies (#119) +- [04b3101](https://github.com/stashed/installer/commit/04b3101) Update readme +- [cf374ce](https://github.com/stashed/installer/commit/cf374ce) Update Kubernetes v1.18.9 dependencies (#118) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.4](https://github.com/stashed/stash/releases/tag/v0.11.4) + +- [675b4bad](https://github.com/stashed/stash/commit/675b4bad) Prepare for release v0.11.4 (#1239) +- [008680ef](https://github.com/stashed/stash/commit/008680ef) Update README.md +- [569cdb79](https://github.com/stashed/stash/commit/569cdb79) Add preBackupAction and postBackupAction only for Restic driver (#1236) +- [6f0bb719](https://github.com/stashed/stash/commit/6f0bb719) Fix status updating for backup using RunParallelBackup() (#1238) +- [25e51b3a](https://github.com/stashed/stash/commit/25e51b3a) Update Kubernetes v1.18.9 dependencies (#1237) +- [0a6bab0f](https://github.com/stashed/stash/commit/0a6bab0f) Update readme +- [309a8f29](https://github.com/stashed/stash/commit/309a8f29) Update Kubernetes v1.18.9 dependencies (#1234) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.10.30.md b/content/docs/v2024.8.27/CHANGELOG-v2020.10.30.md new file mode 100644 index 0000000000..6ac1a35bae --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.10.30.md @@ -0,0 +1,135 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.10.30 + name: Changelog-v2020.10.30 + parent: welcome + weight: 20201030 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.10.30/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.10.30/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.10.30 (2020-10-30) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.5](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.5) + +- [3f46fc61](https://github.com/appscode/stash-enterprise/commit/3f46fc61) Prepare for release v0.11.5 (#47) +- [b7dd790e](https://github.com/appscode/stash-enterprise/commit/b7dd790e) Fix RestoreSession targetPhase calculation (#46) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.5](https://github.com/stashed/apimachinery/releases/tag/v0.11.5) + +- [45f4ed32](https://github.com/stashed/apimachinery/commit/45f4ed32) Update readme + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.10.30](https://github.com/stashed/catalog/releases/tag/v2020.10.30) + + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.5](https://github.com/stashed/cli/releases/tag/v0.11.5) + +- [0144016](https://github.com/stashed/cli/commit/0144016) Prepare for release v0.11.5 (#70) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.5](https://github.com/stashed/installer/releases/tag/v0.11.5) + +- [4cbcc62](https://github.com/stashed/installer/commit/4cbcc62) Prepare for release v0.11.5 (#121) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.5](https://github.com/stashed/stash/releases/tag/v0.11.5) + +- [8d19f197](https://github.com/stashed/stash/commit/8d19f197) Prepare for release v0.11.5 (#1241) +- [4fe4b3c9](https://github.com/stashed/stash/commit/4fe4b3c9) Fix RestoreSession target phase calculation (#1240) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.11.06.md b/content/docs/v2024.8.27/CHANGELOG-v2020.11.06.md new file mode 100644 index 0000000000..d993626638 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.11.06.md @@ -0,0 +1,475 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.11.06 + name: Changelog-v2020.11.06 + parent: welcome + weight: 20201106 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.11.06/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.11.06/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.11.06 (2020-11-07) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.6](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.6) + +- [844f92dc](https://github.com/appscode/stash-enterprise/commit/844f92dc) Prepare for release v0.11.6 (#52) +- [7c121617](https://github.com/appscode/stash-enterprise/commit/7c121617) Use restic 0.11.0 (#51) +- [98cc42b4](https://github.com/appscode/stash-enterprise/commit/98cc42b4) Update Kubernetes v1.18.9 dependencies (#38) +- [a882fc9b](https://github.com/appscode/stash-enterprise/commit/a882fc9b) Fix E2E tests (#50) +- [6950f54a](https://github.com/appscode/stash-enterprise/commit/6950f54a) Use modified UpdateStatus & Invoker utils (#49) +- [079d90e2](https://github.com/appscode/stash-enterprise/commit/079d90e2) Use backup/restore invoker information as prometheus job name (#48) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.6](https://github.com/stashed/apimachinery/releases/tag/v0.11.6) + +- [5e04c853](https://github.com/stashed/apimachinery/commit/5e04c853) Use restic 0.11.0 (#70) +- [132a511f](https://github.com/stashed/apimachinery/commit/132a511f) Update Kubernetes v1.18.9 dependencies (#69) +- [b51d7c6a](https://github.com/stashed/apimachinery/commit/b51d7c6a) Use invoker variable name 'inv' +- [c2190f6b](https://github.com/stashed/apimachinery/commit/c2190f6b) Various fixes (#67) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.11.06](https://github.com/stashed/catalog/releases/tag/v2020.11.06) + +- [4f5b081](https://github.com/stashed/catalog/commit/4f5b081) Prepare for release v2020.11.06 (#45) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.6](https://github.com/stashed/cli/releases/tag/v0.11.6) + +- [ea1e330](https://github.com/stashed/cli/commit/ea1e330) Prepare for release v0.11.6 (#73) +- [803662d](https://github.com/stashed/cli/commit/803662d) Update Kubernetes v1.18.9 dependencies (#72) +- [af00ba6](https://github.com/stashed/cli/commit/af00ba6) Replace appscode/go with gomodules.xyz/x (#71) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v4](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v4) + +- [3c39fdd](https://github.com/stashed/elasticsearch/commit/3c39fdd) Prepare for release 5.6.4-v4 (#444) +- [0e8f7fb](https://github.com/stashed/elasticsearch/commit/0e8f7fb) [cherry-pick] Use restic 0.11.0 (#435) (#436) +- [096bbe4](https://github.com/stashed/elasticsearch/commit/096bbe4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#427) +- [c6e6b02](https://github.com/stashed/elasticsearch/commit/c6e6b02) [cherry-pick] Update README.md (#416) +- [a383692](https://github.com/stashed/elasticsearch/commit/a383692) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#408) +- [830f3f1](https://github.com/stashed/elasticsearch/commit/830f3f1) [cherry-pick] Update readme (#399) +- [5f101c6](https://github.com/stashed/elasticsearch/commit/5f101c6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#391) + + +### [6.2.4-v4](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v4) + +- [e7887a2](https://github.com/stashed/elasticsearch/commit/e7887a2) Prepare for release 6.2.4-v4 (#445) +- [575a05e](https://github.com/stashed/elasticsearch/commit/575a05e) [cherry-pick] Use restic 0.11.0 (#435) (#437) +- [569f892](https://github.com/stashed/elasticsearch/commit/569f892) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#428) +- [078a72e](https://github.com/stashed/elasticsearch/commit/078a72e) [cherry-pick] Update README.md (#417) +- [8918137](https://github.com/stashed/elasticsearch/commit/8918137) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#409) +- [6d5f1bd](https://github.com/stashed/elasticsearch/commit/6d5f1bd) [cherry-pick] Update readme (#400) +- [e42222f](https://github.com/stashed/elasticsearch/commit/e42222f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#392) + + +### [6.3.0-v4](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v4) + +- [624a0a1](https://github.com/stashed/elasticsearch/commit/624a0a1) Prepare for release 6.3.0-v4 (#446) +- [b6dd67d](https://github.com/stashed/elasticsearch/commit/b6dd67d) [cherry-pick] Use restic 0.11.0 (#435) (#438) +- [b4bb13a](https://github.com/stashed/elasticsearch/commit/b4bb13a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#429) +- [f18573a](https://github.com/stashed/elasticsearch/commit/f18573a) [cherry-pick] Update README.md (#418) +- [9f1ec99](https://github.com/stashed/elasticsearch/commit/9f1ec99) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#410) +- [72e6eca](https://github.com/stashed/elasticsearch/commit/72e6eca) [cherry-pick] Update readme (#401) +- [ef6e72e](https://github.com/stashed/elasticsearch/commit/ef6e72e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#393) + + +### [6.4.0-v4](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v4) + +- [3477804](https://github.com/stashed/elasticsearch/commit/3477804) Prepare for release 6.4.0-v4 (#447) +- [c58be67](https://github.com/stashed/elasticsearch/commit/c58be67) [cherry-pick] Use restic 0.11.0 (#435) (#439) +- [27d0542](https://github.com/stashed/elasticsearch/commit/27d0542) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#430) +- [b7beb6c](https://github.com/stashed/elasticsearch/commit/b7beb6c) [cherry-pick] Update README.md (#419) +- [667b91b](https://github.com/stashed/elasticsearch/commit/667b91b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#411) +- [4b15de5](https://github.com/stashed/elasticsearch/commit/4b15de5) [cherry-pick] Update readme (#402) +- [ec4f862](https://github.com/stashed/elasticsearch/commit/ec4f862) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#394) + + +### [6.5.3-v4](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v4) + +- [ecfeda3](https://github.com/stashed/elasticsearch/commit/ecfeda3) Prepare for release 6.5.3-v4 (#448) +- [811d778](https://github.com/stashed/elasticsearch/commit/811d778) [cherry-pick] Use restic 0.11.0 (#435) (#440) +- [a4e8fc8](https://github.com/stashed/elasticsearch/commit/a4e8fc8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#431) +- [9bb8991](https://github.com/stashed/elasticsearch/commit/9bb8991) [cherry-pick] Update README.md (#420) +- [ca23821](https://github.com/stashed/elasticsearch/commit/ca23821) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#412) +- [81a6e81](https://github.com/stashed/elasticsearch/commit/81a6e81) [cherry-pick] Update readme (#403) +- [7c544fb](https://github.com/stashed/elasticsearch/commit/7c544fb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#395) + + +### [6.8.0-v4](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v4) + +- [3be68de](https://github.com/stashed/elasticsearch/commit/3be68de) Prepare for release 6.8.0-v4 (#449) +- [056aec2](https://github.com/stashed/elasticsearch/commit/056aec2) [cherry-pick] Use restic 0.11.0 (#435) (#441) +- [c08d53d](https://github.com/stashed/elasticsearch/commit/c08d53d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#432) +- [e67c72e](https://github.com/stashed/elasticsearch/commit/e67c72e) [cherry-pick] Update README.md (#421) +- [6b58712](https://github.com/stashed/elasticsearch/commit/6b58712) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#413) +- [588169f](https://github.com/stashed/elasticsearch/commit/588169f) [cherry-pick] Update readme (#404) +- [242ba7c](https://github.com/stashed/elasticsearch/commit/242ba7c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#396) + + +### [7.2.0-v4](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v4) + +- [9004882](https://github.com/stashed/elasticsearch/commit/9004882) Prepare for release 7.2.0-v4 (#450) +- [61ac4fe](https://github.com/stashed/elasticsearch/commit/61ac4fe) [cherry-pick] Use restic 0.11.0 (#435) (#442) +- [8c47ff0](https://github.com/stashed/elasticsearch/commit/8c47ff0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#433) +- [d9de6b0](https://github.com/stashed/elasticsearch/commit/d9de6b0) [cherry-pick] Update README.md (#422) +- [82bdf3a](https://github.com/stashed/elasticsearch/commit/82bdf3a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#414) +- [7b12b81](https://github.com/stashed/elasticsearch/commit/7b12b81) [cherry-pick] Update readme (#405) +- [88cc572](https://github.com/stashed/elasticsearch/commit/88cc572) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#397) + + +### [7.3.2-v4](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v4) + +- [ae4510a](https://github.com/stashed/elasticsearch/commit/ae4510a) Prepare for release 7.3.2-v4 (#451) +- [c5fa263](https://github.com/stashed/elasticsearch/commit/c5fa263) [cherry-pick] Use restic 0.11.0 (#435) (#443) +- [ac4a169](https://github.com/stashed/elasticsearch/commit/ac4a169) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#426) (#434) +- [7918c06](https://github.com/stashed/elasticsearch/commit/7918c06) [cherry-pick] Update README.md (#423) +- [dc2459d](https://github.com/stashed/elasticsearch/commit/dc2459d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#407) (#415) +- [91bccfb](https://github.com/stashed/elasticsearch/commit/91bccfb) [cherry-pick] Update readme (#406) +- [0543df9](https://github.com/stashed/elasticsearch/commit/0543df9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#390) (#398) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.6](https://github.com/stashed/installer/releases/tag/v0.11.6) + +- [d6b5977](https://github.com/stashed/installer/commit/d6b5977) Prepare for release v0.11.6 (#124) +- [35a3dcf](https://github.com/stashed/installer/commit/35a3dcf) Update Kubernetes v1.18.9 dependencies (#123) +- [cc04710](https://github.com/stashed/installer/commit/cc04710) Update Kubernetes v1.18.9 dependencies (#122) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v4](https://github.com/stashed/mongodb/releases/tag/3.4.17-v4) + +- [3f6b306a](https://github.com/stashed/mongodb/commit/3f6b306a) Prepare for release 3.4.17-v4 (#579) +- [68d6e5de](https://github.com/stashed/mongodb/commit/68d6e5de) [cherry-pick] Use restic 0.11.0 (#567) (#568) +- [8d7f4a2c](https://github.com/stashed/mongodb/commit/8d7f4a2c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#556) +- [4b80b637](https://github.com/stashed/mongodb/commit/4b80b637) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#544) +- [e0a76f8d](https://github.com/stashed/mongodb/commit/e0a76f8d) [cherry-pick] Update README.md (#532) +- [e78fbf27](https://github.com/stashed/mongodb/commit/e78fbf27) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#520) +- [2896604c](https://github.com/stashed/mongodb/commit/2896604c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#508) + + +### [3.4.22-v4](https://github.com/stashed/mongodb/releases/tag/3.4.22-v4) + +- [0007f664](https://github.com/stashed/mongodb/commit/0007f664) Prepare for release 3.4.22-v4 (#580) +- [f6d2bbe5](https://github.com/stashed/mongodb/commit/f6d2bbe5) [cherry-pick] Use restic 0.11.0 (#567) (#569) +- [dceeccab](https://github.com/stashed/mongodb/commit/dceeccab) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#557) +- [b449e06b](https://github.com/stashed/mongodb/commit/b449e06b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#545) +- [43651d6d](https://github.com/stashed/mongodb/commit/43651d6d) [cherry-pick] Update README.md (#533) +- [7955c033](https://github.com/stashed/mongodb/commit/7955c033) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#521) +- [4de72368](https://github.com/stashed/mongodb/commit/4de72368) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#509) + + +### [3.6.8-v4](https://github.com/stashed/mongodb/releases/tag/3.6.8-v4) + +- [e460c71c](https://github.com/stashed/mongodb/commit/e460c71c) Prepare for release 3.6.8-v4 (#582) +- [2de66fe3](https://github.com/stashed/mongodb/commit/2de66fe3) [cherry-pick] Use restic 0.11.0 (#567) (#571) +- [baca40a9](https://github.com/stashed/mongodb/commit/baca40a9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#559) +- [ca71febb](https://github.com/stashed/mongodb/commit/ca71febb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#547) +- [e6b625d4](https://github.com/stashed/mongodb/commit/e6b625d4) [cherry-pick] Update README.md (#535) +- [34b93cc6](https://github.com/stashed/mongodb/commit/34b93cc6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#523) +- [a253c0b1](https://github.com/stashed/mongodb/commit/a253c0b1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#511) + + +### [3.6.13-v4](https://github.com/stashed/mongodb/releases/tag/3.6.13-v4) + +- [2016d666](https://github.com/stashed/mongodb/commit/2016d666) Prepare for release 3.6.13-v4 (#581) +- [f43e0233](https://github.com/stashed/mongodb/commit/f43e0233) [cherry-pick] Use restic 0.11.0 (#567) (#570) +- [f019b7f6](https://github.com/stashed/mongodb/commit/f019b7f6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#558) +- [0a2fe70c](https://github.com/stashed/mongodb/commit/0a2fe70c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#546) +- [9ca6738b](https://github.com/stashed/mongodb/commit/9ca6738b) [cherry-pick] Update README.md (#534) +- [82545252](https://github.com/stashed/mongodb/commit/82545252) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#522) +- [27fcbdb5](https://github.com/stashed/mongodb/commit/27fcbdb5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#510) + + +### [4.0.3-v4](https://github.com/stashed/mongodb/releases/tag/4.0.3-v4) + +- [47debac9](https://github.com/stashed/mongodb/commit/47debac9) Prepare for release 4.0.3-v4 (#584) +- [107d4a79](https://github.com/stashed/mongodb/commit/107d4a79) [cherry-pick] Use restic 0.11.0 (#567) (#573) +- [9c08be11](https://github.com/stashed/mongodb/commit/9c08be11) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#561) +- [172917bc](https://github.com/stashed/mongodb/commit/172917bc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#549) +- [270d533f](https://github.com/stashed/mongodb/commit/270d533f) [cherry-pick] Update README.md (#537) +- [bd5fb620](https://github.com/stashed/mongodb/commit/bd5fb620) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#525) +- [df2a3bf5](https://github.com/stashed/mongodb/commit/df2a3bf5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#513) + + +### [4.0.5-v4](https://github.com/stashed/mongodb/releases/tag/4.0.5-v4) + +- [328baadc](https://github.com/stashed/mongodb/commit/328baadc) Prepare for release 4.0.5-v4 (#585) +- [d10db825](https://github.com/stashed/mongodb/commit/d10db825) [cherry-pick] Use restic 0.11.0 (#567) (#574) +- [2a25fe1c](https://github.com/stashed/mongodb/commit/2a25fe1c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#562) +- [f42c4554](https://github.com/stashed/mongodb/commit/f42c4554) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#550) +- [df2e29b0](https://github.com/stashed/mongodb/commit/df2e29b0) [cherry-pick] Update README.md (#538) +- [e810d537](https://github.com/stashed/mongodb/commit/e810d537) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#526) +- [40f8e2d1](https://github.com/stashed/mongodb/commit/40f8e2d1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#514) + + +### [4.0.11-v4](https://github.com/stashed/mongodb/releases/tag/4.0.11-v4) + +- [36b75678](https://github.com/stashed/mongodb/commit/36b75678) Prepare for release 4.0.11-v4 (#583) +- [58bcaea8](https://github.com/stashed/mongodb/commit/58bcaea8) [cherry-pick] Use restic 0.11.0 (#567) (#572) +- [8d780f2b](https://github.com/stashed/mongodb/commit/8d780f2b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#560) +- [4f109db3](https://github.com/stashed/mongodb/commit/4f109db3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#548) +- [8b532dd7](https://github.com/stashed/mongodb/commit/8b532dd7) [cherry-pick] Update README.md (#536) +- [ac872685](https://github.com/stashed/mongodb/commit/ac872685) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#524) +- [056fa168](https://github.com/stashed/mongodb/commit/056fa168) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#512) + + +### [4.1.4-v4](https://github.com/stashed/mongodb/releases/tag/4.1.4-v4) + +- [dc3929e6](https://github.com/stashed/mongodb/commit/dc3929e6) Prepare for release 4.1.4-v4 (#587) +- [4eb1b197](https://github.com/stashed/mongodb/commit/4eb1b197) [cherry-pick] Use restic 0.11.0 (#567) (#576) +- [991eca5f](https://github.com/stashed/mongodb/commit/991eca5f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#564) +- [c1bcd233](https://github.com/stashed/mongodb/commit/c1bcd233) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#552) +- [fa15af15](https://github.com/stashed/mongodb/commit/fa15af15) [cherry-pick] Update README.md (#540) +- [c80096b2](https://github.com/stashed/mongodb/commit/c80096b2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#528) +- [e672fa66](https://github.com/stashed/mongodb/commit/e672fa66) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#516) + + +### [4.1.7-v4](https://github.com/stashed/mongodb/releases/tag/4.1.7-v4) + +- [21ab7971](https://github.com/stashed/mongodb/commit/21ab7971) Prepare for release 4.1.7-v4 (#588) +- [b4b9eb87](https://github.com/stashed/mongodb/commit/b4b9eb87) [cherry-pick] Use restic 0.11.0 (#567) (#577) +- [ab8bb239](https://github.com/stashed/mongodb/commit/ab8bb239) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#565) +- [1aa4347e](https://github.com/stashed/mongodb/commit/1aa4347e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#553) +- [941b402d](https://github.com/stashed/mongodb/commit/941b402d) [cherry-pick] Update README.md (#541) +- [4ada82d7](https://github.com/stashed/mongodb/commit/4ada82d7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#529) +- [1469fb25](https://github.com/stashed/mongodb/commit/1469fb25) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#517) + + +### [4.1.13-v4](https://github.com/stashed/mongodb/releases/tag/4.1.13-v4) + +- [472485fb](https://github.com/stashed/mongodb/commit/472485fb) Prepare for release 4.1.13-v4 (#586) +- [cd948e74](https://github.com/stashed/mongodb/commit/cd948e74) [cherry-pick] Use restic 0.11.0 (#567) (#575) +- [8ee583d0](https://github.com/stashed/mongodb/commit/8ee583d0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#563) +- [fd492e62](https://github.com/stashed/mongodb/commit/fd492e62) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#551) +- [1bf69a8c](https://github.com/stashed/mongodb/commit/1bf69a8c) [cherry-pick] Update README.md (#539) +- [02c39c0c](https://github.com/stashed/mongodb/commit/02c39c0c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#527) +- [3a803f84](https://github.com/stashed/mongodb/commit/3a803f84) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#515) + + +### [4.2.3-v4](https://github.com/stashed/mongodb/releases/tag/4.2.3-v4) + +- [89afb349](https://github.com/stashed/mongodb/commit/89afb349) Prepare for release 4.2.3-v4 (#589) +- [8d0edc1c](https://github.com/stashed/mongodb/commit/8d0edc1c) [cherry-pick] Use restic 0.11.0 (#567) (#578) +- [4affd4d6](https://github.com/stashed/mongodb/commit/4affd4d6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#566) +- [bb26680f](https://github.com/stashed/mongodb/commit/bb26680f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#543) (#554) +- [d1330686](https://github.com/stashed/mongodb/commit/d1330686) [cherry-pick] Update README.md (#542) +- [05eadfb2](https://github.com/stashed/mongodb/commit/05eadfb2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#519) (#530) +- [5ebe5624](https://github.com/stashed/mongodb/commit/5ebe5624) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#507) (#518) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v4](https://github.com/stashed/mysql/releases/tag/5.7.25-v4) + +- [3a6158e](https://github.com/stashed/mysql/commit/3a6158e) Prepare for release 5.7.25-v4 (#218) +- [8a7b612](https://github.com/stashed/mysql/commit/8a7b612) [cherry-pick] Use restic 0.11.0 (#214) (#215) +- [7abed46](https://github.com/stashed/mysql/commit/7abed46) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#210) (#211) +- [8fa530d](https://github.com/stashed/mysql/commit/8fa530d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#206) (#207) +- [83f2101](https://github.com/stashed/mysql/commit/83f2101) [cherry-pick] Update README.md (#203) +- [1ea81ab](https://github.com/stashed/mysql/commit/1ea81ab) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#199) (#200) +- [bc9131e](https://github.com/stashed/mysql/commit/bc9131e) [cherry-pick] Update readme (#196) +- [c94eb1e](https://github.com/stashed/mysql/commit/c94eb1e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#192) (#193) +- [a1d9a87](https://github.com/stashed/mysql/commit/a1d9a87) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#188) (#189) + + +### [8.0.3-v4](https://github.com/stashed/mysql/releases/tag/8.0.3-v4) + +- [10c111d](https://github.com/stashed/mysql/commit/10c111d) Prepare for release 8.0.3-v4 (#220) +- [9204bff](https://github.com/stashed/mysql/commit/9204bff) [cherry-pick] Use restic 0.11.0 (#214) (#217) +- [833fb2e](https://github.com/stashed/mysql/commit/833fb2e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#210) (#213) +- [c0e8ec0](https://github.com/stashed/mysql/commit/c0e8ec0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#206) (#209) +- [31eb6c5](https://github.com/stashed/mysql/commit/31eb6c5) [cherry-pick] Update README.md (#205) +- [0679bff](https://github.com/stashed/mysql/commit/0679bff) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#199) (#202) +- [7699793](https://github.com/stashed/mysql/commit/7699793) [cherry-pick] Update readme (#198) +- [e2a2ad3](https://github.com/stashed/mysql/commit/e2a2ad3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#192) (#195) +- [eee397e](https://github.com/stashed/mysql/commit/eee397e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#188) (#191) + + +### [8.0.14-v4](https://github.com/stashed/mysql/releases/tag/8.0.14-v4) + +- [1dd0da8](https://github.com/stashed/mysql/commit/1dd0da8) Prepare for release 8.0.14-v4 (#219) +- [4722d69](https://github.com/stashed/mysql/commit/4722d69) [cherry-pick] Use restic 0.11.0 (#214) (#216) +- [35e0e97](https://github.com/stashed/mysql/commit/35e0e97) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#210) (#212) +- [0700e1b](https://github.com/stashed/mysql/commit/0700e1b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#206) (#208) +- [f68dcb7](https://github.com/stashed/mysql/commit/f68dcb7) [cherry-pick] Update README.md (#204) +- [abb8870](https://github.com/stashed/mysql/commit/abb8870) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#199) (#201) +- [aea15a1](https://github.com/stashed/mysql/commit/aea15a1) [cherry-pick] Update readme (#197) +- [862d1cb](https://github.com/stashed/mysql/commit/862d1cb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#192) (#194) +- [230a723](https://github.com/stashed/mysql/commit/230a723) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#188) (#190) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v4](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v4) + +- [2243395](https://github.com/stashed/percona-xtradb/commit/2243395) Prepare for release 5.7-v4 (#110) +- [4355836](https://github.com/stashed/percona-xtradb/commit/4355836) [cherry-pick] Use restic 0.11.0 (#108) (#109) +- [fb391dc](https://github.com/stashed/percona-xtradb/commit/fb391dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#106) (#107) +- [caff85c](https://github.com/stashed/percona-xtradb/commit/caff85c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#104) (#105) +- [6b23346](https://github.com/stashed/percona-xtradb/commit/6b23346) [cherry-pick] Update README.md (#103) +- [eead980](https://github.com/stashed/percona-xtradb/commit/eead980) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#101) (#102) +- [9981cb1](https://github.com/stashed/percona-xtradb/commit/9981cb1) [cherry-pick] Update readme (#100) +- [e434d72](https://github.com/stashed/percona-xtradb/commit/e434d72) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#98) (#99) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v2](https://github.com/stashed/postgres/releases/tag/9.6.19-v2) + +- [efeac24](https://github.com/stashed/postgres/commit/efeac24) Prepare for release 9.6.19-v2 (#417) +- [be55874](https://github.com/stashed/postgres/commit/be55874) [cherry-pick] Use restic 0.11.0 (#404) (#413) +- [8844fb2](https://github.com/stashed/postgres/commit/8844fb2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#394) (#403) +- [856fea8](https://github.com/stashed/postgres/commit/856fea8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#384) (#393) +- [51324d8](https://github.com/stashed/postgres/commit/51324d8) [cherry-pick] Update README.md (#383) +- [da74dd2](https://github.com/stashed/postgres/commit/da74dd2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#365) (#374) +- [472db2b](https://github.com/stashed/postgres/commit/472db2b) [cherry-pick] Update readme (#364) +- [b847956](https://github.com/stashed/postgres/commit/b847956) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#346) (#355) + + +### [10.14.0-v2](https://github.com/stashed/postgres/releases/tag/10.14.0-v2) + +- [56979a2](https://github.com/stashed/postgres/commit/56979a2) Prepare for release 10.14.0-v2 (#414) +- [6311db6](https://github.com/stashed/postgres/commit/6311db6) [cherry-pick] Use restic 0.11.0 (#404) (#405) +- [a214531](https://github.com/stashed/postgres/commit/a214531) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#394) (#395) +- [014f32d](https://github.com/stashed/postgres/commit/014f32d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#384) (#385) +- [d2af0a7](https://github.com/stashed/postgres/commit/d2af0a7) [cherry-pick] Update README.md (#375) +- [47c1554](https://github.com/stashed/postgres/commit/47c1554) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#365) (#366) +- [f929b3f](https://github.com/stashed/postgres/commit/f929b3f) [cherry-pick] Update readme (#356) +- [c40b28e](https://github.com/stashed/postgres/commit/c40b28e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#346) (#347) + + +### [11.9.0-v2](https://github.com/stashed/postgres/releases/tag/11.9.0-v2) + +- [cbde939](https://github.com/stashed/postgres/commit/cbde939) Prepare for release 11.9.0-v2 (#415) +- [784e869](https://github.com/stashed/postgres/commit/784e869) [cherry-pick] Use restic 0.11.0 (#404) (#410) +- [e27dc3f](https://github.com/stashed/postgres/commit/e27dc3f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#394) (#400) +- [13f56f9](https://github.com/stashed/postgres/commit/13f56f9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#384) (#390) +- [6bf8688](https://github.com/stashed/postgres/commit/6bf8688) [cherry-pick] Update README.md (#380) +- [7242780](https://github.com/stashed/postgres/commit/7242780) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#365) (#371) +- [f50f4aa](https://github.com/stashed/postgres/commit/f50f4aa) [cherry-pick] Update readme (#361) +- [1e42c94](https://github.com/stashed/postgres/commit/1e42c94) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#346) (#352) + + +### [12.4.0-v2](https://github.com/stashed/postgres/releases/tag/12.4.0-v2) + +- [6d8aa2f](https://github.com/stashed/postgres/commit/6d8aa2f) Prepare for release 12.4.0-v2 (#416) +- [d8ca600](https://github.com/stashed/postgres/commit/d8ca600) [cherry-pick] Use restic 0.11.0 (#404) (#411) +- [9814a3e](https://github.com/stashed/postgres/commit/9814a3e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#394) (#401) +- [9de7a4c](https://github.com/stashed/postgres/commit/9de7a4c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#384) (#391) +- [9901d95](https://github.com/stashed/postgres/commit/9901d95) [cherry-pick] Update README.md (#381) +- [df32228](https://github.com/stashed/postgres/commit/df32228) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#365) (#372) +- [b859a9f](https://github.com/stashed/postgres/commit/b859a9f) [cherry-pick] Update readme (#362) +- [f9186d9](https://github.com/stashed/postgres/commit/f9186d9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#346) (#353) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.6](https://github.com/stashed/stash/releases/tag/v0.11.6) + +- [8cbac525](https://github.com/stashed/stash/commit/8cbac525) Prepare for release v0.11.6 (#1252) +- [57db9b74](https://github.com/stashed/stash/commit/57db9b74) Use restic 0.11.0 (#1251) +- [10d02b13](https://github.com/stashed/stash/commit/10d02b13) Update dependencies +- [437a1968](https://github.com/stashed/stash/commit/437a1968) Update Kubernetes v1.18.9 dependencies (#1250) +- [29cef180](https://github.com/stashed/stash/commit/29cef180) Fix E2E tests (#1249) +- [e88ab544](https://github.com/stashed/stash/commit/e88ab544) Use backup/restore invoker information as prometheus job name (#1248) +- [d0a4751b](https://github.com/stashed/stash/commit/d0a4751b) Use modified UpdateStatus & Invoker utils (#1247) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.11.17.md b/content/docs/v2024.8.27/CHANGELOG-v2020.11.17.md new file mode 100644 index 0000000000..25583d33b2 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.11.17.md @@ -0,0 +1,326 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.11.17 + name: Changelog-v2020.11.17 + parent: welcome + weight: 20201117 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.11.17/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.11.17/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.11.17 (2020-11-17) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.7](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.7) + +- [473534f4](https://github.com/appscode/stash-enterprise/commit/473534f4) Prepare for release v0.11.7 (#58) +- [016eb3dd](https://github.com/appscode/stash-enterprise/commit/016eb3dd) Skip new session if another is already running (#56) +- [90dfcb40](https://github.com/appscode/stash-enterprise/commit/90dfcb40) Fix failing E2E tests (#55) +- [af4faf84](https://github.com/appscode/stash-enterprise/commit/af4faf84) Update repository config (#57) +- [f46499dd](https://github.com/appscode/stash-enterprise/commit/f46499dd) Update license +- [650ee9a3](https://github.com/appscode/stash-enterprise/commit/650ee9a3) Update Kubernetes v1.18.9 dependencies (#54) +- [05f2c82b](https://github.com/appscode/stash-enterprise/commit/05f2c82b) Update Kubernetes v1.18.9 dependencies (#53) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.7](https://github.com/stashed/apimachinery/releases/tag/v0.11.7) + +- [9865af3b](https://github.com/stashed/apimachinery/commit/9865af3b) Add Skipped phase for BackupSession (#72) +- [81362c35](https://github.com/stashed/apimachinery/commit/81362c35) Update Kubernetes v1.18.9 dependencies (#71) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.11.17](https://github.com/stashed/catalog/releases/tag/v2020.11.17) + +- [95f6628](https://github.com/stashed/catalog/commit/95f6628) Prepare for release v2020.11.17 (#47) +- [0936e9a](https://github.com/stashed/catalog/commit/0936e9a) Update repository config (#46) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.7](https://github.com/stashed/cli/releases/tag/v0.11.7) + +- [b9bac70](https://github.com/stashed/cli/commit/b9bac70) Prepare for release v0.11.7 (#74) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.7](https://github.com/stashed/installer/releases/tag/v0.11.7) + +- [597f380](https://github.com/stashed/installer/commit/597f380) Prepare for release v0.11.7 (#127) +- [02bf752](https://github.com/stashed/installer/commit/02bf752) Update repository config (#126) +- [dba0d41](https://github.com/stashed/installer/commit/dba0d41) Update Kubernetes v1.18.9 dependencies (#125) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7.0](https://github.com/stashed/percona-xtradb/releases/tag/5.7.0) + +- [67ee725](https://github.com/stashed/percona-xtradb/commit/67ee725) Update CI configuration +- [a5c04fa](https://github.com/stashed/percona-xtradb/commit/a5c04fa) Add support for providing s3 region (#14) +- [2ee6c3b](https://github.com/stashed/percona-xtradb/commit/2ee6c3b) Update percona standalone backup-restore (#13) +- [af1a30b](https://github.com/stashed/percona-xtradb/commit/af1a30b) Update PerconaXtraDB version for percona xtradb cluster (#12) +- [7ddb43a](https://github.com/stashed/percona-xtradb/commit/7ddb43a) Make output.json file writable to all users + Fix Flag types (#11) +- [06aa5c3](https://github.com/stashed/percona-xtradb/commit/06aa5c3) Update hugo frontmatter for stash website +- [4171676](https://github.com/stashed/percona-xtradb/commit/4171676) Enable race detector in e2e tests +- [9ab6f35](https://github.com/stashed/percona-xtradb/commit/9ab6f35) Added scheme field in AppBinding (#10) +- [a4262ea](https://github.com/stashed/percona-xtradb/commit/a4262ea) Test installers (#9) +- [72be668](https://github.com/stashed/percona-xtradb/commit/72be668) Don't build docker image for arm64 +- [2974e8b](https://github.com/stashed/percona-xtradb/commit/2974e8b) Update license file templates +- [dd96199](https://github.com/stashed/percona-xtradb/commit/dd96199) Add license header to files (#8) +- [93e37a6](https://github.com/stashed/percona-xtradb/commit/93e37a6) Backup and restore doc for Percona XtraDB 5.7 (#7) +- [aafee30](https://github.com/stashed/percona-xtradb/commit/aafee30) Fix percona-xtradb backup & restore (#6) +- [06cbe89](https://github.com/stashed/percona-xtradb/commit/06cbe89) Fix Docker image badge (#5) +- [2e6c4c6](https://github.com/stashed/percona-xtradb/commit/2e6c4c6) Update Makefile (#4) +- [11da7a1](https://github.com/stashed/percona-xtradb/commit/11da7a1) Add release pipeline (#3) +- [75ca782](https://github.com/stashed/percona-xtradb/commit/75ca782) Update go.yml +- [998acad](https://github.com/stashed/percona-xtradb/commit/998acad) Enable GitHub actions +- [a32083a](https://github.com/stashed/percona-xtradb/commit/a32083a) Improve error handling + remove metrics handling part (#2) +- [87b38a5](https://github.com/stashed/percona-xtradb/commit/87b38a5) Backup & Restore PerconaXtraDB using Stash (#1) +- [a4485ab](https://github.com/stashed/percona-xtradb/commit/a4485ab) Reorganize repo +- [1972a9a](https://github.com/stashed/percona-xtradb/commit/1972a9a) VolumeSnapshot (#787) +- [3f1f4cf](https://github.com/stashed/percona-xtradb/commit/3f1f4cf) Remove importance of order of rule in RestoreSession (#795) +- [86a4af0](https://github.com/stashed/percona-xtradb/commit/86a4af0) Skip BackupSession creation if target does not exist + use timestamp … (#797) +- [3abe6f6](https://github.com/stashed/percona-xtradb/commit/3abe6f6) Use restic 0.9.5 (#789) +- [85b21bf](https://github.com/stashed/percona-xtradb/commit/85b21bf) Update concept doc (#739) +- [ad5c8f2](https://github.com/stashed/percona-xtradb/commit/ad5c8f2) Add support for backup cluster resources YAML (#721) +- [2bb8ec3](https://github.com/stashed/percona-xtradb/commit/2bb8ec3) Backup and restore Elasticsearch (#702) +- [1f21268](https://github.com/stashed/percona-xtradb/commit/1f21268) Update package path to stash.appscode.dev/stash (#776) +- [e8fb571](https://github.com/stashed/percona-xtradb/commit/e8fb571) Update to k8s 1.14.0 client libraries using go.mod (#775) +- [eab0f8e](https://github.com/stashed/percona-xtradb/commit/eab0f8e) Remove --rbac flag (#761) +- [4c3e7ea](https://github.com/stashed/percona-xtradb/commit/4c3e7ea) Skip creating/processing backup-session when backup-config is paused (#759) +- [7905eff](https://github.com/stashed/percona-xtradb/commit/7905eff) Stash v1beta1 E2E test for PVC (#753) +- [2c44ee8](https://github.com/stashed/percona-xtradb/commit/2c44ee8) Implement snapshots for v1beta1 api (#749) +- [c88df7a](https://github.com/stashed/percona-xtradb/commit/c88df7a) Run restic commands using docker (#754) +- [8e24d32](https://github.com/stashed/percona-xtradb/commit/8e24d32) Fixed scratch-dir, output-dir and hostname in functions/tasks yamls (#744) +- [8d5944d](https://github.com/stashed/percona-xtradb/commit/8d5944d) Add Stash CLI (#734) +- [550ab37](https://github.com/stashed/percona-xtradb/commit/550ab37) Apply nice/ionice settings from env (#746) +- [42ed76b](https://github.com/stashed/percona-xtradb/commit/42ed76b) Stash V1beta1 E2E test for Deployment (#710) +- [d63f9e9](https://github.com/stashed/percona-xtradb/commit/d63f9e9) Fix openapi path prefixes for validators and mutators (#732) +- [c1347ed](https://github.com/stashed/percona-xtradb/commit/c1347ed) Add max-connections for GCS, Azure, B2 backend (#730) +- [859c4ee](https://github.com/stashed/percona-xtradb/commit/859c4ee) Rename admission webhooks to avoid name collision (#725) +- [d631bb9](https://github.com/stashed/percona-xtradb/commit/d631bb9) Apply EmptyDir settings to TmpDir (#719) +- [cc70068](https://github.com/stashed/percona-xtradb/commit/cc70068) Add support for rest backend (#713) +- [e4db000](https://github.com/stashed/percona-xtradb/commit/e4db000) Add support for OpenShift DeploymentConfig (#714) +- [3fa7bdb](https://github.com/stashed/percona-xtradb/commit/3fa7bdb) Backup and restore Mongo DB (#699) +- [4c39235](https://github.com/stashed/percona-xtradb/commit/4c39235) Backup and restore MySQL DB (#696) +- [3e89d32](https://github.com/stashed/percona-xtradb/commit/3e89d32) Backup and restore Postgres DB (#695) +- [03b95f3](https://github.com/stashed/percona-xtradb/commit/03b95f3) Add BackupSession Controller for Sidecar (#701) +- [cacbc7d](https://github.com/stashed/percona-xtradb/commit/cacbc7d) Update workload controller for new design (#675) +- [5c173e5](https://github.com/stashed/percona-xtradb/commit/5c173e5) Post backup/restore status update (#691) +- [50bbb0a](https://github.com/stashed/percona-xtradb/commit/50bbb0a) Backup and restore PVC (#676) +- [d4a53e2](https://github.com/stashed/percona-xtradb/commit/d4a53e2) Add BackupConfiguration Controller (#671) +- [ef9a4ae](https://github.com/stashed/percona-xtradb/commit/ef9a4ae) Update Kubernetes client libraries to 1.13.0 (#687) +- [c48dbfc](https://github.com/stashed/percona-xtradb/commit/c48dbfc) Separate type definitions into individual files (#646) +- [77f2113](https://github.com/stashed/percona-xtradb/commit/77f2113) Use flags.DumpAll to dump flags (#624) +- [cb54d8c](https://github.com/stashed/percona-xtradb/commit/cb54d8c) Set periodic analytics (#623) +- [248a53a](https://github.com/stashed/percona-xtradb/commit/248a53a) Add validation webhook xray (#618) +- [2029bf4](https://github.com/stashed/percona-xtradb/commit/2029bf4) Use dynamic pushgateway url (#614) +- [bcf5926](https://github.com/stashed/percona-xtradb/commit/bcf5926) Fix offline backup (#537) +- [5049a63](https://github.com/stashed/percona-xtradb/commit/5049a63) Fix extended apiserver issues with Kubernetes 1.11 (#536) +- [9d31255](https://github.com/stashed/percona-xtradb/commit/9d31255) Update client-go to v8.0.0 (#528) +- [d872b4c](https://github.com/stashed/percona-xtradb/commit/d872b4c) Enable status subresource for crds (#524) +- [4795dba](https://github.com/stashed/percona-xtradb/commit/4795dba) Remove ops-address port (#518) +- [e95b151](https://github.com/stashed/percona-xtradb/commit/e95b151) Add support for initial backoff to the apiserver call on recover (#476) +- [120e5de](https://github.com/stashed/percona-xtradb/commit/120e5de) Disable admission controllers for webhook server (#468) +- [2f19545](https://github.com/stashed/percona-xtradb/commit/2f19545) Update client-go to 7.0.0 (#463) +- [e613ff5](https://github.com/stashed/percona-xtradb/commit/e613ff5) Fixes RBAC issue in test (#449) +- [56a3a74](https://github.com/stashed/percona-xtradb/commit/56a3a74) Some cleanup (#446) +- [02565bb](https://github.com/stashed/percona-xtradb/commit/02565bb) Delete restic repository from backend if Repository CRD is deleted (#438) +- [ea98067](https://github.com/stashed/percona-xtradb/commit/ea98067) Fix go_vet error (#440) +- [9d626eb](https://github.com/stashed/percona-xtradb/commit/9d626eb) Increase qps and burst limits (#435) +- [5c6713f](https://github.com/stashed/percona-xtradb/commit/5c6713f) Show repository snapshot list (#417) +- [6d8ef78](https://github.com/stashed/percona-xtradb/commit/6d8ef78) Expose swagger.json (#420) +- [8e04ca0](https://github.com/stashed/percona-xtradb/commit/8e04ca0) Create repository crd for each Restic repository (#394) +- [4c9a478](https://github.com/stashed/percona-xtradb/commit/4c9a478) Rename --analytics to --enable-analytics (#384) +- [7ea2220](https://github.com/stashed/percona-xtradb/commit/7ea2220) Replace initializers with mutation webhook for workloads (#363) +- [2770e6b](https://github.com/stashed/percona-xtradb/commit/2770e6b) Use admission hook helpers from kutil (#360) +- [d3754d7](https://github.com/stashed/percona-xtradb/commit/d3754d7) Implement offline backup for multiple replica (#335) +- [13a2d14](https://github.com/stashed/percona-xtradb/commit/13a2d14) Use official code generator scripts (#336) +- [90642ce](https://github.com/stashed/percona-xtradb/commit/90642ce) Fix e2e tests after webhook merger (#333) +- [2fc3239](https://github.com/stashed/percona-xtradb/commit/2fc3239) Leave secure port unset +- [7cb52b2](https://github.com/stashed/percona-xtradb/commit/7cb52b2) Merge admission webhook and operator into one binary (#329) +- [3306427](https://github.com/stashed/percona-xtradb/commit/3306427) Implement informer factory for backup scheduler (#325) +- [7bb027b](https://github.com/stashed/percona-xtradb/commit/7bb027b) Cleanup apiserver +- [fb8c1e4](https://github.com/stashed/percona-xtradb/commit/fb8c1e4) Copy generic-admission-server into pkg (#318) +- [5a5093f](https://github.com/stashed/percona-xtradb/commit/5a5093f) Use shared infromer factory (#317) +- [0ccb948](https://github.com/stashed/percona-xtradb/commit/0ccb948) Use GetBaseVersion method from kutil (#316) +- [8c5e6ff](https://github.com/stashed/percona-xtradb/commit/8c5e6ff) Fix webhook command description (#314) +- [775a2b6](https://github.com/stashed/percona-xtradb/commit/775a2b6) Merge webhook plugins into one. (#311) +- [a8659fe](https://github.com/stashed/percona-xtradb/commit/a8659fe) Add ValidatingAdmissionWebhook for Stash CRDs (#299) +- [c3e177c](https://github.com/stashed/percona-xtradb/commit/c3e177c) Added support for private docker registry (#300) +- [62ec42e](https://github.com/stashed/percona-xtradb/commit/62ec42e) Update dependencies to Kubernetes 1.9 (#297) +- [cf3ea7c](https://github.com/stashed/percona-xtradb/commit/cf3ea7c) Update appscode/go log wrapper (#287) +- [470cc31](https://github.com/stashed/percona-xtradb/commit/470cc31) Pass --pushgateway-url for injected containers. (#284) +- [e2e79c6](https://github.com/stashed/percona-xtradb/commit/e2e79c6) Fix kubectl version parsing generation in GKE (#267) +- [326aea4](https://github.com/stashed/percona-xtradb/commit/326aea4) Detect analytics client id using env vars (#265) +- [4a5912c](https://github.com/stashed/percona-xtradb/commit/4a5912c) Prepare docs for 0.6.0 release (#264) +- [f75d5df](https://github.com/stashed/percona-xtradb/commit/f75d5df) Remove restic-dependency from recovery (#258) +- [86f01f3](https://github.com/stashed/percona-xtradb/commit/86f01f3) Log operator version on start (#253) +- [4e29b70](https://github.com/stashed/percona-xtradb/commit/4e29b70) Simplify clientID generation for analytics (#247) +- [a45937f](https://github.com/stashed/percona-xtradb/commit/a45937f) Set analytics clientID (#246) +- [ea53cea](https://github.com/stashed/percona-xtradb/commit/ea53cea) Enable Restic cahce-dir flag (#241) +- [dc0030d](https://github.com/stashed/percona-xtradb/commit/dc0030d) Implement offline backup (#229) +- [ae40f35](https://github.com/stashed/percona-xtradb/commit/ae40f35) Revendor kutil (#230) +- [d68a34d](https://github.com/stashed/percona-xtradb/commit/d68a34d) Record recovery status for individual FileGroup (#222) +- [15a24b7](https://github.com/stashed/percona-xtradb/commit/15a24b7) Leader election for deployment, replica set and rc (#206) +- [4a75689](https://github.com/stashed/percona-xtradb/commit/4a75689) Implement Recovery for Restic Backup (#202) +- [78b3942](https://github.com/stashed/percona-xtradb/commit/78b3942) Use typed versioned client for CRD +- [b857b05](https://github.com/stashed/percona-xtradb/commit/b857b05) Change `k8s.io/api/core/v1` pkg alias to core (#204) +- [e52f848](https://github.com/stashed/percona-xtradb/commit/e52f848) Use client-go 5.x +- [4f376ad](https://github.com/stashed/percona-xtradb/commit/4f376ad) Set hostname based on resource type (#198) +- [e530116](https://github.com/stashed/percona-xtradb/commit/e530116) Manage RoleBinding for rbac enabled cluster (#197) +- [e28c13f](https://github.com/stashed/percona-xtradb/commit/e28c13f) Use workqueue for scheduler (#194) +- [2719cbd](https://github.com/stashed/percona-xtradb/commit/2719cbd) Fix e2e tests (#183) +- [9c1cc43](https://github.com/stashed/percona-xtradb/commit/9c1cc43) Use workqueue (#182) +- [b3ee076](https://github.com/stashed/percona-xtradb/commit/b3ee076) Only watch apps/v1beta1 Deployment (#178) +- [4f92ca6](https://github.com/stashed/percona-xtradb/commit/4f92ca6) Use Namespace() method from kutil. +- [78f1e7f](https://github.com/stashed/percona-xtradb/commit/78f1e7f) Update kutil (#170) +- [29a8a1f](https://github.com/stashed/percona-xtradb/commit/29a8a1f) Use apis/v1alpha1 instead of internal version (#167) +- [da3eb2e](https://github.com/stashed/percona-xtradb/commit/da3eb2e) Use kubernetes/code-generator (#163) +- [3b1d6bf](https://github.com/stashed/percona-xtradb/commit/3b1d6bf) Expose resync-period as flag +- [35d8dc6](https://github.com/stashed/percona-xtradb/commit/35d8dc6) Move analytics collector to root command (#164) +- [6a55694](https://github.com/stashed/percona-xtradb/commit/6a55694) Migrate TPR to CRD (#160) +- [91f678f](https://github.com/stashed/percona-xtradb/commit/91f678f) Rename RepositorySecretName to StorageSecretName (#135) +- [d666c81](https://github.com/stashed/percona-xtradb/commit/d666c81) Change mount path for labels to /etc/stash +- [1177d60](https://github.com/stashed/percona-xtradb/commit/1177d60) Part 6 - Update docs (#121) +- [a15689d](https://github.com/stashed/percona-xtradb/commit/a15689d) Various bug fixes (#118) +- [d8a5771](https://github.com/stashed/percona-xtradb/commit/d8a5771) Set TMPDIR env var for restic (#115) +- [60ed8f7](https://github.com/stashed/percona-xtradb/commit/60ed8f7) Update user guide (#94) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v3](https://github.com/stashed/postgres/releases/tag/9.6.19-v3) + +- [5566a42](https://github.com/stashed/postgres/commit/5566a42) Prepare for release 9.6.19-v2 (#455) +- [12fdc1e](https://github.com/stashed/postgres/commit/12fdc1e) [cherry-pick] Update repository config (#440) (#450) +- [37b94e7](https://github.com/stashed/postgres/commit/37b94e7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#429) (#438) +- [1e0dfd2](https://github.com/stashed/postgres/commit/1e0dfd2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#419) (#428) + + +### [10.14.0-v3](https://github.com/stashed/postgres/releases/tag/10.14.0-v3) + +- [d8099e8](https://github.com/stashed/postgres/commit/d8099e8) Prepare for release 10.14.0-v2 (#451) +- [417588f](https://github.com/stashed/postgres/commit/417588f) [cherry-pick] Update repository config (#440) (#441) +- [f3d5e72](https://github.com/stashed/postgres/commit/f3d5e72) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#429) (#430) +- [ef24baf](https://github.com/stashed/postgres/commit/ef24baf) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#419) (#420) + + +### [11.9.0-v3](https://github.com/stashed/postgres/releases/tag/11.9.0-v3) + +- [32cd3b6](https://github.com/stashed/postgres/commit/32cd3b6) Prepare for release 11.9.0-v2 (#452) +- [eb0e3dd](https://github.com/stashed/postgres/commit/eb0e3dd) [cherry-pick] Update repository config (#440) (#446) +- [4df463b](https://github.com/stashed/postgres/commit/4df463b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#429) (#435) +- [37dcb8a](https://github.com/stashed/postgres/commit/37dcb8a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#419) (#425) + + +### [12.4.0-v3](https://github.com/stashed/postgres/releases/tag/12.4.0-v3) + +- [1d17c0a](https://github.com/stashed/postgres/commit/1d17c0a) Prepare for release 12.4.0-v2 (#453) +- [cae2a3d](https://github.com/stashed/postgres/commit/cae2a3d) [cherry-pick] Update repository config (#440) (#447) +- [4ddacb5](https://github.com/stashed/postgres/commit/4ddacb5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#429) (#436) +- [b132bff](https://github.com/stashed/postgres/commit/b132bff) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#419) (#426) + + +### [13.1.0](https://github.com/stashed/postgres/releases/tag/13.1.0) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.7](https://github.com/stashed/stash/releases/tag/v0.11.7) + +- [0828afc8](https://github.com/stashed/stash/commit/0828afc8) Prepare for release v0.11.7 (#1269) +- [c05e0469](https://github.com/stashed/stash/commit/c05e0469) Skip new session if another is already running (#1264) +- [db1a2005](https://github.com/stashed/stash/commit/db1a2005) Fix failing E2E tests (#1256) +- [c3c2ae05](https://github.com/stashed/stash/commit/c3c2ae05) Update repository config (#1268) +- [daa95863](https://github.com/stashed/stash/commit/daa95863) Update Kubernetes v1.18.9 dependencies (#1254) +- [d33cf738](https://github.com/stashed/stash/commit/d33cf738) Update Kubernetes v1.18.9 dependencies (#1253) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2020.12.17.md b/content/docs/v2024.8.27/CHANGELOG-v2020.12.17.md new file mode 100644 index 0000000000..d72a97cbcd --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2020.12.17.md @@ -0,0 +1,505 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2020.12.17 + name: Changelog-v2020.12.17 + parent: welcome + weight: 20201217 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2020.12.17/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2020.12.17/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2020.12.17 (2020-12-17) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.8](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.8) + +- [eccabd16](https://github.com/appscode/stash-enterprise/commit/eccabd16) Prepare for release v0.11.8 (#63) +- [1e03db14](https://github.com/appscode/stash-enterprise/commit/1e03db14) Update Kubernetes v1.18.9 dependencies (#61) +- [b3031f75](https://github.com/appscode/stash-enterprise/commit/b3031f75) Run backup job as user 65535 (#62) +- [f3207a94](https://github.com/appscode/stash-enterprise/commit/f3207a94) Fix secretTransforation for AppBinding (#60) +- [c7e3248f](https://github.com/appscode/stash-enterprise/commit/c7e3248f) Update CI workflow + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.8](https://github.com/stashed/apimachinery/releases/tag/v0.11.8) + +- [cec1888a](https://github.com/stashed/apimachinery/commit/cec1888a) Update Kubernetes v1.18.9 dependencies (#74) +- [c7aed993](https://github.com/stashed/apimachinery/commit/c7aed993) Update Kubernetes v1.18.9 dependencies (#73) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2020.12.17](https://github.com/stashed/catalog/releases/tag/v2020.12.17) + +- [e8c931c](https://github.com/stashed/catalog/commit/e8c931c) Prepare for release v2020.12.17 (#50) +- [d169e34](https://github.com/stashed/catalog/commit/d169e34) Add MariaDB catalog + Cleanup (#48) +- [5dd2aa2](https://github.com/stashed/catalog/commit/5dd2aa2) Update repository config (#49) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.8](https://github.com/stashed/cli/releases/tag/v0.11.8) + +- [33bebfb](https://github.com/stashed/cli/commit/33bebfb) Prepare for release v0.11.8 (#97) +- [d343c7e](https://github.com/stashed/cli/commit/d343c7e) Update Kubernetes v1.18.9 dependencies (#96) +- [5a5069c](https://github.com/stashed/cli/commit/5a5069c) Update Kubernetes v1.18.9 dependencies (#95) +- [0b4b68b](https://github.com/stashed/cli/commit/0b4b68b) Update Kubernetes v1.18.9 dependencies (#94) +- [99cd366](https://github.com/stashed/cli/commit/99cd366) Update Kubernetes v1.18.9 dependencies (#93) +- [84f4f2f](https://github.com/stashed/cli/commit/84f4f2f) Update Kubernetes v1.18.9 dependencies (#92) +- [018b14a](https://github.com/stashed/cli/commit/018b14a) Update Kubernetes v1.18.9 dependencies (#91) +- [18ed3c6](https://github.com/stashed/cli/commit/18ed3c6) Update Kubernetes v1.18.9 dependencies (#90) +- [ad95cbe](https://github.com/stashed/cli/commit/ad95cbe) Update Kubernetes v1.18.9 dependencies (#89) +- [42ffef5](https://github.com/stashed/cli/commit/42ffef5) Update Kubernetes v1.18.9 dependencies (#88) +- [cb657bb](https://github.com/stashed/cli/commit/cb657bb) Update Kubernetes v1.18.9 dependencies (#87) +- [8853995](https://github.com/stashed/cli/commit/8853995) Update Kubernetes v1.18.9 dependencies (#86) +- [3af9028](https://github.com/stashed/cli/commit/3af9028) Update Kubernetes v1.18.9 dependencies (#85) +- [074c37b](https://github.com/stashed/cli/commit/074c37b) Update Kubernetes v1.18.9 dependencies (#84) +- [d08b872](https://github.com/stashed/cli/commit/d08b872) Update Kubernetes v1.18.9 dependencies (#83) +- [d9b1b93](https://github.com/stashed/cli/commit/d9b1b93) Update Kubernetes v1.18.9 dependencies (#82) +- [4e96e8e](https://github.com/stashed/cli/commit/4e96e8e) Update Kubernetes v1.18.9 dependencies (#81) +- [d38c1ba](https://github.com/stashed/cli/commit/d38c1ba) Update Kubernetes v1.18.9 dependencies (#80) +- [37c7d87](https://github.com/stashed/cli/commit/37c7d87) Update Kubernetes v1.18.9 dependencies (#79) +- [67ec7d1](https://github.com/stashed/cli/commit/67ec7d1) Update Kubernetes v1.18.9 dependencies (#78) +- [328763e](https://github.com/stashed/cli/commit/328763e) Update Kubernetes v1.18.9 dependencies (#77) +- [c8cfdab](https://github.com/stashed/cli/commit/c8cfdab) Update Kubernetes v1.18.9 dependencies (#76) +- [7354628](https://github.com/stashed/cli/commit/7354628) Update Kubernetes v1.18.9 dependencies (#75) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v5](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v5) + +- [7234135](https://github.com/stashed/elasticsearch/commit/7234135) Prepare for release 5.6.4-v5 (#498) +- [d9a692f](https://github.com/stashed/elasticsearch/commit/d9a692f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#490) +- [3c96ea3](https://github.com/stashed/elasticsearch/commit/3c96ea3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#481) +- [0a2e843](https://github.com/stashed/elasticsearch/commit/0a2e843) [cherry-pick] Update repository config (#471) (#472) +- [4165f8e](https://github.com/stashed/elasticsearch/commit/4165f8e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#463) +- [acdac11](https://github.com/stashed/elasticsearch/commit/acdac11) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#454) + + +### [6.2.4-v5](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v5) + +- [7b78f9e](https://github.com/stashed/elasticsearch/commit/7b78f9e) Prepare for release 6.2.4-v5 (#499) +- [413434d](https://github.com/stashed/elasticsearch/commit/413434d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#491) +- [7bdf655](https://github.com/stashed/elasticsearch/commit/7bdf655) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#482) +- [74f4c2c](https://github.com/stashed/elasticsearch/commit/74f4c2c) [cherry-pick] Update repository config (#471) (#473) +- [4248af4](https://github.com/stashed/elasticsearch/commit/4248af4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#464) +- [197b7c5](https://github.com/stashed/elasticsearch/commit/197b7c5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#455) + + +### [6.3.0-v5](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v5) + +- [1c2dd6f](https://github.com/stashed/elasticsearch/commit/1c2dd6f) Prepare for release 6.3.0-v5 (#500) +- [37e2fe8](https://github.com/stashed/elasticsearch/commit/37e2fe8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#492) +- [c27a297](https://github.com/stashed/elasticsearch/commit/c27a297) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#483) +- [2df4955](https://github.com/stashed/elasticsearch/commit/2df4955) [cherry-pick] Update repository config (#471) (#474) +- [fe7cef6](https://github.com/stashed/elasticsearch/commit/fe7cef6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#465) +- [d94cc74](https://github.com/stashed/elasticsearch/commit/d94cc74) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#456) + + +### [6.4.0-v5](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v5) + +- [28db07e](https://github.com/stashed/elasticsearch/commit/28db07e) Prepare for release 6.4.0-v5 (#501) +- [98936e6](https://github.com/stashed/elasticsearch/commit/98936e6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#493) +- [11f03fa](https://github.com/stashed/elasticsearch/commit/11f03fa) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#484) +- [dc339aa](https://github.com/stashed/elasticsearch/commit/dc339aa) [cherry-pick] Update repository config (#471) (#475) +- [9b131a4](https://github.com/stashed/elasticsearch/commit/9b131a4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#466) +- [16bb8b3](https://github.com/stashed/elasticsearch/commit/16bb8b3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#457) + + +### [6.5.3-v5](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v5) + +- [acf444e](https://github.com/stashed/elasticsearch/commit/acf444e) Prepare for release 6.5.3-v5 (#502) +- [d1c4849](https://github.com/stashed/elasticsearch/commit/d1c4849) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#494) +- [668c97a](https://github.com/stashed/elasticsearch/commit/668c97a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#485) +- [e25a596](https://github.com/stashed/elasticsearch/commit/e25a596) [cherry-pick] Update repository config (#471) (#476) +- [0567419](https://github.com/stashed/elasticsearch/commit/0567419) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#467) +- [0b99e60](https://github.com/stashed/elasticsearch/commit/0b99e60) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#458) + + +### [6.8.0-v5](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v5) + +- [8959fd4](https://github.com/stashed/elasticsearch/commit/8959fd4) Prepare for release 6.8.0-v5 (#503) +- [6772e20](https://github.com/stashed/elasticsearch/commit/6772e20) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#495) +- [68127a5](https://github.com/stashed/elasticsearch/commit/68127a5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#486) +- [cda62d0](https://github.com/stashed/elasticsearch/commit/cda62d0) [cherry-pick] Update repository config (#471) (#477) +- [3357ece](https://github.com/stashed/elasticsearch/commit/3357ece) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#468) +- [fcfbb43](https://github.com/stashed/elasticsearch/commit/fcfbb43) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#459) + + +### [7.2.0-v5](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v5) + +- [2d738a4](https://github.com/stashed/elasticsearch/commit/2d738a4) Prepare for release 7.2.0-v5 (#504) +- [b943b7e](https://github.com/stashed/elasticsearch/commit/b943b7e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#496) +- [cfb5023](https://github.com/stashed/elasticsearch/commit/cfb5023) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#487) +- [551eb3b](https://github.com/stashed/elasticsearch/commit/551eb3b) [cherry-pick] Update repository config (#471) (#478) +- [df007da](https://github.com/stashed/elasticsearch/commit/df007da) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#469) +- [c218201](https://github.com/stashed/elasticsearch/commit/c218201) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#460) + + +### [7.3.2-v5](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v5) + +- [04e1f4f](https://github.com/stashed/elasticsearch/commit/04e1f4f) Prepare for release 7.3.2-v5 (#505) +- [ea147c5](https://github.com/stashed/elasticsearch/commit/ea147c5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#489) (#497) +- [893cfea](https://github.com/stashed/elasticsearch/commit/893cfea) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#480) (#488) +- [f3ed4bf](https://github.com/stashed/elasticsearch/commit/f3ed4bf) [cherry-pick] Update repository config (#471) (#479) +- [cb65c92](https://github.com/stashed/elasticsearch/commit/cb65c92) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#470) +- [a3d520e](https://github.com/stashed/elasticsearch/commit/a3d520e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#453) (#461) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.8](https://github.com/stashed/installer/releases/tag/v0.11.8) + +- [c2c8362](https://github.com/stashed/installer/commit/c2c8362) Prepare for release v0.11.8 (#132) +- [ae8900a](https://github.com/stashed/installer/commit/ae8900a) Speed up schema generation process (#131) +- [262e0b5](https://github.com/stashed/installer/commit/262e0b5) Update repository config (#130) +- [05f9e82](https://github.com/stashed/installer/commit/05f9e82) Delete DCO +- [abaf344](https://github.com/stashed/installer/commit/abaf344) Update Kubernetes v1.18.9 dependencies (#129) +- [2d928b1](https://github.com/stashed/installer/commit/2d928b1) Use apiregistration.k8s.io/v1 (#128) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8](https://github.com/stashed/mariadb/releases/tag/10.5.8) + +- [c11b255](https://github.com/stashed/mariadb/commit/c11b255) Prepare for release 10.5.8 (#38) +- [2cc62f5](https://github.com/stashed/mariadb/commit/2cc62f5) [cherry-pick] Update chart-contents target (#37) +- [1d99e4d](https://github.com/stashed/mariadb/commit/1d99e4d) Add support for MariaDB 10.5.8 (#14) +- [484a8be](https://github.com/stashed/mariadb/commit/484a8be) Update Kubernetes v1.18.9 dependencies (#36) +- [8e51d89](https://github.com/stashed/mariadb/commit/8e51d89) Update Kubernetes v1.18.9 dependencies (#35) +- [f28b38c](https://github.com/stashed/mariadb/commit/f28b38c) Update Kubernetes v1.18.9 dependencies (#34) +- [6bb158b](https://github.com/stashed/mariadb/commit/6bb158b) Update Kubernetes v1.18.9 dependencies (#33) +- [96a2f9c](https://github.com/stashed/mariadb/commit/96a2f9c) Update Kubernetes v1.18.9 dependencies (#32) +- [9c039e1](https://github.com/stashed/mariadb/commit/9c039e1) Update Kubernetes v1.18.9 dependencies (#31) +- [cc724ca](https://github.com/stashed/mariadb/commit/cc724ca) Update Kubernetes v1.18.9 dependencies (#30) +- [efae597](https://github.com/stashed/mariadb/commit/efae597) Update Kubernetes v1.18.9 dependencies (#29) +- [90fd790](https://github.com/stashed/mariadb/commit/90fd790) Update Kubernetes v1.18.9 dependencies (#28) +- [ac68465](https://github.com/stashed/mariadb/commit/ac68465) Update Kubernetes v1.18.9 dependencies (#27) +- [ba7af92](https://github.com/stashed/mariadb/commit/ba7af92) Update Kubernetes v1.18.9 dependencies (#26) +- [3b6c2c7](https://github.com/stashed/mariadb/commit/3b6c2c7) Update Kubernetes v1.18.9 dependencies (#25) +- [9c9c161](https://github.com/stashed/mariadb/commit/9c9c161) Update Kubernetes v1.18.9 dependencies (#24) +- [bf87299](https://github.com/stashed/mariadb/commit/bf87299) Update Kubernetes v1.18.9 dependencies (#23) +- [947a95f](https://github.com/stashed/mariadb/commit/947a95f) Update Kubernetes v1.18.9 dependencies (#22) +- [7588fc3](https://github.com/stashed/mariadb/commit/7588fc3) Update Kubernetes v1.18.9 dependencies (#21) +- [669416e](https://github.com/stashed/mariadb/commit/669416e) Update Kubernetes v1.18.9 dependencies (#20) +- [c0d2ac5](https://github.com/stashed/mariadb/commit/c0d2ac5) Update Kubernetes v1.18.9 dependencies (#19) +- [798dd36](https://github.com/stashed/mariadb/commit/798dd36) Update Kubernetes v1.18.9 dependencies (#18) +- [1648324](https://github.com/stashed/mariadb/commit/1648324) Update Kubernetes v1.18.9 dependencies (#17) +- [6593603](https://github.com/stashed/mariadb/commit/6593603) Update Kubernetes v1.18.9 dependencies (#16) +- [aa36f3c](https://github.com/stashed/mariadb/commit/aa36f3c) Update Kubernetes v1.18.9 dependencies (#15) +- [15d9947](https://github.com/stashed/mariadb/commit/15d9947) Update Kubernetes v1.18.9 dependencies (#13) +- [479ca8d](https://github.com/stashed/mariadb/commit/479ca8d) Update Kubernetes v1.18.9 dependencies (#12) +- [ce73357](https://github.com/stashed/mariadb/commit/ce73357) Update Kubernetes v1.18.9 dependencies (#10) +- [43c3ec2](https://github.com/stashed/mariadb/commit/43c3ec2) Update repository config (#11) +- [00cd391](https://github.com/stashed/mariadb/commit/00cd391) Update Kubernetes v1.18.9 dependencies (#9) +- [aea5290](https://github.com/stashed/mariadb/commit/aea5290) Update Kubernetes v1.18.9 dependencies (#8) +- [bfff9f8](https://github.com/stashed/mariadb/commit/bfff9f8) Update Kubernetes v1.18.9 dependencies (#7) +- [d8181c8](https://github.com/stashed/mariadb/commit/d8181c8) Update Kubernetes v1.18.9 dependencies (#6) +- [fa64213](https://github.com/stashed/mariadb/commit/fa64213) Update Kubernetes v1.18.9 dependencies (#5) +- [d1bd8a2](https://github.com/stashed/mariadb/commit/d1bd8a2) Update Kubernetes v1.18.9 dependencies (#4) +- [1b64d94](https://github.com/stashed/mariadb/commit/1b64d94) Update repository config (#3) +- [bac09d7](https://github.com/stashed/mariadb/commit/bac09d7) Update repository config (#2) +- [8769371](https://github.com/stashed/mariadb/commit/8769371) Update Kubernetes v1.18.9 dependencies (#1) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v5](https://github.com/stashed/mongodb/releases/tag/3.4.17-v5) + +- [8446da57](https://github.com/stashed/mongodb/commit/8446da57) Prepare for release 3.4.17-v5 (#651) +- [e53bd66b](https://github.com/stashed/mongodb/commit/e53bd66b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#640) +- [164a0550](https://github.com/stashed/mongodb/commit/164a0550) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#628) +- [ffd89381](https://github.com/stashed/mongodb/commit/ffd89381) [cherry-pick] Update repository config (#615) (#616) +- [038d3800](https://github.com/stashed/mongodb/commit/038d3800) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#604) +- [6b8d1b1c](https://github.com/stashed/mongodb/commit/6b8d1b1c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#592) + + +### [3.4.22-v5](https://github.com/stashed/mongodb/releases/tag/3.4.22-v5) + +- [e33853a9](https://github.com/stashed/mongodb/commit/e33853a9) Prepare for release 3.4.22-v5 (#652) +- [9acaefc6](https://github.com/stashed/mongodb/commit/9acaefc6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#641) +- [814695e2](https://github.com/stashed/mongodb/commit/814695e2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#629) +- [49b00083](https://github.com/stashed/mongodb/commit/49b00083) [cherry-pick] Update repository config (#615) (#617) +- [27ba40d3](https://github.com/stashed/mongodb/commit/27ba40d3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#605) +- [297d6932](https://github.com/stashed/mongodb/commit/297d6932) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#593) + + +### [3.6.8-v5](https://github.com/stashed/mongodb/releases/tag/3.6.8-v5) + +- [31c09024](https://github.com/stashed/mongodb/commit/31c09024) Prepare for release 3.6.8-v5 (#654) +- [e8bbdad4](https://github.com/stashed/mongodb/commit/e8bbdad4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#643) +- [0623cd6b](https://github.com/stashed/mongodb/commit/0623cd6b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#631) +- [e04c6e4d](https://github.com/stashed/mongodb/commit/e04c6e4d) [cherry-pick] Update repository config (#615) (#619) +- [cbb64bcd](https://github.com/stashed/mongodb/commit/cbb64bcd) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#607) +- [4485a5d4](https://github.com/stashed/mongodb/commit/4485a5d4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#595) + + +### [3.6.13-v5](https://github.com/stashed/mongodb/releases/tag/3.6.13-v5) + +- [b6204090](https://github.com/stashed/mongodb/commit/b6204090) Prepare for release 3.6.13-v5 (#653) +- [4be9caa1](https://github.com/stashed/mongodb/commit/4be9caa1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#642) +- [d22abaa0](https://github.com/stashed/mongodb/commit/d22abaa0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#630) +- [54bd4ef2](https://github.com/stashed/mongodb/commit/54bd4ef2) [cherry-pick] Update repository config (#615) (#618) +- [73a1b87a](https://github.com/stashed/mongodb/commit/73a1b87a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#606) +- [929b7d9f](https://github.com/stashed/mongodb/commit/929b7d9f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#594) + + +### [4.0.3-v5](https://github.com/stashed/mongodb/releases/tag/4.0.3-v5) + +- [7a9825fa](https://github.com/stashed/mongodb/commit/7a9825fa) Prepare for release 4.0.3-v5 (#656) +- [8e266e3f](https://github.com/stashed/mongodb/commit/8e266e3f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#645) +- [33b24502](https://github.com/stashed/mongodb/commit/33b24502) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#633) +- [a3f42c8c](https://github.com/stashed/mongodb/commit/a3f42c8c) [cherry-pick] Update repository config (#615) (#621) +- [9a28fdd3](https://github.com/stashed/mongodb/commit/9a28fdd3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#609) +- [450dbfe1](https://github.com/stashed/mongodb/commit/450dbfe1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#597) + + +### [4.0.5-v5](https://github.com/stashed/mongodb/releases/tag/4.0.5-v5) + +- [2b4d6c0b](https://github.com/stashed/mongodb/commit/2b4d6c0b) Prepare for release 4.0.5-v5 (#657) +- [1532c3c3](https://github.com/stashed/mongodb/commit/1532c3c3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#646) +- [aa601ec9](https://github.com/stashed/mongodb/commit/aa601ec9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#634) +- [9b423801](https://github.com/stashed/mongodb/commit/9b423801) [cherry-pick] Update repository config (#615) (#622) +- [81ae1857](https://github.com/stashed/mongodb/commit/81ae1857) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#610) +- [d4ecdf06](https://github.com/stashed/mongodb/commit/d4ecdf06) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#598) + + +### [4.0.11-v5](https://github.com/stashed/mongodb/releases/tag/4.0.11-v5) + +- [3d58d128](https://github.com/stashed/mongodb/commit/3d58d128) Prepare for release 4.0.11-v5 (#655) +- [3efd27ec](https://github.com/stashed/mongodb/commit/3efd27ec) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#644) +- [0700bb03](https://github.com/stashed/mongodb/commit/0700bb03) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#632) +- [214b8f02](https://github.com/stashed/mongodb/commit/214b8f02) [cherry-pick] Update repository config (#615) (#620) +- [adea0e7e](https://github.com/stashed/mongodb/commit/adea0e7e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#608) +- [52d070a0](https://github.com/stashed/mongodb/commit/52d070a0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#596) + + +### [4.1.4-v5](https://github.com/stashed/mongodb/releases/tag/4.1.4-v5) + +- [d3efc3b9](https://github.com/stashed/mongodb/commit/d3efc3b9) Prepare for release 4.1.4-v5 (#659) +- [e5ad51d9](https://github.com/stashed/mongodb/commit/e5ad51d9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#648) +- [1a71cc31](https://github.com/stashed/mongodb/commit/1a71cc31) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#636) +- [f8f9f1f8](https://github.com/stashed/mongodb/commit/f8f9f1f8) [cherry-pick] Update repository config (#615) (#624) +- [f548d611](https://github.com/stashed/mongodb/commit/f548d611) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#612) +- [ffd16236](https://github.com/stashed/mongodb/commit/ffd16236) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#600) + + +### [4.1.7-v5](https://github.com/stashed/mongodb/releases/tag/4.1.7-v5) + +- [09645ca2](https://github.com/stashed/mongodb/commit/09645ca2) Prepare for release 4.1.7-v5 (#660) +- [4c1eb210](https://github.com/stashed/mongodb/commit/4c1eb210) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#649) +- [a4848e57](https://github.com/stashed/mongodb/commit/a4848e57) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#637) +- [63ea5b9e](https://github.com/stashed/mongodb/commit/63ea5b9e) [cherry-pick] Update repository config (#615) (#625) +- [826348c4](https://github.com/stashed/mongodb/commit/826348c4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#613) +- [64abe141](https://github.com/stashed/mongodb/commit/64abe141) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#601) + + +### [4.1.13-v5](https://github.com/stashed/mongodb/releases/tag/4.1.13-v5) + +- [f9985076](https://github.com/stashed/mongodb/commit/f9985076) Prepare for release 4.1.13-v5 (#658) +- [271f7b13](https://github.com/stashed/mongodb/commit/271f7b13) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#647) +- [0598642c](https://github.com/stashed/mongodb/commit/0598642c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#635) +- [d0e3ffd7](https://github.com/stashed/mongodb/commit/d0e3ffd7) [cherry-pick] Update repository config (#615) (#623) +- [21981a19](https://github.com/stashed/mongodb/commit/21981a19) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#611) +- [4213d19d](https://github.com/stashed/mongodb/commit/4213d19d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#599) + + +### [4.2.3-v5](https://github.com/stashed/mongodb/releases/tag/4.2.3-v5) + +- [dc344fb3](https://github.com/stashed/mongodb/commit/dc344fb3) Prepare for release 4.2.3-v5 (#661) +- [451544f4](https://github.com/stashed/mongodb/commit/451544f4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#639) (#650) +- [499bdd68](https://github.com/stashed/mongodb/commit/499bdd68) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#627) (#638) +- [f60aff42](https://github.com/stashed/mongodb/commit/f60aff42) [cherry-pick] Update repository config (#615) (#626) +- [54755039](https://github.com/stashed/mongodb/commit/54755039) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#603) (#614) +- [ad73a841](https://github.com/stashed/mongodb/commit/ad73a841) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#591) (#602) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v5](https://github.com/stashed/mysql/releases/tag/5.7.25-v5) + +- [5561dce](https://github.com/stashed/mysql/commit/5561dce) Prepare for release 5.7.25-v5 (#246) +- [7b380f0](https://github.com/stashed/mysql/commit/7b380f0) Use port from the AppBinding (#234) (#243) +- [3ea5fc8](https://github.com/stashed/mysql/commit/3ea5fc8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#239) (#240) +- [7dcd320](https://github.com/stashed/mysql/commit/7dcd320) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#235) (#236) +- [ea65a68](https://github.com/stashed/mysql/commit/ea65a68) [cherry-pick] Update repository config (#230) (#231) +- [ba47f47](https://github.com/stashed/mysql/commit/ba47f47) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#226) (#227) +- [775ff72](https://github.com/stashed/mysql/commit/775ff72) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#222) (#223) + + +### [8.0.3-v5](https://github.com/stashed/mysql/releases/tag/8.0.3-v5) + +- [800f3da](https://github.com/stashed/mysql/commit/800f3da) Prepare for release 8.0.3-v5 (#248) +- [74da539](https://github.com/stashed/mysql/commit/74da539) Use port from the AppBinding (#234) (#245) +- [30852a5](https://github.com/stashed/mysql/commit/30852a5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#239) (#242) +- [de0721c](https://github.com/stashed/mysql/commit/de0721c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#235) (#238) +- [6dd1480](https://github.com/stashed/mysql/commit/6dd1480) [cherry-pick] Update repository config (#230) (#233) +- [bdf4d17](https://github.com/stashed/mysql/commit/bdf4d17) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#226) (#229) +- [b404222](https://github.com/stashed/mysql/commit/b404222) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#222) (#225) + + +### [8.0.14-v5](https://github.com/stashed/mysql/releases/tag/8.0.14-v5) + +- [1393938](https://github.com/stashed/mysql/commit/1393938) Prepare for release 8.0.14-v5 (#247) +- [672cea7](https://github.com/stashed/mysql/commit/672cea7) Use port from the AppBinding (#234) (#244) +- [1a04a62](https://github.com/stashed/mysql/commit/1a04a62) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#239) (#241) +- [dd88423](https://github.com/stashed/mysql/commit/dd88423) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#235) (#237) +- [890f0f1](https://github.com/stashed/mysql/commit/890f0f1) [cherry-pick] Update repository config (#230) (#232) +- [0868321](https://github.com/stashed/mysql/commit/0868321) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#226) (#228) +- [616dec4](https://github.com/stashed/mysql/commit/616dec4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#222) (#224) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7.0-v1](https://github.com/stashed/percona-xtradb/releases/tag/5.7.0-v1) + +- [3e48d47](https://github.com/stashed/percona-xtradb/commit/3e48d47) Prepare for release 5.7.0-v1 (#126) +- [42458b3](https://github.com/stashed/percona-xtradb/commit/42458b3) Use port from AppBinding (#120) (#125) +- [70d872d](https://github.com/stashed/percona-xtradb/commit/70d872d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#123) (#124) +- [2927d77](https://github.com/stashed/percona-xtradb/commit/2927d77) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#121) (#122) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v4](https://github.com/stashed/postgres/releases/tag/9.6.19-v4) + +- [ef4d4e8](https://github.com/stashed/postgres/commit/ef4d4e8) Prepare for release 9.6.19-v4 (#499) +- [6702c39](https://github.com/stashed/postgres/commit/6702c39) Use port from AppBinding (#461) (#494) +- [36c0904](https://github.com/stashed/postgres/commit/36c0904) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#474) (#484) +- [6903ab9](https://github.com/stashed/postgres/commit/6903ab9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#472) + + +### [10.14.0-v4](https://github.com/stashed/postgres/releases/tag/10.14.0-v4) + +- [110a97f](https://github.com/stashed/postgres/commit/110a97f) Prepare for release 10.14.0-v4 (#495) +- [0b3138c](https://github.com/stashed/postgres/commit/0b3138c) Use port from AppBinding (#461) (#485) +- [1676e80](https://github.com/stashed/postgres/commit/1676e80) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#474) (#475) +- [98e3e77](https://github.com/stashed/postgres/commit/98e3e77) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#463) + + +### [11.9.0-v4](https://github.com/stashed/postgres/releases/tag/11.9.0-v4) + +- [719b8d1](https://github.com/stashed/postgres/commit/719b8d1) Prepare for release 11.9.0-v4 (#496) +- [723403f](https://github.com/stashed/postgres/commit/723403f) Use port from AppBinding (#461) (#490) +- [8b973a4](https://github.com/stashed/postgres/commit/8b973a4) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#474) (#480) +- [726a5fa](https://github.com/stashed/postgres/commit/726a5fa) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#468) + + +### [12.4.0-v4](https://github.com/stashed/postgres/releases/tag/12.4.0-v4) + +- [652db84](https://github.com/stashed/postgres/commit/652db84) Prepare for release 12.4.0-v4 (#497) +- [12cf759](https://github.com/stashed/postgres/commit/12cf759) Use port from AppBinding (#461) (#491) +- [c4f5823](https://github.com/stashed/postgres/commit/c4f5823) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#474) (#481) +- [413d475](https://github.com/stashed/postgres/commit/413d475) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#469) + + +### [13.1.0-v1](https://github.com/stashed/postgres/releases/tag/13.1.0-v1) + +- [e384f2f](https://github.com/stashed/postgres/commit/e384f2f) Prepare for release 13.1.0-v1 (#498) +- [5725c15](https://github.com/stashed/postgres/commit/5725c15) Use port from AppBinding (#461) (#492) +- [531f932](https://github.com/stashed/postgres/commit/531f932) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#474) (#482) +- [e974cca](https://github.com/stashed/postgres/commit/e974cca) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#462) (#470) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.8](https://github.com/stashed/stash/releases/tag/v0.11.8) + +- [d06c4f1d](https://github.com/stashed/stash/commit/d06c4f1d) Prepare for release v0.11.8 (#1287) +- [14dfff22](https://github.com/stashed/stash/commit/14dfff22) Run backup job as user 65535 (#1284) +- [2379c0f8](https://github.com/stashed/stash/commit/2379c0f8) Fix secretTransformation for AppBinding (#1274) +- [88c71b23](https://github.com/stashed/stash/commit/88c71b23) Update repository config (#1285) +- [0667b421](https://github.com/stashed/stash/commit/0667b421) Update Kubernetes v1.18.9 dependencies (#1283) +- [c01a1c95](https://github.com/stashed/stash/commit/c01a1c95) Update Kubernetes v1.18.9 dependencies (#1277) +- [e953c0af](https://github.com/stashed/stash/commit/e953c0af) Use build, config, Kubernetes jobs for e2e workflow + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.01.21.md b/content/docs/v2024.8.27/CHANGELOG-v2021.01.21.md new file mode 100644 index 0000000000..d86bcdd966 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.01.21.md @@ -0,0 +1,306 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.01.21 + name: Changelog-v2021.01.21 + parent: welcome + weight: 20210121 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.01.21/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.01.21/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.01.21 (2021-01-22) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.9](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.9) + +- [88d87727](https://github.com/appscode/stash-enterprise/commit/88d87727) Prepare for release v0.11.9 (#68) +- [bb802f88](https://github.com/appscode/stash-enterprise/commit/bb802f88) Update repository config (#66) +- [52c63a81](https://github.com/appscode/stash-enterprise/commit/52c63a81) Update portforwarding api (#64) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.9](https://github.com/stashed/apimachinery/releases/tag/v0.11.9) + +- [bb631c73](https://github.com/stashed/apimachinery/commit/bb631c73) Update repository config (#80) +- [d8cd6413](https://github.com/stashed/apimachinery/commit/d8cd6413) Update repository config (#79) +- [0388c111](https://github.com/stashed/apimachinery/commit/0388c111) Update Kubernetes v1.18.9 dependencies (#78) +- [10606b14](https://github.com/stashed/apimachinery/commit/10606b14) Update Kubernetes v1.18.9 dependencies (#77) +- [04f9e8bf](https://github.com/stashed/apimachinery/commit/04f9e8bf) Update Kubernetes v1.18.9 dependencies (#76) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2021.01.21](https://github.com/stashed/catalog/releases/tag/v2021.01.21) + +- [9b678ea](https://github.com/stashed/catalog/commit/9b678ea) Prepare for release v2021.01.21 (#52) +- [6a227fe](https://github.com/stashed/catalog/commit/6a227fe) Update repository config (#51) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.9](https://github.com/stashed/cli/releases/tag/v0.11.9) + +- [0551150](https://github.com/stashed/cli/commit/0551150) Prepare for release v0.11.9 (#103) +- [d6217c0](https://github.com/stashed/cli/commit/d6217c0) Update repository config (#102) +- [3998037](https://github.com/stashed/cli/commit/3998037) Update repository config (#101) +- [1ed5ff3](https://github.com/stashed/cli/commit/1ed5ff3) Update Kubernetes v1.18.9 dependencies (#100) +- [beccb98](https://github.com/stashed/cli/commit/beccb98) Update Kubernetes v1.18.9 dependencies (#99) +- [626d3ba](https://github.com/stashed/cli/commit/626d3ba) Update Kubernetes v1.18.9 dependencies (#98) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v6](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v6) + +- [08922c3](https://github.com/stashed/elasticsearch/commit/08922c3) Prepare for release 5.6.4-v6 (#579) +- [069a5ab](https://github.com/stashed/elasticsearch/commit/069a5ab) [cherry-pick] Update repository config (#570) (#571) +- [0d4ced1](https://github.com/stashed/elasticsearch/commit/0d4ced1) [cherry-pick] Update repository config (#561) (#562) +- [ac1bcc6](https://github.com/stashed/elasticsearch/commit/ac1bcc6) [cherry-pick] Use node:14-alpine as base image (#552) (#553) +- [0dab1a8](https://github.com/stashed/elasticsearch/commit/0dab1a8) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#544) +- [34d300d](https://github.com/stashed/elasticsearch/commit/34d300d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#535) +- [0343edd](https://github.com/stashed/elasticsearch/commit/0343edd) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#526) +- [11fa1fd](https://github.com/stashed/elasticsearch/commit/11fa1fd) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#517) +- [b7777f3](https://github.com/stashed/elasticsearch/commit/b7777f3) [cherry-pick] Speed up schema generation process (#507) (#508) + + +### [6.2.4-v6](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v6) + +- [bf5a0fa](https://github.com/stashed/elasticsearch/commit/bf5a0fa) Prepare for release 6.2.4-v6 (#580) +- [9e6d280](https://github.com/stashed/elasticsearch/commit/9e6d280) [cherry-pick] Update repository config (#570) (#572) +- [df5cce2](https://github.com/stashed/elasticsearch/commit/df5cce2) [cherry-pick] Update repository config (#561) (#563) +- [b3d40ce](https://github.com/stashed/elasticsearch/commit/b3d40ce) [cherry-pick] Use node:14-alpine as base image (#552) (#554) +- [70b5f27](https://github.com/stashed/elasticsearch/commit/70b5f27) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#545) +- [ec498f7](https://github.com/stashed/elasticsearch/commit/ec498f7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#536) +- [e819869](https://github.com/stashed/elasticsearch/commit/e819869) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#527) +- [dfa8a1e](https://github.com/stashed/elasticsearch/commit/dfa8a1e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#518) +- [7e3f45c](https://github.com/stashed/elasticsearch/commit/7e3f45c) [cherry-pick] Speed up schema generation process (#507) (#509) + + +### [6.3.0-v6](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v6) + +- [e3e1afa](https://github.com/stashed/elasticsearch/commit/e3e1afa) Prepare for release 6.3.0-v6 (#581) +- [8c75683](https://github.com/stashed/elasticsearch/commit/8c75683) [cherry-pick] Update repository config (#570) (#573) +- [31557a4](https://github.com/stashed/elasticsearch/commit/31557a4) [cherry-pick] Update repository config (#561) (#564) +- [059f6ec](https://github.com/stashed/elasticsearch/commit/059f6ec) [cherry-pick] Use node:14-alpine as base image (#552) (#555) +- [87c4718](https://github.com/stashed/elasticsearch/commit/87c4718) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#546) +- [5cb8af6](https://github.com/stashed/elasticsearch/commit/5cb8af6) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#537) +- [6857924](https://github.com/stashed/elasticsearch/commit/6857924) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#528) +- [4f4114f](https://github.com/stashed/elasticsearch/commit/4f4114f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#519) +- [0f18d62](https://github.com/stashed/elasticsearch/commit/0f18d62) [cherry-pick] Speed up schema generation process (#507) (#510) + + +### [6.4.0-v6](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v6) + +- [06e4dc6](https://github.com/stashed/elasticsearch/commit/06e4dc6) Prepare for release 6.4.0-v6 (#582) +- [7eb1e44](https://github.com/stashed/elasticsearch/commit/7eb1e44) [cherry-pick] Update repository config (#570) (#574) +- [30d0a80](https://github.com/stashed/elasticsearch/commit/30d0a80) [cherry-pick] Update repository config (#561) (#565) +- [954e23a](https://github.com/stashed/elasticsearch/commit/954e23a) [cherry-pick] Use node:14-alpine as base image (#552) (#556) +- [140abce](https://github.com/stashed/elasticsearch/commit/140abce) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#547) +- [dfcd94b](https://github.com/stashed/elasticsearch/commit/dfcd94b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#538) +- [2eea2d2](https://github.com/stashed/elasticsearch/commit/2eea2d2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#529) +- [d73b741](https://github.com/stashed/elasticsearch/commit/d73b741) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#520) +- [df6fd5c](https://github.com/stashed/elasticsearch/commit/df6fd5c) [cherry-pick] Speed up schema generation process (#507) (#511) + + +### [6.5.3-v6](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v6) + +- [0a497b5](https://github.com/stashed/elasticsearch/commit/0a497b5) Prepare for release 6.5.3-v6 (#583) +- [5bc7e7c](https://github.com/stashed/elasticsearch/commit/5bc7e7c) [cherry-pick] Update repository config (#570) (#575) +- [76e4df1](https://github.com/stashed/elasticsearch/commit/76e4df1) [cherry-pick] Update repository config (#561) (#566) +- [8fe2314](https://github.com/stashed/elasticsearch/commit/8fe2314) [cherry-pick] Use node:14-alpine as base image (#552) (#557) +- [20c0eda](https://github.com/stashed/elasticsearch/commit/20c0eda) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#548) +- [a567dc8](https://github.com/stashed/elasticsearch/commit/a567dc8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#539) +- [7d00d9c](https://github.com/stashed/elasticsearch/commit/7d00d9c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#530) +- [28df759](https://github.com/stashed/elasticsearch/commit/28df759) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#521) +- [287c59c](https://github.com/stashed/elasticsearch/commit/287c59c) [cherry-pick] Speed up schema generation process (#507) (#512) + + +### [6.8.0-v6](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v6) + +- [0c64799](https://github.com/stashed/elasticsearch/commit/0c64799) Prepare for release 6.8.0-v6 (#584) +- [da93602](https://github.com/stashed/elasticsearch/commit/da93602) [cherry-pick] Update repository config (#570) (#576) +- [197dd2f](https://github.com/stashed/elasticsearch/commit/197dd2f) [cherry-pick] Update repository config (#561) (#567) +- [abd7a78](https://github.com/stashed/elasticsearch/commit/abd7a78) [cherry-pick] Use node:14-alpine as base image (#552) (#558) +- [c942e6d](https://github.com/stashed/elasticsearch/commit/c942e6d) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#549) +- [847e41d](https://github.com/stashed/elasticsearch/commit/847e41d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#540) +- [146df5e](https://github.com/stashed/elasticsearch/commit/146df5e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#531) +- [74ebe8f](https://github.com/stashed/elasticsearch/commit/74ebe8f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#522) +- [382939e](https://github.com/stashed/elasticsearch/commit/382939e) [cherry-pick] Speed up schema generation process (#507) (#513) + + +### [7.2.0-v6](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v6) + +- [0e6c708](https://github.com/stashed/elasticsearch/commit/0e6c708) Prepare for release 7.2.0-v6 (#585) +- [0da54b1](https://github.com/stashed/elasticsearch/commit/0da54b1) [cherry-pick] Update repository config (#570) (#577) +- [0818310](https://github.com/stashed/elasticsearch/commit/0818310) [cherry-pick] Update repository config (#561) (#568) +- [cd2f4e8](https://github.com/stashed/elasticsearch/commit/cd2f4e8) [cherry-pick] Use node:14-alpine as base image (#552) (#559) +- [803f2bc](https://github.com/stashed/elasticsearch/commit/803f2bc) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#550) +- [1ed55e0](https://github.com/stashed/elasticsearch/commit/1ed55e0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#541) +- [6e65169](https://github.com/stashed/elasticsearch/commit/6e65169) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#532) +- [6ba13ae](https://github.com/stashed/elasticsearch/commit/6ba13ae) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#523) +- [c37730e](https://github.com/stashed/elasticsearch/commit/c37730e) [cherry-pick] Speed up schema generation process (#507) (#514) + + +### [7.3.2-v6](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v6) + +- [2767117](https://github.com/stashed/elasticsearch/commit/2767117) Prepare for release 7.3.2-v6 (#586) +- [ce0a302](https://github.com/stashed/elasticsearch/commit/ce0a302) [cherry-pick] Update repository config (#570) (#578) +- [01aefe2](https://github.com/stashed/elasticsearch/commit/01aefe2) [cherry-pick] Update repository config (#561) (#569) +- [3b50d61](https://github.com/stashed/elasticsearch/commit/3b50d61) [cherry-pick] Use node:14-alpine as base image (#552) (#560) +- [b7525e1](https://github.com/stashed/elasticsearch/commit/b7525e1) [cherry-pick] Use BasicAuth Keys for reading credentials from secret (#543) (#551) +- [68591ee](https://github.com/stashed/elasticsearch/commit/68591ee) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#542) +- [a14eb3e](https://github.com/stashed/elasticsearch/commit/a14eb3e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#525) (#533) +- [ef63f91](https://github.com/stashed/elasticsearch/commit/ef63f91) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#516) (#524) +- [4eb60cb](https://github.com/stashed/elasticsearch/commit/4eb60cb) [cherry-pick] Speed up schema generation process (#507) (#515) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.9](https://github.com/stashed/installer/releases/tag/v0.11.9) + +- [297af47](https://github.com/stashed/installer/commit/297af47) Prepare for release v0.11.9 (#135) +- [9182697](https://github.com/stashed/installer/commit/9182697) Use kmodules.xyz/schema-checker to validate values schema (#134) +- [7b2f051](https://github.com/stashed/installer/commit/7b2f051) Update repository config (#133) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v6](https://github.com/stashed/mysql/releases/tag/5.7.25-v6) + +- [a323265](https://github.com/stashed/mysql/commit/a323265) Prepare for release 5.7.25-v6 (#286) +- [28fc525](https://github.com/stashed/mysql/commit/28fc525) [cherry-pick] /cherry-pick (#271) (#282) +- [8eff987](https://github.com/stashed/mysql/commit/8eff987) [cherry-pick] Update repository config (#277) (#278) +- [8c431a1](https://github.com/stashed/mysql/commit/8c431a1) [cherry-pick] Update repository config (#272) (#273) +- [90540fe](https://github.com/stashed/mysql/commit/90540fe) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#266) (#267) +- [75adb40](https://github.com/stashed/mysql/commit/75adb40) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#262) (#263) +- [8a6631c](https://github.com/stashed/mysql/commit/8a6631c) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#258) (#259) +- [c89196d](https://github.com/stashed/mysql/commit/c89196d) [cherry-pick] Generate README.md using templates (#254) (#255) +- [38d1a2e](https://github.com/stashed/mysql/commit/38d1a2e) [cherry-pick] Speed up schema generation process (#250) (#251) + + +### [8.0.3-v6](https://github.com/stashed/mysql/releases/tag/8.0.3-v6) + +- [239ab4b](https://github.com/stashed/mysql/commit/239ab4b) Prepare for release 8.0.3-v6 (#289) +- [fb952a6](https://github.com/stashed/mysql/commit/fb952a6) /cherry-pick (#271) (#285) +- [394a229](https://github.com/stashed/mysql/commit/394a229) [cherry-pick] Update repository config (#277) (#281) +- [e8e2cf5](https://github.com/stashed/mysql/commit/e8e2cf5) [cherry-pick] Update repository config (#272) (#276) +- [31a0894](https://github.com/stashed/mysql/commit/31a0894) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#266) (#270) +- [2b7e67b](https://github.com/stashed/mysql/commit/2b7e67b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#262) (#265) +- [ca0a700](https://github.com/stashed/mysql/commit/ca0a700) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#258) (#261) +- [e7135de](https://github.com/stashed/mysql/commit/e7135de) [cherry-pick] Generate README.md using templates (#254) (#257) +- [6cf15c3](https://github.com/stashed/mysql/commit/6cf15c3) [cherry-pick] Speed up schema generation process (#250) (#253) + + +### [8.0.14-v6](https://github.com/stashed/mysql/releases/tag/8.0.14-v6) + +- [80103d0](https://github.com/stashed/mysql/commit/80103d0) Prepare for release 8.0.14-v6 (#287) +- [1ba0074](https://github.com/stashed/mysql/commit/1ba0074) [cherry-pick] /cherry-pick (#271) (#283) +- [d63cbc1](https://github.com/stashed/mysql/commit/d63cbc1) [cherry-pick] Update repository config (#277) (#279) +- [9fb2be6](https://github.com/stashed/mysql/commit/9fb2be6) [cherry-pick] Update repository config (#272) (#274) +- [9170a97](https://github.com/stashed/mysql/commit/9170a97) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#266) (#268) +- [44f99e9](https://github.com/stashed/mysql/commit/44f99e9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#262) (#264) +- [52ffb49](https://github.com/stashed/mysql/commit/52ffb49) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#258) (#260) +- [5979f66](https://github.com/stashed/mysql/commit/5979f66) [cherry-pick] Generate README.md using templates (#254) (#256) +- [e96a04e](https://github.com/stashed/mysql/commit/e96a04e) [cherry-pick] Speed up schema generation process (#250) (#252) + + +### [8.0.21](https://github.com/stashed/mysql/releases/tag/8.0.21) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.9](https://github.com/stashed/stash/releases/tag/v0.11.9) + +- [fbc144b7](https://github.com/stashed/stash/commit/fbc144b7) Prepare for release v0.11.9 (#1300) +- [7a2ee50c](https://github.com/stashed/stash/commit/7a2ee50c) Update repository config (#1299) +- [597cd6b2](https://github.com/stashed/stash/commit/597cd6b2) Update repository config (#1298) +- [182d5ebf](https://github.com/stashed/stash/commit/182d5ebf) Update Kubernetes v1.18.9 dependencies (#1295) +- [a225db0c](https://github.com/stashed/stash/commit/a225db0c) Update portforwarding api (#1294) +- [398ffd1e](https://github.com/stashed/stash/commit/398ffd1e) Update Kubernetes v1.18.9 dependencies (#1293) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.03.08.md b/content/docs/v2024.8.27/CHANGELOG-v2021.03.08.md new file mode 100644 index 0000000000..81a64781e5 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.03.08.md @@ -0,0 +1,761 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.03.08 + name: Changelog-v2021.03.08 + parent: welcome + weight: 20210308 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.03.08/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.03.08/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.03.08 (2021-03-09) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.11.10](https://github.com/appscode/stash-enterprise/releases/tag/v0.11.10) + +- [ef190112](https://github.com/appscode/stash-enterprise/commit/ef190112) Prepare for release v0.11.10 (#81) +- [ee861f80](https://github.com/appscode/stash-enterprise/commit/ee861f80) Delete ClusterRoleBinding when the backup/restore invoker is removed (#80) +- [15e9596d](https://github.com/appscode/stash-enterprise/commit/15e9596d) Use addon info from AppBinding for KubeDB managed databases (#79) +- [315d42ae](https://github.com/appscode/stash-enterprise/commit/315d42ae) Update repository config (#77) +- [ce9dd2e4](https://github.com/appscode/stash-enterprise/commit/ce9dd2e4) Update repository config (#76) +- [ec68a28d](https://github.com/appscode/stash-enterprise/commit/ec68a28d) Enable running as a kubedb extension +- [68c9eef3](https://github.com/appscode/stash-enterprise/commit/68c9eef3) Use restic 0.12.0 (#74) +- [50f3d395](https://github.com/appscode/stash-enterprise/commit/50f3d395) Update Kubernetes v1.18.9 dependencies (#73) +- [47cb4438](https://github.com/appscode/stash-enterprise/commit/47cb4438) Update Kubernetes v1.18.9 dependencies (#72) +- [e1293f53](https://github.com/appscode/stash-enterprise/commit/e1293f53) Update Kubernetes v1.18.9 dependencies (#70) +- [6d253b3d](https://github.com/appscode/stash-enterprise/commit/6d253b3d) Update repository config (#67) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.11.10](https://github.com/stashed/apimachinery/releases/tag/v0.11.10) + +- [224ba637](https://github.com/stashed/apimachinery/commit/224ba637) Use import-crds script (#95) +- [96a42481](https://github.com/stashed/apimachinery/commit/96a42481) Add helper function to extract addon info from AppBinding (#94) +- [08e07356](https://github.com/stashed/apimachinery/commit/08e07356) Update repository config (#93) +- [6a253c41](https://github.com/stashed/apimachinery/commit/6a253c41) Generate crd yaml for Snapshot (#92) +- [c403645d](https://github.com/stashed/apimachinery/commit/c403645d) verify-gen before verify-modules (#90) +- [b3a033ea](https://github.com/stashed/apimachinery/commit/b3a033ea) Make pipe commands a array + fix output parsing of cleanup command (#87) +- [896c3ef5](https://github.com/stashed/apimachinery/commit/896c3ef5) Revendor kmodules.xyz/custom-resources +- [f29b2219](https://github.com/stashed/apimachinery/commit/f29b2219) Update crd-importer command +- [b39a182f](https://github.com/stashed/apimachinery/commit/b39a182f) Update repository config (#86) +- [680c4df3](https://github.com/stashed/apimachinery/commit/680c4df3) Use restic 0.12.0 (#84) +- [78134f02](https://github.com/stashed/apimachinery/commit/78134f02) Update crds via GitHub actions (#83) +- [a828a28e](https://github.com/stashed/apimachinery/commit/a828a28e) Update Kubernetes v1.18.9 dependencies (#82) +- [456e1a20](https://github.com/stashed/apimachinery/commit/456e1a20) Update Kubernetes v1.18.9 dependencies (#81) + + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2021.03.08](https://github.com/stashed/catalog/releases/tag/v2021.03.08) + +- [d4246cf](https://github.com/stashed/catalog/commit/d4246cf) Prepare for release v2021.03.08 (#62) +- [1306ba5](https://github.com/stashed/catalog/commit/1306ba5) Generate catalog library using go:embed (#61) +- [5307970](https://github.com/stashed/catalog/commit/5307970) Update repository config (#57) +- [fe7d130](https://github.com/stashed/catalog/commit/fe7d130) Fix passing image args (#56) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.11.10](https://github.com/stashed/cli/releases/tag/v0.11.10) + +- [3c37cc4](https://github.com/stashed/cli/commit/3c37cc4) Prepare for release v0.11.10 (#112) +- [fab9603](https://github.com/stashed/cli/commit/fab9603) Update repository config (#110) +- [59b5bea](https://github.com/stashed/cli/commit/59b5bea) Update repository config (#108) +- [5bba6cf](https://github.com/stashed/cli/commit/5bba6cf) Update Kubernetes v1.18.9 dependencies (#107) +- [4c34c15](https://github.com/stashed/cli/commit/4c34c15) Update Kubernetes v1.18.9 dependencies (#106) +- [743a3b9](https://github.com/stashed/cli/commit/743a3b9) Update Kubernetes v1.18.9 dependencies (#105) +- [c305c1a](https://github.com/stashed/cli/commit/c305c1a) Update Kubernetes v1.18.9 dependencies (#104) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v7](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v7) + +- [dcba74b2](https://github.com/stashed/elasticsearch/commit/dcba74b2) Prepare for release 5.6.4-v7 (#708) +- [5a5e1542](https://github.com/stashed/elasticsearch/commit/5a5e1542) Fix Makefile (#699) (#700) +- [537d1393](https://github.com/stashed/elasticsearch/commit/537d1393) Ignore 404 status code when listing legacy templates (#690) (#691) +- [dc8f26f2](https://github.com/stashed/elasticsearch/commit/dc8f26f2) Quote password in authFile (#689) +- [755ffac5](https://github.com/stashed/elasticsearch/commit/755ffac5) [cherry-pick] Update repository config (#674) (#675) +- [27b1ee52](https://github.com/stashed/elasticsearch/commit/27b1ee52) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#666) +- [f49353f2](https://github.com/stashed/elasticsearch/commit/f49353f2) Use auth-file for authentication (#615) (#658) +- [eb8e7ac0](https://github.com/stashed/elasticsearch/commit/eb8e7ac0) Update repository config (#648) (#649) +- [38c6c8f9](https://github.com/stashed/elasticsearch/commit/38c6c8f9) Use restic 0.12.0 (#642) (#643) +- [1c41ea18](https://github.com/stashed/elasticsearch/commit/1c41ea18) Update Kubernetes v1.18.9 dependencies (#633) (#634) +- [9bed4e5c](https://github.com/stashed/elasticsearch/commit/9bed4e5c) [cherry-pick] Check codespan schema (#625) (#626) +- [157cb63a](https://github.com/stashed/elasticsearch/commit/157cb63a) [cherry-pick] Update repository config (#606) (#607) +- [8454a167](https://github.com/stashed/elasticsearch/commit/8454a167) [cherry-pick] Update repository config (#597) (#598) +- [84293f0b](https://github.com/stashed/elasticsearch/commit/84293f0b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#589) + + +### [6.2.4-v7](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v7) + +- [dcdff6ca](https://github.com/stashed/elasticsearch/commit/dcdff6ca) Prepare for release 6.2.4-v7 (#709) +- [8a62603d](https://github.com/stashed/elasticsearch/commit/8a62603d) Fix Makefile (#699) (#701) +- [122f0d5e](https://github.com/stashed/elasticsearch/commit/122f0d5e) Ignore 404 status code when listing legacy templates (#690) (#692) +- [3a9a98f3](https://github.com/stashed/elasticsearch/commit/3a9a98f3) Quote password in authFile (#689) +- [4659e942](https://github.com/stashed/elasticsearch/commit/4659e942) Check codespan schema (#625) (#686) +- [7c8aeb93](https://github.com/stashed/elasticsearch/commit/7c8aeb93) [cherry-pick] Update repository config (#674) (#676) +- [59f32d92](https://github.com/stashed/elasticsearch/commit/59f32d92) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#667) +- [65bbb66f](https://github.com/stashed/elasticsearch/commit/65bbb66f) Use auth-file for authentication (#615) (#659) +- [5ea72da5](https://github.com/stashed/elasticsearch/commit/5ea72da5) Update repository config (#648) (#650) +- [59c7bd9e](https://github.com/stashed/elasticsearch/commit/59c7bd9e) Use restic 0.12.0 (#642) (#644) +- [4d375599](https://github.com/stashed/elasticsearch/commit/4d375599) Update Kubernetes v1.18.9 dependencies (#633) (#635) +- [9f281533](https://github.com/stashed/elasticsearch/commit/9f281533) [cherry-pick] Update repository config (#606) (#608) +- [87352ada](https://github.com/stashed/elasticsearch/commit/87352ada) [cherry-pick] Update repository config (#597) (#599) +- [d8604274](https://github.com/stashed/elasticsearch/commit/d8604274) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#590) + + +### [6.3.0-v7](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v7) + +- [e085d630](https://github.com/stashed/elasticsearch/commit/e085d630) Prepare for release 6.3.0-v7 (#710) +- [f045125b](https://github.com/stashed/elasticsearch/commit/f045125b) Fix Makefile (#699) (#702) +- [e8cab7b9](https://github.com/stashed/elasticsearch/commit/e8cab7b9) Ignore 404 status code when listing legacy templates (#690) (#693) +- [e41e7e43](https://github.com/stashed/elasticsearch/commit/e41e7e43) Quote password in authFile (#689) +- [56ab642d](https://github.com/stashed/elasticsearch/commit/56ab642d) [cherry-pick] Update repository config (#674) (#677) +- [69131a02](https://github.com/stashed/elasticsearch/commit/69131a02) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#668) +- [f46a84ae](https://github.com/stashed/elasticsearch/commit/f46a84ae) Use auth-file for authentication (#615) (#660) +- [648d0ff1](https://github.com/stashed/elasticsearch/commit/648d0ff1) Update repository config (#648) (#651) +- [e7201912](https://github.com/stashed/elasticsearch/commit/e7201912) Use restic 0.12.0 (#642) (#645) +- [640e1889](https://github.com/stashed/elasticsearch/commit/640e1889) Update Kubernetes v1.18.9 dependencies (#633) (#636) +- [c82402f4](https://github.com/stashed/elasticsearch/commit/c82402f4) [cherry-pick] Check codespan schema (#625) (#627) +- [af41c505](https://github.com/stashed/elasticsearch/commit/af41c505) [cherry-pick] Update repository config (#606) (#609) +- [898df067](https://github.com/stashed/elasticsearch/commit/898df067) [cherry-pick] Update repository config (#597) (#600) +- [eacda9a1](https://github.com/stashed/elasticsearch/commit/eacda9a1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#591) + + +### [6.4.0-v7](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v7) + +- [5ed94a48](https://github.com/stashed/elasticsearch/commit/5ed94a48) Prepare for release 6.4.0-v7 (#711) +- [35fd1f71](https://github.com/stashed/elasticsearch/commit/35fd1f71) Fix Makefile (#699) (#703) +- [46e0fabb](https://github.com/stashed/elasticsearch/commit/46e0fabb) Ignore 404 status code when listing legacy templates (#690) (#694) +- [9da39aeb](https://github.com/stashed/elasticsearch/commit/9da39aeb) Quote password in authFile (#689) +- [3fb2bd21](https://github.com/stashed/elasticsearch/commit/3fb2bd21) [cherry-pick] Update repository config (#674) (#678) +- [e70e0656](https://github.com/stashed/elasticsearch/commit/e70e0656) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#669) +- [cd226d80](https://github.com/stashed/elasticsearch/commit/cd226d80) Use auth-file for authentication (#615) (#661) +- [edf5ba72](https://github.com/stashed/elasticsearch/commit/edf5ba72) Update repository config (#648) (#652) +- [3d3e99a1](https://github.com/stashed/elasticsearch/commit/3d3e99a1) Use restic 0.12.0 (#642) (#646) +- [0787f7f2](https://github.com/stashed/elasticsearch/commit/0787f7f2) Update Kubernetes v1.18.9 dependencies (#633) (#637) +- [0dafdc7a](https://github.com/stashed/elasticsearch/commit/0dafdc7a) [cherry-pick] Check codespan schema (#625) (#628) +- [54d3204e](https://github.com/stashed/elasticsearch/commit/54d3204e) [cherry-pick] Update repository config (#606) (#610) +- [66df46bd](https://github.com/stashed/elasticsearch/commit/66df46bd) [cherry-pick] Update repository config (#597) (#601) +- [c962f800](https://github.com/stashed/elasticsearch/commit/c962f800) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#592) + + +### [6.5.3-v7](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v7) + +- [e44bce97](https://github.com/stashed/elasticsearch/commit/e44bce97) Prepare for release 6.5.3-v7 (#712) +- [e6cee0a2](https://github.com/stashed/elasticsearch/commit/e6cee0a2) Fix Makefile (#699) (#704) +- [d6452e0a](https://github.com/stashed/elasticsearch/commit/d6452e0a) Ignore 404 status code when listing legacy templates (#690) (#695) +- [5b15ac67](https://github.com/stashed/elasticsearch/commit/5b15ac67) Quote password in authFile (#689) +- [ec5efb61](https://github.com/stashed/elasticsearch/commit/ec5efb61) Use restic 0.12.0 (#642) (#682) +- [8101a27e](https://github.com/stashed/elasticsearch/commit/8101a27e) [cherry-pick] Update repository config (#674) (#679) +- [e7b742e0](https://github.com/stashed/elasticsearch/commit/e7b742e0) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#670) +- [bf880257](https://github.com/stashed/elasticsearch/commit/bf880257) Use auth-file for authentication (#615) (#662) +- [d7632175](https://github.com/stashed/elasticsearch/commit/d7632175) Update repository config (#648) (#653) +- [f5c3ad75](https://github.com/stashed/elasticsearch/commit/f5c3ad75) Update Kubernetes v1.18.9 dependencies (#633) (#638) +- [f0da9c7b](https://github.com/stashed/elasticsearch/commit/f0da9c7b) [cherry-pick] Check codespan schema (#625) (#629) +- [fdaaf918](https://github.com/stashed/elasticsearch/commit/fdaaf918) [cherry-pick] Update repository config (#606) (#611) +- [db2b3682](https://github.com/stashed/elasticsearch/commit/db2b3682) [cherry-pick] Update repository config (#597) (#602) +- [bcf79171](https://github.com/stashed/elasticsearch/commit/bcf79171) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#593) + + +### [6.8.0-v7](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v7) + +- [0ec393d2](https://github.com/stashed/elasticsearch/commit/0ec393d2) Prepare for release 6.8.0-v7 (#713) +- [4073987f](https://github.com/stashed/elasticsearch/commit/4073987f) Fix Makefile (#699) (#705) +- [04d80d85](https://github.com/stashed/elasticsearch/commit/04d80d85) Ignore 404 status code when listing legacy templates (#690) (#696) +- [dcf26649](https://github.com/stashed/elasticsearch/commit/dcf26649) Quote password in authFile (#689) +- [b0181bc6](https://github.com/stashed/elasticsearch/commit/b0181bc6) Use restic 0.12.0 (#642) (#683) +- [5a2bbc2a](https://github.com/stashed/elasticsearch/commit/5a2bbc2a) [cherry-pick] Update repository config (#674) (#680) +- [587de767](https://github.com/stashed/elasticsearch/commit/587de767) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#671) +- [f69ced9f](https://github.com/stashed/elasticsearch/commit/f69ced9f) Use auth-file for authentication (#615) (#663) +- [f9fea1e4](https://github.com/stashed/elasticsearch/commit/f9fea1e4) Update repository config (#648) (#654) +- [dfe9f1ee](https://github.com/stashed/elasticsearch/commit/dfe9f1ee) Update Kubernetes v1.18.9 dependencies (#633) (#639) +- [efd4b10b](https://github.com/stashed/elasticsearch/commit/efd4b10b) [cherry-pick] Check codespan schema (#625) (#630) +- [39ba5829](https://github.com/stashed/elasticsearch/commit/39ba5829) [cherry-pick] Update repository config (#606) (#612) +- [ab71cf1d](https://github.com/stashed/elasticsearch/commit/ab71cf1d) [cherry-pick] Update repository config (#597) (#603) +- [de556d0f](https://github.com/stashed/elasticsearch/commit/de556d0f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#594) + + +### [7.2.0-v7](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v7) + +- [ea85c44e](https://github.com/stashed/elasticsearch/commit/ea85c44e) Prepare for release 7.2.0-v7 (#714) +- [db945208](https://github.com/stashed/elasticsearch/commit/db945208) Fix Makefile (#699) (#706) +- [a7916ad9](https://github.com/stashed/elasticsearch/commit/a7916ad9) Ignore 404 status code when listing legacy templates (#690) (#697) +- [66cb2cc7](https://github.com/stashed/elasticsearch/commit/66cb2cc7) Quote password in authFile (#689) +- [7118f02d](https://github.com/stashed/elasticsearch/commit/7118f02d) Use restic 0.12.0 (#642) (#684) +- [5cc37a43](https://github.com/stashed/elasticsearch/commit/5cc37a43) [cherry-pick] Update repository config (#674) (#681) +- [3162e056](https://github.com/stashed/elasticsearch/commit/3162e056) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#672) +- [033f476c](https://github.com/stashed/elasticsearch/commit/033f476c) Use auth-file for authentication (#615) (#664) +- [7aa78714](https://github.com/stashed/elasticsearch/commit/7aa78714) Update repository config (#648) (#655) +- [387d719d](https://github.com/stashed/elasticsearch/commit/387d719d) Update Kubernetes v1.18.9 dependencies (#633) (#640) +- [91ee06fd](https://github.com/stashed/elasticsearch/commit/91ee06fd) [cherry-pick] Check codespan schema (#625) (#631) +- [1893fa75](https://github.com/stashed/elasticsearch/commit/1893fa75) [cherry-pick] Update repository config (#606) (#613) +- [bc69b962](https://github.com/stashed/elasticsearch/commit/bc69b962) [cherry-pick] Update repository config (#597) (#604) +- [aa2ec507](https://github.com/stashed/elasticsearch/commit/aa2ec507) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#595) + + +### [7.3.2-v7](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v7) + +- [34b60133](https://github.com/stashed/elasticsearch/commit/34b60133) Prepare for release 7.3.2-v7 (#715) +- [a64b4e09](https://github.com/stashed/elasticsearch/commit/a64b4e09) Fix Makefile (#699) (#707) +- [5516debf](https://github.com/stashed/elasticsearch/commit/5516debf) Ignore 404 status code when listing legacy templates (#690) (#698) +- [1af9b4f1](https://github.com/stashed/elasticsearch/commit/1af9b4f1) Quote password in authFile (#689) +- [73f1363d](https://github.com/stashed/elasticsearch/commit/73f1363d) Use Go 1.16 (#625) (#632) (#688) +- [33d55c00](https://github.com/stashed/elasticsearch/commit/33d55c00) Update repository config (#674) (#687) +- [d5acfdfe](https://github.com/stashed/elasticsearch/commit/d5acfdfe) Use restic 0.12.0 (#642) (#685) +- [b1a5ddef](https://github.com/stashed/elasticsearch/commit/b1a5ddef) [cherry-pick] Update documentation for KubeDB v1alpha2 (#616) (#673) +- [3ac327b4](https://github.com/stashed/elasticsearch/commit/3ac327b4) Use auth-file for authentication (#615) (#665) +- [b8d6fd88](https://github.com/stashed/elasticsearch/commit/b8d6fd88) Update Kubernetes v1.18.9 dependencies (#633) (#641) +- [68a99e32](https://github.com/stashed/elasticsearch/commit/68a99e32) Check codespan schema (#625) (#632) +- [2837c894](https://github.com/stashed/elasticsearch/commit/2837c894) [cherry-pick] Update repository config (#606) (#614) +- [e330a642](https://github.com/stashed/elasticsearch/commit/e330a642) [cherry-pick] Update repository config (#597) (#605) +- [a018c4f1](https://github.com/stashed/elasticsearch/commit/a018c4f1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#588) (#596) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.10](https://github.com/stashed/installer/releases/tag/v0.11.10) + +- [bc7afef](https://github.com/stashed/installer/commit/bc7afef) Prepare for release v0.11.10 (#156) +- [34d9f1c](https://github.com/stashed/installer/commit/34d9f1c) Avoid duplicating PSPs (#139) +- [bb53887](https://github.com/stashed/installer/commit/bb53887) Fix script permission +- [0982937](https://github.com/stashed/installer/commit/0982937) Add RBAC resources list permission (#153) +- [225c09b](https://github.com/stashed/installer/commit/225c09b) Add import-crds.sh script (#152) +- [ffbd911](https://github.com/stashed/installer/commit/ffbd911) Update crds for stashed/apimachinery@96a42481 (#151) +- [2a66966](https://github.com/stashed/installer/commit/2a66966) make ct (#147) +- [fe6391b](https://github.com/stashed/installer/commit/fe6391b) Remove unused chart templates +- [eb82779](https://github.com/stashed/installer/commit/eb82779) Update repository config (#144) +- [22123dc](https://github.com/stashed/installer/commit/22123dc) Remove v1alpha1 crds from chart +- [e4752a0](https://github.com/stashed/installer/commit/e4752a0) Update stash-crds chart version +- [7fc1b31](https://github.com/stashed/installer/commit/7fc1b31) Update stash community chart name +- [1ccd0d7](https://github.com/stashed/installer/commit/1ccd0d7) Add open-pr.sh script (#143) +- [e9f1dd3](https://github.com/stashed/installer/commit/e9f1dd3) Add stash-crds chart (#142) +- [7fe38fe](https://github.com/stashed/installer/commit/7fe38fe) Rename stash chart to stash-community (#141) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v1](https://github.com/stashed/mariadb/releases/tag/10.5.8-v1) + +- [b620e7d](https://github.com/stashed/mariadb/commit/b620e7d) Prepare for release 10.5.8-v1 (#83) +- [4c06280](https://github.com/stashed/mariadb/commit/4c06280) [cherry-pick] Adding TLS support on MariaDB plugin (#62) (#82) +- [d6d9a6e](https://github.com/stashed/mariadb/commit/d6d9a6e) [cherry-pick] Update Docs (#79) (#81) +- [04c81ed](https://github.com/stashed/mariadb/commit/04c81ed) [cherry-pick] Support multiple commands in backup/restore pipeline (#77) (#80) +- [95f51d1](https://github.com/stashed/mariadb/commit/95f51d1) [cherry-pick] Update repository config (#75) (#78) +- [25933ed](https://github.com/stashed/mariadb/commit/25933ed) Update repository config (#73) (#74) +- [c0e03fe](https://github.com/stashed/mariadb/commit/c0e03fe) Use restic 0.12.0 (#70) (#71) +- [41082a8](https://github.com/stashed/mariadb/commit/41082a8) Update Kubernetes v1.18.9 dependencies (#68) (#69) +- [0e8a6d6](https://github.com/stashed/mariadb/commit/0e8a6d6) Fix links to concept docs (#56) (#67) +- [68fe2fe](https://github.com/stashed/mariadb/commit/68fe2fe) [cherry-pick] Check codespan schema (#65) (#66) +- [26f0958](https://github.com/stashed/mariadb/commit/26f0958) [cherry-pick] Update repository config (#59) (#60) +- [5d08f71](https://github.com/stashed/mariadb/commit/5d08f71) [cherry-pick] Update repository config (#57) (#58) +- [e076ca9](https://github.com/stashed/mariadb/commit/e076ca9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#54) (#55) +- [eee3847](https://github.com/stashed/mariadb/commit/eee3847) [cherry-pick] Update repository config (#52) (#53) +- [6e1230c](https://github.com/stashed/mariadb/commit/6e1230c) [cherry-pick] Update repository config (#50) (#51) +- [cd1252b](https://github.com/stashed/mariadb/commit/cd1252b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#48) (#49) +- [bee27ba](https://github.com/stashed/mariadb/commit/bee27ba) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#46) (#47) +- [eba6dad](https://github.com/stashed/mariadb/commit/eba6dad) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#44) (#45) +- [59d93e6](https://github.com/stashed/mariadb/commit/59d93e6) [cherry-pick] Generate README.md from templates (#42) (#43) +- [5763554](https://github.com/stashed/mariadb/commit/5763554) [cherry-pick] Speed up schema generation process (#40) (#41) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v6](https://github.com/stashed/mongodb/releases/tag/3.4.17-v6) + +- [1d030cb5](https://github.com/stashed/mongodb/commit/1d030cb5) Prepare for release 3.4.17-v6 (#843) +- [6aead6a1](https://github.com/stashed/mongodb/commit/6aead6a1) [cherry-pick] Update repository config (#834) (#835) +- [605d610e](https://github.com/stashed/mongodb/commit/605d610e) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#824) +- [af2471a0](https://github.com/stashed/mongodb/commit/af2471a0) Update repository config (#809) (#810) +- [834dd170](https://github.com/stashed/mongodb/commit/834dd170) Use restic 0.12.0 (#799) (#800) +- [aa183f6d](https://github.com/stashed/mongodb/commit/aa183f6d) Update Kubernetes v1.18.9 dependencies (#788) (#789) +- [69115627](https://github.com/stashed/mongodb/commit/69115627) [cherry-pick] Check codespan schema (#776) (#777) +- [ea1b54f2](https://github.com/stashed/mongodb/commit/ea1b54f2) [cherry-pick] Update repository config (#751) (#752) +- [a4a9dffe](https://github.com/stashed/mongodb/commit/a4a9dffe) [cherry-pick] Update repository config (#742) (#743) +- [d7815dec](https://github.com/stashed/mongodb/commit/d7815dec) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#731) +- [f2c6e6f2](https://github.com/stashed/mongodb/commit/f2c6e6f2) [cherry-pick] Update repository config (#723) (#724) +- [739c59f8](https://github.com/stashed/mongodb/commit/739c59f8) [cherry-pick] Update repository config (#711) (#712) +- [a8f735f3](https://github.com/stashed/mongodb/commit/a8f735f3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#700) +- [43bfddc1](https://github.com/stashed/mongodb/commit/43bfddc1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#688) +- [91b544ba](https://github.com/stashed/mongodb/commit/91b544ba) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#676) +- [a457ccd6](https://github.com/stashed/mongodb/commit/a457ccd6) [cherry-pick] Speed up schema generation process (#663) (#664) + + +### [3.4.22-v6](https://github.com/stashed/mongodb/releases/tag/3.4.22-v6) + +- [cb42eb68](https://github.com/stashed/mongodb/commit/cb42eb68) Prepare for release 3.4.22-v6 (#844) +- [bf775397](https://github.com/stashed/mongodb/commit/bf775397) [cherry-pick] Update repository config (#834) (#836) +- [bf74b479](https://github.com/stashed/mongodb/commit/bf74b479) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#825) +- [f00814d0](https://github.com/stashed/mongodb/commit/f00814d0) Update repository config (#809) (#811) +- [892cdd6e](https://github.com/stashed/mongodb/commit/892cdd6e) Use restic 0.12.0 (#799) (#801) +- [226e63ed](https://github.com/stashed/mongodb/commit/226e63ed) Update Kubernetes v1.18.9 dependencies (#788) (#790) +- [a2278585](https://github.com/stashed/mongodb/commit/a2278585) [cherry-pick] Check codespan schema (#776) (#778) +- [9ad4d52e](https://github.com/stashed/mongodb/commit/9ad4d52e) [cherry-pick] Update repository config (#751) (#753) +- [84f82ec0](https://github.com/stashed/mongodb/commit/84f82ec0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#732) +- [df61f073](https://github.com/stashed/mongodb/commit/df61f073) [cherry-pick] Update repository config (#723) (#725) +- [5fa8af10](https://github.com/stashed/mongodb/commit/5fa8af10) [cherry-pick] Update repository config (#711) (#713) +- [3daa60e9](https://github.com/stashed/mongodb/commit/3daa60e9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#701) +- [5179d087](https://github.com/stashed/mongodb/commit/5179d087) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#689) +- [183c0a71](https://github.com/stashed/mongodb/commit/183c0a71) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#677) +- [ab565586](https://github.com/stashed/mongodb/commit/ab565586) [cherry-pick] Speed up schema generation process (#663) (#665) + + +### [3.6.8-v6](https://github.com/stashed/mongodb/releases/tag/3.6.8-v6) + +- [20ebf67e](https://github.com/stashed/mongodb/commit/20ebf67e) Prepare for release 3.6.8-v6 (#846) +- [0d22261d](https://github.com/stashed/mongodb/commit/0d22261d) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#827) +- [ade100a1](https://github.com/stashed/mongodb/commit/ade100a1) Update repository config (#809) (#813) +- [0dccae77](https://github.com/stashed/mongodb/commit/0dccae77) Use restic 0.12.0 (#799) (#803) +- [be4a808c](https://github.com/stashed/mongodb/commit/be4a808c) Update Kubernetes v1.18.9 dependencies (#788) (#792) +- [98181167](https://github.com/stashed/mongodb/commit/98181167) [cherry-pick] Check codespan schema (#776) (#780) +- [1cbdbf2a](https://github.com/stashed/mongodb/commit/1cbdbf2a) [cherry-pick] Update repository config (#751) (#755) +- [f09ed6dc](https://github.com/stashed/mongodb/commit/f09ed6dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#734) +- [5df0856f](https://github.com/stashed/mongodb/commit/5df0856f) [cherry-pick] Update repository config (#723) (#727) +- [3037de41](https://github.com/stashed/mongodb/commit/3037de41) [cherry-pick] Update repository config (#711) (#715) +- [214a2741](https://github.com/stashed/mongodb/commit/214a2741) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#703) +- [75ae3f11](https://github.com/stashed/mongodb/commit/75ae3f11) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#691) +- [effbb2a3](https://github.com/stashed/mongodb/commit/effbb2a3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#679) +- [5cfd4984](https://github.com/stashed/mongodb/commit/5cfd4984) [cherry-pick] Speed up schema generation process (#663) (#667) + + +### [3.6.13-v6](https://github.com/stashed/mongodb/releases/tag/3.6.13-v6) + +- [c857aca3](https://github.com/stashed/mongodb/commit/c857aca3) Prepare for release 3.6.13-v6 (#845) +- [4e30586c](https://github.com/stashed/mongodb/commit/4e30586c) [cherry-pick] Update repository config (#834) (#837) +- [98503034](https://github.com/stashed/mongodb/commit/98503034) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#826) +- [0d0f2c56](https://github.com/stashed/mongodb/commit/0d0f2c56) Update repository config (#809) (#812) +- [d44a02ee](https://github.com/stashed/mongodb/commit/d44a02ee) Use restic 0.12.0 (#799) (#802) +- [15d8451c](https://github.com/stashed/mongodb/commit/15d8451c) Update Kubernetes v1.18.9 dependencies (#788) (#791) +- [a5dd78c9](https://github.com/stashed/mongodb/commit/a5dd78c9) [cherry-pick] Check codespan schema (#776) (#779) +- [af7e1c21](https://github.com/stashed/mongodb/commit/af7e1c21) [cherry-pick] Update repository config (#751) (#754) +- [8f1c8e34](https://github.com/stashed/mongodb/commit/8f1c8e34) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#733) +- [504df2a0](https://github.com/stashed/mongodb/commit/504df2a0) [cherry-pick] Update repository config (#723) (#726) +- [b2d56067](https://github.com/stashed/mongodb/commit/b2d56067) [cherry-pick] Update repository config (#711) (#714) +- [34db4b8d](https://github.com/stashed/mongodb/commit/34db4b8d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#702) +- [393ee1ed](https://github.com/stashed/mongodb/commit/393ee1ed) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#690) +- [46630738](https://github.com/stashed/mongodb/commit/46630738) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#678) +- [2628b661](https://github.com/stashed/mongodb/commit/2628b661) [cherry-pick] Speed up schema generation process (#663) (#666) + + +### [4.0.3-v6](https://github.com/stashed/mongodb/releases/tag/4.0.3-v6) + +- [c4d3534d](https://github.com/stashed/mongodb/commit/c4d3534d) Prepare for release 4.0.3-v6 (#848) +- [ba7946f5](https://github.com/stashed/mongodb/commit/ba7946f5) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#829) +- [cdf8c4ec](https://github.com/stashed/mongodb/commit/cdf8c4ec) Update repository config (#809) (#815) +- [d33cb16d](https://github.com/stashed/mongodb/commit/d33cb16d) Use restic 0.12.0 (#799) (#805) +- [6695c171](https://github.com/stashed/mongodb/commit/6695c171) Update Kubernetes v1.18.9 dependencies (#788) (#794) +- [7a7ef475](https://github.com/stashed/mongodb/commit/7a7ef475) [cherry-pick] Check codespan schema (#776) (#782) +- [3ed7924b](https://github.com/stashed/mongodb/commit/3ed7924b) [cherry-pick] Update repository config (#751) (#757) +- [dc8f11da](https://github.com/stashed/mongodb/commit/dc8f11da) [cherry-pick] Update repository config (#742) (#745) +- [b5cee38e](https://github.com/stashed/mongodb/commit/b5cee38e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#736) +- [92fc2ef0](https://github.com/stashed/mongodb/commit/92fc2ef0) [cherry-pick] Update repository config (#723) (#729) +- [0a722b53](https://github.com/stashed/mongodb/commit/0a722b53) [cherry-pick] Update repository config (#711) (#717) +- [6487d000](https://github.com/stashed/mongodb/commit/6487d000) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#705) +- [02b8fa07](https://github.com/stashed/mongodb/commit/02b8fa07) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#693) +- [90d43ee5](https://github.com/stashed/mongodb/commit/90d43ee5) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#681) +- [296e3e78](https://github.com/stashed/mongodb/commit/296e3e78) [cherry-pick] Speed up schema generation process (#663) (#669) + + +### [4.0.5-v6](https://github.com/stashed/mongodb/releases/tag/4.0.5-v6) + +- [61478c2a](https://github.com/stashed/mongodb/commit/61478c2a) Prepare for release 4.0.5-v6 (#849) +- [68a14362](https://github.com/stashed/mongodb/commit/68a14362) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#830) +- [44c65016](https://github.com/stashed/mongodb/commit/44c65016) Update repository config (#809) (#816) +- [a86475a8](https://github.com/stashed/mongodb/commit/a86475a8) Update Kubernetes v1.18.9 dependencies (#788) (#795) +- [c2bf2223](https://github.com/stashed/mongodb/commit/c2bf2223) [cherry-pick] Check codespan schema (#776) (#783) +- [3f1e60bf](https://github.com/stashed/mongodb/commit/3f1e60bf) [cherry-pick] Update repository config (#751) (#758) +- [917188b5](https://github.com/stashed/mongodb/commit/917188b5) [cherry-pick] Update repository config (#742) (#746) +- [8ee922e7](https://github.com/stashed/mongodb/commit/8ee922e7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#737) +- [d5712991](https://github.com/stashed/mongodb/commit/d5712991) [cherry-pick] Update repository config (#711) (#718) +- [d2c6e8a1](https://github.com/stashed/mongodb/commit/d2c6e8a1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#706) +- [9f99d7ed](https://github.com/stashed/mongodb/commit/9f99d7ed) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#694) +- [ba5273b3](https://github.com/stashed/mongodb/commit/ba5273b3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#682) +- [be53a7ba](https://github.com/stashed/mongodb/commit/be53a7ba) [cherry-pick] Speed up schema generation process (#663) (#670) + + +### [4.0.11-v6](https://github.com/stashed/mongodb/releases/tag/4.0.11-v6) + +- [42b8d5b5](https://github.com/stashed/mongodb/commit/42b8d5b5) Prepare for release 4.0.11-v6 (#847) +- [3ef255bf](https://github.com/stashed/mongodb/commit/3ef255bf) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#828) +- [fb647f1a](https://github.com/stashed/mongodb/commit/fb647f1a) Update repository config (#809) (#814) +- [7408bd14](https://github.com/stashed/mongodb/commit/7408bd14) Use restic 0.12.0 (#799) (#804) +- [647a9b97](https://github.com/stashed/mongodb/commit/647a9b97) Update Kubernetes v1.18.9 dependencies (#788) (#793) +- [e00d3aa8](https://github.com/stashed/mongodb/commit/e00d3aa8) [cherry-pick] Check codespan schema (#776) (#781) +- [b3049dd7](https://github.com/stashed/mongodb/commit/b3049dd7) [cherry-pick] Update repository config (#751) (#756) +- [459c1f22](https://github.com/stashed/mongodb/commit/459c1f22) [cherry-pick] Update repository config (#742) (#744) +- [95525f30](https://github.com/stashed/mongodb/commit/95525f30) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#735) +- [b4eeea5a](https://github.com/stashed/mongodb/commit/b4eeea5a) [cherry-pick] Update repository config (#723) (#728) +- [e2b3dac7](https://github.com/stashed/mongodb/commit/e2b3dac7) [cherry-pick] Update repository config (#711) (#716) +- [30038e11](https://github.com/stashed/mongodb/commit/30038e11) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#704) +- [a731b4f8](https://github.com/stashed/mongodb/commit/a731b4f8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#692) +- [d45bce7d](https://github.com/stashed/mongodb/commit/d45bce7d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#680) +- [305e2f09](https://github.com/stashed/mongodb/commit/305e2f09) [cherry-pick] Speed up schema generation process (#663) (#668) + + +### [4.1.4-v6](https://github.com/stashed/mongodb/releases/tag/4.1.4-v6) + +- [d897c8af](https://github.com/stashed/mongodb/commit/d897c8af) Prepare for release 4.1.4-v6 (#851) +- [ea3fe513](https://github.com/stashed/mongodb/commit/ea3fe513) [cherry-pick] Update repository config (#834) (#839) +- [131e8186](https://github.com/stashed/mongodb/commit/131e8186) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#832) +- [fc8aadb3](https://github.com/stashed/mongodb/commit/fc8aadb3) Update repository config (#809) (#818) +- [540bb495](https://github.com/stashed/mongodb/commit/540bb495) [cherry-pick] Check codespan schema (#776) (#785) +- [f0223f83](https://github.com/stashed/mongodb/commit/f0223f83) [cherry-pick] Update repository config (#751) (#760) +- [181d91ff](https://github.com/stashed/mongodb/commit/181d91ff) [cherry-pick] Update repository config (#742) (#748) +- [bae3a785](https://github.com/stashed/mongodb/commit/bae3a785) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#739) +- [6794e116](https://github.com/stashed/mongodb/commit/6794e116) [cherry-pick] Update repository config (#711) (#720) +- [6679db70](https://github.com/stashed/mongodb/commit/6679db70) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#708) +- [a1e1d7ad](https://github.com/stashed/mongodb/commit/a1e1d7ad) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#696) +- [38234e03](https://github.com/stashed/mongodb/commit/38234e03) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#684) +- [bc3a9d3f](https://github.com/stashed/mongodb/commit/bc3a9d3f) [cherry-pick] Speed up schema generation process (#663) (#672) + + +### [4.1.7-v6](https://github.com/stashed/mongodb/releases/tag/4.1.7-v6) + +- [ea23f76b](https://github.com/stashed/mongodb/commit/ea23f76b) Prepare for release 4.1.7-v6 (#852) +- [0fc5aa51](https://github.com/stashed/mongodb/commit/0fc5aa51) [cherry-pick] Update repository config (#834) (#840) +- [7f3fd5ba](https://github.com/stashed/mongodb/commit/7f3fd5ba) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#833) +- [f35f4d0a](https://github.com/stashed/mongodb/commit/f35f4d0a) Update repository config (#809) (#819) +- [dea74649](https://github.com/stashed/mongodb/commit/dea74649) Use restic 0.12.0 (#799) (#806) +- [eb99931f](https://github.com/stashed/mongodb/commit/eb99931f) Update Kubernetes v1.18.9 dependencies (#788) (#797) +- [0f047a25](https://github.com/stashed/mongodb/commit/0f047a25) [cherry-pick] Check codespan schema (#776) (#786) +- [27a57e7b](https://github.com/stashed/mongodb/commit/27a57e7b) [cherry-pick] Update repository config (#751) (#761) +- [1e887f7c](https://github.com/stashed/mongodb/commit/1e887f7c) [cherry-pick] Update repository config (#742) (#749) +- [d4cd6f9b](https://github.com/stashed/mongodb/commit/d4cd6f9b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#740) +- [bd003974](https://github.com/stashed/mongodb/commit/bd003974) [cherry-pick] Update repository config (#711) (#721) +- [3fc526dc](https://github.com/stashed/mongodb/commit/3fc526dc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#709) +- [b62a22cc](https://github.com/stashed/mongodb/commit/b62a22cc) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#697) +- [78981022](https://github.com/stashed/mongodb/commit/78981022) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#685) +- [e660275a](https://github.com/stashed/mongodb/commit/e660275a) [cherry-pick] Speed up schema generation process (#663) (#673) + + +### [4.1.13-v6](https://github.com/stashed/mongodb/releases/tag/4.1.13-v6) + +- [7dd79a12](https://github.com/stashed/mongodb/commit/7dd79a12) Prepare for release 4.1.13-v6 (#850) +- [2e0bf537](https://github.com/stashed/mongodb/commit/2e0bf537) [cherry-pick] Update repository config (#834) (#838) +- [5f423a11](https://github.com/stashed/mongodb/commit/5f423a11) [cherry-pick] Support multiple commands in backup/restore pipeline (#823) (#831) +- [16e63401](https://github.com/stashed/mongodb/commit/16e63401) Update repository config (#809) (#817) +- [6e5807e9](https://github.com/stashed/mongodb/commit/6e5807e9) Update Kubernetes v1.18.9 dependencies (#788) (#796) +- [00e7f5fa](https://github.com/stashed/mongodb/commit/00e7f5fa) [cherry-pick] Check codespan schema (#776) (#784) +- [e70421c3](https://github.com/stashed/mongodb/commit/e70421c3) [cherry-pick] Update repository config (#751) (#759) +- [349469bf](https://github.com/stashed/mongodb/commit/349469bf) [cherry-pick] Update repository config (#742) (#747) +- [20ab2b31](https://github.com/stashed/mongodb/commit/20ab2b31) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#738) +- [db398d0f](https://github.com/stashed/mongodb/commit/db398d0f) [cherry-pick] Update repository config (#711) (#719) +- [d7df2584](https://github.com/stashed/mongodb/commit/d7df2584) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#707) +- [c8ed983d](https://github.com/stashed/mongodb/commit/c8ed983d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#695) +- [17fd7bb0](https://github.com/stashed/mongodb/commit/17fd7bb0) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#683) +- [ed17070e](https://github.com/stashed/mongodb/commit/ed17070e) [cherry-pick] Speed up schema generation process (#663) (#671) + + +### [4.2.3-v6](https://github.com/stashed/mongodb/releases/tag/4.2.3-v6) + +- [c9fe7d9a](https://github.com/stashed/mongodb/commit/c9fe7d9a) Prepare for release 4.2.3-v6 (#853) +- [76b6c898](https://github.com/stashed/mongodb/commit/76b6c898) [cherry-pick] Update repository config (#834) (#841) +- [f1f64838](https://github.com/stashed/mongodb/commit/f1f64838) Support multiple commands in backup/restore pipeline (#823) (#842) +- [a12d4baf](https://github.com/stashed/mongodb/commit/a12d4baf) Update repository config (#809) (#820) +- [4fb8b170](https://github.com/stashed/mongodb/commit/4fb8b170) Use restic 0.12.0 (#799) (#807) +- [46f2effa](https://github.com/stashed/mongodb/commit/46f2effa) Update Kubernetes v1.18.9 dependencies (#788) (#798) +- [e10f42bf](https://github.com/stashed/mongodb/commit/e10f42bf) [cherry-pick] Check codespan schema (#776) (#787) +- [8c09902f](https://github.com/stashed/mongodb/commit/8c09902f) [cherry-pick] Update repository config (#751) (#762) +- [0cc4c0bf](https://github.com/stashed/mongodb/commit/0cc4c0bf) [cherry-pick] Update repository config (#742) (#750) +- [08f5ff3b](https://github.com/stashed/mongodb/commit/08f5ff3b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#730) (#741) +- [78a92f84](https://github.com/stashed/mongodb/commit/78a92f84) [cherry-pick] Update repository config (#711) (#722) +- [705dc0f9](https://github.com/stashed/mongodb/commit/705dc0f9) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#699) (#710) +- [08aecd88](https://github.com/stashed/mongodb/commit/08aecd88) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#687) (#698) +- [c7f8715b](https://github.com/stashed/mongodb/commit/c7f8715b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#675) (#686) +- [8d3f3e59](https://github.com/stashed/mongodb/commit/8d3f3e59) [cherry-pick] Speed up schema generation process (#663) (#674) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v7](https://github.com/stashed/mysql/releases/tag/5.7.25-v7) + +- [8a1ee71](https://github.com/stashed/mysql/commit/8a1ee71) Prepare for release 5.7.25-v7 (#349) +- [366167a](https://github.com/stashed/mysql/commit/366167a) [cherry-pick] Update repository config (#344) (#345) +- [96f4404](https://github.com/stashed/mysql/commit/96f4404) [cherry-pick] Support multiple commands in backup/restore pipeline (#335) (#340) +- [02a3750](https://github.com/stashed/mysql/commit/02a3750) [cherry-pick] Add TLS support for backup and Restore (#328) (#336) +- [e8c8781](https://github.com/stashed/mysql/commit/e8c8781) Update repository config (#327) (#329) +- [864ba45](https://github.com/stashed/mysql/commit/864ba45) Use restic 0.12.0 (#321) (#322) +- [5b26633](https://github.com/stashed/mysql/commit/5b26633) Update Kubernetes v1.18.9 dependencies (#316) (#317) +- [b17c4b4](https://github.com/stashed/mysql/commit/b17c4b4) [cherry-pick] Check codespan schema (#312) (#313) +- [bd1460c](https://github.com/stashed/mysql/commit/bd1460c) [cherry-pick] Update repository config (#301) (#302) +- [4a19d88](https://github.com/stashed/mysql/commit/4a19d88) [cherry-pick] Update repository config (#296) (#297) +- [2e1a630](https://github.com/stashed/mysql/commit/2e1a630) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#292) + + +### [8.0.3-v7](https://github.com/stashed/mysql/releases/tag/8.0.3-v7) + +- [8a5311d](https://github.com/stashed/mysql/commit/8a5311d) Prepare for release 8.0.3-v7 (#352) +- [60a0157](https://github.com/stashed/mysql/commit/60a0157) [cherry-pick] Update repository config (#344) (#348) +- [a0e9506](https://github.com/stashed/mysql/commit/a0e9506) [cherry-pick] Support multiple commands in backup/restore pipeline (#335) (#343) +- [f4a09d8](https://github.com/stashed/mysql/commit/f4a09d8) [cherry-pick] Add TLS support for backup and Restore (#328) (#339) +- [271db44](https://github.com/stashed/mysql/commit/271db44) Update repository config (#327) (#332) +- [1af5d1b](https://github.com/stashed/mysql/commit/1af5d1b) Use restic 0.12.0 (#321) (#325) +- [3c6d8f7](https://github.com/stashed/mysql/commit/3c6d8f7) Update Kubernetes v1.18.9 dependencies (#316) (#320) +- [dbd0d49](https://github.com/stashed/mysql/commit/dbd0d49) [cherry-pick] Update repository config (#301) (#305) +- [889711e](https://github.com/stashed/mysql/commit/889711e) [cherry-pick] Update repository config (#296) (#300) +- [1418e6d](https://github.com/stashed/mysql/commit/1418e6d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#295) + + +### [8.0.14-v7](https://github.com/stashed/mysql/releases/tag/8.0.14-v7) + +- [a38a02b](https://github.com/stashed/mysql/commit/a38a02b) Prepare for release 8.0.14-v7 (#350) +- [b4091b6](https://github.com/stashed/mysql/commit/b4091b6) [cherry-pick] Update repository config (#344) (#346) +- [2218549](https://github.com/stashed/mysql/commit/2218549) [cherry-pick] Support multiple commands in backup/restore pipeline (#335) (#341) +- [5e38d81](https://github.com/stashed/mysql/commit/5e38d81) [cherry-pick] Add TLS support for backup and Restore (#328) (#337) +- [431967e](https://github.com/stashed/mysql/commit/431967e) Update repository config (#327) (#330) +- [d6adbb2](https://github.com/stashed/mysql/commit/d6adbb2) Use restic 0.12.0 (#321) (#323) +- [d3cf790](https://github.com/stashed/mysql/commit/d3cf790) Update Kubernetes v1.18.9 dependencies (#316) (#318) +- [5e2356e](https://github.com/stashed/mysql/commit/5e2356e) [cherry-pick] Check codespan schema (#312) (#314) +- [bbbbc8e](https://github.com/stashed/mysql/commit/bbbbc8e) [cherry-pick] Update repository config (#301) (#303) +- [00ddfb4](https://github.com/stashed/mysql/commit/00ddfb4) [cherry-pick] Update repository config (#296) (#298) +- [08189bf](https://github.com/stashed/mysql/commit/08189bf) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#293) + + +### [8.0.21-v1](https://github.com/stashed/mysql/releases/tag/8.0.21-v1) + +- [df6aa7c](https://github.com/stashed/mysql/commit/df6aa7c) Prepare for release 8.0.21-v1 (#351) +- [bb35f6b](https://github.com/stashed/mysql/commit/bb35f6b) [cherry-pick] Update repository config (#344) (#347) +- [8571d10](https://github.com/stashed/mysql/commit/8571d10) [cherry-pick] Support multiple commands in backup/restore pipeline (#335) (#342) +- [e3bb016](https://github.com/stashed/mysql/commit/e3bb016) [cherry-pick] Add TLS support for backup and Restore (#328) (#338) +- [c9a5ddf](https://github.com/stashed/mysql/commit/c9a5ddf) Update repository config (#327) (#331) +- [4e0a065](https://github.com/stashed/mysql/commit/4e0a065) Use restic 0.12.0 (#321) (#324) +- [367e1ce](https://github.com/stashed/mysql/commit/367e1ce) Update Kubernetes v1.18.9 dependencies (#316) (#319) +- [a09b250](https://github.com/stashed/mysql/commit/a09b250) [cherry-pick] Check codespan schema (#312) (#315) +- [344d3ac](https://github.com/stashed/mysql/commit/344d3ac) [cherry-pick] Update repository config (#301) (#304) +- [fcc0e9b](https://github.com/stashed/mysql/commit/fcc0e9b) [cherry-pick] Update repository config (#296) (#299) +- [c4ab29f](https://github.com/stashed/mysql/commit/c4ab29f) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#294) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7.0-v2](https://github.com/stashed/percona-xtradb/releases/tag/5.7.0-v2) + + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v5](https://github.com/stashed/postgres/releases/tag/9.6.19-v5) + +- [66a76378](https://github.com/stashed/postgres/commit/66a76378) Prepare for release 9.6.19-v5 (#720) +- [362b2897](https://github.com/stashed/postgres/commit/362b2897) Fix Makefile (#705) (#715) +- [9c47a1fd](https://github.com/stashed/postgres/commit/9c47a1fd) TLS support for postgres (#694) (#704) +- [e2ad17a8](https://github.com/stashed/postgres/commit/e2ad17a8) [cherry-pick] Update repository config (#683) (#693) +- [e739d000](https://github.com/stashed/postgres/commit/e739d000) Add auto-backup doc + Restructure docs (#618) (#682) +- [3b4f6709](https://github.com/stashed/postgres/commit/3b4f6709) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#672) +- [b5b9acb1](https://github.com/stashed/postgres/commit/b5b9acb1) Update repository config (#649) (#659) +- [d7fc51c9](https://github.com/stashed/postgres/commit/d7fc51c9) Use restic 0.12.0 (#637) (#647) +- [3a8c97eb](https://github.com/stashed/postgres/commit/3a8c97eb) Update Kubernetes v1.18.9 dependencies (#626) (#636) +- [2adf3188](https://github.com/stashed/postgres/commit/2adf3188) [cherry-pick] Update repository config (#600) (#610) +- [4143a5e1](https://github.com/stashed/postgres/commit/4143a5e1) [cherry-pick] Update repository config (#589) (#599) +- [31a2d0c1](https://github.com/stashed/postgres/commit/31a2d0c1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#588) +- [a40a7321](https://github.com/stashed/postgres/commit/a40a7321) [cherry-pick] Update repository config (#566) (#576) +- [05b91feb](https://github.com/stashed/postgres/commit/05b91feb) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#565) +- [4f5958c7](https://github.com/stashed/postgres/commit/4f5958c7) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#554) +- [b70c6cfa](https://github.com/stashed/postgres/commit/b70c6cfa) [cherry-pick] Update README.md template (#523) (#533) +- [850e18b3](https://github.com/stashed/postgres/commit/850e18b3) [cherry-pick] Generate README.md using templates (#512) (#522) +- [4ccb4b4a](https://github.com/stashed/postgres/commit/4ccb4b4a) [cherry-pick] Speed up schema generation process (#501) (#511) + + +### [10.14.0-v5](https://github.com/stashed/postgres/releases/tag/10.14.0-v5) + +- [57eecdc3](https://github.com/stashed/postgres/commit/57eecdc3) Prepare for release 10.14.0-v5 (#716) +- [9a56adea](https://github.com/stashed/postgres/commit/9a56adea) Fix Makefile (#705) (#706) +- [925bd8e6](https://github.com/stashed/postgres/commit/925bd8e6) TLS support for postgres (#694) (#695) +- [6509c44f](https://github.com/stashed/postgres/commit/6509c44f) [cherry-pick] Update repository config (#683) (#684) +- [31626977](https://github.com/stashed/postgres/commit/31626977) Add auto-backup doc + Restructure docs (#618) (#673) +- [2602a2e5](https://github.com/stashed/postgres/commit/2602a2e5) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#663) +- [3a5c3f93](https://github.com/stashed/postgres/commit/3a5c3f93) Update repository config (#649) (#650) +- [4638354a](https://github.com/stashed/postgres/commit/4638354a) Use restic 0.12.0 (#637) (#638) +- [b81480ec](https://github.com/stashed/postgres/commit/b81480ec) Update Kubernetes v1.18.9 dependencies (#626) (#627) +- [7f7c4eb8](https://github.com/stashed/postgres/commit/7f7c4eb8) [cherry-pick] Check codespan schema (#617) (#619) +- [cab4cb38](https://github.com/stashed/postgres/commit/cab4cb38) [cherry-pick] Update repository config (#600) (#601) +- [fd9fa30f](https://github.com/stashed/postgres/commit/fd9fa30f) [cherry-pick] Update repository config (#589) (#590) +- [29f17df8](https://github.com/stashed/postgres/commit/29f17df8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#579) +- [cb6be80f](https://github.com/stashed/postgres/commit/cb6be80f) [cherry-pick] Update repository config (#566) (#567) +- [3033a772](https://github.com/stashed/postgres/commit/3033a772) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#556) +- [bf03d98d](https://github.com/stashed/postgres/commit/bf03d98d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#545) +- [b2fdc143](https://github.com/stashed/postgres/commit/b2fdc143) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#535) +- [c898ee57](https://github.com/stashed/postgres/commit/c898ee57) [cherry-pick] Update README.md template (#523) (#524) +- [fadedccd](https://github.com/stashed/postgres/commit/fadedccd) [cherry-pick] Generate README.md using templates (#512) (#513) +- [46e2b6dd](https://github.com/stashed/postgres/commit/46e2b6dd) [cherry-pick] Speed up schema generation process (#501) (#502) + + +### [11.9.0-v5](https://github.com/stashed/postgres/releases/tag/11.9.0-v5) + +- [2a7a4f96](https://github.com/stashed/postgres/commit/2a7a4f96) Prepare for release 11.9.0-v5 (#717) +- [e673d3c0](https://github.com/stashed/postgres/commit/e673d3c0) Fix Makefile (#705) (#711) +- [c8e9b998](https://github.com/stashed/postgres/commit/c8e9b998) TLS support for postgres (#694) (#700) +- [ebc0a1f9](https://github.com/stashed/postgres/commit/ebc0a1f9) [cherry-pick] Update repository config (#683) (#689) +- [baa94cf6](https://github.com/stashed/postgres/commit/baa94cf6) Add auto-backup doc + Restructure docs (#618) (#678) +- [06d62688](https://github.com/stashed/postgres/commit/06d62688) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#668) +- [7fa729aa](https://github.com/stashed/postgres/commit/7fa729aa) Update repository config (#649) (#655) +- [637daf85](https://github.com/stashed/postgres/commit/637daf85) Use restic 0.12.0 (#637) (#643) +- [2ec2a638](https://github.com/stashed/postgres/commit/2ec2a638) Update Kubernetes v1.18.9 dependencies (#626) (#632) +- [db0433ed](https://github.com/stashed/postgres/commit/db0433ed) [cherry-pick] Check codespan schema (#617) (#624) +- [bb3d5515](https://github.com/stashed/postgres/commit/bb3d5515) [cherry-pick] Update repository config (#600) (#606) +- [c5b40a97](https://github.com/stashed/postgres/commit/c5b40a97) [cherry-pick] Update repository config (#589) (#595) +- [8ad35d50](https://github.com/stashed/postgres/commit/8ad35d50) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#584) +- [b5230e5f](https://github.com/stashed/postgres/commit/b5230e5f) [cherry-pick] Update repository config (#566) (#572) +- [593a9b7e](https://github.com/stashed/postgres/commit/593a9b7e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#561) +- [ce7aa9d1](https://github.com/stashed/postgres/commit/ce7aa9d1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#550) +- [ce8bdb41](https://github.com/stashed/postgres/commit/ce8bdb41) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#540) +- [da4c7f5b](https://github.com/stashed/postgres/commit/da4c7f5b) [cherry-pick] Update README.md template (#523) (#529) +- [d928f7ac](https://github.com/stashed/postgres/commit/d928f7ac) [cherry-pick] Generate README.md using templates (#512) (#518) +- [8bdef7b5](https://github.com/stashed/postgres/commit/8bdef7b5) [cherry-pick] Speed up schema generation process (#501) (#507) + + +### [12.4.0-v5](https://github.com/stashed/postgres/releases/tag/12.4.0-v5) + +- [b1140414](https://github.com/stashed/postgres/commit/b1140414) Prepare for release 12.4.0-v5 (#718) +- [403dfb51](https://github.com/stashed/postgres/commit/403dfb51) Fix Makefile (#705) (#712) +- [0e98e14e](https://github.com/stashed/postgres/commit/0e98e14e) TLS support for postgres (#694) (#701) +- [dfc98b6e](https://github.com/stashed/postgres/commit/dfc98b6e) [cherry-pick] Update repository config (#683) (#690) +- [3a8c1036](https://github.com/stashed/postgres/commit/3a8c1036) Add auto-backup doc + Restructure docs (#618) (#679) +- [a14c26d8](https://github.com/stashed/postgres/commit/a14c26d8) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#669) +- [fc9f2302](https://github.com/stashed/postgres/commit/fc9f2302) Update repository config (#649) (#656) +- [ee83ac04](https://github.com/stashed/postgres/commit/ee83ac04) Use restic 0.12.0 (#637) (#644) +- [9b27b063](https://github.com/stashed/postgres/commit/9b27b063) Update Kubernetes v1.18.9 dependencies (#626) (#633) +- [32d5df70](https://github.com/stashed/postgres/commit/32d5df70) [cherry-pick] Check codespan schema (#617) (#625) +- [54bba3b1](https://github.com/stashed/postgres/commit/54bba3b1) [cherry-pick] Update repository config (#600) (#607) +- [2ac504d2](https://github.com/stashed/postgres/commit/2ac504d2) [cherry-pick] Update repository config (#589) (#596) +- [0b4f7bea](https://github.com/stashed/postgres/commit/0b4f7bea) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#585) +- [e3e822f3](https://github.com/stashed/postgres/commit/e3e822f3) [cherry-pick] Update repository config (#566) (#573) +- [956653e3](https://github.com/stashed/postgres/commit/956653e3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#562) +- [ef5cc730](https://github.com/stashed/postgres/commit/ef5cc730) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#551) +- [02a8fc1b](https://github.com/stashed/postgres/commit/02a8fc1b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#541) +- [8c4e765f](https://github.com/stashed/postgres/commit/8c4e765f) [cherry-pick] Update README.md template (#523) (#530) +- [66da0577](https://github.com/stashed/postgres/commit/66da0577) [cherry-pick] Generate README.md using templates (#512) (#519) +- [a5be3888](https://github.com/stashed/postgres/commit/a5be3888) [cherry-pick] Speed up schema generation process (#501) (#508) + + +### [13.1.0-v2](https://github.com/stashed/postgres/releases/tag/13.1.0-v2) + +- [6c59e1eb](https://github.com/stashed/postgres/commit/6c59e1eb) Prepare for release 13.1.0-v2 (#719) +- [be6c043a](https://github.com/stashed/postgres/commit/be6c043a) Fix Makefile (#705) (#713) +- [8805ee06](https://github.com/stashed/postgres/commit/8805ee06) TLS support for postgres (#694) (#702) +- [517a4e20](https://github.com/stashed/postgres/commit/517a4e20) [cherry-pick] Update repository config (#683) (#691) +- [fc935ae7](https://github.com/stashed/postgres/commit/fc935ae7) Add auto-backup doc + Restructure docs (#618) (#680) +- [ac84e6d3](https://github.com/stashed/postgres/commit/ac84e6d3) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#670) +- [6c195dfb](https://github.com/stashed/postgres/commit/6c195dfb) Update repository config (#649) (#657) +- [ecd22af1](https://github.com/stashed/postgres/commit/ecd22af1) Use restic 0.12.0 (#637) (#645) +- [3a1fe354](https://github.com/stashed/postgres/commit/3a1fe354) Update Kubernetes v1.18.9 dependencies (#626) (#634) +- [c82407f8](https://github.com/stashed/postgres/commit/c82407f8) [cherry-pick] Update repository config (#600) (#608) +- [6432d062](https://github.com/stashed/postgres/commit/6432d062) [cherry-pick] Update repository config (#589) (#597) +- [2fe1bdf3](https://github.com/stashed/postgres/commit/2fe1bdf3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#586) +- [719fb462](https://github.com/stashed/postgres/commit/719fb462) [cherry-pick] Update repository config (#566) (#574) +- [45871d26](https://github.com/stashed/postgres/commit/45871d26) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#563) +- [ecd689c8](https://github.com/stashed/postgres/commit/ecd689c8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#552) +- [ad7687a2](https://github.com/stashed/postgres/commit/ad7687a2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#542) +- [53fdf211](https://github.com/stashed/postgres/commit/53fdf211) [cherry-pick] Update README.md template (#523) (#531) +- [5c5e670c](https://github.com/stashed/postgres/commit/5c5e670c) [cherry-pick] Generate README.md using templates (#512) (#520) +- [a60735d0](https://github.com/stashed/postgres/commit/a60735d0) [cherry-pick] Speed up schema generation process (#501) (#509) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.11.10](https://github.com/stashed/stash/releases/tag/v0.11.10) + +- [cd515d79](https://github.com/stashed/stash/commit/cd515d79) Prepare for release v0.11.10 (#1327) +- [34f6576e](https://github.com/stashed/stash/commit/34f6576e) Delete ClusterRoleBinding when backup/restore invoker is removed (#1326) +- [23c25326](https://github.com/stashed/stash/commit/23c25326) Use addon info from AppBinding for KubeDB managed databases (#1325) +- [99d6e168](https://github.com/stashed/stash/commit/99d6e168) Update repository config (#1323) +- [14a940fb](https://github.com/stashed/stash/commit/14a940fb) Update repository config (#1321) +- [0338a91d](https://github.com/stashed/stash/commit/0338a91d) Update Kubernetes v1.18.9 dependencies (#1319) +- [b9063896](https://github.com/stashed/stash/commit/b9063896) Enable running as a kubedb extension +- [79240c53](https://github.com/stashed/stash/commit/79240c53) Use restic 0.12.0 (#1318) +- [7e0e2105](https://github.com/stashed/stash/commit/7e0e2105) Update Kubernetes v1.18.9 dependencies (#1317) +- [757af516](https://github.com/stashed/stash/commit/757af516) Update Kubernetes v1.18.9 dependencies (#1314) +- [f955eff8](https://github.com/stashed/stash/commit/f955eff8) Update repository config (#1305) +- [e583607f](https://github.com/stashed/stash/commit/e583607f) Update repository config (#1304) +- [ba70668b](https://github.com/stashed/stash/commit/ba70668b) Update Kubernetes v1.18.9 dependencies (#1301) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.03.11.md b/content/docs/v2024.8.27/CHANGELOG-v2021.03.11.md new file mode 100644 index 0000000000..bbfb14cc1c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.03.11.md @@ -0,0 +1,103 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.03.11 + name: Changelog-v2021.03.11 + parent: welcome + weight: 20210311 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.03.11/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.03.11/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.03.11 (2021-03-12) + + +## [stashed/catalog](https://github.com/stashed/catalog) + +### [v2021.03.11](https://github.com/stashed/catalog/releases/tag/v2021.03.11) + +- [3544e1b](https://github.com/stashed/catalog/commit/3544e1b) Update semvers library (#63) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.11.11](https://github.com/stashed/installer/releases/tag/v0.11.11) + +- [6cb1c71](https://github.com/stashed/installer/commit/6cb1c71) Prepare for release v0.11.11 (#159) +- [3a8941a](https://github.com/stashed/installer/commit/3a8941a) Auto download api repo to update crds (#158) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.03.17.md b/content/docs/v2024.8.27/CHANGELOG-v2021.03.17.md new file mode 100644 index 0000000000..9ea0bc5054 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.03.17.md @@ -0,0 +1,227 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.03.17 + name: Changelog-v2021.03.17 + parent: welcome + weight: 20210317 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.03.17/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.03.17/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.03.17 (2021-03-17) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.12.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.12.0) + +- [301bd05f](https://github.com/appscode/stash-enterprise/commit/301bd05f) Prepare for release v0.12.0 (#86) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.12.0](https://github.com/stashed/apimachinery/releases/tag/v0.12.0) + + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.12.0](https://github.com/stashed/cli/releases/tag/v0.12.0) + +- [f1ca9e2](https://github.com/stashed/cli/commit/f1ca9e2) Prepare for release v0.12.0 (#114) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.12.0](https://github.com/stashed/installer/releases/tag/v0.12.0) + +- [adbca35](https://github.com/stashed/installer/commit/adbca35) Prepare for release v0.12.0 (#166) +- [47cc4cf](https://github.com/stashed/installer/commit/47cc4cf) Use perconaxtradb-*-5.7 +- [801f30c](https://github.com/stashed/installer/commit/801f30c) Update dependencies + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [10.14-v5](https://github.com/stashed/postgres/releases/tag/10.14-v5) + +- [57eecdc3](https://github.com/stashed/postgres/commit/57eecdc3) Prepare for release 10.14.0-v5 (#716) +- [9a56adea](https://github.com/stashed/postgres/commit/9a56adea) Fix Makefile (#705) (#706) +- [925bd8e6](https://github.com/stashed/postgres/commit/925bd8e6) TLS support for postgres (#694) (#695) +- [6509c44f](https://github.com/stashed/postgres/commit/6509c44f) [cherry-pick] Update repository config (#683) (#684) +- [31626977](https://github.com/stashed/postgres/commit/31626977) Add auto-backup doc + Restructure docs (#618) (#673) +- [2602a2e5](https://github.com/stashed/postgres/commit/2602a2e5) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#663) +- [3a5c3f93](https://github.com/stashed/postgres/commit/3a5c3f93) Update repository config (#649) (#650) +- [4638354a](https://github.com/stashed/postgres/commit/4638354a) Use restic 0.12.0 (#637) (#638) +- [b81480ec](https://github.com/stashed/postgres/commit/b81480ec) Update Kubernetes v1.18.9 dependencies (#626) (#627) +- [7f7c4eb8](https://github.com/stashed/postgres/commit/7f7c4eb8) [cherry-pick] Check codespan schema (#617) (#619) +- [cab4cb38](https://github.com/stashed/postgres/commit/cab4cb38) [cherry-pick] Update repository config (#600) (#601) +- [fd9fa30f](https://github.com/stashed/postgres/commit/fd9fa30f) [cherry-pick] Update repository config (#589) (#590) +- [29f17df8](https://github.com/stashed/postgres/commit/29f17df8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#579) +- [cb6be80f](https://github.com/stashed/postgres/commit/cb6be80f) [cherry-pick] Update repository config (#566) (#567) +- [3033a772](https://github.com/stashed/postgres/commit/3033a772) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#556) +- [bf03d98d](https://github.com/stashed/postgres/commit/bf03d98d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#545) +- [b2fdc143](https://github.com/stashed/postgres/commit/b2fdc143) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#535) +- [c898ee57](https://github.com/stashed/postgres/commit/c898ee57) [cherry-pick] Update README.md template (#523) (#524) +- [fadedccd](https://github.com/stashed/postgres/commit/fadedccd) [cherry-pick] Generate README.md using templates (#512) (#513) +- [46e2b6dd](https://github.com/stashed/postgres/commit/46e2b6dd) [cherry-pick] Speed up schema generation process (#501) (#502) + + +### [11.9-v5](https://github.com/stashed/postgres/releases/tag/11.9-v5) + +- [45ecd27f](https://github.com/stashed/postgres/commit/45ecd27f) Prepare for release 11.9-v5 (#725) +- [e7c1360f](https://github.com/stashed/postgres/commit/e7c1360f) Move docs into stashed/docs repo + Cleanup (#723) +- [2a7a4f96](https://github.com/stashed/postgres/commit/2a7a4f96) Prepare for release 11.9.0-v5 (#717) +- [e673d3c0](https://github.com/stashed/postgres/commit/e673d3c0) Fix Makefile (#705) (#711) +- [c8e9b998](https://github.com/stashed/postgres/commit/c8e9b998) TLS support for postgres (#694) (#700) +- [ebc0a1f9](https://github.com/stashed/postgres/commit/ebc0a1f9) [cherry-pick] Update repository config (#683) (#689) +- [baa94cf6](https://github.com/stashed/postgres/commit/baa94cf6) Add auto-backup doc + Restructure docs (#618) (#678) +- [06d62688](https://github.com/stashed/postgres/commit/06d62688) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#668) +- [7fa729aa](https://github.com/stashed/postgres/commit/7fa729aa) Update repository config (#649) (#655) +- [637daf85](https://github.com/stashed/postgres/commit/637daf85) Use restic 0.12.0 (#637) (#643) +- [2ec2a638](https://github.com/stashed/postgres/commit/2ec2a638) Update Kubernetes v1.18.9 dependencies (#626) (#632) +- [db0433ed](https://github.com/stashed/postgres/commit/db0433ed) [cherry-pick] Check codespan schema (#617) (#624) +- [bb3d5515](https://github.com/stashed/postgres/commit/bb3d5515) [cherry-pick] Update repository config (#600) (#606) +- [c5b40a97](https://github.com/stashed/postgres/commit/c5b40a97) [cherry-pick] Update repository config (#589) (#595) +- [8ad35d50](https://github.com/stashed/postgres/commit/8ad35d50) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#584) +- [b5230e5f](https://github.com/stashed/postgres/commit/b5230e5f) [cherry-pick] Update repository config (#566) (#572) +- [593a9b7e](https://github.com/stashed/postgres/commit/593a9b7e) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#561) +- [ce7aa9d1](https://github.com/stashed/postgres/commit/ce7aa9d1) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#550) +- [ce8bdb41](https://github.com/stashed/postgres/commit/ce8bdb41) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#540) +- [da4c7f5b](https://github.com/stashed/postgres/commit/da4c7f5b) [cherry-pick] Update README.md template (#523) (#529) +- [d928f7ac](https://github.com/stashed/postgres/commit/d928f7ac) [cherry-pick] Generate README.md using templates (#512) (#518) +- [8bdef7b5](https://github.com/stashed/postgres/commit/8bdef7b5) [cherry-pick] Speed up schema generation process (#501) (#507) + + +### [12.4-v5](https://github.com/stashed/postgres/releases/tag/12.4-v5) + +- [b1140414](https://github.com/stashed/postgres/commit/b1140414) Prepare for release 12.4.0-v5 (#718) +- [403dfb51](https://github.com/stashed/postgres/commit/403dfb51) Fix Makefile (#705) (#712) +- [0e98e14e](https://github.com/stashed/postgres/commit/0e98e14e) TLS support for postgres (#694) (#701) +- [dfc98b6e](https://github.com/stashed/postgres/commit/dfc98b6e) [cherry-pick] Update repository config (#683) (#690) +- [3a8c1036](https://github.com/stashed/postgres/commit/3a8c1036) Add auto-backup doc + Restructure docs (#618) (#679) +- [a14c26d8](https://github.com/stashed/postgres/commit/a14c26d8) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#669) +- [fc9f2302](https://github.com/stashed/postgres/commit/fc9f2302) Update repository config (#649) (#656) +- [ee83ac04](https://github.com/stashed/postgres/commit/ee83ac04) Use restic 0.12.0 (#637) (#644) +- [9b27b063](https://github.com/stashed/postgres/commit/9b27b063) Update Kubernetes v1.18.9 dependencies (#626) (#633) +- [32d5df70](https://github.com/stashed/postgres/commit/32d5df70) [cherry-pick] Check codespan schema (#617) (#625) +- [54bba3b1](https://github.com/stashed/postgres/commit/54bba3b1) [cherry-pick] Update repository config (#600) (#607) +- [2ac504d2](https://github.com/stashed/postgres/commit/2ac504d2) [cherry-pick] Update repository config (#589) (#596) +- [0b4f7bea](https://github.com/stashed/postgres/commit/0b4f7bea) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#585) +- [e3e822f3](https://github.com/stashed/postgres/commit/e3e822f3) [cherry-pick] Update repository config (#566) (#573) +- [956653e3](https://github.com/stashed/postgres/commit/956653e3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#562) +- [ef5cc730](https://github.com/stashed/postgres/commit/ef5cc730) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#551) +- [02a8fc1b](https://github.com/stashed/postgres/commit/02a8fc1b) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#541) +- [8c4e765f](https://github.com/stashed/postgres/commit/8c4e765f) [cherry-pick] Update README.md template (#523) (#530) +- [66da0577](https://github.com/stashed/postgres/commit/66da0577) [cherry-pick] Generate README.md using templates (#512) (#519) +- [a5be3888](https://github.com/stashed/postgres/commit/a5be3888) [cherry-pick] Speed up schema generation process (#501) (#508) + + +### [13.1-v2](https://github.com/stashed/postgres/releases/tag/13.1-v2) + +- [6c59e1eb](https://github.com/stashed/postgres/commit/6c59e1eb) Prepare for release 13.1.0-v2 (#719) +- [be6c043a](https://github.com/stashed/postgres/commit/be6c043a) Fix Makefile (#705) (#713) +- [8805ee06](https://github.com/stashed/postgres/commit/8805ee06) TLS support for postgres (#694) (#702) +- [517a4e20](https://github.com/stashed/postgres/commit/517a4e20) [cherry-pick] Update repository config (#683) (#691) +- [fc935ae7](https://github.com/stashed/postgres/commit/fc935ae7) Add auto-backup doc + Restructure docs (#618) (#680) +- [ac84e6d3](https://github.com/stashed/postgres/commit/ac84e6d3) [cherry-pick] Don't overwrite superuser password of restored database (#660) (#670) +- [6c195dfb](https://github.com/stashed/postgres/commit/6c195dfb) Update repository config (#649) (#657) +- [ecd22af1](https://github.com/stashed/postgres/commit/ecd22af1) Use restic 0.12.0 (#637) (#645) +- [3a1fe354](https://github.com/stashed/postgres/commit/3a1fe354) Update Kubernetes v1.18.9 dependencies (#626) (#634) +- [c82407f8](https://github.com/stashed/postgres/commit/c82407f8) [cherry-pick] Update repository config (#600) (#608) +- [6432d062](https://github.com/stashed/postgres/commit/6432d062) [cherry-pick] Update repository config (#589) (#597) +- [2fe1bdf3](https://github.com/stashed/postgres/commit/2fe1bdf3) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#578) (#586) +- [719fb462](https://github.com/stashed/postgres/commit/719fb462) [cherry-pick] Update repository config (#566) (#574) +- [45871d26](https://github.com/stashed/postgres/commit/45871d26) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#555) (#563) +- [ecd689c8](https://github.com/stashed/postgres/commit/ecd689c8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#544) (#552) +- [ad7687a2](https://github.com/stashed/postgres/commit/ad7687a2) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#534) (#542) +- [53fdf211](https://github.com/stashed/postgres/commit/53fdf211) [cherry-pick] Update README.md template (#523) (#531) +- [5c5e670c](https://github.com/stashed/postgres/commit/5c5e670c) [cherry-pick] Generate README.md using templates (#512) (#520) +- [a60735d0](https://github.com/stashed/postgres/commit/a60735d0) [cherry-pick] Speed up schema generation process (#501) (#509) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.12.0](https://github.com/stashed/stash/releases/tag/v0.12.0) + +- [b7700c29](https://github.com/stashed/stash/commit/b7700c29) Prepare for release v0.12.0 (#1330) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.04.07.md b/content/docs/v2024.8.27/CHANGELOG-v2021.04.07.md new file mode 100644 index 0000000000..4100532cb1 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.04.07.md @@ -0,0 +1,139 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.04.07 + name: Changelog-v2021.04.07 + parent: welcome + weight: 20210407 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.04.07/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.04.07/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.04.07 (2021-04-08) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.12.1](https://github.com/appscode/stash-enterprise/releases/tag/v0.12.1) + +- [e684150a](https://github.com/appscode/stash-enterprise/commit/e684150a) Prepare for release v0.12.1 (#89) +- [8c03495c](https://github.com/appscode/stash-enterprise/commit/8c03495c) Don't use global registry for installing operator from Makefile (#88) +- [fdf7b6d3](https://github.com/appscode/stash-enterprise/commit/fdf7b6d3) Use combined chart to install from Makefile (#87) +- [3d1a2193](https://github.com/appscode/stash-enterprise/commit/3d1a2193) Update license verifier to v0.8.0 +- [4be954f0](https://github.com/appscode/stash-enterprise/commit/4be954f0) Update license verifier +- [9a4f98db](https://github.com/appscode/stash-enterprise/commit/9a4f98db) Fix spelling + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.12.1](https://github.com/stashed/apimachinery/releases/tag/v0.12.1) + +- [2a71cd73](https://github.com/stashed/apimachinery/commit/2a71cd73) Fix spelling + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.12.1](https://github.com/stashed/cli/releases/tag/v0.12.1) + +- [2532f94](https://github.com/stashed/cli/commit/2532f94) Prepare for release v0.12.1 (#115) +- [05bbfb4](https://github.com/stashed/cli/commit/05bbfb4) Fix spelling + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v0.12.1](https://github.com/stashed/installer/releases/tag/v0.12.1) + +- [9ec212c](https://github.com/stashed/installer/commit/9ec212c) Prepare for release v0.12.1 (#171) +- [20a78f1](https://github.com/stashed/installer/commit/20a78f1) Allow passing registry fqdn (#170) +- [f2688f6](https://github.com/stashed/installer/commit/f2688f6) Fix spelling + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.12.1](https://github.com/stashed/stash/releases/tag/v0.12.1) + +- [5c2f6eba](https://github.com/stashed/stash/commit/5c2f6eba) Prepare for release v0.12.1 (#1337) +- [5b8b134f](https://github.com/stashed/stash/commit/5b8b134f) Don't use global resgistry to install operator from Makefile (#1336) +- [32bc9f82](https://github.com/stashed/stash/commit/32bc9f82) Register RestoreBatch CRD + Fix Makefile (#1331) +- [c42b3aee](https://github.com/stashed/stash/commit/c42b3aee) Update license verifier to v0.8.0 +- [083ec543](https://github.com/stashed/stash/commit/083ec543) Update license verifier +- [db1668ba](https://github.com/stashed/stash/commit/db1668ba) Fix spelling + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.04.09.md b/content/docs/v2024.8.27/CHANGELOG-v2021.04.09.md new file mode 100644 index 0000000000..1833e70105 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.04.09.md @@ -0,0 +1,374 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.04.09 + name: Changelog-v2021.04.09 + parent: welcome + weight: 20210409 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.04.09/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.04.09/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.04.09 (2021-04-09) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.12.2](https://github.com/appscode/stash-enterprise/releases/tag/v0.12.2) + +- [8692accb](https://github.com/appscode/stash-enterprise/commit/8692accb) Prepare for release v0.12.2 (#90) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.12.2](https://github.com/stashed/apimachinery/releases/tag/v0.12.2) + +- [2a0eefc6](https://github.com/stashed/apimachinery/commit/2a0eefc6) Update readme + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.12.2](https://github.com/stashed/cli/releases/tag/v0.12.2) + +- [9c95d5e](https://github.com/stashed/cli/commit/9c95d5e) Prepare for release v0.12.2 (#116) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v8](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v8) + +- [3267fe97](https://github.com/stashed/elasticsearch/commit/3267fe97) Prepare for release 5.6.4-v8 (#735) +- [301c5556](https://github.com/stashed/elasticsearch/commit/301c5556) [cherry-pick] Update license verifier to v0.8.0 (#727) +- [7f7dcc51](https://github.com/stashed/elasticsearch/commit/7f7dcc51) [cherry-pick] Update license verifier (#719) +- [0676a68c](https://github.com/stashed/elasticsearch/commit/0676a68c) Move docs into stashed/docs repo + Cleanup (#718) + + +### [6.2.4-v8](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v8) + +- [3ff81b34](https://github.com/stashed/elasticsearch/commit/3ff81b34) Prepare for release 6.2.4-v8 (#736) +- [49c75ffb](https://github.com/stashed/elasticsearch/commit/49c75ffb) [cherry-pick] Update license verifier to v0.8.0 (#728) +- [abe48a84](https://github.com/stashed/elasticsearch/commit/abe48a84) [cherry-pick] Update license verifier (#720) +- [0912790c](https://github.com/stashed/elasticsearch/commit/0912790c) Move docs into stashed/docs repo + Cleanup (#718) + + +### [6.3.0-v8](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v8) + +- [6018f259](https://github.com/stashed/elasticsearch/commit/6018f259) Prepare for release 6.3.0-v8 (#737) +- [d479c0dd](https://github.com/stashed/elasticsearch/commit/d479c0dd) [cherry-pick] Update license verifier to v0.8.0 (#729) +- [5e96c2ba](https://github.com/stashed/elasticsearch/commit/5e96c2ba) [cherry-pick] Update license verifier (#721) +- [1e6f0d63](https://github.com/stashed/elasticsearch/commit/1e6f0d63) Move docs into stashed/docs repo + Cleanup (#718) + + +### [6.4.0-v8](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v8) + +- [cf4b7e4a](https://github.com/stashed/elasticsearch/commit/cf4b7e4a) Prepare for release 6.4.0-v8 (#738) +- [b84ce80b](https://github.com/stashed/elasticsearch/commit/b84ce80b) [cherry-pick] Update license verifier to v0.8.0 (#730) +- [ddab0380](https://github.com/stashed/elasticsearch/commit/ddab0380) [cherry-pick] Update license verifier (#722) +- [1abd1cb8](https://github.com/stashed/elasticsearch/commit/1abd1cb8) Move docs into stashed/docs repo + Cleanup (#718) + + +### [6.5.3-v8](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v8) + +- [c095b0af](https://github.com/stashed/elasticsearch/commit/c095b0af) Prepare for release 6.5.3-v8 (#739) +- [d5b9fc25](https://github.com/stashed/elasticsearch/commit/d5b9fc25) [cherry-pick] Update license verifier to v0.8.0 (#731) +- [00ee62a7](https://github.com/stashed/elasticsearch/commit/00ee62a7) [cherry-pick] Update license verifier (#723) +- [f12778ec](https://github.com/stashed/elasticsearch/commit/f12778ec) Move docs into stashed/docs repo + Cleanup (#718) + + +### [6.8.0-v8](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v8) + +- [0bce530d](https://github.com/stashed/elasticsearch/commit/0bce530d) Prepare for release 6.8.0-v8 (#740) +- [983efdcf](https://github.com/stashed/elasticsearch/commit/983efdcf) [cherry-pick] Update license verifier to v0.8.0 (#732) +- [b2238d19](https://github.com/stashed/elasticsearch/commit/b2238d19) [cherry-pick] Update license verifier (#724) +- [8099ace3](https://github.com/stashed/elasticsearch/commit/8099ace3) Move docs into stashed/docs repo + Cleanup (#718) + + +### [7.2.0-v8](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v8) + +- [c3777969](https://github.com/stashed/elasticsearch/commit/c3777969) Prepare for release 7.2.0-v8 (#741) +- [efbd66ba](https://github.com/stashed/elasticsearch/commit/efbd66ba) [cherry-pick] Update license verifier to v0.8.0 (#733) +- [120bef54](https://github.com/stashed/elasticsearch/commit/120bef54) [cherry-pick] Update license verifier (#725) +- [142238e6](https://github.com/stashed/elasticsearch/commit/142238e6) Move docs into stashed/docs repo + Cleanup (#718) + + +### [7.3.2-v8](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v8) + +- [0d2ba065](https://github.com/stashed/elasticsearch/commit/0d2ba065) Prepare for release 7.3.2-v8 (#742) +- [7252f84c](https://github.com/stashed/elasticsearch/commit/7252f84c) [cherry-pick] Update license verifier to v0.8.0 (#734) +- [fdaa39d3](https://github.com/stashed/elasticsearch/commit/fdaa39d3) [cherry-pick] Update license verifier (#726) +- [e28fcc97](https://github.com/stashed/elasticsearch/commit/e28fcc97) Move docs into stashed/docs repo + Cleanup (#718) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.04.09](https://github.com/stashed/installer/releases/tag/v2021.04.09) + +- [39bdc8e](https://github.com/stashed/installer/commit/39bdc8e) Prepare for release v2021.04.09 (#172) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v2](https://github.com/stashed/mariadb/releases/tag/10.5.8-v2) + +- [cb2457b](https://github.com/stashed/mariadb/commit/cb2457b) Prepare for release 10.5.8-v2 (#92) +- [9ad8d65](https://github.com/stashed/mariadb/commit/9ad8d65) [cherry-pick] Update license verifier to v0.8.0 (#91) +- [32d8eab](https://github.com/stashed/mariadb/commit/32d8eab) [cherry-pick] Update license verifier (#90) +- [99e66bf](https://github.com/stashed/mariadb/commit/99e66bf) Move docs into stashed/docs repo + Cleanup (#89) +- [017f7dc](https://github.com/stashed/mariadb/commit/017f7dc) [cherry-pick] Update MariaDB Image version from 10.5 to 10.5.8 (#85) (#86) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v7](https://github.com/stashed/mongodb/releases/tag/3.4.17-v7) + +- [c330b36d](https://github.com/stashed/mongodb/commit/c330b36d) Prepare for release 3.4.17-v7 (#874) +- [7cc2dc3a](https://github.com/stashed/mongodb/commit/7cc2dc3a) [cherry-pick] Update license verifier to v0.8.0 (#864) +- [819ae84e](https://github.com/stashed/mongodb/commit/819ae84e) [cherry-pick] Update license verifier (#856) +- [04461734](https://github.com/stashed/mongodb/commit/04461734) Move docs into stashed/docs repo + Cleanup (#855) + + +### [3.4.22-v7](https://github.com/stashed/mongodb/releases/tag/3.4.22-v7) + +- [cf3b8d58](https://github.com/stashed/mongodb/commit/cf3b8d58) Prepare for release 3.4.22-v7 (#875) +- [009e15c7](https://github.com/stashed/mongodb/commit/009e15c7) [cherry-pick] Update license verifier to v0.8.0 (#865) +- [a9ac247a](https://github.com/stashed/mongodb/commit/a9ac247a) [cherry-pick] Update license verifier (#857) +- [fcef85e4](https://github.com/stashed/mongodb/commit/fcef85e4) Move docs into stashed/docs repo + Cleanup (#855) + + +### [3.6.8-v7](https://github.com/stashed/mongodb/releases/tag/3.6.8-v7) + +- [b8e59d9f](https://github.com/stashed/mongodb/commit/b8e59d9f) Prepare for release 3.6.8-v7 (#877) +- [5854bdcb](https://github.com/stashed/mongodb/commit/5854bdcb) [cherry-pick] Update license verifier (#859) +- [7c5b032d](https://github.com/stashed/mongodb/commit/7c5b032d) Move docs into stashed/docs repo + Cleanup (#855) + + +### [3.6.13-v7](https://github.com/stashed/mongodb/releases/tag/3.6.13-v7) + +- [bf2677df](https://github.com/stashed/mongodb/commit/bf2677df) Prepare for release 3.6.13-v7 (#876) +- [54301fe1](https://github.com/stashed/mongodb/commit/54301fe1) [cherry-pick] Update license verifier to v0.8.0 (#866) +- [1de5beaf](https://github.com/stashed/mongodb/commit/1de5beaf) [cherry-pick] Update license verifier (#858) +- [25d23e5e](https://github.com/stashed/mongodb/commit/25d23e5e) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.0.3-v7](https://github.com/stashed/mongodb/releases/tag/4.0.3-v7) + +- [9ec6ccd0](https://github.com/stashed/mongodb/commit/9ec6ccd0) Prepare for release 4.0.3-v7 (#879) +- [cf982cca](https://github.com/stashed/mongodb/commit/cf982cca) [cherry-pick] Update license verifier to v0.8.0 (#868) +- [e8cdd177](https://github.com/stashed/mongodb/commit/e8cdd177) [cherry-pick] Update license verifier (#861) +- [fc2e6da5](https://github.com/stashed/mongodb/commit/fc2e6da5) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.0.5-v7](https://github.com/stashed/mongodb/releases/tag/4.0.5-v7) + +- [4976afaf](https://github.com/stashed/mongodb/commit/4976afaf) Prepare for release 4.0.5-v7 (#880) +- [091ba134](https://github.com/stashed/mongodb/commit/091ba134) [cherry-pick] Update license verifier to v0.8.0 (#869) +- [f3b618ac](https://github.com/stashed/mongodb/commit/f3b618ac) [cherry-pick] Update license verifier (#862) +- [69d29d04](https://github.com/stashed/mongodb/commit/69d29d04) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.0.11-v7](https://github.com/stashed/mongodb/releases/tag/4.0.11-v7) + +- [7c9f57cf](https://github.com/stashed/mongodb/commit/7c9f57cf) Prepare for release 4.0.11-v7 (#878) +- [e7346419](https://github.com/stashed/mongodb/commit/e7346419) [cherry-pick] Update license verifier to v0.8.0 (#867) +- [02e4dfb3](https://github.com/stashed/mongodb/commit/02e4dfb3) [cherry-pick] Update license verifier (#860) +- [d0dee643](https://github.com/stashed/mongodb/commit/d0dee643) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.1.4-v7](https://github.com/stashed/mongodb/releases/tag/4.1.4-v7) + +- [a4961009](https://github.com/stashed/mongodb/commit/a4961009) Prepare for release 4.1.4-v7 (#882) +- [2d167d67](https://github.com/stashed/mongodb/commit/2d167d67) [cherry-pick] Update license verifier to v0.8.0 (#871) +- [27ae4cc2](https://github.com/stashed/mongodb/commit/27ae4cc2) Update license verifier +- [0cd2fb73](https://github.com/stashed/mongodb/commit/0cd2fb73) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.1.7-v7](https://github.com/stashed/mongodb/releases/tag/4.1.7-v7) + +- [b8323b2f](https://github.com/stashed/mongodb/commit/b8323b2f) Prepare for release 4.1.7-v7 (#883) +- [1ccc8c61](https://github.com/stashed/mongodb/commit/1ccc8c61) [cherry-pick] Update license verifier to v0.8.0 (#872) +- [d03df49b](https://github.com/stashed/mongodb/commit/d03df49b) Update license verifier +- [d1808ec4](https://github.com/stashed/mongodb/commit/d1808ec4) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.1.13-v7](https://github.com/stashed/mongodb/releases/tag/4.1.13-v7) + +- [53eb5dc1](https://github.com/stashed/mongodb/commit/53eb5dc1) Prepare for release 4.1.13-v7 (#881) +- [3419f461](https://github.com/stashed/mongodb/commit/3419f461) [cherry-pick] Update license verifier to v0.8.0 (#870) +- [16d315f6](https://github.com/stashed/mongodb/commit/16d315f6) [cherry-pick] Update license verifier (#863) +- [118fd042](https://github.com/stashed/mongodb/commit/118fd042) Move docs into stashed/docs repo + Cleanup (#855) + + +### [4.2.3-v7](https://github.com/stashed/mongodb/releases/tag/4.2.3-v7) + +- [4e45e4ca](https://github.com/stashed/mongodb/commit/4e45e4ca) Prepare for release 4.2.3-v7 (#884) +- [7271e889](https://github.com/stashed/mongodb/commit/7271e889) [cherry-pick] Update license verifier to v0.8.0 (#873) +- [ddeff341](https://github.com/stashed/mongodb/commit/ddeff341) Update license verifier +- [2806781c](https://github.com/stashed/mongodb/commit/2806781c) Move docs into stashed/docs repo + Cleanup (#855) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v8](https://github.com/stashed/mysql/releases/tag/5.7.25-v8) + +- [43e5c9f](https://github.com/stashed/mysql/commit/43e5c9f) Prepare for release 5.7.25-v8 (#364) +- [251608d](https://github.com/stashed/mysql/commit/251608d) [cherry-pick] Update license verifier to v0.8.0 (#360) +- [2c41000](https://github.com/stashed/mysql/commit/2c41000) [cherry-pick] Update license verifier (#356) +- [9ee9e47](https://github.com/stashed/mysql/commit/9ee9e47) Move docs into stashed/docs repo + Cleanup (#355) + + +### [8.0.3-v8](https://github.com/stashed/mysql/releases/tag/8.0.3-v8) + +- [363bcab](https://github.com/stashed/mysql/commit/363bcab) Prepare for release 8.0.3-v8 (#367) +- [174f01c](https://github.com/stashed/mysql/commit/174f01c) [cherry-pick] Update license verifier to v0.8.0 (#363) +- [42f6d9d](https://github.com/stashed/mysql/commit/42f6d9d) [cherry-pick] Update license verifier (#359) +- [10c6a6f](https://github.com/stashed/mysql/commit/10c6a6f) Move docs into stashed/docs repo + Cleanup (#355) + + +### [8.0.14-v8](https://github.com/stashed/mysql/releases/tag/8.0.14-v8) + +- [ef07360](https://github.com/stashed/mysql/commit/ef07360) Prepare for release 8.0.14-v8 (#365) +- [4567286](https://github.com/stashed/mysql/commit/4567286) [cherry-pick] Update license verifier to v0.8.0 (#361) +- [12336f3](https://github.com/stashed/mysql/commit/12336f3) [cherry-pick] Update license verifier (#357) +- [3131282](https://github.com/stashed/mysql/commit/3131282) Move docs into stashed/docs repo + Cleanup (#355) + + +### [8.0.21-v2](https://github.com/stashed/mysql/releases/tag/8.0.21-v2) + +- [a1fd10f](https://github.com/stashed/mysql/commit/a1fd10f) Prepare for release 8.0.21-v2 (#366) +- [63f2184](https://github.com/stashed/mysql/commit/63f2184) [cherry-pick] Update license verifier to v0.8.0 (#362) +- [24ebab1](https://github.com/stashed/mysql/commit/24ebab1) [cherry-pick] Update license verifier (#358) +- [47ff7a2](https://github.com/stashed/mysql/commit/47ff7a2) Move docs into stashed/docs repo + Cleanup (#355) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v6](https://github.com/stashed/postgres/releases/tag/9.6.19-v6) + +- [952e50a2](https://github.com/stashed/postgres/commit/952e50a2) Prepare for release 9.6.19-v6 (#744) +- [271c6399](https://github.com/stashed/postgres/commit/271c6399) [cherry-pick] Update license verifier to v0.8.0 (#739) +- [a4f8fdfd](https://github.com/stashed/postgres/commit/a4f8fdfd) [cherry-pick] Update license verifier (#734) +- [7deba428](https://github.com/stashed/postgres/commit/7deba428) Prepare for release 9.6.19-v5 (#728) +- [372ed379](https://github.com/stashed/postgres/commit/372ed379) Move docs into stashed/docs repo + Cleanup (#723) + + +### [10.14-v6](https://github.com/stashed/postgres/releases/tag/10.14-v6) + +- [6e5e02c0](https://github.com/stashed/postgres/commit/6e5e02c0) Prepare for release 10.14-v6 (#740) +- [dc5cea73](https://github.com/stashed/postgres/commit/dc5cea73) [cherry-pick] Update license verifier to v0.8.0 (#735) +- [1578dde5](https://github.com/stashed/postgres/commit/1578dde5) [cherry-pick] Update license verifier (#730) +- [c08f7b46](https://github.com/stashed/postgres/commit/c08f7b46) Prepare for release 10.14-v5 (#724) +- [23e24762](https://github.com/stashed/postgres/commit/23e24762) Move docs into stashed/docs repo + Cleanup (#723) + + +### [11.9-v6](https://github.com/stashed/postgres/releases/tag/11.9-v6) + +- [ccf2b20e](https://github.com/stashed/postgres/commit/ccf2b20e) Prepare for release 11.9-v6 (#741) +- [9f1c4f5e](https://github.com/stashed/postgres/commit/9f1c4f5e) [cherry-pick] Update license verifier to v0.8.0 (#736) +- [59907d93](https://github.com/stashed/postgres/commit/59907d93) [cherry-pick] Update license verifier (#731) +- [45ecd27f](https://github.com/stashed/postgres/commit/45ecd27f) Prepare for release 11.9-v5 (#725) +- [e7c1360f](https://github.com/stashed/postgres/commit/e7c1360f) Move docs into stashed/docs repo + Cleanup (#723) + + +### [12.4-v6](https://github.com/stashed/postgres/releases/tag/12.4-v6) + +- [582fb725](https://github.com/stashed/postgres/commit/582fb725) Prepare for release 12.4-v6 (#742) +- [b21ade58](https://github.com/stashed/postgres/commit/b21ade58) [cherry-pick] Update license verifier to v0.8.0 (#737) +- [4c0126bf](https://github.com/stashed/postgres/commit/4c0126bf) [cherry-pick] Update license verifier (#732) + + +### [13.1-v3](https://github.com/stashed/postgres/releases/tag/13.1-v3) + +- [2d214d15](https://github.com/stashed/postgres/commit/2d214d15) Prepare for release 13.1-v3 (#743) +- [2da7f9fb](https://github.com/stashed/postgres/commit/2da7f9fb) [cherry-pick] Update license verifier to v0.8.0 (#738) +- [842effc0](https://github.com/stashed/postgres/commit/842effc0) [cherry-pick] Update license verifier (#733) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.12.2](https://github.com/stashed/stash/releases/tag/v0.12.2) + +- [50f8a075](https://github.com/stashed/stash/commit/50f8a075) Prepare for release v0.12.2 (#1338) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.04.12.md b/content/docs/v2024.8.27/CHANGELOG-v2021.04.12.md new file mode 100644 index 0000000000..a7f3d4a983 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.04.12.md @@ -0,0 +1,310 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.04.12 + name: Changelog-v2021.04.12 + parent: welcome + weight: 20210412 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.04.12/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.04.12/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.04.12 (2021-04-10) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.12.3](https://github.com/appscode/stash-enterprise/releases/tag/v0.12.3) + +- [4511a60f](https://github.com/appscode/stash-enterprise/commit/4511a60f) Prepare for release v0.12.3 (#91) +- [d84a4d5b](https://github.com/appscode/stash-enterprise/commit/d84a4d5b) Use license-verifier v0.8.1 + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.12.3](https://github.com/stashed/apimachinery/releases/tag/v0.12.3) + +- [02428080](https://github.com/stashed/apimachinery/commit/02428080) Update readme + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.12.3](https://github.com/stashed/cli/releases/tag/v0.12.3) + +- [2dfae90](https://github.com/stashed/cli/commit/2dfae90) Prepare for release v0.12.3 (#117) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v9](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v9) + +- [4418b9be](https://github.com/stashed/elasticsearch/commit/4418b9be) Prepare for release 5.6.4-v9 (#749) +- [4472510b](https://github.com/stashed/elasticsearch/commit/4472510b) [cherry-pick] Use license-verifier v0.8.1 (#744) + + +### [6.2.4-v9](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v9) + +- [20b4c3ad](https://github.com/stashed/elasticsearch/commit/20b4c3ad) Prepare for release 6.2.4-v9 (#750) +- [dbd0843d](https://github.com/stashed/elasticsearch/commit/dbd0843d) [cherry-pick] Use license-verifier v0.8.1 (#745) + + +### [6.3.0-v9](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v9) + +- [f2a8bfd1](https://github.com/stashed/elasticsearch/commit/f2a8bfd1) Prepare for release 6.3.0-v9 (#751) +- [13983884](https://github.com/stashed/elasticsearch/commit/13983884) [cherry-pick] Use license-verifier v0.8.1 (#746) + + +### [6.4.0-v9](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v9) + +- [c24d3b01](https://github.com/stashed/elasticsearch/commit/c24d3b01) Prepare for release 6.4.0-v9 (#752) +- [6852abf1](https://github.com/stashed/elasticsearch/commit/6852abf1) [cherry-pick] Use license-verifier v0.8.1 (#747) + + +### [6.5.3-v9](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v9) + +- [7a6fbe57](https://github.com/stashed/elasticsearch/commit/7a6fbe57) Prepare for release 6.5.3-v9 (#753) +- [66955dcb](https://github.com/stashed/elasticsearch/commit/66955dcb) [cherry-pick] Use license-verifier v0.8.1 (#748) + + +### [6.8.0-v9](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v9) + +- [94e32907](https://github.com/stashed/elasticsearch/commit/94e32907) Prepare for release 6.8.0-v9 (#754) + + +### [7.2.0-v9](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v9) + +- [4830e6d2](https://github.com/stashed/elasticsearch/commit/4830e6d2) Prepare for release 7.2.0-v9 (#755) + + +### [7.3.2-v9](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v9) + +- [9dc99760](https://github.com/stashed/elasticsearch/commit/9dc99760) Prepare for release 7.3.2-v9 (#756) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.04.12](https://github.com/stashed/installer/releases/tag/v2021.04.12) + +- [2814743](https://github.com/stashed/installer/commit/2814743) Prepare for release v2021.04.12 (#173) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v3](https://github.com/stashed/mariadb/releases/tag/10.5.8-v3) + +- [978701f](https://github.com/stashed/mariadb/commit/978701f) Prepare for release 10.5.8-v3 (#95) +- [365ef64](https://github.com/stashed/mariadb/commit/365ef64) [cherry-pick] Use license-verifier v0.8.1 (#94) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v8](https://github.com/stashed/mongodb/releases/tag/3.4.17-v8) + +- [08dbb5de](https://github.com/stashed/mongodb/commit/08dbb5de) Prepare for release 3.4.17-v8 (#895) +- [4794aac5](https://github.com/stashed/mongodb/commit/4794aac5) [cherry-pick] Use license-verifier v0.8.1 (#887) + + +### [3.4.22-v8](https://github.com/stashed/mongodb/releases/tag/3.4.22-v8) + +- [fd4313cf](https://github.com/stashed/mongodb/commit/fd4313cf) Prepare for release 3.4.22-v8 (#896) +- [cc166dc9](https://github.com/stashed/mongodb/commit/cc166dc9) [cherry-pick] Use license-verifier v0.8.1 (#888) + + +### [3.6.8-v8](https://github.com/stashed/mongodb/releases/tag/3.6.8-v8) + +- [5a1413b3](https://github.com/stashed/mongodb/commit/5a1413b3) Prepare for release 3.6.8-v8 (#898) +- [3188dd06](https://github.com/stashed/mongodb/commit/3188dd06) [cherry-pick] Use license-verifier v0.8.1 (#890) +- [1687801d](https://github.com/stashed/mongodb/commit/1687801d) Update license verifier to v0.8.0 (#885) + + +### [3.6.13-v8](https://github.com/stashed/mongodb/releases/tag/3.6.13-v8) + +- [1ed5ecde](https://github.com/stashed/mongodb/commit/1ed5ecde) Prepare for release 3.6.13-v8 (#897) +- [e41bdcaf](https://github.com/stashed/mongodb/commit/e41bdcaf) [cherry-pick] Use license-verifier v0.8.1 (#889) + + +### [4.0.3-v8](https://github.com/stashed/mongodb/releases/tag/4.0.3-v8) + +- [8df38a7f](https://github.com/stashed/mongodb/commit/8df38a7f) Prepare for release 4.0.3-v8 (#900) +- [8ac8b340](https://github.com/stashed/mongodb/commit/8ac8b340) [cherry-pick] Use license-verifier v0.8.1 (#892) + + +### [4.0.5-v8](https://github.com/stashed/mongodb/releases/tag/4.0.5-v8) + +- [e7ce9e4b](https://github.com/stashed/mongodb/commit/e7ce9e4b) Prepare for release 4.0.5-v8 (#901) +- [90f5bb72](https://github.com/stashed/mongodb/commit/90f5bb72) [cherry-pick] Use license-verifier v0.8.1 (#893) + + +### [4.0.11-v8](https://github.com/stashed/mongodb/releases/tag/4.0.11-v8) + +- [2000f928](https://github.com/stashed/mongodb/commit/2000f928) Prepare for release 4.0.11-v8 (#899) +- [3e95bb83](https://github.com/stashed/mongodb/commit/3e95bb83) [cherry-pick] Use license-verifier v0.8.1 (#891) + + +### [4.1.4-v8](https://github.com/stashed/mongodb/releases/tag/4.1.4-v8) + +- [be030cab](https://github.com/stashed/mongodb/commit/be030cab) Use license-verifier v0.8.1 (#905) +- [0f0c448e](https://github.com/stashed/mongodb/commit/0f0c448e) Prepare for release 4.1.4-v8 (#903) + + +### [4.1.7-v8](https://github.com/stashed/mongodb/releases/tag/4.1.7-v8) + +- [584b22c9](https://github.com/stashed/mongodb/commit/584b22c9) Use license-verifier v0.8.1 (#906) +- [c37c8f8d](https://github.com/stashed/mongodb/commit/c37c8f8d) Prepare for release 4.1.7-v8 (#904) + + +### [4.1.13-v8](https://github.com/stashed/mongodb/releases/tag/4.1.13-v8) + +- [391d1cd5](https://github.com/stashed/mongodb/commit/391d1cd5) Use license-verifier v0.8.1 (#907) +- [f6519aa2](https://github.com/stashed/mongodb/commit/f6519aa2) Prepare for release 4.1.13-v8 (#902) + + +### [4.2.3-v8](https://github.com/stashed/mongodb/releases/tag/4.2.3-v8) + +- [67b1ba2d](https://github.com/stashed/mongodb/commit/67b1ba2d) Prepare for release 4.2.3-v8 (#908) +- [2a2a8e00](https://github.com/stashed/mongodb/commit/2a2a8e00) [cherry-pick] Use license-verifier v0.8.1 (#894) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v9](https://github.com/stashed/mysql/releases/tag/5.7.25-v9) + +- [1a963f9](https://github.com/stashed/mysql/commit/1a963f9) Prepare for release 5.7.25-v9 (#372) +- [da866ee](https://github.com/stashed/mysql/commit/da866ee) [cherry-pick] Use license-verifier v0.8.1 (#369) + + +### [8.0.3-v9](https://github.com/stashed/mysql/releases/tag/8.0.3-v9) + +- [3f2b1b0](https://github.com/stashed/mysql/commit/3f2b1b0) Prepare for release 8.0.3-v9 (#375) + + +### [8.0.14-v9](https://github.com/stashed/mysql/releases/tag/8.0.14-v9) + +- [5af1e60](https://github.com/stashed/mysql/commit/5af1e60) Prepare for release 8.0.14-v9 (#373) +- [0ebdaa8](https://github.com/stashed/mysql/commit/0ebdaa8) [cherry-pick] Use license-verifier v0.8.1 (#370) + + +### [8.0.21-v3](https://github.com/stashed/mysql/releases/tag/8.0.21-v3) + +- [9ca99ac](https://github.com/stashed/mysql/commit/9ca99ac) Prepare for release 8.0.21-v3 (#374) +- [b953faf](https://github.com/stashed/mysql/commit/b953faf) [cherry-pick] Use license-verifier v0.8.1 (#371) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v7](https://github.com/stashed/postgres/releases/tag/9.6.19-v7) + +- [a1704ca0](https://github.com/stashed/postgres/commit/a1704ca0) Prepare for release 9.6.19-v7 (#751) + + +### [10.14-v7](https://github.com/stashed/postgres/releases/tag/10.14-v7) + +- [b55e8661](https://github.com/stashed/postgres/commit/b55e8661) Prepare for release 10.14-v7 (#747) +- [33b87ceb](https://github.com/stashed/postgres/commit/33b87ceb) [cherry-pick] Use license-verifier v0.8.1 (#746) + + +### [11.9-v7](https://github.com/stashed/postgres/releases/tag/11.9-v7) + +- [b93b6c20](https://github.com/stashed/postgres/commit/b93b6c20) Prepare for release 11.9-v7 (#748) + + +### [12.4-v7](https://github.com/stashed/postgres/releases/tag/12.4-v7) + +- [2461f64e](https://github.com/stashed/postgres/commit/2461f64e) Prepare for release 12.4-v7 (#749) + + +### [13.1-v4](https://github.com/stashed/postgres/releases/tag/13.1-v4) + +- [b324dc20](https://github.com/stashed/postgres/commit/b324dc20) Prepare for release 13.1-v4 (#750) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.12.3](https://github.com/stashed/stash/releases/tag/v0.12.3) + +- [28a86cae](https://github.com/stashed/stash/commit/28a86cae) Prepare for release v0.12.3 (#1339) +- [2af7d576](https://github.com/stashed/stash/commit/2af7d576) Use license-verifier v0.8.1 + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.06.23.md b/content/docs/v2024.8.27/CHANGELOG-v2021.06.23.md new file mode 100644 index 0000000000..4a72b8bc92 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.06.23.md @@ -0,0 +1,367 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.06.23 + name: Changelog-v2021.06.23 + parent: welcome + weight: 20210623 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.06.23/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.06.23/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.06.23 (2021-06-18) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.14.1](https://github.com/appscode/stash-enterprise/releases/tag/v0.14.1) + +- [324ca10e](https://github.com/appscode/stash-enterprise/commit/324ca10e) Prepare for release v0.14.1 (#102) +- [917d2608](https://github.com/appscode/stash-enterprise/commit/917d2608) Update audit event attributes +- [8ecfe211](https://github.com/appscode/stash-enterprise/commit/8ecfe211) Use dynamic resource mapper +- [4e0584d5](https://github.com/appscode/stash-enterprise/commit/4e0584d5) Use Kubernetes 1.21.1 toolchain +- [4a9ace9c](https://github.com/appscode/stash-enterprise/commit/4a9ace9c) Update dependencies +- [960c4dbc](https://github.com/appscode/stash-enterprise/commit/960c4dbc) Create resilient event publisher (#101) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.14.1](https://github.com/stashed/apimachinery/releases/tag/v0.14.1) + +- [0cae462d](https://github.com/stashed/apimachinery/commit/0cae462d) Use Kubernetes 1.21.1 toolchain + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.14.1](https://github.com/stashed/cli/releases/tag/v0.14.1) + +- [cd0a22a](https://github.com/stashed/cli/commit/cd0a22a) Prepare for release v0.14.1 (#125) +- [f8937bb](https://github.com/stashed/cli/commit/f8937bb) Use Kubernetes 1.21.1 toolchain + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v11](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v11) + +- [7bc688cc](https://github.com/stashed/elasticsearch/commit/7bc688cc) Prepare for release 5.6.4-v11 (#837) +- [cb7338af](https://github.com/stashed/elasticsearch/commit/cb7338af) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#829) +- [9dfe4c77](https://github.com/stashed/elasticsearch/commit/9dfe4c77) Update README.md + + +### [6.2.4-v11](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v11) + +- [fda1bafa](https://github.com/stashed/elasticsearch/commit/fda1bafa) Prepare for release 6.2.4-v11 (#838) +- [678023d8](https://github.com/stashed/elasticsearch/commit/678023d8) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#830) +- [738515d8](https://github.com/stashed/elasticsearch/commit/738515d8) Update README.md + + +### [6.3.0-v11](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v11) + +- [d3ab747e](https://github.com/stashed/elasticsearch/commit/d3ab747e) Prepare for release 6.3.0-v11 (#839) +- [02ed39b4](https://github.com/stashed/elasticsearch/commit/02ed39b4) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#831) +- [0ec95b34](https://github.com/stashed/elasticsearch/commit/0ec95b34) Update README.md + + +### [6.4.0-v11](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v11) + +- [a2bcfc9e](https://github.com/stashed/elasticsearch/commit/a2bcfc9e) Prepare for release 6.4.0-v11 (#840) +- [d91b7e05](https://github.com/stashed/elasticsearch/commit/d91b7e05) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#832) +- [8349500c](https://github.com/stashed/elasticsearch/commit/8349500c) Update README.md + + +### [6.5.3-v11](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v11) + +- [651f9a49](https://github.com/stashed/elasticsearch/commit/651f9a49) Prepare for release 6.5.3-v11 (#841) +- [34491027](https://github.com/stashed/elasticsearch/commit/34491027) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#833) +- [506d776e](https://github.com/stashed/elasticsearch/commit/506d776e) Update README.md + + +### [6.8.0-v11](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v11) + +- [a577ae04](https://github.com/stashed/elasticsearch/commit/a577ae04) Prepare for release 6.8.0-v11 (#842) +- [8c39d538](https://github.com/stashed/elasticsearch/commit/8c39d538) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#834) +- [d0dddbe5](https://github.com/stashed/elasticsearch/commit/d0dddbe5) Update README.md + + +### [7.2.0-v11](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v11) + +- [6ba76941](https://github.com/stashed/elasticsearch/commit/6ba76941) Prepare for release 7.2.0-v11 (#843) +- [919991cd](https://github.com/stashed/elasticsearch/commit/919991cd) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#835) +- [dc90a100](https://github.com/stashed/elasticsearch/commit/dc90a100) Update README.md + + +### [7.3.2-v11](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v11) + +- [40e5c14d](https://github.com/stashed/elasticsearch/commit/40e5c14d) Prepare for release 7.3.2-v11 (#844) +- [94c66a0a](https://github.com/stashed/elasticsearch/commit/94c66a0a) [cherry-pick] Use k8s 1.21.1 toolchain (#828) (#836) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.06.23](https://github.com/stashed/installer/releases/tag/v2021.06.23) + +- [3667d8a](https://github.com/stashed/installer/commit/3667d8a) Prepare for release v2021.06.23 (#179) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v4](https://github.com/stashed/mariadb/releases/tag/10.5.8-v4) + +- [87947d2](https://github.com/stashed/mariadb/commit/87947d2) Prepare for release 10.5.8-v4 (#110) +- [32b93aa](https://github.com/stashed/mariadb/commit/32b93aa) [cherry-pick] Use k8s 1.21.1 toolchain (#108) (#109) +- [35f57b9](https://github.com/stashed/mariadb/commit/35f57b9) [cherry-pick] Use klog/v2 (#106) (#107) +- [318f49c](https://github.com/stashed/mariadb/commit/318f49c) Use k8s 1.21.0 toolchain + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v10](https://github.com/stashed/mongodb/releases/tag/3.4.17-v10) + +- [d80bee20](https://github.com/stashed/mongodb/commit/d80bee20) Prepare for release 3.4.17-v10 (#1007) +- [97e2e07f](https://github.com/stashed/mongodb/commit/97e2e07f) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#995) +- [e7a3161a](https://github.com/stashed/mongodb/commit/e7a3161a) Update README.md + + +### [3.4.22-v10](https://github.com/stashed/mongodb/releases/tag/3.4.22-v10) + +- [5b3c7c83](https://github.com/stashed/mongodb/commit/5b3c7c83) Prepare for release 3.4.22-v10 (#1008) +- [b98e6cad](https://github.com/stashed/mongodb/commit/b98e6cad) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#996) +- [36abd30e](https://github.com/stashed/mongodb/commit/36abd30e) Update README.md + + +### [3.6.8-v10](https://github.com/stashed/mongodb/releases/tag/3.6.8-v10) + +- [9b3182f1](https://github.com/stashed/mongodb/commit/9b3182f1) Prepare for release 3.6.8-v10 (#1010) +- [b07985df](https://github.com/stashed/mongodb/commit/b07985df) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#998) +- [0455e209](https://github.com/stashed/mongodb/commit/0455e209) Update README.md + + +### [3.6.13-v10](https://github.com/stashed/mongodb/releases/tag/3.6.13-v10) + +- [52b38e73](https://github.com/stashed/mongodb/commit/52b38e73) Prepare for release 3.6.13-v10 (#1009) +- [822cdadb](https://github.com/stashed/mongodb/commit/822cdadb) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#997) +- [a83b7764](https://github.com/stashed/mongodb/commit/a83b7764) Update README.md + + +### [4.0.3-v10](https://github.com/stashed/mongodb/releases/tag/4.0.3-v10) + +- [b3f4d1d6](https://github.com/stashed/mongodb/commit/b3f4d1d6) Prepare for release 4.0.3-v10 (#1012) +- [adf02d15](https://github.com/stashed/mongodb/commit/adf02d15) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1000) +- [4510d54e](https://github.com/stashed/mongodb/commit/4510d54e) Update README.md + + +### [4.0.5-v10](https://github.com/stashed/mongodb/releases/tag/4.0.5-v10) + +- [5f1cc079](https://github.com/stashed/mongodb/commit/5f1cc079) Prepare for release 4.0.5-v10 (#1013) +- [5b05f3a3](https://github.com/stashed/mongodb/commit/5b05f3a3) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1001) +- [036fde58](https://github.com/stashed/mongodb/commit/036fde58) Update README.md + + +### [4.0.11-v10](https://github.com/stashed/mongodb/releases/tag/4.0.11-v10) + +- [ca1407ef](https://github.com/stashed/mongodb/commit/ca1407ef) Prepare for release 4.0.11-v10 (#1011) +- [8bda3737](https://github.com/stashed/mongodb/commit/8bda3737) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#999) +- [3a773347](https://github.com/stashed/mongodb/commit/3a773347) Update README.md + + +### [4.1.4-v10](https://github.com/stashed/mongodb/releases/tag/4.1.4-v10) + +- [77d5a66e](https://github.com/stashed/mongodb/commit/77d5a66e) Prepare for release 4.1.4-v10 (#1015) +- [442197d9](https://github.com/stashed/mongodb/commit/442197d9) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1003) +- [3bb97952](https://github.com/stashed/mongodb/commit/3bb97952) Update README.md + + +### [4.1.7-v10](https://github.com/stashed/mongodb/releases/tag/4.1.7-v10) + +- [1a0160a2](https://github.com/stashed/mongodb/commit/1a0160a2) Prepare for release 4.1.7-v10 (#1016) +- [1e47a843](https://github.com/stashed/mongodb/commit/1e47a843) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1004) +- [5f1a80f5](https://github.com/stashed/mongodb/commit/5f1a80f5) Update README.md + + +### [4.1.13-v10](https://github.com/stashed/mongodb/releases/tag/4.1.13-v10) + +- [01e88ef5](https://github.com/stashed/mongodb/commit/01e88ef5) Prepare for release 4.1.13-v10 (#1014) +- [56de5495](https://github.com/stashed/mongodb/commit/56de5495) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1002) + + +### [4.2.3-v10](https://github.com/stashed/mongodb/releases/tag/4.2.3-v10) + +- [0dbaebb9](https://github.com/stashed/mongodb/commit/0dbaebb9) Prepare for release 4.2.3-v10 (#1017) +- [b2fcf2a0](https://github.com/stashed/mongodb/commit/b2fcf2a0) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1005) +- [49254247](https://github.com/stashed/mongodb/commit/49254247) Update README.md + + +### [4.4.6-v1](https://github.com/stashed/mongodb/releases/tag/4.4.6-v1) + +- [13dd847b](https://github.com/stashed/mongodb/commit/13dd847b) Prepare for release 4.4.6-v1 (#1018) +- [fc0f1c1a](https://github.com/stashed/mongodb/commit/fc0f1c1a) [cherry-pick] Use k8s 1.21.1 toolchain (#994) (#1006) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v11](https://github.com/stashed/mysql/releases/tag/5.7.25-v11) + +- [f8e0fdc9](https://github.com/stashed/mysql/commit/f8e0fdc9) Prepare for release 5.7.25-v11 (#433) +- [12edbc10](https://github.com/stashed/mysql/commit/12edbc10) [cherry-pick] Use k8s 1.21.1 toolchain (#428) (#429) + + +### [8.0.3-v11](https://github.com/stashed/mysql/releases/tag/8.0.3-v11) + +- [100bede4](https://github.com/stashed/mysql/commit/100bede4) Prepare for release 8.0.3-v11 (#436) +- [0c38d8b4](https://github.com/stashed/mysql/commit/0c38d8b4) [cherry-pick] Use k8s 1.21.1 toolchain (#428) (#432) + + +### [8.0.14-v11](https://github.com/stashed/mysql/releases/tag/8.0.14-v11) + +- [98b64068](https://github.com/stashed/mysql/commit/98b64068) Prepare for release 8.0.14-v11 (#434) +- [3d73812c](https://github.com/stashed/mysql/commit/3d73812c) [cherry-pick] Use k8s 1.21.1 toolchain (#428) (#430) + + +### [8.0.21-v5](https://github.com/stashed/mysql/releases/tag/8.0.21-v5) + +- [52ee3f21](https://github.com/stashed/mysql/commit/52ee3f21) Prepare for release 8.0.21-v5 (#435) +- [89fc5316](https://github.com/stashed/mysql/commit/89fc5316) [cherry-pick] Use k8s 1.21.1 toolchain (#428) (#431) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v6](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v6) + +- [33b788d](https://github.com/stashed/percona-xtradb/commit/33b788d) Prepare for release 5.7-v6 (#184) +- [7809f18](https://github.com/stashed/percona-xtradb/commit/7809f18) [cherry-pick] Use k8s 1.21.1 toolchain (#183) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v9](https://github.com/stashed/postgres/releases/tag/9.6.19-v9) + +- [07ed8ee1](https://github.com/stashed/postgres/commit/07ed8ee1) Prepare for release 9.6.19-v9 (#817) +- [45bfe257](https://github.com/stashed/postgres/commit/45bfe257) [cherry-pick] Use k8s 1.21.1 toolchain (#807) (#812) +- [b30cecfe](https://github.com/stashed/postgres/commit/b30cecfe) Update README.md +- [d91ecdbf](https://github.com/stashed/postgres/commit/d91ecdbf) [cherry-pick] Only set "PGSSLMODE" mode env variable when SSL is enabled (#801) (#806) + + +### [10.14-v9](https://github.com/stashed/postgres/releases/tag/10.14-v9) + +- [457e2b3c](https://github.com/stashed/postgres/commit/457e2b3c) Prepare for release 10.14-v9 (#813) +- [75f06514](https://github.com/stashed/postgres/commit/75f06514) [cherry-pick] Use k8s 1.21.1 toolchain (#807) (#808) +- [d7999008](https://github.com/stashed/postgres/commit/d7999008) Update README.md +- [8ae4a408](https://github.com/stashed/postgres/commit/8ae4a408) [cherry-pick] Only set "PGSSLMODE" mode env variable when SSL is enabled (#801) (#802) + + +### [11.9-v9](https://github.com/stashed/postgres/releases/tag/11.9-v9) + +- [de7d67f5](https://github.com/stashed/postgres/commit/de7d67f5) Prepare for release 11.9-v9 (#814) +- [e866dbfd](https://github.com/stashed/postgres/commit/e866dbfd) [cherry-pick] Use k8s 1.21.1 toolchain (#807) (#809) +- [893fad13](https://github.com/stashed/postgres/commit/893fad13) [cherry-pick] Only set "PGSSLMODE" mode env variable when SSL is enabled (#801) (#803) + + +### [12.4-v9](https://github.com/stashed/postgres/releases/tag/12.4-v9) + +- [29bf3c21](https://github.com/stashed/postgres/commit/29bf3c21) Prepare for release 12.4-v9 (#815) +- [1599bb4a](https://github.com/stashed/postgres/commit/1599bb4a) [cherry-pick] Use k8s 1.21.1 toolchain (#807) (#810) +- [3148acf1](https://github.com/stashed/postgres/commit/3148acf1) [cherry-pick] Only set "PGSSLMODE" mode env variable when SSL is enabled (#801) (#804) + + +### [13.1-v6](https://github.com/stashed/postgres/releases/tag/13.1-v6) + +- [473db0aa](https://github.com/stashed/postgres/commit/473db0aa) Prepare for release 13.1-v6 (#816) +- [dd4c2230](https://github.com/stashed/postgres/commit/dd4c2230) [cherry-pick] Use k8s 1.21.1 toolchain (#807) (#811) +- [c9d8f903](https://github.com/stashed/postgres/commit/c9d8f903) Update README.md +- [5b0142cf](https://github.com/stashed/postgres/commit/5b0142cf) [cherry-pick] Only set "PGSSLMODE" mode env variable when SSL is enabled (#801) (#805) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.14.1](https://github.com/stashed/stash/releases/tag/v0.14.1) + +- [03aba1ac](https://github.com/stashed/stash/commit/03aba1ac) Prepare for release v0.14.1 (#1356) +- [78147be0](https://github.com/stashed/stash/commit/78147be0) Make audit event attributes match cloudevents spec +- [f49850d4](https://github.com/stashed/stash/commit/f49850d4) Use dynamic resource mapper +- [147525ef](https://github.com/stashed/stash/commit/147525ef) Use Kubernetes 1.21.1 toolchain +- [f86c22bf](https://github.com/stashed/stash/commit/f86c22bf) Create resilient event publisher (#1355) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.08.02.md b/content/docs/v2024.8.27/CHANGELOG-v2021.08.02.md new file mode 100644 index 0000000000..3e332b4164 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.08.02.md @@ -0,0 +1,437 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.08.02 + name: Changelog-v2021.08.02 + parent: welcome + weight: 20210802 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.08.02/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.08.02/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.08.02 (2021-07-31) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.15.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.15.0) + +- [40cadc89](https://github.com/appscode/stash-enterprise/commit/40cadc89) Prepare for release v0.15.0 (#110) +- [bd4ca856](https://github.com/appscode/stash-enterprise/commit/bd4ca856) Improve duration format in BackupSession and RestoreSession (#109) +- [1d9cc4dd](https://github.com/appscode/stash-enterprise/commit/1d9cc4dd) Update dependencies (#108) +- [8af6b01b](https://github.com/appscode/stash-enterprise/commit/8af6b01b) Use restic 0.12.0-ac.20210727 (#105) +- [38dea1e2](https://github.com/appscode/stash-enterprise/commit/38dea1e2) Remove repetitive 403 errors from validator and mutators +- [deb96432](https://github.com/appscode/stash-enterprise/commit/deb96432) Pass `region` flag in built-in Functions (#104) +- [d7c5b0ab](https://github.com/appscode/stash-enterprise/commit/d7c5b0ab) Stop using deprecated apis in k8s 1.22 (#103) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.15.0](https://github.com/stashed/apimachinery/releases/tag/v0.15.0) + +- [68cf54c0](https://github.com/stashed/apimachinery/commit/68cf54c0) Update dependencies (#108) +- [5405dc7e](https://github.com/stashed/apimachinery/commit/5405dc7e) Use restic v0.12.0-ac.20210727 (#105) +- [9609d465](https://github.com/stashed/apimachinery/commit/9609d465) Test crds (#104) +- [f9affe2f](https://github.com/stashed/apimachinery/commit/f9affe2f) Add `Duration` column in BackupSession and RestoreSession (#103) +- [0229e0bd](https://github.com/stashed/apimachinery/commit/0229e0bd) Update README.md +- [53996371](https://github.com/stashed/apimachinery/commit/53996371) Only generate crd v1 yamls (#102) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.15.0](https://github.com/stashed/cli/releases/tag/v0.15.0) + +- [f5ebe84](https://github.com/stashed/cli/commit/f5ebe84) Prepare for release v0.15.0 (#129) +- [0501282](https://github.com/stashed/cli/commit/0501282) Update dependencies (#128) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v12](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v12) + +- [f6cd9a3f](https://github.com/stashed/elasticsearch/commit/f6cd9a3f) Prepare for release 5.6.4-v12 (#875) +- [6d5daef1](https://github.com/stashed/elasticsearch/commit/6d5daef1) [cherry-pick] Update repository config (#866) (#867) +- [22b224ab](https://github.com/stashed/elasticsearch/commit/22b224ab) [cherry-pick] Update dependencies (#857) (#858) +- [60b47d34](https://github.com/stashed/elasticsearch/commit/60b47d34) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#847) + + +### [6.2.4-v12](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v12) + +- [113226e5](https://github.com/stashed/elasticsearch/commit/113226e5) Prepare for release 6.2.4-v12 (#876) +- [dd90de07](https://github.com/stashed/elasticsearch/commit/dd90de07) [cherry-pick] Update repository config (#866) (#868) +- [c93e9745](https://github.com/stashed/elasticsearch/commit/c93e9745) [cherry-pick] Update dependencies (#857) (#859) +- [22e606ae](https://github.com/stashed/elasticsearch/commit/22e606ae) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#848) + + +### [6.3.0-v12](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v12) + +- [3a249c88](https://github.com/stashed/elasticsearch/commit/3a249c88) Prepare for release 6.3.0-v12 (#877) +- [41bd96ed](https://github.com/stashed/elasticsearch/commit/41bd96ed) [cherry-pick] Update repository config (#866) (#869) +- [c718b116](https://github.com/stashed/elasticsearch/commit/c718b116) [cherry-pick] Update dependencies (#857) (#860) +- [8c4a5c26](https://github.com/stashed/elasticsearch/commit/8c4a5c26) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#849) + + +### [6.4.0-v12](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v12) + +- [34b940ec](https://github.com/stashed/elasticsearch/commit/34b940ec) Prepare for release 6.4.0-v12 (#878) +- [f0b7aa39](https://github.com/stashed/elasticsearch/commit/f0b7aa39) [cherry-pick] Update repository config (#866) (#870) +- [12a3a75d](https://github.com/stashed/elasticsearch/commit/12a3a75d) [cherry-pick] Update dependencies (#857) (#861) +- [01ead31a](https://github.com/stashed/elasticsearch/commit/01ead31a) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#850) + + +### [6.5.3-v12](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v12) + +- [c994843d](https://github.com/stashed/elasticsearch/commit/c994843d) Prepare for release 6.5.3-v12 (#879) +- [5bc88545](https://github.com/stashed/elasticsearch/commit/5bc88545) [cherry-pick] Update repository config (#866) (#871) +- [1e31a002](https://github.com/stashed/elasticsearch/commit/1e31a002) [cherry-pick] Update dependencies (#857) (#862) +- [4d07f828](https://github.com/stashed/elasticsearch/commit/4d07f828) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#851) + + +### [6.8.0-v12](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v12) + +- [f09dd827](https://github.com/stashed/elasticsearch/commit/f09dd827) Prepare for release 6.8.0-v12 (#880) +- [f35f8ca3](https://github.com/stashed/elasticsearch/commit/f35f8ca3) [cherry-pick] Update repository config (#866) (#872) +- [782c1fc4](https://github.com/stashed/elasticsearch/commit/782c1fc4) [cherry-pick] Update dependencies (#857) (#863) +- [6e8b2884](https://github.com/stashed/elasticsearch/commit/6e8b2884) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#852) + + +### [7.2.0-v12](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v12) + +- [b55c27fe](https://github.com/stashed/elasticsearch/commit/b55c27fe) Prepare for release 7.2.0-v12 (#881) +- [c7f76787](https://github.com/stashed/elasticsearch/commit/c7f76787) [cherry-pick] Update repository config (#866) (#873) +- [038294c6](https://github.com/stashed/elasticsearch/commit/038294c6) [cherry-pick] Update dependencies (#857) (#864) +- [5cdc2c37](https://github.com/stashed/elasticsearch/commit/5cdc2c37) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#853) + + +### [7.3.2-v12](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v12) + +- [36bd2685](https://github.com/stashed/elasticsearch/commit/36bd2685) Prepare for release 7.3.2-v12 (#882) +- [c910d845](https://github.com/stashed/elasticsearch/commit/c910d845) [cherry-pick] Update repository config (#866) (#874) +- [3a2c26f4](https://github.com/stashed/elasticsearch/commit/3a2c26f4) [cherry-pick] Update dependencies (#857) (#865) +- [1082c0b4](https://github.com/stashed/elasticsearch/commit/1082c0b4) [cherry-pick] Use restic v0.12.0-ac.20210727 (#846) (#854) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.08.02](https://github.com/stashed/installer/releases/tag/v2021.08.02) + +- [a156259](https://github.com/stashed/installer/commit/a156259) Prepare for release v2021.08.02 (#191) +- [236344e](https://github.com/stashed/installer/commit/236344e) removed duplicate yaml key (#185) +- [e4360b9](https://github.com/stashed/installer/commit/e4360b9) Add Redis catalog (#189) +- [8ebc75b](https://github.com/stashed/installer/commit/8ebc75b) Update repository config (#190) +- [08533b1](https://github.com/stashed/installer/commit/08533b1) Update dependencies (#188) +- [1dec446](https://github.com/stashed/installer/commit/1dec446) Update chart docs +- [e538a4a](https://github.com/stashed/installer/commit/e538a4a) Update stash chart dependencies via Makefile (#184) +- [79185b4](https://github.com/stashed/installer/commit/79185b4) Stop using deprecated apis in k8s 1.22 (#183) +- [3cb28a0](https://github.com/stashed/installer/commit/3cb28a0) Sort crd yamls by GK +- [2e1bc42](https://github.com/stashed/installer/commit/2e1bc42) Merge metrics chart into crds chart +- [2f22aee](https://github.com/stashed/installer/commit/2f22aee) Test against Kubernetes 1.21.1 (#182) +- [51b9e39](https://github.com/stashed/installer/commit/51b9e39) Allow overriding image pull secrets from unified chart (#181) +- [bab2a32](https://github.com/stashed/installer/commit/bab2a32) Rename user-roles.yaml to metrics-user-roles.yaml +- [7f59770](https://github.com/stashed/installer/commit/7f59770) Add stash-metrics chart (#180) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v5](https://github.com/stashed/mariadb/releases/tag/10.5.8-v5) + +- [4c5a5a6](https://github.com/stashed/mariadb/commit/4c5a5a6) Prepare for release 10.5.8-v5 (#120) +- [bc22c03](https://github.com/stashed/mariadb/commit/bc22c03) [cherry-pick] Update repository config (#118) (#119) +- [23101f3](https://github.com/stashed/mariadb/commit/23101f3) [cherry-pick] Update dependencies (#116) (#117) +- [989e214](https://github.com/stashed/mariadb/commit/989e214) [cherry-pick] Use restic v0.12.0-ac.20210727 (#112) (#113) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v11](https://github.com/stashed/mongodb/releases/tag/3.4.17-v11) + +- [df1a5ee9](https://github.com/stashed/mongodb/commit/df1a5ee9) Prepare for release 3.4.17-v11 (#1061) +- [f345dade](https://github.com/stashed/mongodb/commit/f345dade) [cherry-pick] Update repository config (#1048) (#1049) +- [66be6780](https://github.com/stashed/mongodb/commit/66be6780) [cherry-pick] Update dependencies (#1035) (#1036) +- [9ceabf04](https://github.com/stashed/mongodb/commit/9ceabf04) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1021) + + +### [3.4.22-v11](https://github.com/stashed/mongodb/releases/tag/3.4.22-v11) + +- [a3b281da](https://github.com/stashed/mongodb/commit/a3b281da) Prepare for release 3.4.22-v11 (#1062) +- [dc10d71e](https://github.com/stashed/mongodb/commit/dc10d71e) [cherry-pick] Update repository config (#1048) (#1050) +- [fbfb625d](https://github.com/stashed/mongodb/commit/fbfb625d) [cherry-pick] Update dependencies (#1035) (#1037) +- [2c3233ac](https://github.com/stashed/mongodb/commit/2c3233ac) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1022) + + +### [3.6.8-v11](https://github.com/stashed/mongodb/releases/tag/3.6.8-v11) + +- [bc0d14bf](https://github.com/stashed/mongodb/commit/bc0d14bf) Prepare for release 3.6.8-v11 (#1064) +- [011a6f25](https://github.com/stashed/mongodb/commit/011a6f25) [cherry-pick] Update repository config (#1048) (#1052) +- [0d27847f](https://github.com/stashed/mongodb/commit/0d27847f) [cherry-pick] Update dependencies (#1035) (#1039) +- [0f97d428](https://github.com/stashed/mongodb/commit/0f97d428) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1024) + + +### [3.6.13-v11](https://github.com/stashed/mongodb/releases/tag/3.6.13-v11) + +- [cc1fc58f](https://github.com/stashed/mongodb/commit/cc1fc58f) Prepare for release 3.6.13-v11 (#1063) +- [5db9d0e8](https://github.com/stashed/mongodb/commit/5db9d0e8) [cherry-pick] Update repository config (#1048) (#1051) +- [65bb29b5](https://github.com/stashed/mongodb/commit/65bb29b5) [cherry-pick] Update dependencies (#1035) (#1038) +- [7da6b51f](https://github.com/stashed/mongodb/commit/7da6b51f) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1023) + + +### [4.0.3-v11](https://github.com/stashed/mongodb/releases/tag/4.0.3-v11) + +- [5bb0e7fc](https://github.com/stashed/mongodb/commit/5bb0e7fc) Prepare for release 4.0.3-v11 (#1066) +- [790fe330](https://github.com/stashed/mongodb/commit/790fe330) [cherry-pick] Update repository config (#1048) (#1054) +- [d98a2c49](https://github.com/stashed/mongodb/commit/d98a2c49) [cherry-pick] Update dependencies (#1035) (#1041) +- [5415505d](https://github.com/stashed/mongodb/commit/5415505d) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1026) + + +### [4.0.5-v11](https://github.com/stashed/mongodb/releases/tag/4.0.5-v11) + +- [8dcb1644](https://github.com/stashed/mongodb/commit/8dcb1644) Prepare for release 4.0.5-v11 (#1067) +- [47025315](https://github.com/stashed/mongodb/commit/47025315) [cherry-pick] Update repository config (#1048) (#1055) +- [9dfdc8f3](https://github.com/stashed/mongodb/commit/9dfdc8f3) [cherry-pick] Update dependencies (#1035) (#1042) +- [14570445](https://github.com/stashed/mongodb/commit/14570445) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1027) + + +### [4.0.11-v11](https://github.com/stashed/mongodb/releases/tag/4.0.11-v11) + +- [77011222](https://github.com/stashed/mongodb/commit/77011222) Prepare for release 4.0.11-v11 (#1065) +- [ff0a8612](https://github.com/stashed/mongodb/commit/ff0a8612) [cherry-pick] Update repository config (#1048) (#1053) +- [e0f0aa94](https://github.com/stashed/mongodb/commit/e0f0aa94) [cherry-pick] Update dependencies (#1035) (#1040) +- [37097340](https://github.com/stashed/mongodb/commit/37097340) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1025) + + +### [4.1.4-v11](https://github.com/stashed/mongodb/releases/tag/4.1.4-v11) + +- [124f47e8](https://github.com/stashed/mongodb/commit/124f47e8) Prepare for release 4.1.4-v11 (#1069) +- [6f46f97e](https://github.com/stashed/mongodb/commit/6f46f97e) [cherry-pick] Update repository config (#1048) (#1057) +- [162e6c00](https://github.com/stashed/mongodb/commit/162e6c00) [cherry-pick] Update dependencies (#1035) (#1044) +- [b32b9b9b](https://github.com/stashed/mongodb/commit/b32b9b9b) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1029) + + +### [4.1.7-v11](https://github.com/stashed/mongodb/releases/tag/4.1.7-v11) + +- [4f7007a4](https://github.com/stashed/mongodb/commit/4f7007a4) Prepare for release 4.1.7-v11 (#1070) +- [021825ea](https://github.com/stashed/mongodb/commit/021825ea) [cherry-pick] Update repository config (#1048) (#1058) +- [786843bc](https://github.com/stashed/mongodb/commit/786843bc) [cherry-pick] Update dependencies (#1035) (#1045) +- [bb3640a0](https://github.com/stashed/mongodb/commit/bb3640a0) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1030) + + +### [4.1.13-v11](https://github.com/stashed/mongodb/releases/tag/4.1.13-v11) + +- [d1e1bb66](https://github.com/stashed/mongodb/commit/d1e1bb66) Prepare for release 4.1.13-v11 (#1068) +- [cf602e44](https://github.com/stashed/mongodb/commit/cf602e44) [cherry-pick] Update repository config (#1048) (#1056) +- [617ff56d](https://github.com/stashed/mongodb/commit/617ff56d) [cherry-pick] Update dependencies (#1035) (#1043) +- [c223aa7b](https://github.com/stashed/mongodb/commit/c223aa7b) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1028) + + +### [4.2.3-v11](https://github.com/stashed/mongodb/releases/tag/4.2.3-v11) + +- [0565d9c9](https://github.com/stashed/mongodb/commit/0565d9c9) Prepare for release 4.2.3-v11 (#1071) +- [3d52ffd2](https://github.com/stashed/mongodb/commit/3d52ffd2) [cherry-pick] Update repository config (#1048) (#1059) +- [983dc6b0](https://github.com/stashed/mongodb/commit/983dc6b0) [cherry-pick] Update dependencies (#1035) (#1046) +- [df3c1e5b](https://github.com/stashed/mongodb/commit/df3c1e5b) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1031) + + +### [4.4.6-v2](https://github.com/stashed/mongodb/releases/tag/4.4.6-v2) + +- [ccdb092c](https://github.com/stashed/mongodb/commit/ccdb092c) [cherry-pick] Update repository config (#1048) (#1060) +- [e54137e6](https://github.com/stashed/mongodb/commit/e54137e6) [cherry-pick] Update dependencies (#1035) (#1047) +- [8c036539](https://github.com/stashed/mongodb/commit/8c036539) [cherry-pick] Use restic v0.12.0-ac.20210727 (#1020) (#1032) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v12](https://github.com/stashed/mysql/releases/tag/5.7.25-v12) + +- [48b8c389](https://github.com/stashed/mysql/commit/48b8c389) Prepare for release 5.7.25-v12 (#455) +- [2228e027](https://github.com/stashed/mysql/commit/2228e027) [cherry-pick] Update repository config (#450) (#451) +- [da7063a4](https://github.com/stashed/mysql/commit/da7063a4) [cherry-pick] Update dependencies (#445) (#446) +- [6b633d68](https://github.com/stashed/mysql/commit/6b633d68) [cherry-pick] Use restic v0.12.0-ac.20210727 (#438) (#439) + + +### [8.0.3-v12](https://github.com/stashed/mysql/releases/tag/8.0.3-v12) + +- [10f7c4b7](https://github.com/stashed/mysql/commit/10f7c4b7) Prepare for release 8.0.3-v12 (#458) +- [eb0c962a](https://github.com/stashed/mysql/commit/eb0c962a) [cherry-pick] Update repository config (#450) (#454) +- [cb1fa41d](https://github.com/stashed/mysql/commit/cb1fa41d) [cherry-pick] Update dependencies (#445) (#449) +- [705a5eb3](https://github.com/stashed/mysql/commit/705a5eb3) [cherry-pick] Use restic v0.12.0-ac.20210727 (#438) (#442) + + +### [8.0.14-v12](https://github.com/stashed/mysql/releases/tag/8.0.14-v12) + +- [8dcf9109](https://github.com/stashed/mysql/commit/8dcf9109) Prepare for release 8.0.14-v12 (#456) +- [0b899336](https://github.com/stashed/mysql/commit/0b899336) [cherry-pick] Update repository config (#450) (#452) +- [156e4650](https://github.com/stashed/mysql/commit/156e4650) [cherry-pick] Update dependencies (#445) (#447) +- [373511ed](https://github.com/stashed/mysql/commit/373511ed) [cherry-pick] Use restic v0.12.0-ac.20210727 (#438) (#440) + + +### [8.0.21-v6](https://github.com/stashed/mysql/releases/tag/8.0.21-v6) + +- [2a424f32](https://github.com/stashed/mysql/commit/2a424f32) Prepare for release 8.0.21-v6 (#457) +- [545ab090](https://github.com/stashed/mysql/commit/545ab090) [cherry-pick] Update repository config (#450) (#453) +- [01144457](https://github.com/stashed/mysql/commit/01144457) [cherry-pick] Update dependencies (#445) (#448) +- [64ba0a79](https://github.com/stashed/mysql/commit/64ba0a79) [cherry-pick] Use restic v0.12.0-ac.20210727 (#438) (#441) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v7](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v7) + +- [4b3634a7](https://github.com/stashed/percona-xtradb/commit/4b3634a7) Prepare for release 5.7-v7 (#193) +- [22f2e507](https://github.com/stashed/percona-xtradb/commit/22f2e507) [cherry-pick] Update repository config (#191) (#192) +- [7a67ec51](https://github.com/stashed/percona-xtradb/commit/7a67ec51) [cherry-pick] Use restic v0.12.0-ac.20210727 (#186) (#187) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v10](https://github.com/stashed/postgres/releases/tag/9.6.19-v10) + +- [c87db716](https://github.com/stashed/postgres/commit/c87db716) Prepare for release 9.6.19-v10 (#843) +- [0e241018](https://github.com/stashed/postgres/commit/0e241018) [cherry-pick] Update repository config (#833) (#838) +- [b076f970](https://github.com/stashed/postgres/commit/b076f970) [cherry-pick] Update dependencies (#827) (#832) +- [2e6829c1](https://github.com/stashed/postgres/commit/2e6829c1) [cherry-pick] Use restic v0.12.0-ac.20210727 (#819) (#824) + + +### [10.14-v10](https://github.com/stashed/postgres/releases/tag/10.14-v10) + +- [3687c604](https://github.com/stashed/postgres/commit/3687c604) Prepare for release 10.14-v10 (#839) +- [a48fb0b2](https://github.com/stashed/postgres/commit/a48fb0b2) [cherry-pick] Update repository config (#833) (#834) +- [72793d2a](https://github.com/stashed/postgres/commit/72793d2a) [cherry-pick] Update dependencies (#827) (#828) +- [b0ef05d7](https://github.com/stashed/postgres/commit/b0ef05d7) [cherry-pick] Use restic v0.12.0-ac.20210727 (#819) (#820) + + +### [11.9-v10](https://github.com/stashed/postgres/releases/tag/11.9-v10) + +- [ab70837f](https://github.com/stashed/postgres/commit/ab70837f) Prepare for release 11.9-v10 (#840) +- [496f0c91](https://github.com/stashed/postgres/commit/496f0c91) [cherry-pick] Update repository config (#833) (#835) +- [3f0af053](https://github.com/stashed/postgres/commit/3f0af053) [cherry-pick] Update dependencies (#827) (#829) +- [6f82d7cd](https://github.com/stashed/postgres/commit/6f82d7cd) [cherry-pick] Use restic v0.12.0-ac.20210727 (#819) (#821) + + +### [12.4-v10](https://github.com/stashed/postgres/releases/tag/12.4-v10) + +- [1a911490](https://github.com/stashed/postgres/commit/1a911490) Prepare for release 12.4-v10 (#841) +- [1319792a](https://github.com/stashed/postgres/commit/1319792a) [cherry-pick] Update repository config (#833) (#836) +- [79b20b79](https://github.com/stashed/postgres/commit/79b20b79) [cherry-pick] Update dependencies (#827) (#830) +- [a7cf8a2b](https://github.com/stashed/postgres/commit/a7cf8a2b) [cherry-pick] Use restic v0.12.0-ac.20210727 (#819) (#822) + + +### [13.1-v7](https://github.com/stashed/postgres/releases/tag/13.1-v7) + +- [949be085](https://github.com/stashed/postgres/commit/949be085) Prepare for release 13.1-v7 (#842) +- [2c2642d1](https://github.com/stashed/postgres/commit/2c2642d1) [cherry-pick] Update repository config (#833) (#837) +- [2dc6e0e3](https://github.com/stashed/postgres/commit/2dc6e0e3) [cherry-pick] Update dependencies (#827) (#831) +- [f07a6f91](https://github.com/stashed/postgres/commit/f07a6f91) [cherry-pick] Use restic v0.12.0-ac.20210727 (#819) (#823) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13](https://github.com/stashed/redis/releases/tag/5.0.13) + +- [8aef207](https://github.com/stashed/redis/commit/8aef207) Prepare for release 5.0.13 (#5) +- [eef7933](https://github.com/stashed/redis/commit/eef7933) Update repository config (#2) (#3) +- [628dbb1](https://github.com/stashed/redis/commit/628dbb1) Use redis:5.0.13 as base image +- [7d4bfee](https://github.com/stashed/redis/commit/7d4bfee) Make Redis addon ready to use (#1) + + +### [6.2.5](https://github.com/stashed/redis/releases/tag/6.2.5) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.15.0](https://github.com/stashed/stash/releases/tag/v0.15.0) + +- [f1484b5d](https://github.com/stashed/stash/commit/f1484b5d) Prepare for release v0.15.0 (#1372) +- [20291868](https://github.com/stashed/stash/commit/20291868) Improve duration format in BackupSession and RestoreSession (#1370) +- [99e2624b](https://github.com/stashed/stash/commit/99e2624b) Update repository config (#1371) +- [90686853](https://github.com/stashed/stash/commit/90686853) Update dependencies (#1369) +- [3c7b0593](https://github.com/stashed/stash/commit/3c7b0593) Use restic v0.12.0-ac.20210727 (#1366) +- [76715e4c](https://github.com/stashed/stash/commit/76715e4c) Remove repetitive 403 errors from validator and mutators +- [c987ee1a](https://github.com/stashed/stash/commit/c987ee1a) Pass `region` flag in the built-in functions (#1363) +- [fc2e7fb4](https://github.com/stashed/stash/commit/fc2e7fb4) Stop using deprecated apis in k8s 1.22 (#1362) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.10.11.md b/content/docs/v2024.8.27/CHANGELOG-v2021.10.11.md new file mode 100644 index 0000000000..c0813cfa9b --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.10.11.md @@ -0,0 +1,916 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.10.11 + name: Changelog-v2021.10.11 + parent: welcome + weight: 20211011 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.10.11/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.10.11/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.10.11 (2021-10-09) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.16.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.16.0) + +- [34fe50bb](https://github.com/appscode/stash-enterprise/commit/34fe50bb) Prepare for release v0.16.0 (#126) +- [4807ec4c](https://github.com/appscode/stash-enterprise/commit/4807ec4c) Fix jwt-go security vulnerability (#125) +- [f1160998](https://github.com/appscode/stash-enterprise/commit/f1160998) Merge pull request #123 from appscode/etcd-permission +- [ce3cd3f8](https://github.com/appscode/stash-enterprise/commit/ce3cd3f8) Add support for ETCD restore flow +- [834d8c13](https://github.com/appscode/stash-enterprise/commit/834d8c13) Use nats.go v1.13.0 (#124) +- [446ee320](https://github.com/appscode/stash-enterprise/commit/446ee320) Update dependencies to publish SiteInfo (#122) +- [5d56e0f6](https://github.com/appscode/stash-enterprise/commit/5d56e0f6) Support passing args to restic backup/restore command (#120) +- [f10ab0dc](https://github.com/appscode/stash-enterprise/commit/f10ab0dc) Fix license-reader ClusterRoleBinding not cleaning up properly +- [dffe5c41](https://github.com/appscode/stash-enterprise/commit/dffe5c41) Update go.mod +- [c124a770](https://github.com/appscode/stash-enterprise/commit/c124a770) Undo changes of jobs.go +- [cc7f4827](https://github.com/appscode/stash-enterprise/commit/cc7f4827) fix clusterrolebinding issue +- [13ed9752](https://github.com/appscode/stash-enterprise/commit/13ed9752) Log warning if Community License is used with non-demo namespace (#119) +- [0026511c](https://github.com/appscode/stash-enterprise/commit/0026511c) Merge pull request #117 from appscode/fix-cronjob-name-prefix +- [ba3f466c](https://github.com/appscode/stash-enterprise/commit/ba3f466c) Use `stash-trigger` as backup triggering CronJob name prefix +- [d353c393](https://github.com/appscode/stash-enterprise/commit/d353c393) Use official restic v0.12.1 (#116) +- [e9b1db7e](https://github.com/appscode/stash-enterprise/commit/e9b1db7e) Update repository config (#115) +- [ea1895fc](https://github.com/appscode/stash-enterprise/commit/ea1895fc) Update dependencies (#114) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.16.0](https://github.com/stashed/apimachinery/releases/tag/v0.16.0) + +- [e5b1aaea](https://github.com/stashed/apimachinery/commit/e5b1aaea) Fix jwt-go security vulnerability (#129) +- [065a6d36](https://github.com/stashed/apimachinery/commit/065a6d36) Fix jwt-go security vulnerability (#128) +- [561988c6](https://github.com/stashed/apimachinery/commit/561988c6) Add condition for indicating restore completion (#127) +- [3ddabb57](https://github.com/stashed/apimachinery/commit/3ddabb57) Add "Running" phase for the individual restore host (#126) +- [1c75b4ce](https://github.com/stashed/apimachinery/commit/1c75b4ce) Support passing arguments to restic backup/restore command (#121) +- [307b411a](https://github.com/stashed/apimachinery/commit/307b411a) Update dependencies to publish SiteInfo (#125) +- [ce72641a](https://github.com/stashed/apimachinery/commit/ce72641a) Update dependencies to publish SiteInfo (#124) +- [322437d9](https://github.com/stashed/apimachinery/commit/322437d9) Show actual repo size instead of logical size (#123) +- [5e773145](https://github.com/stashed/apimachinery/commit/5e773145) Return new labels by EnsureKubeDBIntegration function (#122) +- [908628b7](https://github.com/stashed/apimachinery/commit/908628b7) Update repository config (#120) +- [a7994a77](https://github.com/stashed/apimachinery/commit/a7994a77) Add `ADDON_IMAGE` variable for Etcd Addons +- [16529919](https://github.com/stashed/apimachinery/commit/16529919) Run `make fmt` +- [78077d32](https://github.com/stashed/apimachinery/commit/78077d32) Merge branch 'master' into etcd-flag +- [163e7863](https://github.com/stashed/apimachinery/commit/163e7863) Set RESTIC_PROGRESS_FPS in restic wrapper shell +- [b0983010](https://github.com/stashed/apimachinery/commit/b0983010) Merge branch 'master' into progress-fps +- [72b73523](https://github.com/stashed/apimachinery/commit/72b73523) Log warning if Community License is used with non-demo namespace (#119) +- [2eecfe50](https://github.com/stashed/apimachinery/commit/2eecfe50) Merge branch 'master' into etcd-flag +- [b0141c12](https://github.com/stashed/apimachinery/commit/b0141c12) Add addon image flag +- [c1e37507](https://github.com/stashed/apimachinery/commit/c1e37507) Set RESTIC_PROGRESS_FPS in restic wrapper shell +- [fda29913](https://github.com/stashed/apimachinery/commit/fda29913) Merge pull request #116 from stashed/fix-cronjob-name-prefix +- [8cbe8b9d](https://github.com/stashed/apimachinery/commit/8cbe8b9d) Add constants for backup triggering CronJob +- [78e6bc8c](https://github.com/stashed/apimachinery/commit/78e6bc8c) Use official restic v0.12.1 (#115) +- [01704d74](https://github.com/stashed/apimachinery/commit/01704d74) Update repository config (#114) +- [d9f1899d](https://github.com/stashed/apimachinery/commit/d9f1899d) Update dependencies (#113) +- [639e36ec](https://github.com/stashed/apimachinery/commit/639e36ec) Update dependencies (#112) +- [ffb5a0c7](https://github.com/stashed/apimachinery/commit/ffb5a0c7) Update dependencies (#111) +- [cdbb8e52](https://github.com/stashed/apimachinery/commit/cdbb8e52) Update repository config (#110) +- [ae94693a](https://github.com/stashed/apimachinery/commit/ae94693a) Update repository config (#109) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.16.0](https://github.com/stashed/cli/releases/tag/v0.16.0) + +- [1fb811f](https://github.com/stashed/cli/commit/1fb811f) Prepare for release v0.16.0 (#142) +- [c1b8251](https://github.com/stashed/cli/commit/c1b8251) Fix jwt-go security vulnerability (#141) +- [23689bb](https://github.com/stashed/cli/commit/23689bb) Fix jwt-go security vulnerability (#140) +- [fc3ffb8](https://github.com/stashed/cli/commit/fc3ffb8) Set restic docker image tag from Makefile during build (#137) +- [56a8b85](https://github.com/stashed/cli/commit/56a8b85) Update dependencies to publish SiteInfo (#139) +- [d8df9e8](https://github.com/stashed/cli/commit/d8df9e8) Update dependencies to publish SiteInfo (#138) +- [c7fb370](https://github.com/stashed/cli/commit/c7fb370) Log warning if Community License is used with non-demo namespace (#136) +- [11397c0](https://github.com/stashed/cli/commit/11397c0) Use official restic v0.12.1 (#135) +- [24ae84f](https://github.com/stashed/cli/commit/24ae84f) Update dependencies (#134) +- [91ab122](https://github.com/stashed/cli/commit/91ab122) Update repository config (#133) +- [47ca564](https://github.com/stashed/cli/commit/47ca564) Update dependencies (#132) +- [3d1a293](https://github.com/stashed/cli/commit/3d1a293) Update dependencies (#131) +- [f9b4bcc](https://github.com/stashed/cli/commit/f9b4bcc) Update dependencies (#130) +- [b2331c7](https://github.com/stashed/cli/commit/b2331c7) Update README.md + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v13](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v13) + +- [a5d62837](https://github.com/stashed/elasticsearch/commit/a5d62837) Prepare for release 5.6.4-v13 (#1008) +- [3ef20d48](https://github.com/stashed/elasticsearch/commit/3ef20d48) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1000) +- [39c89194](https://github.com/stashed/elasticsearch/commit/39c89194) [cherry-pick] Fix jwt-go security vulnerability (#990) (#991) +- [574f3b1e](https://github.com/stashed/elasticsearch/commit/574f3b1e) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#982) +- [ec0d1986](https://github.com/stashed/elasticsearch/commit/ec0d1986) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#973) +- [55047964](https://github.com/stashed/elasticsearch/commit/55047964) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#964) +- [18921116](https://github.com/stashed/elasticsearch/commit/18921116) [cherry-pick] Use official restic v0.12.1 (#954) (#955) +- [2b482d40](https://github.com/stashed/elasticsearch/commit/2b482d40) [cherry-pick] Update repository config (#945) (#946) +- [99db22ab](https://github.com/stashed/elasticsearch/commit/99db22ab) [cherry-pick] Update dependencies (#936) (#937) +- [e7432088](https://github.com/stashed/elasticsearch/commit/e7432088) [cherry-pick] Update dependencies (#927) (#928) +- [d996b55c](https://github.com/stashed/elasticsearch/commit/d996b55c) [cherry-pick] Update dependencies (#918) (#919) +- [6f441147](https://github.com/stashed/elasticsearch/commit/6f441147) [cherry-pick] Use user nobody (#910) +- [82d15a3c](https://github.com/stashed/elasticsearch/commit/82d15a3c) [cherry-pick] Update repository config (#901) (#902) +- [6f9313e9](https://github.com/stashed/elasticsearch/commit/6f9313e9) [cherry-pick] Update repository config (#892) (#893) +- [dce43d88](https://github.com/stashed/elasticsearch/commit/dce43d88) [cherry-pick] Update README.md (#884) + + +### [6.2.4-v13](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v13) + +- [6a8aa63a](https://github.com/stashed/elasticsearch/commit/6a8aa63a) Prepare for release 6.2.4-v13 (#1009) +- [728caef7](https://github.com/stashed/elasticsearch/commit/728caef7) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1001) +- [c3732a8d](https://github.com/stashed/elasticsearch/commit/c3732a8d) [cherry-pick] Fix jwt-go security vulnerability (#990) (#992) +- [4a661d0d](https://github.com/stashed/elasticsearch/commit/4a661d0d) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#983) +- [b25f24a1](https://github.com/stashed/elasticsearch/commit/b25f24a1) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#974) +- [34810993](https://github.com/stashed/elasticsearch/commit/34810993) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#965) +- [e712025c](https://github.com/stashed/elasticsearch/commit/e712025c) [cherry-pick] Use official restic v0.12.1 (#954) (#956) +- [5dc9f263](https://github.com/stashed/elasticsearch/commit/5dc9f263) [cherry-pick] Update repository config (#945) (#947) +- [dfe8fea8](https://github.com/stashed/elasticsearch/commit/dfe8fea8) [cherry-pick] Update dependencies (#936) (#938) +- [80b9a9e1](https://github.com/stashed/elasticsearch/commit/80b9a9e1) [cherry-pick] Update dependencies (#927) (#929) +- [fb0de16f](https://github.com/stashed/elasticsearch/commit/fb0de16f) [cherry-pick] Update dependencies (#918) (#920) +- [5fe518c1](https://github.com/stashed/elasticsearch/commit/5fe518c1) [cherry-pick] Use user nobody (#911) +- [894726f9](https://github.com/stashed/elasticsearch/commit/894726f9) [cherry-pick] Update repository config (#901) (#903) +- [ce7890c4](https://github.com/stashed/elasticsearch/commit/ce7890c4) [cherry-pick] Update repository config (#892) (#894) +- [26be85b5](https://github.com/stashed/elasticsearch/commit/26be85b5) [cherry-pick] Update README.md (#885) + + +### [6.3.0-v13](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v13) + +- [44e2c7ff](https://github.com/stashed/elasticsearch/commit/44e2c7ff) Prepare for release 6.3.0-v13 (#1010) +- [dcddfb30](https://github.com/stashed/elasticsearch/commit/dcddfb30) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1002) +- [c1dc901b](https://github.com/stashed/elasticsearch/commit/c1dc901b) [cherry-pick] Fix jwt-go security vulnerability (#990) (#993) +- [40735b41](https://github.com/stashed/elasticsearch/commit/40735b41) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#984) +- [06771a08](https://github.com/stashed/elasticsearch/commit/06771a08) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#975) +- [391387dd](https://github.com/stashed/elasticsearch/commit/391387dd) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#966) +- [45848135](https://github.com/stashed/elasticsearch/commit/45848135) [cherry-pick] Use official restic v0.12.1 (#954) (#957) +- [06071809](https://github.com/stashed/elasticsearch/commit/06071809) [cherry-pick] Update repository config (#945) (#948) +- [c0126494](https://github.com/stashed/elasticsearch/commit/c0126494) [cherry-pick] Update dependencies (#936) (#939) +- [43c57d7b](https://github.com/stashed/elasticsearch/commit/43c57d7b) [cherry-pick] Update dependencies (#927) (#930) +- [48f21786](https://github.com/stashed/elasticsearch/commit/48f21786) [cherry-pick] Update dependencies (#918) (#921) +- [72ef8aa8](https://github.com/stashed/elasticsearch/commit/72ef8aa8) [cherry-pick] Use user nobody (#912) +- [dd22de7f](https://github.com/stashed/elasticsearch/commit/dd22de7f) [cherry-pick] Update repository config (#901) (#904) +- [24f633df](https://github.com/stashed/elasticsearch/commit/24f633df) [cherry-pick] Update repository config (#892) (#895) +- [5c79be0b](https://github.com/stashed/elasticsearch/commit/5c79be0b) [cherry-pick] Update README.md (#886) + + +### [6.4.0-v13](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v13) + +- [707710bb](https://github.com/stashed/elasticsearch/commit/707710bb) Prepare for release 6.4.0-v13 (#1011) +- [77479b55](https://github.com/stashed/elasticsearch/commit/77479b55) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1003) +- [fc6a5ced](https://github.com/stashed/elasticsearch/commit/fc6a5ced) [cherry-pick] Fix jwt-go security vulnerability (#990) (#994) +- [5969c9f8](https://github.com/stashed/elasticsearch/commit/5969c9f8) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#985) +- [262a6e36](https://github.com/stashed/elasticsearch/commit/262a6e36) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#976) +- [d38bd407](https://github.com/stashed/elasticsearch/commit/d38bd407) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#967) +- [3de0c455](https://github.com/stashed/elasticsearch/commit/3de0c455) [cherry-pick] Use official restic v0.12.1 (#954) (#958) +- [27182793](https://github.com/stashed/elasticsearch/commit/27182793) [cherry-pick] Update repository config (#945) (#949) +- [5d10b2a3](https://github.com/stashed/elasticsearch/commit/5d10b2a3) [cherry-pick] Update dependencies (#936) (#940) +- [e95882f5](https://github.com/stashed/elasticsearch/commit/e95882f5) [cherry-pick] Update dependencies (#927) (#931) +- [772ccfa0](https://github.com/stashed/elasticsearch/commit/772ccfa0) [cherry-pick] Update dependencies (#918) (#922) +- [aa751b23](https://github.com/stashed/elasticsearch/commit/aa751b23) [cherry-pick] Use user nobody (#913) +- [73980641](https://github.com/stashed/elasticsearch/commit/73980641) [cherry-pick] Update repository config (#901) (#905) +- [02407a60](https://github.com/stashed/elasticsearch/commit/02407a60) [cherry-pick] Update repository config (#892) (#896) +- [0265d8de](https://github.com/stashed/elasticsearch/commit/0265d8de) [cherry-pick] Update README.md (#887) + + +### [6.5.3-v13](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v13) + +- [9d2383dd](https://github.com/stashed/elasticsearch/commit/9d2383dd) Prepare for release 6.5.3-v13 (#1012) +- [79fd12e8](https://github.com/stashed/elasticsearch/commit/79fd12e8) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1004) +- [a2e64544](https://github.com/stashed/elasticsearch/commit/a2e64544) [cherry-pick] Fix jwt-go security vulnerability (#990) (#995) +- [abf9549c](https://github.com/stashed/elasticsearch/commit/abf9549c) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#986) +- [b2b0b18e](https://github.com/stashed/elasticsearch/commit/b2b0b18e) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#977) +- [faac9e7d](https://github.com/stashed/elasticsearch/commit/faac9e7d) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#968) +- [09962313](https://github.com/stashed/elasticsearch/commit/09962313) [cherry-pick] Use official restic v0.12.1 (#954) (#959) +- [c71ba67a](https://github.com/stashed/elasticsearch/commit/c71ba67a) [cherry-pick] Update repository config (#945) (#950) +- [58f1375a](https://github.com/stashed/elasticsearch/commit/58f1375a) [cherry-pick] Update dependencies (#936) (#941) +- [b5ed5ab1](https://github.com/stashed/elasticsearch/commit/b5ed5ab1) [cherry-pick] Update dependencies (#927) (#932) +- [ab50d2f2](https://github.com/stashed/elasticsearch/commit/ab50d2f2) [cherry-pick] Update dependencies (#918) (#923) +- [4d19922a](https://github.com/stashed/elasticsearch/commit/4d19922a) [cherry-pick] Use user nobody (#914) +- [dc86a75d](https://github.com/stashed/elasticsearch/commit/dc86a75d) [cherry-pick] Update repository config (#901) (#906) +- [66505f2b](https://github.com/stashed/elasticsearch/commit/66505f2b) [cherry-pick] Update repository config (#892) (#897) +- [637c07d9](https://github.com/stashed/elasticsearch/commit/637c07d9) [cherry-pick] Update README.md (#888) + + +### [6.8.0-v13](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v13) + +- [db01c3b5](https://github.com/stashed/elasticsearch/commit/db01c3b5) Prepare for release 6.8.0-v13 (#1013) +- [5812e424](https://github.com/stashed/elasticsearch/commit/5812e424) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1005) +- [20c76b9f](https://github.com/stashed/elasticsearch/commit/20c76b9f) [cherry-pick] Fix jwt-go security vulnerability (#990) (#996) +- [439837e1](https://github.com/stashed/elasticsearch/commit/439837e1) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#987) +- [1899770a](https://github.com/stashed/elasticsearch/commit/1899770a) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#978) +- [4ca69b25](https://github.com/stashed/elasticsearch/commit/4ca69b25) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#969) +- [0612ea32](https://github.com/stashed/elasticsearch/commit/0612ea32) [cherry-pick] Use official restic v0.12.1 (#954) (#960) +- [b832eeba](https://github.com/stashed/elasticsearch/commit/b832eeba) [cherry-pick] Update repository config (#945) (#951) +- [0438c6cd](https://github.com/stashed/elasticsearch/commit/0438c6cd) [cherry-pick] Update dependencies (#936) (#942) +- [a2f87a3c](https://github.com/stashed/elasticsearch/commit/a2f87a3c) [cherry-pick] Update dependencies (#927) (#933) +- [08c0717e](https://github.com/stashed/elasticsearch/commit/08c0717e) [cherry-pick] Update dependencies (#918) (#924) +- [04cc7905](https://github.com/stashed/elasticsearch/commit/04cc7905) [cherry-pick] Use user nobody (#915) +- [a9f017dc](https://github.com/stashed/elasticsearch/commit/a9f017dc) [cherry-pick] Update repository config (#901) (#907) +- [4f505600](https://github.com/stashed/elasticsearch/commit/4f505600) [cherry-pick] Update repository config (#892) (#898) +- [1a64b3ee](https://github.com/stashed/elasticsearch/commit/1a64b3ee) [cherry-pick] Update README.md (#889) + + +### [7.2.0-v13](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v13) + +- [55abc7a5](https://github.com/stashed/elasticsearch/commit/55abc7a5) Prepare for release 7.2.0-v13 (#1014) +- [aa2b8e05](https://github.com/stashed/elasticsearch/commit/aa2b8e05) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1006) +- [8b4d6db6](https://github.com/stashed/elasticsearch/commit/8b4d6db6) [cherry-pick] Fix jwt-go security vulnerability (#990) (#997) +- [d7fb74a3](https://github.com/stashed/elasticsearch/commit/d7fb74a3) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#988) +- [fc8fd676](https://github.com/stashed/elasticsearch/commit/fc8fd676) Update dependencies to publish SiteInfo (#972) (#979) +- [7a3b314c](https://github.com/stashed/elasticsearch/commit/7a3b314c) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#970) +- [d37ac3ba](https://github.com/stashed/elasticsearch/commit/d37ac3ba) [cherry-pick] Use official restic v0.12.1 (#954) (#961) +- [bf69bd17](https://github.com/stashed/elasticsearch/commit/bf69bd17) [cherry-pick] Update repository config (#945) (#952) +- [7b9d74d0](https://github.com/stashed/elasticsearch/commit/7b9d74d0) [cherry-pick] Update dependencies (#936) (#943) +- [50dd7353](https://github.com/stashed/elasticsearch/commit/50dd7353) [cherry-pick] Update dependencies (#927) (#934) +- [bc45e6a3](https://github.com/stashed/elasticsearch/commit/bc45e6a3) [cherry-pick] Update dependencies (#918) (#925) +- [7ef1c360](https://github.com/stashed/elasticsearch/commit/7ef1c360) [cherry-pick] Use user nobody (#916) +- [1ddfc17c](https://github.com/stashed/elasticsearch/commit/1ddfc17c) [cherry-pick] Update repository config (#901) (#908) +- [87806973](https://github.com/stashed/elasticsearch/commit/87806973) [cherry-pick] Update repository config (#892) (#899) +- [c30a871f](https://github.com/stashed/elasticsearch/commit/c30a871f) [cherry-pick] Update README.md (#890) + + +### [7.3.2-v13](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v13) + +- [f5019d83](https://github.com/stashed/elasticsearch/commit/f5019d83) Prepare for release 7.3.2-v13 (#1015) +- [5e2009c0](https://github.com/stashed/elasticsearch/commit/5e2009c0) [cherry-pick] Fix jwt-go security vulnerability (#999) (#1007) +- [2aa85efa](https://github.com/stashed/elasticsearch/commit/2aa85efa) [cherry-pick] Fix jwt-go security vulnerability (#990) (#998) +- [bd6bd091](https://github.com/stashed/elasticsearch/commit/bd6bd091) [cherry-pick] Update dependencies to publish SiteInfo (#981) (#989) +- [50138325](https://github.com/stashed/elasticsearch/commit/50138325) [cherry-pick] Update dependencies to publish SiteInfo (#972) (#980) +- [a8647cc3](https://github.com/stashed/elasticsearch/commit/a8647cc3) [cherry-pick] Log warning if Community License is used with non-demo namespace (#963) (#971) +- [317f6480](https://github.com/stashed/elasticsearch/commit/317f6480) [cherry-pick] Use official restic v0.12.1 (#954) (#962) +- [c237ef12](https://github.com/stashed/elasticsearch/commit/c237ef12) [cherry-pick] Update repository config (#945) (#953) +- [db0796c2](https://github.com/stashed/elasticsearch/commit/db0796c2) [cherry-pick] Update dependencies (#936) (#944) +- [b35640e9](https://github.com/stashed/elasticsearch/commit/b35640e9) [cherry-pick] Update dependencies (#927) (#935) +- [d7364e5f](https://github.com/stashed/elasticsearch/commit/d7364e5f) [cherry-pick] Update dependencies (#918) (#926) +- [b6bc1e06](https://github.com/stashed/elasticsearch/commit/b6bc1e06) [cherry-pick] Use user nobody (#917) +- [8f275fc7](https://github.com/stashed/elasticsearch/commit/8f275fc7) [cherry-pick] Update repository config (#901) (#909) +- [204da528](https://github.com/stashed/elasticsearch/commit/204da528) [cherry-pick] Update repository config (#892) (#900) +- [17519e39](https://github.com/stashed/elasticsearch/commit/17519e39) [cherry-pick] Update README.md (#891) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0](https://github.com/stashed/etcd/releases/tag/3.5.0) + +- [4c83a10](https://github.com/stashed/etcd/commit/4c83a10) Prepare for release 3.5.0 (#9) +- [1dbf3b1](https://github.com/stashed/etcd/commit/1dbf3b1) Fix jwt-go security vulnerability (#7) (#8) +- [fbcc997](https://github.com/stashed/etcd/commit/fbcc997) Fix jwt-go security vulnerability (#5) (#6) +- [e0919f1](https://github.com/stashed/etcd/commit/e0919f1) Use restic 0.12.1 (#4) +- [f7b65eb](https://github.com/stashed/etcd/commit/f7b65eb) Update repository config (#3) +- [a2e9055](https://github.com/stashed/etcd/commit/a2e9055) Add etcd v3.5.0 addon to Stash (#2) +- [517d580](https://github.com/stashed/etcd/commit/517d580) Merge pull request #1 from stashed/global-replace +- [643ff4b](https://github.com/stashed/etcd/commit/643ff4b) Global replace Redis with Etcd +- [6d880e0](https://github.com/stashed/etcd/commit/6d880e0) Use user nobody +- [5252385](https://github.com/stashed/etcd/commit/5252385) Update repository config (#11) +- [f6dc027](https://github.com/stashed/etcd/commit/f6dc027) Update repository config (#8) +- [d68710e](https://github.com/stashed/etcd/commit/d68710e) Prepare for release v2021.08.02 (#7) +- [1772bc7](https://github.com/stashed/etcd/commit/1772bc7) Update repository config (#2) +- [7d4bfee](https://github.com/stashed/etcd/commit/7d4bfee) Make Redis addon ready to use (#1) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.10.11](https://github.com/stashed/installer/releases/tag/v2021.10.11) + +- [0f063ad](https://github.com/stashed/installer/commit/0f063ad) Prepare for release v2021.10.11 (#210) +- [0092c7e](https://github.com/stashed/installer/commit/0092c7e) Fix jwt-go security vulnerability (#209) +- [17e1fdc](https://github.com/stashed/installer/commit/17e1fdc) Fix jwt-go security vulnerability (#208) +- [01bf7cf](https://github.com/stashed/installer/commit/01bf7cf) Switch from nats 2.4.0 to 2.6.1 +- [30c5a63](https://github.com/stashed/installer/commit/30c5a63) Add etcd v3.5.0 addon to Stash (#195) +- [a088dcd](https://github.com/stashed/installer/commit/a088dcd) Add permission for SiteInfo publisher +- [a38d2b3](https://github.com/stashed/installer/commit/a38d2b3) Add mongodb `5.0.3` (#207) +- [bb1d956](https://github.com/stashed/installer/commit/bb1d956) Update dependencies to publish SiteInfo (#206) +- [48c528c](https://github.com/stashed/installer/commit/48c528c) Add Backup and Restore support for Postgres v14.0 (#205) +- [9ffc6aa](https://github.com/stashed/installer/commit/9ffc6aa) Add stash-metrics chart (#202) +- [0610818](https://github.com/stashed/installer/commit/0610818) Update repository config (#204) +- [7d3116e](https://github.com/stashed/installer/commit/7d3116e) Log warning if Community License is used with non-demo namespace (#203) +- [f0da2b3](https://github.com/stashed/installer/commit/f0da2b3) Use official restic v0.12.1 (#201) +- [01ecae5](https://github.com/stashed/installer/commit/01ecae5) Add mongodb 5.0.2 backup tasks (#200) +- [37eec67](https://github.com/stashed/installer/commit/37eec67) Add catalogs for NATS addon (#196) +- [9d585cd](https://github.com/stashed/installer/commit/9d585cd) Update repository config (#199) +- [ba6c6e8](https://github.com/stashed/installer/commit/ba6c6e8) Update dependencies (#198) +- [cd8b2d0](https://github.com/stashed/installer/commit/cd8b2d0) Update dependencies (#197) +- [9d47a48](https://github.com/stashed/installer/commit/9d47a48) Update repository config (#194) +- [8775569](https://github.com/stashed/installer/commit/8775569) Update repository config (#193) +- [715ac99](https://github.com/stashed/installer/commit/715ac99) Update README.md + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v6](https://github.com/stashed/mariadb/releases/tag/10.5.8-v6) + +- [a4773a3](https://github.com/stashed/mariadb/commit/a4773a3) Prepare for release 10.5.8-v6 (#148) +- [eca6402](https://github.com/stashed/mariadb/commit/eca6402) [cherry-pick] Fix jwt-go security vulnerability (#146) (#147) +- [9570bdf](https://github.com/stashed/mariadb/commit/9570bdf) [cherry-pick] Fix jwt-go security vulnerability (#144) (#145) +- [f18b738](https://github.com/stashed/mariadb/commit/f18b738) Update dependencies to publish SiteInfo (#142) (#143) +- [df6e78c](https://github.com/stashed/mariadb/commit/df6e78c) [cherry-pick] Update dependencies to publish SiteInfo (#140) (#141) +- [3de3692](https://github.com/stashed/mariadb/commit/3de3692) [cherry-pick] Log warning if Community License is used with non-demo namespace (#138) (#139) +- [0f17ca3](https://github.com/stashed/mariadb/commit/0f17ca3) [cherry-pick] Use official restic v0.12.1 (#136) (#137) +- [197f346](https://github.com/stashed/mariadb/commit/197f346) [cherry-pick] Update repository config (#134) (#135) +- [7bc7aed](https://github.com/stashed/mariadb/commit/7bc7aed) [cherry-pick] Update dependencies (#132) (#133) +- [210ba94](https://github.com/stashed/mariadb/commit/210ba94) [cherry-pick] Update dependencies (#130) (#131) +- [1f29ad8](https://github.com/stashed/mariadb/commit/1f29ad8) [cherry-pick] Update dependencies (#128) (#129) +- [7342a45](https://github.com/stashed/mariadb/commit/7342a45) [cherry-pick] Use user nobody (#127) +- [3c1f773](https://github.com/stashed/mariadb/commit/3c1f773) [cherry-pick] Update repository config (#125) (#126) +- [a54da2f](https://github.com/stashed/mariadb/commit/a54da2f) [cherry-pick] Update repository config (#123) (#124) +- [ce30084](https://github.com/stashed/mariadb/commit/ce30084) [cherry-pick] Update README.md (#122) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v12](https://github.com/stashed/mongodb/releases/tag/3.4.17-v12) + +- [69628a86](https://github.com/stashed/mongodb/commit/69628a86) Prepare for release 3.4.17-v12 (#1264) +- [97ba7285](https://github.com/stashed/mongodb/commit/97ba7285) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1251) +- [325a3bd0](https://github.com/stashed/mongodb/commit/325a3bd0) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1237) +- [22a5fab9](https://github.com/stashed/mongodb/commit/22a5fab9) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1223) +- [8bf670e1](https://github.com/stashed/mongodb/commit/8bf670e1) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1209) +- [a431846c](https://github.com/stashed/mongodb/commit/a431846c) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1195) +- [c99cad39](https://github.com/stashed/mongodb/commit/c99cad39) [cherry-pick] Use official restic v0.12.1 (#1180) (#1181) +- [b0aefc96](https://github.com/stashed/mongodb/commit/b0aefc96) [cherry-pick] Update repository config (#1166) (#1167) +- [b930d20d](https://github.com/stashed/mongodb/commit/b930d20d) [cherry-pick] Update dependencies (#1152) (#1153) +- [56417b38](https://github.com/stashed/mongodb/commit/56417b38) [cherry-pick] Update dependencies (#1138) (#1139) +- [7bdd0832](https://github.com/stashed/mongodb/commit/7bdd0832) [cherry-pick] Update dependencies (#1124) (#1125) +- [867a70f1](https://github.com/stashed/mongodb/commit/867a70f1) [cherry-pick] Use user nobody (#1112) +- [528e1529](https://github.com/stashed/mongodb/commit/528e1529) [cherry-pick] Update repository config (#1099) (#1100) +- [0606c894](https://github.com/stashed/mongodb/commit/0606c894) [cherry-pick] Update repository config (#1086) (#1087) +- [2a9d8768](https://github.com/stashed/mongodb/commit/2a9d8768) [cherry-pick] Update README.md (#1074) + + +### [3.4.22-v12](https://github.com/stashed/mongodb/releases/tag/3.4.22-v12) + +- [06b5f60f](https://github.com/stashed/mongodb/commit/06b5f60f) Prepare for release 3.4.22-v12 (#1265) +- [7c5cf34a](https://github.com/stashed/mongodb/commit/7c5cf34a) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1252) +- [ec1b6cd9](https://github.com/stashed/mongodb/commit/ec1b6cd9) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1238) +- [bfef68dd](https://github.com/stashed/mongodb/commit/bfef68dd) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1224) +- [0360c8a4](https://github.com/stashed/mongodb/commit/0360c8a4) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1210) +- [b3978742](https://github.com/stashed/mongodb/commit/b3978742) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1196) +- [076e1c7f](https://github.com/stashed/mongodb/commit/076e1c7f) [cherry-pick] Use official restic v0.12.1 (#1180) (#1182) +- [5c2a16bc](https://github.com/stashed/mongodb/commit/5c2a16bc) [cherry-pick] Update repository config (#1166) (#1168) +- [ad1058d8](https://github.com/stashed/mongodb/commit/ad1058d8) [cherry-pick] Update dependencies (#1152) (#1154) +- [1d0b2d12](https://github.com/stashed/mongodb/commit/1d0b2d12) [cherry-pick] Update dependencies (#1138) (#1140) +- [9014381f](https://github.com/stashed/mongodb/commit/9014381f) [cherry-pick] Update dependencies (#1124) (#1126) +- [3ce9f548](https://github.com/stashed/mongodb/commit/3ce9f548) [cherry-pick] Use user nobody (#1113) +- [9d1a648b](https://github.com/stashed/mongodb/commit/9d1a648b) [cherry-pick] Update repository config (#1099) (#1101) +- [ebd987d5](https://github.com/stashed/mongodb/commit/ebd987d5) [cherry-pick] Update repository config (#1086) (#1088) +- [58baff2d](https://github.com/stashed/mongodb/commit/58baff2d) [cherry-pick] Update README.md (#1075) + + +### [3.6.8-v12](https://github.com/stashed/mongodb/releases/tag/3.6.8-v12) + +- [37362a0a](https://github.com/stashed/mongodb/commit/37362a0a) Prepare for release 3.6.8-v12 (#1267) +- [3638de4c](https://github.com/stashed/mongodb/commit/3638de4c) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1254) +- [ffd0e227](https://github.com/stashed/mongodb/commit/ffd0e227) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1240) +- [f2b1f979](https://github.com/stashed/mongodb/commit/f2b1f979) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1226) +- [d4b8f157](https://github.com/stashed/mongodb/commit/d4b8f157) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1212) +- [17c91aa8](https://github.com/stashed/mongodb/commit/17c91aa8) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1198) +- [4b2717a0](https://github.com/stashed/mongodb/commit/4b2717a0) [cherry-pick] Use official restic v0.12.1 (#1180) (#1184) +- [3f0f514c](https://github.com/stashed/mongodb/commit/3f0f514c) [cherry-pick] Update repository config (#1166) (#1170) +- [faba0d40](https://github.com/stashed/mongodb/commit/faba0d40) [cherry-pick] Update dependencies (#1152) (#1156) +- [62300371](https://github.com/stashed/mongodb/commit/62300371) [cherry-pick] Update dependencies (#1138) (#1142) +- [f4075d20](https://github.com/stashed/mongodb/commit/f4075d20) [cherry-pick] Update dependencies (#1124) (#1128) +- [24e77c90](https://github.com/stashed/mongodb/commit/24e77c90) [cherry-pick] Use user nobody (#1115) +- [386140af](https://github.com/stashed/mongodb/commit/386140af) [cherry-pick] Update repository config (#1099) (#1103) +- [f69c1d0f](https://github.com/stashed/mongodb/commit/f69c1d0f) [cherry-pick] Update repository config (#1086) (#1090) +- [86c0b41b](https://github.com/stashed/mongodb/commit/86c0b41b) [cherry-pick] Update README.md (#1077) + + +### [3.6.13-v12](https://github.com/stashed/mongodb/releases/tag/3.6.13-v12) + +- [532e72c7](https://github.com/stashed/mongodb/commit/532e72c7) Prepare for release 3.6.13-v12 (#1266) +- [b62cf94b](https://github.com/stashed/mongodb/commit/b62cf94b) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1253) +- [644f22b3](https://github.com/stashed/mongodb/commit/644f22b3) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1239) +- [dd2424be](https://github.com/stashed/mongodb/commit/dd2424be) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1225) +- [c5b0e852](https://github.com/stashed/mongodb/commit/c5b0e852) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1211) +- [b9e008b9](https://github.com/stashed/mongodb/commit/b9e008b9) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1197) +- [7e832b9d](https://github.com/stashed/mongodb/commit/7e832b9d) [cherry-pick] Use official restic v0.12.1 (#1180) (#1183) +- [9c515527](https://github.com/stashed/mongodb/commit/9c515527) [cherry-pick] Update repository config (#1166) (#1169) +- [6e59e006](https://github.com/stashed/mongodb/commit/6e59e006) [cherry-pick] Update dependencies (#1152) (#1155) +- [f168d3f3](https://github.com/stashed/mongodb/commit/f168d3f3) [cherry-pick] Update dependencies (#1138) (#1141) +- [e758e8e0](https://github.com/stashed/mongodb/commit/e758e8e0) [cherry-pick] Update dependencies (#1124) (#1127) +- [8a8d96e7](https://github.com/stashed/mongodb/commit/8a8d96e7) [cherry-pick] Use user nobody (#1114) +- [45ab9d0c](https://github.com/stashed/mongodb/commit/45ab9d0c) [cherry-pick] Update repository config (#1099) (#1102) +- [22e5dd21](https://github.com/stashed/mongodb/commit/22e5dd21) [cherry-pick] Update repository config (#1086) (#1089) +- [49dab901](https://github.com/stashed/mongodb/commit/49dab901) [cherry-pick] Update README.md (#1076) + + +### [4.0.3-v12](https://github.com/stashed/mongodb/releases/tag/4.0.3-v12) + +- [4f36edfd](https://github.com/stashed/mongodb/commit/4f36edfd) Prepare for release 4.0.3-v12 (#1269) +- [bea5ee27](https://github.com/stashed/mongodb/commit/bea5ee27) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1256) +- [bb787054](https://github.com/stashed/mongodb/commit/bb787054) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1242) +- [ac0bfd12](https://github.com/stashed/mongodb/commit/ac0bfd12) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1228) +- [31c7d66c](https://github.com/stashed/mongodb/commit/31c7d66c) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1214) +- [ce07bdd7](https://github.com/stashed/mongodb/commit/ce07bdd7) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1200) +- [102601ee](https://github.com/stashed/mongodb/commit/102601ee) [cherry-pick] Use official restic v0.12.1 (#1180) (#1186) +- [e75754f8](https://github.com/stashed/mongodb/commit/e75754f8) [cherry-pick] Update repository config (#1166) (#1172) +- [a069745a](https://github.com/stashed/mongodb/commit/a069745a) [cherry-pick] Update dependencies (#1152) (#1158) +- [4e7a1e24](https://github.com/stashed/mongodb/commit/4e7a1e24) [cherry-pick] Update dependencies (#1138) (#1144) +- [80a75e9c](https://github.com/stashed/mongodb/commit/80a75e9c) [cherry-pick] Update dependencies (#1124) (#1130) +- [319a4947](https://github.com/stashed/mongodb/commit/319a4947) [cherry-pick] Use user nobody (#1117) +- [bcb3cfd2](https://github.com/stashed/mongodb/commit/bcb3cfd2) [cherry-pick] Update repository config (#1099) (#1105) +- [a05dce30](https://github.com/stashed/mongodb/commit/a05dce30) [cherry-pick] Update repository config (#1086) (#1092) +- [dd5135b5](https://github.com/stashed/mongodb/commit/dd5135b5) [cherry-pick] Update README.md (#1079) + + +### [4.0.5-v12](https://github.com/stashed/mongodb/releases/tag/4.0.5-v12) + +- [6b691d1f](https://github.com/stashed/mongodb/commit/6b691d1f) Prepare for release 4.0.5-v12 (#1270) +- [39f10575](https://github.com/stashed/mongodb/commit/39f10575) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1257) +- [53beff3b](https://github.com/stashed/mongodb/commit/53beff3b) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1243) +- [136c6960](https://github.com/stashed/mongodb/commit/136c6960) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1229) +- [6207c465](https://github.com/stashed/mongodb/commit/6207c465) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1215) +- [e7e139d3](https://github.com/stashed/mongodb/commit/e7e139d3) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1201) +- [30a94da7](https://github.com/stashed/mongodb/commit/30a94da7) [cherry-pick] Use official restic v0.12.1 (#1180) (#1187) +- [f59c5a6c](https://github.com/stashed/mongodb/commit/f59c5a6c) [cherry-pick] Update repository config (#1166) (#1173) +- [dd14094c](https://github.com/stashed/mongodb/commit/dd14094c) [cherry-pick] Update dependencies (#1152) (#1159) +- [636296f1](https://github.com/stashed/mongodb/commit/636296f1) [cherry-pick] Update dependencies (#1138) (#1145) +- [0ccc1b8b](https://github.com/stashed/mongodb/commit/0ccc1b8b) [cherry-pick] Update dependencies (#1124) (#1131) +- [43dc654f](https://github.com/stashed/mongodb/commit/43dc654f) [cherry-pick] Use user nobody (#1118) +- [099f6ea5](https://github.com/stashed/mongodb/commit/099f6ea5) [cherry-pick] Update repository config (#1099) (#1106) +- [6595c0cb](https://github.com/stashed/mongodb/commit/6595c0cb) [cherry-pick] Update repository config (#1086) (#1093) +- [b18af069](https://github.com/stashed/mongodb/commit/b18af069) [cherry-pick] Update README.md (#1080) + + +### [4.0.11-v12](https://github.com/stashed/mongodb/releases/tag/4.0.11-v12) + +- [5ae4abe4](https://github.com/stashed/mongodb/commit/5ae4abe4) Prepare for release 4.0.11-v12 (#1268) +- [86255e75](https://github.com/stashed/mongodb/commit/86255e75) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1255) +- [bd4ed817](https://github.com/stashed/mongodb/commit/bd4ed817) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1241) +- [079e1c84](https://github.com/stashed/mongodb/commit/079e1c84) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1227) +- [872c68cd](https://github.com/stashed/mongodb/commit/872c68cd) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1213) +- [8407c055](https://github.com/stashed/mongodb/commit/8407c055) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1199) +- [223707c8](https://github.com/stashed/mongodb/commit/223707c8) [cherry-pick] Use official restic v0.12.1 (#1180) (#1185) +- [cc711ac3](https://github.com/stashed/mongodb/commit/cc711ac3) [cherry-pick] Update repository config (#1166) (#1171) +- [2581d408](https://github.com/stashed/mongodb/commit/2581d408) [cherry-pick] Update dependencies (#1152) (#1157) +- [243f28a0](https://github.com/stashed/mongodb/commit/243f28a0) [cherry-pick] Update dependencies (#1138) (#1143) +- [b706066b](https://github.com/stashed/mongodb/commit/b706066b) [cherry-pick] Update dependencies (#1124) (#1129) +- [20423b74](https://github.com/stashed/mongodb/commit/20423b74) [cherry-pick] Use user nobody (#1116) +- [d4b269d8](https://github.com/stashed/mongodb/commit/d4b269d8) [cherry-pick] Update repository config (#1099) (#1104) +- [f795ab01](https://github.com/stashed/mongodb/commit/f795ab01) [cherry-pick] Update repository config (#1086) (#1091) +- [9360ba4e](https://github.com/stashed/mongodb/commit/9360ba4e) [cherry-pick] Update README.md (#1078) + + +### [4.1.4-v12](https://github.com/stashed/mongodb/releases/tag/4.1.4-v12) + +- [fb2cb972](https://github.com/stashed/mongodb/commit/fb2cb972) Prepare for release 4.1.4-v12 (#1272) +- [828c9c33](https://github.com/stashed/mongodb/commit/828c9c33) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1259) +- [f7421dfe](https://github.com/stashed/mongodb/commit/f7421dfe) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1245) +- [e7f3389f](https://github.com/stashed/mongodb/commit/e7f3389f) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1231) +- [412cac39](https://github.com/stashed/mongodb/commit/412cac39) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1217) +- [2885f7b7](https://github.com/stashed/mongodb/commit/2885f7b7) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1203) +- [45880326](https://github.com/stashed/mongodb/commit/45880326) [cherry-pick] Use official restic v0.12.1 (#1180) (#1189) +- [4e0e4040](https://github.com/stashed/mongodb/commit/4e0e4040) [cherry-pick] Update repository config (#1166) (#1175) +- [947563a4](https://github.com/stashed/mongodb/commit/947563a4) [cherry-pick] Update dependencies (#1152) (#1161) +- [a386cc6a](https://github.com/stashed/mongodb/commit/a386cc6a) [cherry-pick] Update dependencies (#1138) (#1147) +- [94a94df5](https://github.com/stashed/mongodb/commit/94a94df5) [cherry-pick] Update dependencies (#1124) (#1133) +- [b60fe1d7](https://github.com/stashed/mongodb/commit/b60fe1d7) [cherry-pick] Use user nobody (#1120) +- [90649dd7](https://github.com/stashed/mongodb/commit/90649dd7) [cherry-pick] Update repository config (#1099) (#1108) +- [147d0b08](https://github.com/stashed/mongodb/commit/147d0b08) [cherry-pick] Update repository config (#1086) (#1095) +- [570b7984](https://github.com/stashed/mongodb/commit/570b7984) [cherry-pick] Update README.md (#1082) + + +### [4.1.7-v12](https://github.com/stashed/mongodb/releases/tag/4.1.7-v12) + +- [55d3315e](https://github.com/stashed/mongodb/commit/55d3315e) Prepare for release 4.1.7-v12 (#1273) +- [363724f2](https://github.com/stashed/mongodb/commit/363724f2) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1260) +- [a2ddb368](https://github.com/stashed/mongodb/commit/a2ddb368) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1246) +- [cb493707](https://github.com/stashed/mongodb/commit/cb493707) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1232) +- [7eaac8e1](https://github.com/stashed/mongodb/commit/7eaac8e1) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1218) +- [c93130b6](https://github.com/stashed/mongodb/commit/c93130b6) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1204) +- [604501cf](https://github.com/stashed/mongodb/commit/604501cf) [cherry-pick] Use official restic v0.12.1 (#1180) (#1190) +- [63f1385e](https://github.com/stashed/mongodb/commit/63f1385e) [cherry-pick] Update repository config (#1166) (#1176) +- [a530f03f](https://github.com/stashed/mongodb/commit/a530f03f) [cherry-pick] Update dependencies (#1152) (#1162) +- [910a4581](https://github.com/stashed/mongodb/commit/910a4581) [cherry-pick] Update dependencies (#1138) (#1148) +- [0cb4b9e3](https://github.com/stashed/mongodb/commit/0cb4b9e3) [cherry-pick] Update dependencies (#1124) (#1134) +- [aeab96a9](https://github.com/stashed/mongodb/commit/aeab96a9) [cherry-pick] Use user nobody (#1121) +- [8768b338](https://github.com/stashed/mongodb/commit/8768b338) [cherry-pick] Update repository config (#1099) (#1109) +- [c139f365](https://github.com/stashed/mongodb/commit/c139f365) [cherry-pick] Update repository config (#1086) (#1096) +- [3e57b806](https://github.com/stashed/mongodb/commit/3e57b806) [cherry-pick] Update README.md (#1083) + + +### [4.1.13-v12](https://github.com/stashed/mongodb/releases/tag/4.1.13-v12) + +- [fd8c4934](https://github.com/stashed/mongodb/commit/fd8c4934) Prepare for release 4.1.13-v12 (#1271) +- [3aa25931](https://github.com/stashed/mongodb/commit/3aa25931) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1258) +- [671bb974](https://github.com/stashed/mongodb/commit/671bb974) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1244) +- [289a843b](https://github.com/stashed/mongodb/commit/289a843b) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1230) +- [9efdc589](https://github.com/stashed/mongodb/commit/9efdc589) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1216) +- [ae5780bb](https://github.com/stashed/mongodb/commit/ae5780bb) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1202) +- [6928de7f](https://github.com/stashed/mongodb/commit/6928de7f) [cherry-pick] Use official restic v0.12.1 (#1180) (#1188) +- [4d82ec2e](https://github.com/stashed/mongodb/commit/4d82ec2e) [cherry-pick] Update repository config (#1166) (#1174) +- [a76a5f8e](https://github.com/stashed/mongodb/commit/a76a5f8e) [cherry-pick] Update dependencies (#1152) (#1160) +- [1462c0c1](https://github.com/stashed/mongodb/commit/1462c0c1) [cherry-pick] Update dependencies (#1138) (#1146) +- [1ce4bb55](https://github.com/stashed/mongodb/commit/1ce4bb55) [cherry-pick] Update dependencies (#1124) (#1132) +- [0d7ee1bb](https://github.com/stashed/mongodb/commit/0d7ee1bb) [cherry-pick] Use user nobody (#1119) +- [60dd402b](https://github.com/stashed/mongodb/commit/60dd402b) [cherry-pick] Update repository config (#1099) (#1107) +- [76e4d9e0](https://github.com/stashed/mongodb/commit/76e4d9e0) [cherry-pick] Update repository config (#1086) (#1094) +- [887de5c0](https://github.com/stashed/mongodb/commit/887de5c0) [cherry-pick] Update README.md (#1081) + + +### [4.2.3-v12](https://github.com/stashed/mongodb/releases/tag/4.2.3-v12) + +- [c584cacc](https://github.com/stashed/mongodb/commit/c584cacc) Prepare for release 4.2.3-v12 (#1274) +- [4fe9a550](https://github.com/stashed/mongodb/commit/4fe9a550) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1261) +- [a6a4b593](https://github.com/stashed/mongodb/commit/a6a4b593) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1247) +- [632f8e76](https://github.com/stashed/mongodb/commit/632f8e76) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1233) +- [f4cbabdc](https://github.com/stashed/mongodb/commit/f4cbabdc) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1219) +- [d8bbe636](https://github.com/stashed/mongodb/commit/d8bbe636) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1205) +- [3dffe923](https://github.com/stashed/mongodb/commit/3dffe923) [cherry-pick] Use official restic v0.12.1 (#1180) (#1191) +- [04f73554](https://github.com/stashed/mongodb/commit/04f73554) [cherry-pick] Update repository config (#1166) (#1177) +- [42cc8004](https://github.com/stashed/mongodb/commit/42cc8004) [cherry-pick] Update dependencies (#1152) (#1163) +- [a75b0f27](https://github.com/stashed/mongodb/commit/a75b0f27) [cherry-pick] Update dependencies (#1138) (#1149) +- [1446f267](https://github.com/stashed/mongodb/commit/1446f267) [cherry-pick] Update dependencies (#1124) (#1135) +- [c51ba8d9](https://github.com/stashed/mongodb/commit/c51ba8d9) [cherry-pick] Use user nobody (#1122) +- [ce4e30fd](https://github.com/stashed/mongodb/commit/ce4e30fd) [cherry-pick] Update repository config (#1099) (#1110) +- [4f0a3d52](https://github.com/stashed/mongodb/commit/4f0a3d52) [cherry-pick] Update repository config (#1086) (#1097) +- [5cfa63c2](https://github.com/stashed/mongodb/commit/5cfa63c2) [cherry-pick] Update README.md (#1084) + + +### [4.4.6-v3](https://github.com/stashed/mongodb/releases/tag/4.4.6-v3) + +- [20eadfb9](https://github.com/stashed/mongodb/commit/20eadfb9) [cherry-pick] Fix jwt-go security vulnerability (#1250) (#1262) +- [c8175506](https://github.com/stashed/mongodb/commit/c8175506) [cherry-pick] Fix jwt-go security vulnerability (#1236) (#1248) +- [63e5fb56](https://github.com/stashed/mongodb/commit/63e5fb56) [cherry-pick] Update dependencies to publish SiteInfo (#1222) (#1234) +- [14c357e4](https://github.com/stashed/mongodb/commit/14c357e4) [cherry-pick] Update dependencies to publish SiteInfo (#1208) (#1220) +- [d8b33503](https://github.com/stashed/mongodb/commit/d8b33503) [cherry-pick] Log warning if Community License is used with non-demo namespace (#1194) (#1206) +- [73382bec](https://github.com/stashed/mongodb/commit/73382bec) [cherry-pick] Use official restic v0.12.1 (#1180) (#1192) +- [a48b9a92](https://github.com/stashed/mongodb/commit/a48b9a92) [cherry-pick] Update repository config (#1166) (#1178) +- [84480622](https://github.com/stashed/mongodb/commit/84480622) [cherry-pick] Update dependencies (#1152) (#1164) +- [4be17009](https://github.com/stashed/mongodb/commit/4be17009) [cherry-pick] Update dependencies (#1138) (#1150) +- [995b5d7a](https://github.com/stashed/mongodb/commit/995b5d7a) [cherry-pick] Update dependencies (#1124) (#1136) +- [915c10a3](https://github.com/stashed/mongodb/commit/915c10a3) [cherry-pick] Use user nobody (#1123) +- [aa7416c2](https://github.com/stashed/mongodb/commit/aa7416c2) [cherry-pick] Update repository config (#1099) (#1111) +- [fe1d8892](https://github.com/stashed/mongodb/commit/fe1d8892) [cherry-pick] Update repository config (#1086) (#1098) +- [3955f424](https://github.com/stashed/mongodb/commit/3955f424) [cherry-pick] Update README.md (#1085) +- [2061ae6f](https://github.com/stashed/mongodb/commit/2061ae6f) Prepare for release 4.4.6-v2 (#1072) + + +### [5.0.3](https://github.com/stashed/mongodb/releases/tag/5.0.3) + + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v13](https://github.com/stashed/mysql/releases/tag/5.7.25-v13) + +- [aff6e370](https://github.com/stashed/mysql/commit/aff6e370) Prepare for release 5.7.25-v13 (#528) +- [60ddc272](https://github.com/stashed/mysql/commit/60ddc272) [cherry-pick] Fix jwt-go security vulnerability (#523) (#524) +- [799720cb](https://github.com/stashed/mysql/commit/799720cb) [cherry-pick] Fix jwt-go security vulnerability (#518) (#519) +- [008b2bf5](https://github.com/stashed/mysql/commit/008b2bf5) [cherry-pick] Update dependencies to publish SiteInfo (#513) (#514) +- [fdedb6d1](https://github.com/stashed/mysql/commit/fdedb6d1) [cherry-pick] Update dependencies to publish SiteInfo (#508) (#509) +- [28533a79](https://github.com/stashed/mysql/commit/28533a79) [cherry-pick] Log warning if Community License is used with non-demo namespace (#503) (#504) +- [d905ccbb](https://github.com/stashed/mysql/commit/d905ccbb) [cherry-pick] Use official restic v0.12.1 (#498) (#499) +- [9582cc54](https://github.com/stashed/mysql/commit/9582cc54) [cherry-pick] Update repository config (#493) (#494) +- [0ae1d9a0](https://github.com/stashed/mysql/commit/0ae1d9a0) [cherry-pick] Update dependencies (#488) (#489) +- [07722857](https://github.com/stashed/mysql/commit/07722857) [cherry-pick] Update dependencies (#483) (#484) +- [2a177d7d](https://github.com/stashed/mysql/commit/2a177d7d) [cherry-pick] Update dependencies (#478) (#479) +- [fdf16b05](https://github.com/stashed/mysql/commit/fdf16b05) [cherry-pick] Use user nobody (#474) +- [6b54b57d](https://github.com/stashed/mysql/commit/6b54b57d) [cherry-pick] Update repository config (#469) (#470) +- [5c9a5e36](https://github.com/stashed/mysql/commit/5c9a5e36) [cherry-pick] Update repository config (#464) (#465) +- [7c10a203](https://github.com/stashed/mysql/commit/7c10a203) [cherry-pick] Update README.md (#460) + + +### [8.0.3-v13](https://github.com/stashed/mysql/releases/tag/8.0.3-v13) + +- [eec051ee](https://github.com/stashed/mysql/commit/eec051ee) Prepare for release 8.0.3-v13 (#531) +- [1660e950](https://github.com/stashed/mysql/commit/1660e950) [cherry-pick] Fix jwt-go security vulnerability (#523) (#527) +- [71cf139d](https://github.com/stashed/mysql/commit/71cf139d) [cherry-pick] Fix jwt-go security vulnerability (#518) (#522) +- [0140594b](https://github.com/stashed/mysql/commit/0140594b) [cherry-pick] Update dependencies to publish SiteInfo (#513) (#517) +- [891c4a0c](https://github.com/stashed/mysql/commit/891c4a0c) [cherry-pick] Update dependencies to publish SiteInfo (#508) (#512) +- [5eb9b26f](https://github.com/stashed/mysql/commit/5eb9b26f) [cherry-pick] Log warning if Community License is used with non-demo namespace (#503) (#507) +- [e8f12efd](https://github.com/stashed/mysql/commit/e8f12efd) [cherry-pick] Use official restic v0.12.1 (#498) (#502) +- [0a607cb4](https://github.com/stashed/mysql/commit/0a607cb4) [cherry-pick] Update repository config (#493) (#497) +- [8d7a17ae](https://github.com/stashed/mysql/commit/8d7a17ae) [cherry-pick] Update dependencies (#488) (#492) +- [03c31af6](https://github.com/stashed/mysql/commit/03c31af6) [cherry-pick] Update dependencies (#483) (#487) +- [b4aacc9c](https://github.com/stashed/mysql/commit/b4aacc9c) [cherry-pick] Update dependencies (#478) (#482) +- [d1bcfc4b](https://github.com/stashed/mysql/commit/d1bcfc4b) [cherry-pick] Use user nobody (#477) +- [79ede44f](https://github.com/stashed/mysql/commit/79ede44f) [cherry-pick] Update repository config (#469) (#473) +- [7fad3905](https://github.com/stashed/mysql/commit/7fad3905) [cherry-pick] Update repository config (#464) (#468) +- [06308914](https://github.com/stashed/mysql/commit/06308914) [cherry-pick] Update README.md (#463) + + +### [8.0.14-v13](https://github.com/stashed/mysql/releases/tag/8.0.14-v13) + +- [04d8f7d9](https://github.com/stashed/mysql/commit/04d8f7d9) Prepare for release 8.0.14-v13 (#529) +- [235005d4](https://github.com/stashed/mysql/commit/235005d4) [cherry-pick] Fix jwt-go security vulnerability (#523) (#525) +- [ff9e8eb9](https://github.com/stashed/mysql/commit/ff9e8eb9) [cherry-pick] Fix jwt-go security vulnerability (#518) (#520) +- [b0ad3407](https://github.com/stashed/mysql/commit/b0ad3407) [cherry-pick] Update dependencies to publish SiteInfo (#513) (#515) +- [e5ce9e5a](https://github.com/stashed/mysql/commit/e5ce9e5a) [cherry-pick] Update dependencies to publish SiteInfo (#508) (#510) +- [6879bc7f](https://github.com/stashed/mysql/commit/6879bc7f) [cherry-pick] Log warning if Community License is used with non-demo namespace (#503) (#505) +- [9d021bf3](https://github.com/stashed/mysql/commit/9d021bf3) [cherry-pick] Use official restic v0.12.1 (#498) (#500) +- [23a8405c](https://github.com/stashed/mysql/commit/23a8405c) [cherry-pick] Update repository config (#493) (#495) +- [ef9bd7a3](https://github.com/stashed/mysql/commit/ef9bd7a3) [cherry-pick] Update dependencies (#488) (#490) +- [753cf713](https://github.com/stashed/mysql/commit/753cf713) [cherry-pick] Update dependencies (#483) (#485) +- [fe5dbd4e](https://github.com/stashed/mysql/commit/fe5dbd4e) [cherry-pick] Update dependencies (#478) (#480) +- [c8090a9b](https://github.com/stashed/mysql/commit/c8090a9b) [cherry-pick] Use user nobody (#475) +- [36c9a151](https://github.com/stashed/mysql/commit/36c9a151) [cherry-pick] Update repository config (#469) (#471) +- [9bdfdeeb](https://github.com/stashed/mysql/commit/9bdfdeeb) [cherry-pick] Update repository config (#464) (#466) +- [168469fe](https://github.com/stashed/mysql/commit/168469fe) [cherry-pick] Update README.md (#461) + + +### [8.0.21-v7](https://github.com/stashed/mysql/releases/tag/8.0.21-v7) + +- [e5ea20ba](https://github.com/stashed/mysql/commit/e5ea20ba) Prepare for release 8.0.21-v7 (#530) +- [5db2b531](https://github.com/stashed/mysql/commit/5db2b531) [cherry-pick] Fix jwt-go security vulnerability (#523) (#526) +- [52cd9513](https://github.com/stashed/mysql/commit/52cd9513) [cherry-pick] Fix jwt-go security vulnerability (#518) (#521) +- [7d004545](https://github.com/stashed/mysql/commit/7d004545) [cherry-pick] Update dependencies to publish SiteInfo (#513) (#516) +- [6abc719c](https://github.com/stashed/mysql/commit/6abc719c) [cherry-pick] Update dependencies to publish SiteInfo (#508) (#511) +- [cd79c2de](https://github.com/stashed/mysql/commit/cd79c2de) [cherry-pick] Log warning if Community License is used with non-demo namespace (#503) (#506) +- [d974fafb](https://github.com/stashed/mysql/commit/d974fafb) [cherry-pick] Use official restic v0.12.1 (#498) (#501) +- [3828e7d3](https://github.com/stashed/mysql/commit/3828e7d3) [cherry-pick] Update repository config (#493) (#496) +- [2fd7d488](https://github.com/stashed/mysql/commit/2fd7d488) [cherry-pick] Update dependencies (#488) (#491) +- [2c28a324](https://github.com/stashed/mysql/commit/2c28a324) [cherry-pick] Update dependencies (#483) (#486) +- [b54ef541](https://github.com/stashed/mysql/commit/b54ef541) [cherry-pick] Update dependencies (#478) (#481) +- [249af93e](https://github.com/stashed/mysql/commit/249af93e) [cherry-pick] Use user nobody (#476) +- [b3d0bf71](https://github.com/stashed/mysql/commit/b3d0bf71) [cherry-pick] Update repository config (#469) (#472) +- [1f7e61fd](https://github.com/stashed/mysql/commit/1f7e61fd) [cherry-pick] Update repository config (#464) (#467) +- [436e0ab6](https://github.com/stashed/mysql/commit/436e0ab6) [cherry-pick] Update README.md (#462) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1](https://github.com/stashed/nats/releases/tag/2.6.1) + +- [898dc86](https://github.com/stashed/nats/commit/898dc86) Prepare for release 2.6.1 (#9) +- [b54316d](https://github.com/stashed/nats/commit/b54316d) Fix jwt-go security vulnerability (#7) (#8) +- [dba8685](https://github.com/stashed/nats/commit/dba8685) Use nats.go v1.13.0 (#6) +- [324241b](https://github.com/stashed/nats/commit/324241b) Update TLS constants #5 +- [2077d6f](https://github.com/stashed/nats/commit/2077d6f) Append args (#4) +- [e7dc55d](https://github.com/stashed/nats/commit/e7dc55d) Update repository config (#3) +- [4e97bdc](https://github.com/stashed/nats/commit/4e97bdc) Add nats Stash addon (#2) +- [48941bd](https://github.com/stashed/nats/commit/48941bd) Merge pull request #1 from stashed/global-replace +- [ff46ec0](https://github.com/stashed/nats/commit/ff46ec0) Global replace Redis with NATS +- [6d880e0](https://github.com/stashed/nats/commit/6d880e0) Use user nobody +- [5252385](https://github.com/stashed/nats/commit/5252385) Update repository config (#11) +- [f6dc027](https://github.com/stashed/nats/commit/f6dc027) Update repository config (#8) +- [d68710e](https://github.com/stashed/nats/commit/d68710e) Prepare for release v2021.08.02 (#7) +- [1772bc7](https://github.com/stashed/nats/commit/1772bc7) Update repository config (#2) +- [7d4bfee](https://github.com/stashed/nats/commit/7d4bfee) Make Redis addon ready to use (#1) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v8](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v8) + +- [42564482](https://github.com/stashed/percona-xtradb/commit/42564482) Prepare for release 5.7-v8 (#221) +- [22f43849](https://github.com/stashed/percona-xtradb/commit/22f43849) [cherry-pick] Fix jwt-go security vulnerability (#219) (#220) +- [26dbbe0d](https://github.com/stashed/percona-xtradb/commit/26dbbe0d) [cherry-pick] Fix jwt-go security vulnerability (#217) (#218) +- [cfa5e989](https://github.com/stashed/percona-xtradb/commit/cfa5e989) [cherry-pick] Update dependencies to publish SiteInfo (#215) (#216) +- [645df7c7](https://github.com/stashed/percona-xtradb/commit/645df7c7) Update dependencies to publish SiteInfo (#213) (#214) +- [327484ce](https://github.com/stashed/percona-xtradb/commit/327484ce) [cherry-pick] Log warning if Community License is used with non-demo namespace (#211) (#212) +- [70e361f6](https://github.com/stashed/percona-xtradb/commit/70e361f6) [cherry-pick] Use official restic v0.12.1 (#209) (#210) +- [0568a599](https://github.com/stashed/percona-xtradb/commit/0568a599) [cherry-pick] Update repository config (#207) (#208) +- [541cafce](https://github.com/stashed/percona-xtradb/commit/541cafce) [cherry-pick] Update dependencies (#205) (#206) +- [42914499](https://github.com/stashed/percona-xtradb/commit/42914499) [cherry-pick] Update dependencies (#203) (#204) +- [f5d39489](https://github.com/stashed/percona-xtradb/commit/f5d39489) [cherry-pick] Update dependencies (#201) (#202) +- [3b0f52a5](https://github.com/stashed/percona-xtradb/commit/3b0f52a5) [cherry-pick] Use user nobody (#200) +- [91a6d048](https://github.com/stashed/percona-xtradb/commit/91a6d048) [cherry-pick] Update repository config (#198) (#199) +- [27ea0703](https://github.com/stashed/percona-xtradb/commit/27ea0703) [cherry-pick] Update repository config (#196) (#197) +- [3a9ec481](https://github.com/stashed/percona-xtradb/commit/3a9ec481) [cherry-pick] Update README.md (#195) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v11](https://github.com/stashed/postgres/releases/tag/9.6.19-v11) + +- [8f1256ef](https://github.com/stashed/postgres/commit/8f1256ef) Prepare for release 9.6.19-v11 (#935) +- [851efd30](https://github.com/stashed/postgres/commit/851efd30) [cherry-pick] Fix jwt-go security vulnerability (#923) (#929) +- [132fad16](https://github.com/stashed/postgres/commit/132fad16) [cherry-pick] Fix jwt-go security vulnerability (#916) (#922) +- [de2c0cd2](https://github.com/stashed/postgres/commit/de2c0cd2) [cherry-pick] Update dependencies to publish SiteInfo (#910) (#915) +- [8529a78e](https://github.com/stashed/postgres/commit/8529a78e) [cherry-pick] Update dependencies to publish SiteInfo (#904) (#909) +- [1ec16ab0](https://github.com/stashed/postgres/commit/1ec16ab0) [cherry-pick] Log warning if Community License is used with non-demo namespace (#897) (#902) +- [a5c59aa8](https://github.com/stashed/postgres/commit/a5c59aa8) [cherry-pick] Use official restic v0.12.1 (#891) (#896) +- [6042476d](https://github.com/stashed/postgres/commit/6042476d) [cherry-pick] Update repository config (#885) (#890) +- [062cf691](https://github.com/stashed/postgres/commit/062cf691) [cherry-pick] Update dependencies (#879) (#884) +- [74f16152](https://github.com/stashed/postgres/commit/74f16152) [cherry-pick] Update dependencies (#873) (#878) +- [665ff907](https://github.com/stashed/postgres/commit/665ff907) [cherry-pick] Update dependencies (#867) (#872) +- [51c55130](https://github.com/stashed/postgres/commit/51c55130) [cherry-pick] Use user nobody (#866) +- [9fd4d8c3](https://github.com/stashed/postgres/commit/9fd4d8c3) [cherry-pick] Update repository config (#856) (#861) + + +### [10.14-v11](https://github.com/stashed/postgres/releases/tag/10.14-v11) + +- [022910d2](https://github.com/stashed/postgres/commit/022910d2) Prepare for release 10.14-v11 (#930) +- [df4ea88e](https://github.com/stashed/postgres/commit/df4ea88e) [cherry-pick] Fix jwt-go security vulnerability (#923) (#924) +- [37492e25](https://github.com/stashed/postgres/commit/37492e25) [cherry-pick] Fix jwt-go security vulnerability (#916) (#917) +- [c36fd40d](https://github.com/stashed/postgres/commit/c36fd40d) [cherry-pick] Update dependencies to publish SiteInfo (#910) (#911) +- [40364b31](https://github.com/stashed/postgres/commit/40364b31) [cherry-pick] Update dependencies to publish SiteInfo (#904) (#905) +- [c7e6e42d](https://github.com/stashed/postgres/commit/c7e6e42d) [cherry-pick] Log warning if Community License is used with non-demo namespace (#897) (#898) +- [a7a14804](https://github.com/stashed/postgres/commit/a7a14804) [cherry-pick] Use official restic v0.12.1 (#891) (#892) +- [62f39a5a](https://github.com/stashed/postgres/commit/62f39a5a) [cherry-pick] Update repository config (#885) (#886) +- [c8c626dd](https://github.com/stashed/postgres/commit/c8c626dd) [cherry-pick] Update dependencies (#879) (#880) +- [8cca6897](https://github.com/stashed/postgres/commit/8cca6897) [cherry-pick] Update dependencies (#873) (#874) +- [2b8823ac](https://github.com/stashed/postgres/commit/2b8823ac) [cherry-pick] Update dependencies (#867) (#868) +- [de1290b4](https://github.com/stashed/postgres/commit/de1290b4) [cherry-pick] Use user nobody (#862) +- [9d8e96ed](https://github.com/stashed/postgres/commit/9d8e96ed) [cherry-pick] Update repository config (#856) (#857) +- [49ab6354](https://github.com/stashed/postgres/commit/49ab6354) [cherry-pick] Update repository config (#850) (#851) +- [ac88e3c1](https://github.com/stashed/postgres/commit/ac88e3c1) [cherry-pick] Update README.md (#845) + + +### [11.9-v11](https://github.com/stashed/postgres/releases/tag/11.9-v11) + +- [809eb881](https://github.com/stashed/postgres/commit/809eb881) Prepare for release 11.9-v11 (#931) +- [f8df2138](https://github.com/stashed/postgres/commit/f8df2138) [cherry-pick] Fix jwt-go security vulnerability (#923) (#925) +- [a5fcf2d7](https://github.com/stashed/postgres/commit/a5fcf2d7) [cherry-pick] Fix jwt-go security vulnerability (#916) (#918) +- [bc9b05a7](https://github.com/stashed/postgres/commit/bc9b05a7) [cherry-pick] Update dependencies to publish SiteInfo (#910) (#912) +- [eba577ca](https://github.com/stashed/postgres/commit/eba577ca) [cherry-pick] Update dependencies to publish SiteInfo (#904) (#906) +- [dd7e5b3c](https://github.com/stashed/postgres/commit/dd7e5b3c) [cherry-pick] Log warning if Community License is used with non-demo namespace (#897) (#899) +- [dbc851fe](https://github.com/stashed/postgres/commit/dbc851fe) [cherry-pick] Use official restic v0.12.1 (#891) (#893) +- [96c10215](https://github.com/stashed/postgres/commit/96c10215) [cherry-pick] Update repository config (#885) (#887) +- [89f96f4f](https://github.com/stashed/postgres/commit/89f96f4f) [cherry-pick] Update dependencies (#879) (#881) +- [540665e0](https://github.com/stashed/postgres/commit/540665e0) [cherry-pick] Update dependencies (#873) (#875) +- [89108c2e](https://github.com/stashed/postgres/commit/89108c2e) [cherry-pick] Update dependencies (#867) (#869) +- [6fb330f8](https://github.com/stashed/postgres/commit/6fb330f8) [cherry-pick] Use user nobody (#863) +- [057473bc](https://github.com/stashed/postgres/commit/057473bc) [cherry-pick] Update repository config (#856) (#858) +- [9387dbe7](https://github.com/stashed/postgres/commit/9387dbe7) [cherry-pick] Update repository config (#850) (#852) +- [0dda31f0](https://github.com/stashed/postgres/commit/0dda31f0) [cherry-pick] Update README.md (#846) + + +### [12.4-v11](https://github.com/stashed/postgres/releases/tag/12.4-v11) + +- [b6980ee7](https://github.com/stashed/postgres/commit/b6980ee7) Prepare for release 12.4-v11 (#932) +- [409eb663](https://github.com/stashed/postgres/commit/409eb663) [cherry-pick] Fix jwt-go security vulnerability (#923) (#926) +- [1f593322](https://github.com/stashed/postgres/commit/1f593322) [cherry-pick] Fix jwt-go security vulnerability (#916) (#919) +- [b19d3f18](https://github.com/stashed/postgres/commit/b19d3f18) [cherry-pick] Update dependencies to publish SiteInfo (#910) (#913) +- [8135d138](https://github.com/stashed/postgres/commit/8135d138) [cherry-pick] Update dependencies to publish SiteInfo (#904) (#907) +- [105bcabe](https://github.com/stashed/postgres/commit/105bcabe) [cherry-pick] Log warning if Community License is used with non-demo namespace (#897) (#900) +- [51a7933d](https://github.com/stashed/postgres/commit/51a7933d) [cherry-pick] Use official restic v0.12.1 (#891) (#894) +- [b49bb69f](https://github.com/stashed/postgres/commit/b49bb69f) [cherry-pick] Update repository config (#885) (#888) +- [bc4490f3](https://github.com/stashed/postgres/commit/bc4490f3) [cherry-pick] Update dependencies (#879) (#882) +- [7ec191fd](https://github.com/stashed/postgres/commit/7ec191fd) [cherry-pick] Update dependencies (#873) (#876) +- [16a2ee1d](https://github.com/stashed/postgres/commit/16a2ee1d) [cherry-pick] Update dependencies (#867) (#870) +- [9d392dfa](https://github.com/stashed/postgres/commit/9d392dfa) [cherry-pick] Use user nobody (#864) +- [c142e39c](https://github.com/stashed/postgres/commit/c142e39c) [cherry-pick] Update repository config (#856) (#859) +- [d8e8c2d2](https://github.com/stashed/postgres/commit/d8e8c2d2) [cherry-pick] Update repository config (#850) (#853) +- [3221e02a](https://github.com/stashed/postgres/commit/3221e02a) [cherry-pick] Update README.md (#847) + + +### [13.1-v8](https://github.com/stashed/postgres/releases/tag/13.1-v8) + +- [9211494b](https://github.com/stashed/postgres/commit/9211494b) Prepare for release 13.1-v8 (#933) +- [199edbf1](https://github.com/stashed/postgres/commit/199edbf1) [cherry-pick] Fix jwt-go security vulnerability (#923) (#927) +- [3efe6ad3](https://github.com/stashed/postgres/commit/3efe6ad3) [cherry-pick] Fix jwt-go security vulnerability (#916) (#920) +- [f6d36c5f](https://github.com/stashed/postgres/commit/f6d36c5f) [cherry-pick] Update dependencies to publish SiteInfo (#910) (#914) +- [9721595a](https://github.com/stashed/postgres/commit/9721595a) [cherry-pick] Update dependencies to publish SiteInfo (#904) (#908) +- [7b9c8fa6](https://github.com/stashed/postgres/commit/7b9c8fa6) [cherry-pick] Log warning if Community License is used with non-demo namespace (#897) (#901) +- [a71c6929](https://github.com/stashed/postgres/commit/a71c6929) [cherry-pick] Use official restic v0.12.1 (#891) (#895) +- [f795f28e](https://github.com/stashed/postgres/commit/f795f28e) [cherry-pick] Update repository config (#885) (#889) +- [927c795c](https://github.com/stashed/postgres/commit/927c795c) [cherry-pick] Update dependencies (#879) (#883) +- [72f86c43](https://github.com/stashed/postgres/commit/72f86c43) [cherry-pick] Update dependencies (#873) (#877) +- [3bc7ed49](https://github.com/stashed/postgres/commit/3bc7ed49) [cherry-pick] Update dependencies (#867) (#871) +- [6cf5b484](https://github.com/stashed/postgres/commit/6cf5b484) [cherry-pick] Use user nobody (#865) +- [f0c36245](https://github.com/stashed/postgres/commit/f0c36245) [cherry-pick] Update repository config (#856) (#860) +- [f73a8fdc](https://github.com/stashed/postgres/commit/f73a8fdc) [cherry-pick] Update repository config (#850) (#854) +- [08392aad](https://github.com/stashed/postgres/commit/08392aad) [cherry-pick] Update README.md (#848) + + +### [14.0](https://github.com/stashed/postgres/releases/tag/14.0) + + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v1](https://github.com/stashed/redis/releases/tag/5.0.13-v1) + +- [2cf8e50](https://github.com/stashed/redis/commit/2cf8e50) Prepare for release 5.0.13-v1 (#52) +- [19a146f](https://github.com/stashed/redis/commit/19a146f) [cherry-pick] Fix jwt-go security vulnerability (#49) (#50) +- [89a01a1](https://github.com/stashed/redis/commit/89a01a1) [cherry-pick] Fix jwt-go security vulnerability (#46) (#47) +- [71ef640](https://github.com/stashed/redis/commit/71ef640) Update dependencies to publish SiteInfo (#43) (#44) +- [07f2b0a](https://github.com/stashed/redis/commit/07f2b0a) [cherry-pick] Update dependencies to publish SiteInfo (#40) (#41) +- [c4fe884](https://github.com/stashed/redis/commit/c4fe884) [cherry-pick] Use forked redis-dump-go (#37) (#38) +- [c857baf](https://github.com/stashed/redis/commit/c857baf) [cherry-pick] Add Support for TLS enabled Redis client (#31) (#35) +- [fa42bbe](https://github.com/stashed/redis/commit/fa42bbe) [cherry-pick] Log warning if Community License is used with non-demo namespace (#32) (#33) +- [a14feb6](https://github.com/stashed/redis/commit/a14feb6) [cherry-pick] Use official restic v0.12.1 (#28) (#29) +- [800ad77](https://github.com/stashed/redis/commit/800ad77) [cherry-pick] Update repository config (#25) (#26) +- [8472251](https://github.com/stashed/redis/commit/8472251) [cherry-pick] Update dependencies (#22) (#23) +- [e6bbc7e](https://github.com/stashed/redis/commit/e6bbc7e) [cherry-pick] Update dependencies (#19) (#20) +- [d81c5d4](https://github.com/stashed/redis/commit/d81c5d4) [cherry-pick] Update dependencies (#16) (#17) +- [ac57ea0](https://github.com/stashed/redis/commit/ac57ea0) [cherry-pick] Use user nobody (#14) +- [c65e4af](https://github.com/stashed/redis/commit/c65e4af) [cherry-pick] Update repository config (#11) (#12) +- [62782d5](https://github.com/stashed/redis/commit/62782d5) [cherry-pick] Update repository config (#8) (#9) + + +### [6.2.5-v1](https://github.com/stashed/redis/releases/tag/6.2.5-v1) + +- [5882057](https://github.com/stashed/redis/commit/5882057) Prepare for release 6.2.5-v1 (#53) +- [59eeffa](https://github.com/stashed/redis/commit/59eeffa) [cherry-pick] Fix jwt-go security vulnerability (#49) (#51) +- [55237a0](https://github.com/stashed/redis/commit/55237a0) [cherry-pick] Fix jwt-go security vulnerability (#46) (#48) +- [149186e](https://github.com/stashed/redis/commit/149186e) Update dependencies to publish SiteInfo (#43) (#45) +- [1935030](https://github.com/stashed/redis/commit/1935030) [cherry-pick] Update dependencies to publish SiteInfo (#40) (#42) +- [07a1317](https://github.com/stashed/redis/commit/07a1317) [cherry-pick] Use forked redis-dump-go (#37) (#39) +- [ed58c90](https://github.com/stashed/redis/commit/ed58c90) [cherry-pick] Add Support for TLS enabled Redis client (#31) (#36) +- [11a3fb3](https://github.com/stashed/redis/commit/11a3fb3) [cherry-pick] Log warning if Community License is used with non-demo namespace (#32) (#34) +- [71bd761](https://github.com/stashed/redis/commit/71bd761) [cherry-pick] Use official restic v0.12.1 (#28) (#30) +- [281c595](https://github.com/stashed/redis/commit/281c595) [cherry-pick] Update repository config (#25) (#27) +- [7beb611](https://github.com/stashed/redis/commit/7beb611) [cherry-pick] Update dependencies (#22) (#24) +- [39852fa](https://github.com/stashed/redis/commit/39852fa) [cherry-pick] Update dependencies (#19) (#21) +- [ee90e7c](https://github.com/stashed/redis/commit/ee90e7c) [cherry-pick] Update dependencies (#16) (#18) +- [085749d](https://github.com/stashed/redis/commit/085749d) [cherry-pick] Use user nobody (#15) +- [6bd0302](https://github.com/stashed/redis/commit/6bd0302) [cherry-pick] Update repository config (#11) (#13) +- [81550b0](https://github.com/stashed/redis/commit/81550b0) [cherry-pick] Update repository config (#8) (#10) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.16.0](https://github.com/stashed/stash/releases/tag/v0.16.0) + +- [535efca8](https://github.com/stashed/stash/commit/535efca8) Prepare for release v0.16.0 (#1394) +- [7c26c7dd](https://github.com/stashed/stash/commit/7c26c7dd) Fix jwt-go security vulnerability (#1393) +- [8f63f724](https://github.com/stashed/stash/commit/8f63f724) Add support for ETCD restore flow (#1392) +- [5665ea7e](https://github.com/stashed/stash/commit/5665ea7e) Use nats.go v1.13.0 (#1391) +- [cc2da916](https://github.com/stashed/stash/commit/cc2da916) Setup SiteInfo publisher (#1390) +- [8daab52d](https://github.com/stashed/stash/commit/8daab52d) Update dependencies to publish SiteInfo (#1389) +- [50b58218](https://github.com/stashed/stash/commit/50b58218) Support passing args to restic backup/restore command (#1385) +- [28d878ed](https://github.com/stashed/stash/commit/28d878ed) Update dependencies to publish SiteInfo (#1387) +- [c063a536](https://github.com/stashed/stash/commit/c063a536) Fix license-reader ClusterRoleBinding not cleaning up properly (#1386) +- [e09bd7b0](https://github.com/stashed/stash/commit/e09bd7b0) Log warning if Community License is used with non-demo namespace (#1383) +- [3da6094c](https://github.com/stashed/stash/commit/3da6094c) Use stash-trigger as backup triggering CronJob name prefix #1382 +- [e08ce8f6](https://github.com/stashed/stash/commit/e08ce8f6) Use `stash-trigger` as backup triggering CronJob name prefix +- [5027ae41](https://github.com/stashed/stash/commit/5027ae41) Use official restic v0.12.1 (#1381) +- [f23d8f42](https://github.com/stashed/stash/commit/f23d8f42) Update repository config (#1379) +- [0348419d](https://github.com/stashed/stash/commit/0348419d) Update dependencies (#1378) +- [0f6400d5](https://github.com/stashed/stash/commit/0f6400d5) Update repository config (#1375) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.11.24.md b/content/docs/v2024.8.27/CHANGELOG-v2021.11.24.md new file mode 100644 index 0000000000..1e51e0559d --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.11.24.md @@ -0,0 +1,514 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.11.24 + name: Changelog-v2021.11.24 + parent: welcome + weight: 20211124 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.11.24/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.11.24/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.11.24 (2021-11-24) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.17.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.17.0) + +- [85b094e2](https://github.com/appscode/stash-enterprise/commit/85b094e2) Prepare for release v0.17.0 (#135) +- [d1a1d9ae](https://github.com/appscode/stash-enterprise/commit/d1a1d9ae) Fix SiteInfo publishing (#134) +- [c2a4af81](https://github.com/appscode/stash-enterprise/commit/c2a4af81) Update license verifier (#132) +- [d14efa79](https://github.com/appscode/stash-enterprise/commit/d14efa79) Update license header +- [402386a8](https://github.com/appscode/stash-enterprise/commit/402386a8) Remove Google Analytics (#131) +- [4e9d2787](https://github.com/appscode/stash-enterprise/commit/4e9d2787) Update repository config (#130) +- [0a8bd900](https://github.com/appscode/stash-enterprise/commit/0a8bd900) Update dependencies (#129) +- [ec75311b](https://github.com/appscode/stash-enterprise/commit/ec75311b) Fix satori/go.uuid security vulnerability (#128) +- [66e31a4d](https://github.com/appscode/stash-enterprise/commit/66e31a4d) Apply all the pod level runtime settings to the CronJob +- [ce457efc](https://github.com/appscode/stash-enterprise/commit/ce457efc) Apply all the pod level runtime settings to the CronJob + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.17.0](https://github.com/stashed/apimachinery/releases/tag/v0.17.0) + +- [dce6be25](https://github.com/stashed/apimachinery/commit/dce6be25) Update dependencies (#133) +- [dcf13de6](https://github.com/stashed/apimachinery/commit/dcf13de6) Update Makefile for controller-tools@v0.7.0 +- [82122921](https://github.com/stashed/apimachinery/commit/82122921) Update repository config (#132) +- [30fa542d](https://github.com/stashed/apimachinery/commit/30fa542d) Update dependencies (#131) +- [026be21a](https://github.com/stashed/apimachinery/commit/026be21a) Fix satori/go.uuid security vulnerability (#130) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.17.0](https://github.com/stashed/cli/releases/tag/v0.17.0) + +- [7060e6f](https://github.com/stashed/cli/commit/7060e6f) Prepare for release v0.17.0 (#147) +- [de80418](https://github.com/stashed/cli/commit/de80418) Update dependencies (#146) +- [ed6657a](https://github.com/stashed/cli/commit/ed6657a) Remove Google Analytics (#145) +- [f2c9aa4](https://github.com/stashed/cli/commit/f2c9aa4) Update dependencies (#144) +- [a1fcc30](https://github.com/stashed/cli/commit/a1fcc30) Fix satori/go.uuid security vulnerability (#143) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v14](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v14) + +- [0e144118](https://github.com/stashed/elasticsearch/commit/0e144118) Prepare for release 5.6.4-v14 (#1059) +- [ab859dbf](https://github.com/stashed/elasticsearch/commit/ab859dbf) [cherry-pick] Fix SiteInfo publishing (#1049) (#1050) +- [9379b2b1](https://github.com/stashed/elasticsearch/commit/9379b2b1) [cherry-pick] Update dependencies (#1040) (#1041) +- [3ee7e34c](https://github.com/stashed/elasticsearch/commit/3ee7e34c) [cherry-pick] Remove Google Analytics (#1031) (#1032) +- [9fc75414](https://github.com/stashed/elasticsearch/commit/9fc75414) [cherry-pick] Update dependencies (#1021) (#1022) +- [6aad03dd](https://github.com/stashed/elasticsearch/commit/6aad03dd) [cherry-pick] Fix satori/go.uuid security vulnerability (#1017) (#1018) + + +### [6.2.4-v14](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v14) + +- [5ba72d61](https://github.com/stashed/elasticsearch/commit/5ba72d61) Prepare for release 6.2.4-v14 (#1060) +- [b9d05541](https://github.com/stashed/elasticsearch/commit/b9d05541) [cherry-pick] Fix SiteInfo publishing (#1049) (#1051) +- [e6d3eae2](https://github.com/stashed/elasticsearch/commit/e6d3eae2) [cherry-pick] Update dependencies (#1040) (#1042) +- [c8a14048](https://github.com/stashed/elasticsearch/commit/c8a14048) [cherry-pick] Remove Google Analytics (#1031) (#1033) +- [3d05b804](https://github.com/stashed/elasticsearch/commit/3d05b804) Update dependencies (#1021) (#1023) +- [e7e8c52a](https://github.com/stashed/elasticsearch/commit/e7e8c52a) [cherry-pick] Fix satori/go.uuid security vulnerability (#1017) (#1019) + + +### [6.3.0-v14](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v14) + +- [d4201b7e](https://github.com/stashed/elasticsearch/commit/d4201b7e) Prepare for release 6.3.0-v14 (#1061) +- [0b729a37](https://github.com/stashed/elasticsearch/commit/0b729a37) [cherry-pick] Fix SiteInfo publishing (#1049) (#1052) +- [5ce16921](https://github.com/stashed/elasticsearch/commit/5ce16921) [cherry-pick] Remove Google Analytics (#1031) (#1034) +- [49a75d1d](https://github.com/stashed/elasticsearch/commit/49a75d1d) Update dependencies (#1021) (#1024) +- [546aa0c5](https://github.com/stashed/elasticsearch/commit/546aa0c5) [cherry-pick] Fix satori/go.uuid security vulnerability (#1017) (#1020) + + +### [6.4.0-v14](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v14) + +- [7d7da202](https://github.com/stashed/elasticsearch/commit/7d7da202) Prepare for release 6.4.0-v14 (#1062) +- [50e2e801](https://github.com/stashed/elasticsearch/commit/50e2e801) [cherry-pick] Fix SiteInfo publishing (#1049) (#1053) +- [48209723](https://github.com/stashed/elasticsearch/commit/48209723) [cherry-pick] Update dependencies (#1040) (#1043) +- [dae6bf84](https://github.com/stashed/elasticsearch/commit/dae6bf84) [cherry-pick] Remove Google Analytics (#1031) (#1035) +- [4aaab48e](https://github.com/stashed/elasticsearch/commit/4aaab48e) Update dependencies (#1021) (#1025) + + +### [6.5.3-v14](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v14) + +- [35ef5d49](https://github.com/stashed/elasticsearch/commit/35ef5d49) Prepare for release 6.5.3-v14 (#1063) +- [d8a4c476](https://github.com/stashed/elasticsearch/commit/d8a4c476) [cherry-pick] Fix SiteInfo publishing (#1049) (#1054) +- [9512b200](https://github.com/stashed/elasticsearch/commit/9512b200) [cherry-pick] Update dependencies (#1040) (#1044) +- [3d3d0783](https://github.com/stashed/elasticsearch/commit/3d3d0783) [cherry-pick] Remove Google Analytics (#1031) (#1036) +- [5d45c1c6](https://github.com/stashed/elasticsearch/commit/5d45c1c6) Update dependencies (#1021) (#1026) + + +### [6.8.0-v14](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v14) + +- [c253b5d2](https://github.com/stashed/elasticsearch/commit/c253b5d2) Prepare for release 6.8.0-v14 (#1064) +- [716e21ec](https://github.com/stashed/elasticsearch/commit/716e21ec) [cherry-pick] Fix SiteInfo publishing (#1049) (#1055) +- [4bc83924](https://github.com/stashed/elasticsearch/commit/4bc83924) [cherry-pick] Update dependencies (#1040) (#1045) +- [97e40f8d](https://github.com/stashed/elasticsearch/commit/97e40f8d) [cherry-pick] Remove Google Analytics (#1031) (#1037) +- [1a764e16](https://github.com/stashed/elasticsearch/commit/1a764e16) [cherry-pick] Update dependencies (#1021) (#1027) + + +### [7.2.0-v14](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v14) + +- [7ddc15df](https://github.com/stashed/elasticsearch/commit/7ddc15df) Prepare for release 7.2.0-v14 (#1066) +- [8b83e76f](https://github.com/stashed/elasticsearch/commit/8b83e76f) Fix SiteInfo publishing (#1049) (#1057) +- [295c2092](https://github.com/stashed/elasticsearch/commit/295c2092) [cherry-pick] Update dependencies (#1040) (#1047) +- [0efd2e29](https://github.com/stashed/elasticsearch/commit/0efd2e29) [cherry-pick] Remove Google Analytics (#1031) (#1038) +- [199bd4da](https://github.com/stashed/elasticsearch/commit/199bd4da) [cherry-pick] Update dependencies (#1021) (#1028) + + +### [7.3.2-v14](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v14) + +- [3e524ee1](https://github.com/stashed/elasticsearch/commit/3e524ee1) [cherry-pick] Fix SiteInfo publishing (#1049) (#1056) +- [b052040a](https://github.com/stashed/elasticsearch/commit/b052040a) [cherry-pick] Update dependencies (#1040) (#1048) +- [42ca2c7a](https://github.com/stashed/elasticsearch/commit/42ca2c7a) [cherry-pick] Remove Google Analytics (#1031) (#1039) +- [efd3d876](https://github.com/stashed/elasticsearch/commit/efd3d876) [cherry-pick] Update dependencies (#1021) (#1029) + + +### [7.14.0](https://github.com/stashed/elasticsearch/releases/tag/7.14.0) + + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v1](https://github.com/stashed/etcd/releases/tag/3.5.0-v1) + +- [b9ce791](https://github.com/stashed/etcd/commit/b9ce791) Prepare for release 3.5.0-v1 (#18) +- [fbaaa64](https://github.com/stashed/etcd/commit/fbaaa64) [cherry-pick] Fix SiteInfo publishing (#16) (#17) +- [38d8c50](https://github.com/stashed/etcd/commit/38d8c50) [cherry-pick] Update dependencies (#14) (#15) +- [450272c](https://github.com/stashed/etcd/commit/450272c) [cherry-pick] Remove Google Analytics (#12) (#13) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.11.24](https://github.com/stashed/installer/releases/tag/v2021.11.24) + +- [4dd8553](https://github.com/stashed/installer/commit/4dd8553) Prepare for release v2021.11.24 (#217) +- [e1f85c4](https://github.com/stashed/installer/commit/e1f85c4) Update dependencies (#216) +- [d35bb37](https://github.com/stashed/installer/commit/d35bb37) Remove Google Analytics (#215) +- [bcbb9ea](https://github.com/stashed/installer/commit/bcbb9ea) Add support for Elasticsearch 7.14.0 (#214) +- [f31eaaf](https://github.com/stashed/installer/commit/f31eaaf) Update Makefile for controller-tools@v0.7.0 +- [6f10ba7](https://github.com/stashed/installer/commit/6f10ba7) Update repository config (#213) +- [7d86750](https://github.com/stashed/installer/commit/7d86750) Update dependencies (#212) +- [d957af5](https://github.com/stashed/installer/commit/d957af5) Fix satori/go.uuid security vulnerability (#211) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v7](https://github.com/stashed/mariadb/releases/tag/10.5.8-v7) + +- [c31170b](https://github.com/stashed/mariadb/commit/c31170b) Prepare for release 10.5.8-v7 (#159) +- [c428c5a](https://github.com/stashed/mariadb/commit/c428c5a) [cherry-pick] Fix SiteInfo publishing (#157) (#158) +- [fb9ea57](https://github.com/stashed/mariadb/commit/fb9ea57) [cherry-pick] Update dependencies (#155) (#156) +- [16bb2df](https://github.com/stashed/mariadb/commit/16bb2df) [cherry-pick] Remove Google Analytics (#153) (#154) +- [263083f](https://github.com/stashed/mariadb/commit/263083f) [cherry-pick] Update dependencies (#151) (#152) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v13](https://github.com/stashed/mongodb/releases/tag/3.4.17-v13) + +- [bebf0289](https://github.com/stashed/mongodb/commit/bebf0289) Prepare for release 3.4.17-v13 (#1337) +- [c3be77d2](https://github.com/stashed/mongodb/commit/c3be77d2) [cherry-pick] Fix SiteInfo publishing (#1323) (#1324) +- [2b1d2af8](https://github.com/stashed/mongodb/commit/2b1d2af8) [cherry-pick] Update dependencies (#1310) (#1311) +- [af5f4646](https://github.com/stashed/mongodb/commit/af5f4646) [cherry-pick] Remove Google Analytics (#1296) (#1297) +- [4092dd65](https://github.com/stashed/mongodb/commit/4092dd65) [cherry-pick] Update dependencies (#1282) (#1283) +- [4a607d83](https://github.com/stashed/mongodb/commit/4a607d83) [cherry-pick] Fix satori/go.uuid security vulnerability (#1278) (#1279) + + +### [3.4.22-v13](https://github.com/stashed/mongodb/releases/tag/3.4.22-v13) + +- [57a441dd](https://github.com/stashed/mongodb/commit/57a441dd) Prepare for release 3.4.22-v13 (#1338) +- [f2ecc5b2](https://github.com/stashed/mongodb/commit/f2ecc5b2) [cherry-pick] Fix SiteInfo publishing (#1323) (#1325) +- [e252351d](https://github.com/stashed/mongodb/commit/e252351d) [cherry-pick] Update dependencies (#1310) (#1312) +- [8b24f555](https://github.com/stashed/mongodb/commit/8b24f555) [cherry-pick] Remove Google Analytics (#1296) (#1298) +- [919b8342](https://github.com/stashed/mongodb/commit/919b8342) [cherry-pick] Update dependencies (#1282) (#1284) +- [712b63d5](https://github.com/stashed/mongodb/commit/712b63d5) [cherry-pick] Fix satori/go.uuid security vulnerability (#1278) (#1280) + + +### [3.6.8-v13](https://github.com/stashed/mongodb/releases/tag/3.6.8-v13) + +- [46bb9249](https://github.com/stashed/mongodb/commit/46bb9249) Prepare for release 3.6.8-v13 (#1340) +- [d57604e8](https://github.com/stashed/mongodb/commit/d57604e8) [cherry-pick] Fix SiteInfo publishing (#1323) (#1327) +- [db3a4260](https://github.com/stashed/mongodb/commit/db3a4260) [cherry-pick] Update dependencies (#1310) (#1314) +- [5d46225e](https://github.com/stashed/mongodb/commit/5d46225e) [cherry-pick] Remove Google Analytics (#1296) (#1300) +- [ab7f7d38](https://github.com/stashed/mongodb/commit/ab7f7d38) [cherry-pick] Update dependencies (#1282) (#1286) + + +### [3.6.13-v13](https://github.com/stashed/mongodb/releases/tag/3.6.13-v13) + +- [1b56e134](https://github.com/stashed/mongodb/commit/1b56e134) Prepare for release 3.6.13-v13 (#1339) +- [610c36e4](https://github.com/stashed/mongodb/commit/610c36e4) [cherry-pick] Fix SiteInfo publishing (#1323) (#1326) +- [59231f32](https://github.com/stashed/mongodb/commit/59231f32) [cherry-pick] Update dependencies (#1310) (#1313) +- [b3a2048e](https://github.com/stashed/mongodb/commit/b3a2048e) [cherry-pick] Remove Google Analytics (#1296) (#1299) +- [9b4f53bc](https://github.com/stashed/mongodb/commit/9b4f53bc) [cherry-pick] Update dependencies (#1282) (#1285) +- [76c701a1](https://github.com/stashed/mongodb/commit/76c701a1) [cherry-pick] Fix satori/go.uuid security vulnerability (#1278) (#1281) + + +### [4.0.3-v13](https://github.com/stashed/mongodb/releases/tag/4.0.3-v13) + +- [5c1bde68](https://github.com/stashed/mongodb/commit/5c1bde68) Prepare for release 4.0.3-v13 (#1342) +- [2de0c6c3](https://github.com/stashed/mongodb/commit/2de0c6c3) [cherry-pick] Fix SiteInfo publishing (#1323) (#1328) +- [88ce93c2](https://github.com/stashed/mongodb/commit/88ce93c2) [cherry-pick] Update dependencies (#1310) (#1315) +- [836f5dc0](https://github.com/stashed/mongodb/commit/836f5dc0) [cherry-pick] Remove Google Analytics (#1296) (#1302) +- [721fcf81](https://github.com/stashed/mongodb/commit/721fcf81) [cherry-pick] Update dependencies (#1282) (#1288) + + +### [4.0.5-v13](https://github.com/stashed/mongodb/releases/tag/4.0.5-v13) + +- [db7f658c](https://github.com/stashed/mongodb/commit/db7f658c) Prepare for release 4.0.5-v13 (#1343) +- [403f30c5](https://github.com/stashed/mongodb/commit/403f30c5) [cherry-pick] Fix SiteInfo publishing (#1323) (#1329) +- [2514268e](https://github.com/stashed/mongodb/commit/2514268e) [cherry-pick] Update dependencies (#1310) (#1316) +- [fdeb0ff2](https://github.com/stashed/mongodb/commit/fdeb0ff2) [cherry-pick] Remove Google Analytics (#1296) (#1303) +- [dfc34ecc](https://github.com/stashed/mongodb/commit/dfc34ecc) [cherry-pick] Update dependencies (#1282) (#1289) + + +### [4.0.11-v13](https://github.com/stashed/mongodb/releases/tag/4.0.11-v13) + +- [9e7ba040](https://github.com/stashed/mongodb/commit/9e7ba040) Prepare for release 4.0.11-v13 (#1341) +- [16ca1fa2](https://github.com/stashed/mongodb/commit/16ca1fa2) Fix SiteInfo publishing (#1323) (#1336) +- [f65fdb46](https://github.com/stashed/mongodb/commit/f65fdb46) [cherry-pick] Remove Google Analytics (#1296) (#1301) +- [af34b99f](https://github.com/stashed/mongodb/commit/af34b99f) [cherry-pick] Update dependencies (#1282) (#1287) + + +### [4.1.4-v13](https://github.com/stashed/mongodb/releases/tag/4.1.4-v13) + +- [7ae5a2ad](https://github.com/stashed/mongodb/commit/7ae5a2ad) Prepare for release 4.1.4-v13 (#1345) +- [1fbfdc18](https://github.com/stashed/mongodb/commit/1fbfdc18) [cherry-pick] Fix SiteInfo publishing (#1323) (#1331) +- [3e4c83b4](https://github.com/stashed/mongodb/commit/3e4c83b4) [cherry-pick] Update dependencies (#1310) (#1318) +- [556bfba7](https://github.com/stashed/mongodb/commit/556bfba7) [cherry-pick] Remove Google Analytics (#1296) (#1305) +- [45a4763d](https://github.com/stashed/mongodb/commit/45a4763d) [cherry-pick] Update dependencies (#1282) (#1291) + + +### [4.1.7-v13](https://github.com/stashed/mongodb/releases/tag/4.1.7-v13) + +- [d6a8db2d](https://github.com/stashed/mongodb/commit/d6a8db2d) Prepare for release 4.1.7-v13 (#1346) +- [4778b673](https://github.com/stashed/mongodb/commit/4778b673) [cherry-pick] Fix SiteInfo publishing (#1323) (#1332) +- [309254e4](https://github.com/stashed/mongodb/commit/309254e4) [cherry-pick] Update dependencies (#1310) (#1319) +- [b5023e73](https://github.com/stashed/mongodb/commit/b5023e73) [cherry-pick] Remove Google Analytics (#1296) (#1306) +- [97ae840f](https://github.com/stashed/mongodb/commit/97ae840f) [cherry-pick] Update dependencies (#1282) (#1292) + + +### [4.1.13-v13](https://github.com/stashed/mongodb/releases/tag/4.1.13-v13) + +- [23386af7](https://github.com/stashed/mongodb/commit/23386af7) Prepare for release 4.1.13-v13 (#1344) +- [3d729113](https://github.com/stashed/mongodb/commit/3d729113) [cherry-pick] Fix SiteInfo publishing (#1323) (#1330) +- [64d99f5e](https://github.com/stashed/mongodb/commit/64d99f5e) [cherry-pick] Update dependencies (#1310) (#1317) +- [75f44f15](https://github.com/stashed/mongodb/commit/75f44f15) [cherry-pick] Remove Google Analytics (#1296) (#1304) +- [e0f1430a](https://github.com/stashed/mongodb/commit/e0f1430a) [cherry-pick] Update dependencies (#1282) (#1290) + + +### [4.2.3-v13](https://github.com/stashed/mongodb/releases/tag/4.2.3-v13) + +- [b939c08e](https://github.com/stashed/mongodb/commit/b939c08e) [cherry-pick] Fix SiteInfo publishing (#1323) (#1333) +- [90919d62](https://github.com/stashed/mongodb/commit/90919d62) [cherry-pick] Update dependencies (#1310) (#1320) +- [71bf43c6](https://github.com/stashed/mongodb/commit/71bf43c6) [cherry-pick] Remove Google Analytics (#1296) (#1307) +- [2de25d86](https://github.com/stashed/mongodb/commit/2de25d86) [cherry-pick] Update dependencies (#1282) (#1293) + + +### [4.4.6-v4](https://github.com/stashed/mongodb/releases/tag/4.4.6-v4) + +- [6659f5bc](https://github.com/stashed/mongodb/commit/6659f5bc) [cherry-pick] Fix SiteInfo publishing (#1323) (#1334) +- [b3ad89fd](https://github.com/stashed/mongodb/commit/b3ad89fd) [cherry-pick] Update dependencies (#1310) (#1321) +- [a6744d43](https://github.com/stashed/mongodb/commit/a6744d43) [cherry-pick] Remove Google Analytics (#1296) (#1308) +- [8ef2690c](https://github.com/stashed/mongodb/commit/8ef2690c) [cherry-pick] Update dependencies (#1282) (#1294) +- [a138a55c](https://github.com/stashed/mongodb/commit/a138a55c) Prepare for release 4.4.6-v3 (#1275) + + +### [5.0.3-v1](https://github.com/stashed/mongodb/releases/tag/5.0.3-v1) + +- [362d74c5](https://github.com/stashed/mongodb/commit/362d74c5) [cherry-pick] Fix SiteInfo publishing (#1323) (#1335) +- [7243d8e6](https://github.com/stashed/mongodb/commit/7243d8e6) [cherry-pick] Update dependencies (#1310) (#1322) +- [232ecd8c](https://github.com/stashed/mongodb/commit/232ecd8c) [cherry-pick] Remove Google Analytics (#1296) (#1309) +- [dca0617b](https://github.com/stashed/mongodb/commit/dca0617b) [cherry-pick] Update dependencies (#1282) (#1295) +- [7fb75a3a](https://github.com/stashed/mongodb/commit/7fb75a3a) Prepare for release 5.0.3 (#1276) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v14](https://github.com/stashed/mysql/releases/tag/5.7.25-v14) + +- [264b3f89](https://github.com/stashed/mysql/commit/264b3f89) Prepare for release 5.7.25-v14 (#554) +- [c711f471](https://github.com/stashed/mysql/commit/c711f471) [cherry-pick] Fix SiteInfo publishing (#549) (#550) +- [5a5dca7d](https://github.com/stashed/mysql/commit/5a5dca7d) [cherry-pick] Update dependencies (#544) (#545) +- [3f7d49ec](https://github.com/stashed/mysql/commit/3f7d49ec) [cherry-pick] Remove Google Analytics (#539) (#540) +- [45e25c49](https://github.com/stashed/mysql/commit/45e25c49) [cherry-pick] Update dependencies (#534) (#535) + + +### [8.0.3-v14](https://github.com/stashed/mysql/releases/tag/8.0.3-v14) + +- [3cea90bb](https://github.com/stashed/mysql/commit/3cea90bb) Prepare for release 8.0.3-v14 (#557) +- [680c3392](https://github.com/stashed/mysql/commit/680c3392) Fix SiteInfo publishing (#549) (#553) +- [7c7e3048](https://github.com/stashed/mysql/commit/7c7e3048) [cherry-pick] Update dependencies (#544) (#548) +- [d4de462d](https://github.com/stashed/mysql/commit/d4de462d) [cherry-pick] Remove Google Analytics (#539) (#543) +- [cb20e05d](https://github.com/stashed/mysql/commit/cb20e05d) [cherry-pick] Update dependencies (#534) (#538) + + +### [8.0.14-v14](https://github.com/stashed/mysql/releases/tag/8.0.14-v14) + +- [9364b2bf](https://github.com/stashed/mysql/commit/9364b2bf) Prepare for release 8.0.14-v14 (#555) +- [9c30475f](https://github.com/stashed/mysql/commit/9c30475f) [cherry-pick] Fix SiteInfo publishing (#549) (#551) +- [ca2762a4](https://github.com/stashed/mysql/commit/ca2762a4) [cherry-pick] Update dependencies (#544) (#546) +- [77358f6e](https://github.com/stashed/mysql/commit/77358f6e) [cherry-pick] Remove Google Analytics (#539) (#541) +- [fcc79b69](https://github.com/stashed/mysql/commit/fcc79b69) [cherry-pick] Update dependencies (#534) (#536) + + +### [8.0.21-v8](https://github.com/stashed/mysql/releases/tag/8.0.21-v8) + +- [494bf1ba](https://github.com/stashed/mysql/commit/494bf1ba) Prepare for release 8.0.21-v8 (#556) +- [7cede8cb](https://github.com/stashed/mysql/commit/7cede8cb) [cherry-pick] Fix SiteInfo publishing (#549) (#552) +- [712512d6](https://github.com/stashed/mysql/commit/712512d6) [cherry-pick] Update dependencies (#544) (#547) +- [3b2abd07](https://github.com/stashed/mysql/commit/3b2abd07) [cherry-pick] Remove Google Analytics (#539) (#542) +- [b672201c](https://github.com/stashed/mysql/commit/b672201c) [cherry-pick] Update dependencies (#534) (#537) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v1](https://github.com/stashed/nats/releases/tag/2.6.1-v1) + +- [f806fbb](https://github.com/stashed/nats/commit/f806fbb) Prepare for release 2.6.1-v1 (#19) +- [b78d2bb](https://github.com/stashed/nats/commit/b78d2bb) [cherry-pick] Fix SiteInfo publishing (#17) (#18) +- [fe9d006](https://github.com/stashed/nats/commit/fe9d006) [cherry-pick] Update dependencies (#15) (#16) +- [7c794b4](https://github.com/stashed/nats/commit/7c794b4) [cherry-pick] Remove Google Analytics (#13) (#14) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v9](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v9) + +- [72372b84](https://github.com/stashed/percona-xtradb/commit/72372b84) Prepare for release 5.7-v9 (#230) +- [b70396c7](https://github.com/stashed/percona-xtradb/commit/b70396c7) [cherry-pick] Fix SiteInfo publishing (#228) (#229) +- [ee91a0a4](https://github.com/stashed/percona-xtradb/commit/ee91a0a4) [cherry-pick] Update dependencies (#226) (#227) +- [010bc77e](https://github.com/stashed/percona-xtradb/commit/010bc77e) [cherry-pick] Remove Google Analytics (#224) (#225) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v12](https://github.com/stashed/postgres/releases/tag/9.6.19-v12) + +- [42c89586](https://github.com/stashed/postgres/commit/42c89586) Prepare for release 9.6.19-v12 (#964) +- [b7deaf65](https://github.com/stashed/postgres/commit/b7deaf65) [cherry-pick] Fix SiteInfo publishing (#952) (#956) +- [45fd4b54](https://github.com/stashed/postgres/commit/45fd4b54) [cherry-pick] Update dependencies (#945) (#951) +- [6b0eed64](https://github.com/stashed/postgres/commit/6b0eed64) [cherry-pick] Remove Google Analytics (#938) (#944) + + +### [10.14-v12](https://github.com/stashed/postgres/releases/tag/10.14-v12) + +- [ebdef975](https://github.com/stashed/postgres/commit/ebdef975) Prepare for release 10.14-v12 (#959) +- [3c4118cf](https://github.com/stashed/postgres/commit/3c4118cf) [cherry-pick] Fix SiteInfo publishing (#952) (#953) +- [e0c893c6](https://github.com/stashed/postgres/commit/e0c893c6) [cherry-pick] Update dependencies (#945) (#946) +- [5a773cde](https://github.com/stashed/postgres/commit/5a773cde) [cherry-pick] Remove Google Analytics (#938) (#939) + + +### [11.9-v12](https://github.com/stashed/postgres/releases/tag/11.9-v12) + +- [c98dd3fa](https://github.com/stashed/postgres/commit/c98dd3fa) Prepare for release 11.9-v12 (#960) +- [323002ba](https://github.com/stashed/postgres/commit/323002ba) [cherry-pick] Fix SiteInfo publishing (#952) (#954) +- [07b87ef8](https://github.com/stashed/postgres/commit/07b87ef8) [cherry-pick] Update dependencies (#945) (#947) +- [f7e632c1](https://github.com/stashed/postgres/commit/f7e632c1) [cherry-pick] Remove Google Analytics (#938) (#940) + + +### [12.4-v12](https://github.com/stashed/postgres/releases/tag/12.4-v12) + +- [8bfeb538](https://github.com/stashed/postgres/commit/8bfeb538) Prepare for release 12.4-v12 (#961) +- [7ab310cb](https://github.com/stashed/postgres/commit/7ab310cb) Fix SiteInfo publishing (#952) (#957) +- [dd32b9eb](https://github.com/stashed/postgres/commit/dd32b9eb) [cherry-pick] Update dependencies (#945) (#948) +- [4004b647](https://github.com/stashed/postgres/commit/4004b647) [cherry-pick] Remove Google Analytics (#938) (#941) + + +### [13.1-v9](https://github.com/stashed/postgres/releases/tag/13.1-v9) + +- [b2ab0cec](https://github.com/stashed/postgres/commit/b2ab0cec) Prepare for release 13.1-v9 (#962) +- [a912d10f](https://github.com/stashed/postgres/commit/a912d10f) Fix SiteInfo publishing (#952) (#958) +- [6dbbfce1](https://github.com/stashed/postgres/commit/6dbbfce1) [cherry-pick] Update dependencies (#945) (#949) +- [5f8ea3d8](https://github.com/stashed/postgres/commit/5f8ea3d8) [cherry-pick] Remove Google Analytics (#938) (#942) + + +### [14.0-v1](https://github.com/stashed/postgres/releases/tag/14.0-v1) + +- [94c0d679](https://github.com/stashed/postgres/commit/94c0d679) Prepare for release 14.0-v1 (#963) +- [ced1f471](https://github.com/stashed/postgres/commit/ced1f471) [cherry-pick] Fix SiteInfo publishing (#952) (#955) +- [aba33b34](https://github.com/stashed/postgres/commit/aba33b34) [cherry-pick] Update dependencies (#945) (#950) +- [f5f2db00](https://github.com/stashed/postgres/commit/f5f2db00) [cherry-pick] Remove Google Analytics (#938) (#943) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v2](https://github.com/stashed/redis/releases/tag/5.0.13-v2) + +- [9191462](https://github.com/stashed/redis/commit/9191462) Prepare for release 5.0.13-v2 (#67) +- [d1be27a](https://github.com/stashed/redis/commit/d1be27a) [cherry-pick] Fix SiteInfo publishing (#64) (#65) +- [c529e8d](https://github.com/stashed/redis/commit/c529e8d) [cherry-pick] Update dependencies (#61) (#62) +- [759c04e](https://github.com/stashed/redis/commit/759c04e) [cherry-pick] Remove Google Analytics (#58) (#59) +- [e563da6](https://github.com/stashed/redis/commit/e563da6) [cherry-pick] Fix satori/go.uuid security vulnerability (#55) (#56) + + +### [6.2.5-v2](https://github.com/stashed/redis/releases/tag/6.2.5-v2) + +- [a27b1fb](https://github.com/stashed/redis/commit/a27b1fb) Prepare for release 6.2.5-v2 (#68) +- [88133a9](https://github.com/stashed/redis/commit/88133a9) [cherry-pick] Fix SiteInfo publishing (#64) (#66) +- [e346fc8](https://github.com/stashed/redis/commit/e346fc8) [cherry-pick] Update dependencies (#61) (#63) +- [5895da7](https://github.com/stashed/redis/commit/5895da7) [cherry-pick] Remove Google Analytics (#58) (#60) +- [7f3dfff](https://github.com/stashed/redis/commit/7f3dfff) [cherry-pick] Fix satori/go.uuid security vulnerability (#55) (#57) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.17.0](https://github.com/stashed/stash/releases/tag/v0.17.0) + +- [56eeabab](https://github.com/stashed/stash/commit/56eeabab) Prepare for release v0.17.0 (#1403) +- [57fea237](https://github.com/stashed/stash/commit/57fea237) Fix SiteInfo publishing (#1402) +- [a3acd499](https://github.com/stashed/stash/commit/a3acd499) Update dependencies (#1401) +- [f06740a2](https://github.com/stashed/stash/commit/f06740a2) Update license verifier (#1400) +- [ff417d95](https://github.com/stashed/stash/commit/ff417d95) Remove Google Analytics (#1399) +- [4e24ba6a](https://github.com/stashed/stash/commit/4e24ba6a) Update repository config (#1398) +- [514e79b9](https://github.com/stashed/stash/commit/514e79b9) Fix satori/go.uuid security vulnerability (#1397) +- [a5b7398d](https://github.com/stashed/stash/commit/a5b7398d) Apply all pod level runtime settings to CronJob (#1396) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2021.6.18.md b/content/docs/v2024.8.27/CHANGELOG-v2021.6.18.md new file mode 100644 index 0000000000..4da67fdb07 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2021.6.18.md @@ -0,0 +1,455 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2021.6.18 + name: Changelog-v2021.6.18 + parent: welcome + weight: 20210618 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2021.6.18/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2021.6.18/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2021.6.18 (2021-06-16) + + +## [appscode/stash-enterprise](https://github.com/appscode/stash-enterprise) + +### [v0.14.0](https://github.com/appscode/stash-enterprise/releases/tag/v0.14.0) + +- [6d2613e7](https://github.com/appscode/stash-enterprise/commit/6d2613e7) Prepare for release v0.14.0 (#100) +- [f8afa76d](https://github.com/appscode/stash-enterprise/commit/f8afa76d) Send audit events when analytics are enabled (#99) +- [cdb3b3fe](https://github.com/appscode/stash-enterprise/commit/cdb3b3fe) Fix operator crash + E2E tests (#98) +- [4288f0c2](https://github.com/appscode/stash-enterprise/commit/4288f0c2) Use namespace when looking up running BackupSessions for Invoker (#97) +- [64c7d7c9](https://github.com/appscode/stash-enterprise/commit/64c7d7c9) Create auditor if license file is provided (#96) +- [5e193ea9](https://github.com/appscode/stash-enterprise/commit/5e193ea9) Disable api priortiy and fairness feature for webhook server (#95) +- [b4fcc0b6](https://github.com/appscode/stash-enterprise/commit/b4fcc0b6) Publish audit events (#94) +- [d785fec3](https://github.com/appscode/stash-enterprise/commit/d785fec3) Use klog/v2 (#93) +- [324e9aa4](https://github.com/appscode/stash-enterprise/commit/324e9aa4) Use kglog helper +- [8b4c6fd6](https://github.com/appscode/stash-enterprise/commit/8b4c6fd6) Update Kubernetes toolchain to v1.21.0 (#92) + + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.14.0](https://github.com/stashed/apimachinery/releases/tag/v0.14.0) + +- [a382bbe2](https://github.com/stashed/apimachinery/commit/a382bbe2) Fix build +- [0d9f6eec](https://github.com/stashed/apimachinery/commit/0d9f6eec) Update dependencies (#101) +- [6abdb1e2](https://github.com/stashed/apimachinery/commit/6abdb1e2) Replace go-bindata with //go:embed (#100) +- [974fc12c](https://github.com/stashed/apimachinery/commit/974fc12c) Update dependencies +- [ae165464](https://github.com/stashed/apimachinery/commit/ae165464) Fix build +- [15d8c532](https://github.com/stashed/apimachinery/commit/15d8c532) Update dependencies +- [06ac37bd](https://github.com/stashed/apimachinery/commit/06ac37bd) Only depend on klog/v2 +- [79f9a3fe](https://github.com/stashed/apimachinery/commit/79f9a3fe) Use Kubernetes v1.21.0 toolchain (#98) +- [1157edb1](https://github.com/stashed/apimachinery/commit/1157edb1) Cleanup dependencies + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.14.0](https://github.com/stashed/cli/releases/tag/v0.14.0) + +- [ceef781](https://github.com/stashed/cli/commit/ceef781) Prepare for release v0.14.0 (#124) +- [7e1fb45](https://github.com/stashed/cli/commit/7e1fb45) Use klog/v2 (#123) +- [4eee2a0](https://github.com/stashed/cli/commit/4eee2a0) Use kglog helper +- [5de2bb5](https://github.com/stashed/cli/commit/5de2bb5) Use klog/v2 (#122) +- [6a110fc](https://github.com/stashed/cli/commit/6a110fc) Use Kubernetes v1.21.0 toolchain (#121) +- [bea398c](https://github.com/stashed/cli/commit/bea398c) Use Kubernetes v1.21.0 toolchain (#120) +- [8f1a18f](https://github.com/stashed/cli/commit/8f1a18f) Use Kubernetes v1.21.0 toolchain (#119) +- [45b1b13](https://github.com/stashed/cli/commit/45b1b13) Update Kubernetes toolchain to v1.21.0 (#118) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v10](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v10) + +- [00e2fb3b](https://github.com/stashed/elasticsearch/commit/00e2fb3b) Prepare for release 5.6.4-v10 (#819) +- [d3954cad](https://github.com/stashed/elasticsearch/commit/d3954cad) [cherry-pick] Use klog/v2 (#810) (#811) +- [51f5e943](https://github.com/stashed/elasticsearch/commit/51f5e943) [cherry-pick] Use kglog helper (#802) +- [bb125283](https://github.com/stashed/elasticsearch/commit/bb125283) Use k8s 1.21.0 toolchain + + +### [6.2.4-v10](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v10) + +- [6cd15ccb](https://github.com/stashed/elasticsearch/commit/6cd15ccb) Prepare for release 6.2.4-v10 (#820) +- [e6a3e186](https://github.com/stashed/elasticsearch/commit/e6a3e186) [cherry-pick] Use klog/v2 (#810) (#812) +- [d969c43d](https://github.com/stashed/elasticsearch/commit/d969c43d) [cherry-pick] Use kglog helper (#803) +- [b7cc8f39](https://github.com/stashed/elasticsearch/commit/b7cc8f39) Use k8s 1.21.0 toolchain + + +### [6.3.0-v10](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v10) + +- [3368493b](https://github.com/stashed/elasticsearch/commit/3368493b) Prepare for release 6.3.0-v10 (#821) +- [134b13c9](https://github.com/stashed/elasticsearch/commit/134b13c9) [cherry-pick] Use klog/v2 (#810) (#813) +- [0b48f103](https://github.com/stashed/elasticsearch/commit/0b48f103) [cherry-pick] Use kglog helper (#804) +- [ac207bc9](https://github.com/stashed/elasticsearch/commit/ac207bc9) Use k8s 1.21.0 toolchain + + +### [6.4.0-v10](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v10) + +- [fe813d50](https://github.com/stashed/elasticsearch/commit/fe813d50) Prepare for release 6.4.0-v10 (#822) +- [d69452ab](https://github.com/stashed/elasticsearch/commit/d69452ab) [cherry-pick] Use klog/v2 (#810) (#814) +- [74afb891](https://github.com/stashed/elasticsearch/commit/74afb891) [cherry-pick] Use kglog helper (#805) +- [9b94b942](https://github.com/stashed/elasticsearch/commit/9b94b942) Use k8s 1.21.0 toolchain + + +### [6.5.3-v10](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v10) + +- [a101ccaa](https://github.com/stashed/elasticsearch/commit/a101ccaa) Prepare for release 6.5.3-v10 (#823) +- [73230f53](https://github.com/stashed/elasticsearch/commit/73230f53) [cherry-pick] Use klog/v2 (#810) (#815) +- [023a0131](https://github.com/stashed/elasticsearch/commit/023a0131) [cherry-pick] Use kglog helper (#806) +- [a4d28503](https://github.com/stashed/elasticsearch/commit/a4d28503) Use k8s 1.21.0 toolchain + + +### [6.8.0-v10](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v10) + +- [8a683935](https://github.com/stashed/elasticsearch/commit/8a683935) Prepare for release 6.8.0-v10 (#824) +- [db27f0d1](https://github.com/stashed/elasticsearch/commit/db27f0d1) [cherry-pick] Use klog/v2 (#810) (#816) +- [970ef1a1](https://github.com/stashed/elasticsearch/commit/970ef1a1) [cherry-pick] Use kglog helper (#807) +- [e1e24ec7](https://github.com/stashed/elasticsearch/commit/e1e24ec7) Use k8s 1.21.0 toolchain + + +### [7.2.0-v10](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v10) + +- [4eac1ea9](https://github.com/stashed/elasticsearch/commit/4eac1ea9) Prepare for release 7.2.0-v10 (#825) +- [2aa02a10](https://github.com/stashed/elasticsearch/commit/2aa02a10) [cherry-pick] Use klog/v2 (#810) (#817) +- [9dd713c7](https://github.com/stashed/elasticsearch/commit/9dd713c7) [cherry-pick] Use kglog helper (#808) +- [1495f883](https://github.com/stashed/elasticsearch/commit/1495f883) Use k8s 1.21.0 toolchain + + +### [7.3.2-v10](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v10) + +- [2808b0ba](https://github.com/stashed/elasticsearch/commit/2808b0ba) Prepare for release 7.3.2-v10 (#826) +- [478a1f1d](https://github.com/stashed/elasticsearch/commit/478a1f1d) [cherry-pick] Use klog/v2 (#810) (#818) +- [68236dc9](https://github.com/stashed/elasticsearch/commit/68236dc9) [cherry-pick] Use kglog helper (#809) +- [bfab7862](https://github.com/stashed/elasticsearch/commit/bfab7862) Use k8s 1.21.0 toolchain + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2021.6.18](https://github.com/stashed/installer/releases/tag/v2021.6.18) + +- [2082d2d](https://github.com/stashed/installer/commit/2082d2d) Prepare for release v2021.6.18 (#177) +- [1a0fccb](https://github.com/stashed/installer/commit/1a0fccb) Update user-roles for v1beta1 APIs (#176) +- [3334ea0](https://github.com/stashed/installer/commit/3334ea0) Use k8s 1.21.0 toolchain (#175) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v9](https://github.com/stashed/mongodb/releases/tag/3.4.17-v9) + +- [3c439686](https://github.com/stashed/mongodb/commit/3c439686) Prepare for release 3.4.17-v9 (#981) +- [767e3e91](https://github.com/stashed/mongodb/commit/767e3e91) [cherry-pick] Use klog/v2 (#969) (#970) +- [18054cc7](https://github.com/stashed/mongodb/commit/18054cc7) [cherry-pick] Use kglog helper (#958) +- [27c8e858](https://github.com/stashed/mongodb/commit/27c8e858) Use k8s 1.21.0 toolchain + + +### [3.4.22-v9](https://github.com/stashed/mongodb/releases/tag/3.4.22-v9) + +- [d79dd9fa](https://github.com/stashed/mongodb/commit/d79dd9fa) Prepare for release 3.4.22-v9 (#982) +- [5af76acd](https://github.com/stashed/mongodb/commit/5af76acd) [cherry-pick] Use klog/v2 (#969) (#971) +- [07acc184](https://github.com/stashed/mongodb/commit/07acc184) [cherry-pick] Use kglog helper (#959) +- [b1607397](https://github.com/stashed/mongodb/commit/b1607397) Use k8s 1.21.0 toolchain + + +### [3.6.8-v9](https://github.com/stashed/mongodb/releases/tag/3.6.8-v9) + +- [5b8ba177](https://github.com/stashed/mongodb/commit/5b8ba177) Prepare for release 3.6.8-v9 (#984) +- [1c02bbf8](https://github.com/stashed/mongodb/commit/1c02bbf8) [cherry-pick] Use klog/v2 (#969) (#973) +- [c580d161](https://github.com/stashed/mongodb/commit/c580d161) [cherry-pick] Use kglog helper (#961) +- [b13bf55e](https://github.com/stashed/mongodb/commit/b13bf55e) Use k8s 1.21.0 toolchain + + +### [3.6.13-v9](https://github.com/stashed/mongodb/releases/tag/3.6.13-v9) + +- [d947b446](https://github.com/stashed/mongodb/commit/d947b446) Prepare for release 3.6.13-v9 (#983) +- [b2f4a881](https://github.com/stashed/mongodb/commit/b2f4a881) [cherry-pick] Use klog/v2 (#969) (#972) +- [0551d36c](https://github.com/stashed/mongodb/commit/0551d36c) [cherry-pick] Use kglog helper (#960) +- [07d09f0d](https://github.com/stashed/mongodb/commit/07d09f0d) Use k8s 1.21.0 toolchain + + +### [4.0.3-v9](https://github.com/stashed/mongodb/releases/tag/4.0.3-v9) + +- [401bc9aa](https://github.com/stashed/mongodb/commit/401bc9aa) Prepare for release 4.0.3-v9 (#986) +- [fcdd878e](https://github.com/stashed/mongodb/commit/fcdd878e) [cherry-pick] Use klog/v2 (#969) (#975) +- [ab65b810](https://github.com/stashed/mongodb/commit/ab65b810) [cherry-pick] Use kglog helper (#963) +- [184f230e](https://github.com/stashed/mongodb/commit/184f230e) Use k8s 1.21.0 toolchain + + +### [4.0.5-v9](https://github.com/stashed/mongodb/releases/tag/4.0.5-v9) + +- [ae5c3955](https://github.com/stashed/mongodb/commit/ae5c3955) Prepare for release 4.0.5-v9 (#987) +- [09acaf2c](https://github.com/stashed/mongodb/commit/09acaf2c) [cherry-pick] Use klog/v2 (#969) (#976) +- [a9519e31](https://github.com/stashed/mongodb/commit/a9519e31) [cherry-pick] Use kglog helper (#964) +- [e1bf6ac9](https://github.com/stashed/mongodb/commit/e1bf6ac9) Use k8s 1.21.0 toolchain + + +### [4.0.11-v9](https://github.com/stashed/mongodb/releases/tag/4.0.11-v9) + +- [7b685c24](https://github.com/stashed/mongodb/commit/7b685c24) Prepare for release 4.0.11-v9 (#985) +- [7fdf52db](https://github.com/stashed/mongodb/commit/7fdf52db) [cherry-pick] Use klog/v2 (#969) (#974) +- [880ba142](https://github.com/stashed/mongodb/commit/880ba142) [cherry-pick] Use kglog helper (#962) +- [d555bcd5](https://github.com/stashed/mongodb/commit/d555bcd5) Use k8s 1.21.0 toolchain + + +### [4.1.4-v9](https://github.com/stashed/mongodb/releases/tag/4.1.4-v9) + +- [6e674543](https://github.com/stashed/mongodb/commit/6e674543) Prepare for release 4.1.4-v9 (#989) +- [84241d32](https://github.com/stashed/mongodb/commit/84241d32) [cherry-pick] Use klog/v2 (#969) (#978) +- [795b28db](https://github.com/stashed/mongodb/commit/795b28db) [cherry-pick] Use kglog helper (#966) +- [784b8616](https://github.com/stashed/mongodb/commit/784b8616) Use k8s 1.21.0 toolchain + + +### [4.1.7-v9](https://github.com/stashed/mongodb/releases/tag/4.1.7-v9) + +- [42699cc7](https://github.com/stashed/mongodb/commit/42699cc7) Prepare for release 4.1.7-v9 (#990) +- [8e77beec](https://github.com/stashed/mongodb/commit/8e77beec) [cherry-pick] Use klog/v2 (#969) (#979) +- [6e078f0b](https://github.com/stashed/mongodb/commit/6e078f0b) [cherry-pick] Use kglog helper (#967) +- [ff4a14a3](https://github.com/stashed/mongodb/commit/ff4a14a3) Use k8s 1.21.0 toolchain + + +### [4.1.13-v9](https://github.com/stashed/mongodb/releases/tag/4.1.13-v9) + +- [178750b5](https://github.com/stashed/mongodb/commit/178750b5) Prepare for release 4.1.13-v9 (#988) +- [378f5fb7](https://github.com/stashed/mongodb/commit/378f5fb7) [cherry-pick] Use klog/v2 (#969) (#977) +- [0571b8fd](https://github.com/stashed/mongodb/commit/0571b8fd) [cherry-pick] Use kglog helper (#965) +- [af3b544f](https://github.com/stashed/mongodb/commit/af3b544f) Use k8s 1.21.0 toolchain + + +### [4.2.3-v9](https://github.com/stashed/mongodb/releases/tag/4.2.3-v9) + +- [54bf57ea](https://github.com/stashed/mongodb/commit/54bf57ea) Prepare for release 4.2.3-v9 (#991) +- [f6276ddd](https://github.com/stashed/mongodb/commit/f6276ddd) [cherry-pick] Use klog/v2 (#969) (#980) +- [8ead06e7](https://github.com/stashed/mongodb/commit/8ead06e7) [cherry-pick] Use kglog helper (#968) +- [1be76961](https://github.com/stashed/mongodb/commit/1be76961) Use k8s 1.21.0 toolchain + + +### [4.4.6](https://github.com/stashed/mongodb/releases/tag/4.4.6) + +- [cf1ad82d](https://github.com/stashed/mongodb/commit/cf1ad82d) Stash addon for 4.4.6 + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v10](https://github.com/stashed/mysql/releases/tag/5.7.25-v10) + +- [fbbdea8e](https://github.com/stashed/mysql/commit/fbbdea8e) Prepare for release 5.7.25-v10 (#423) +- [9dbc56ef](https://github.com/stashed/mysql/commit/9dbc56ef) [cherry-pick] Bring back the wait loop (#418) (#419) +- [27d3b793](https://github.com/stashed/mysql/commit/27d3b793) Merge pull request #414 from stashed/master-b0db4d5e-5.7.25 +- [363734fc](https://github.com/stashed/mysql/commit/363734fc) Use klog/v2 (#413) +- [84f0a160](https://github.com/stashed/mysql/commit/84f0a160) [cherry-pick] Use kglog helper (#409) +- [c430ec91](https://github.com/stashed/mysql/commit/c430ec91) Use k8s 1.21.0 toolchain + + +### [8.0.3-v10](https://github.com/stashed/mysql/releases/tag/8.0.3-v10) + +- [30d727cb](https://github.com/stashed/mysql/commit/30d727cb) Prepare for release 8.0.3-v10 (#426) +- [641cdaab](https://github.com/stashed/mysql/commit/641cdaab) [cherry-pick] Bring back the wait loop (#418) (#422) +- [abe44d1a](https://github.com/stashed/mysql/commit/abe44d1a) Merge pull request #417 from stashed/master-b0db4d5e-8.0.3 +- [2208a806](https://github.com/stashed/mysql/commit/2208a806) Use klog/v2 (#413) +- [5d71f395](https://github.com/stashed/mysql/commit/5d71f395) [cherry-pick] Use kglog helper (#412) +- [37726d79](https://github.com/stashed/mysql/commit/37726d79) Use k8s 1.21.0 toolchain + + +### [8.0.14-v10](https://github.com/stashed/mysql/releases/tag/8.0.14-v10) + +- [deeb3b99](https://github.com/stashed/mysql/commit/deeb3b99) Prepare for release 8.0.14-v10 (#424) +- [dca508ca](https://github.com/stashed/mysql/commit/dca508ca) [cherry-pick] Bring back the wait loop (#418) (#420) +- [1c547c34](https://github.com/stashed/mysql/commit/1c547c34) Merge pull request #415 from stashed/master-b0db4d5e-8.0.14 +- [62b23b52](https://github.com/stashed/mysql/commit/62b23b52) Use klog/v2 (#413) +- [ce373065](https://github.com/stashed/mysql/commit/ce373065) [cherry-pick] Use kglog helper (#410) +- [274264cc](https://github.com/stashed/mysql/commit/274264cc) Use k8s 1.21.0 toolchain +- [cbfe8255](https://github.com/stashed/mysql/commit/cbfe8255) [cherry-pick] Update Kubernetes toolchain to v1.21.0 (#377) (#379) + + +### [8.0.21-v4](https://github.com/stashed/mysql/releases/tag/8.0.21-v4) + +- [784b9d43](https://github.com/stashed/mysql/commit/784b9d43) Prepare for release 8.0.21-v4 (#425) +- [00cebf5b](https://github.com/stashed/mysql/commit/00cebf5b) [cherry-pick] Bring back the wait loop (#418) (#421) +- [061cb623](https://github.com/stashed/mysql/commit/061cb623) Merge pull request #416 from stashed/master-b0db4d5e-8.0.21 +- [e2b260b6](https://github.com/stashed/mysql/commit/e2b260b6) Use klog/v2 (#413) +- [c56b36ef](https://github.com/stashed/mysql/commit/c56b36ef) [cherry-pick] Use kglog helper (#411) +- [c6999cf0](https://github.com/stashed/mysql/commit/c6999cf0) Use k8s 1.21.0 toolchain + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v5](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v5) + +- [1e66b08](https://github.com/stashed/percona-xtradb/commit/1e66b08) Prepare for release 5.7-v5 (#181) +- [dedc120](https://github.com/stashed/percona-xtradb/commit/dedc120) [cherry-pick] Use klog/v2 (#179) (#180) +- [95cc309](https://github.com/stashed/percona-xtradb/commit/95cc309) [cherry-pick] Use kglog helper (#178) +- [a8338c8](https://github.com/stashed/percona-xtradb/commit/a8338c8) Use k8s 1.21.0 toolchain +- [a0a9785](https://github.com/stashed/percona-xtradb/commit/a0a9785) [cherry-pick] Use license-verifier v0.8.1 (#168) +- [1f9029a](https://github.com/stashed/percona-xtradb/commit/1f9029a) [cherry-pick] Update license verifier to v0.8.0 (#167) +- [0dd44c3](https://github.com/stashed/percona-xtradb/commit/0dd44c3) [cherry-pick] Update license verifier (#166) +- [20481d6](https://github.com/stashed/percona-xtradb/commit/20481d6) [cherry-pick] Fix spelling (#165) +- [0fd7b26](https://github.com/stashed/percona-xtradb/commit/0fd7b26) Move docs into stashed/docs repo + Cleanup (#164) +- [bc52132](https://github.com/stashed/percona-xtradb/commit/bc52132) Prepare for release 5.7.0-v2 (#161) +- [68eb8b6](https://github.com/stashed/percona-xtradb/commit/68eb8b6) [cherry-pick] Update repository config (#159) (#160) +- [aaecf26](https://github.com/stashed/percona-xtradb/commit/aaecf26) Support multiple commands in backup/restore pipeline (#157) (#158) +- [4c6a086](https://github.com/stashed/percona-xtradb/commit/4c6a086) Update repository config (#153) (#154) +- [22f48d0](https://github.com/stashed/percona-xtradb/commit/22f48d0) Use restic 0.12.0 (#150) (#151) +- [a3645ac](https://github.com/stashed/percona-xtradb/commit/a3645ac) Update Kubernetes v1.18.9 dependencies (#148) (#149) +- [affd376](https://github.com/stashed/percona-xtradb/commit/affd376) [cherry-pick] Check codespan schema (#146) (#147) +- [0c3d3ad](https://github.com/stashed/percona-xtradb/commit/0c3d3ad) [cherry-pick] Update repository config (#141) (#142) +- [937cfc8](https://github.com/stashed/percona-xtradb/commit/937cfc8) [cherry-pick] Update repository config (#139) (#140) +- [8d03640](https://github.com/stashed/percona-xtradb/commit/8d03640) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#137) (#138) +- [d6442e5](https://github.com/stashed/percona-xtradb/commit/d6442e5) [cherry-pick] Update repository config (#134) (#135) +- [301bd0a](https://github.com/stashed/percona-xtradb/commit/301bd0a) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#132) (#133) +- [b9865e8](https://github.com/stashed/percona-xtradb/commit/b9865e8) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#130) (#131) +- [5ab3eaa](https://github.com/stashed/percona-xtradb/commit/5ab3eaa) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#128) (#129) +- [3e48d47](https://github.com/stashed/percona-xtradb/commit/3e48d47) Prepare for release 5.7.0-v1 (#126) +- [42458b3](https://github.com/stashed/percona-xtradb/commit/42458b3) Use port from AppBinding (#120) (#125) +- [70d872d](https://github.com/stashed/percona-xtradb/commit/70d872d) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#123) (#124) +- [2927d77](https://github.com/stashed/percona-xtradb/commit/2927d77) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#121) (#122) +- [fadf2d3](https://github.com/stashed/percona-xtradb/commit/fadf2d3) Prepare for release 5.7.0 (#118) +- [4ea69c8](https://github.com/stashed/percona-xtradb/commit/4ea69c8) [cherry-pick] Update repository config (#116) (#117) +- [a133516](https://github.com/stashed/percona-xtradb/commit/a133516) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#114) (#115) +- [1b7be58](https://github.com/stashed/percona-xtradb/commit/1b7be58) [cherry-pick] Update Kubernetes v1.18.9 dependencies (#112) (#113) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v8](https://github.com/stashed/postgres/releases/tag/9.6.19-v8) + +- [788fde1b](https://github.com/stashed/postgres/commit/788fde1b) Prepare for release 9.6.19-v8 (#799) +- [173bb49a](https://github.com/stashed/postgres/commit/173bb49a) [cherry-pick] Use gomodules.xyz/go-sh (#789) (#794) +- [e1192aa4](https://github.com/stashed/postgres/commit/e1192aa4) [cherry-pick] Use klog/v2 (#783) (#788) +- [d936ce1b](https://github.com/stashed/postgres/commit/d936ce1b) [cherry-pick] Use kglog helper (#782) +- [aef3ed32](https://github.com/stashed/postgres/commit/aef3ed32) Use k8s 1.21.0 toolchain + + +### [10.14-v8](https://github.com/stashed/postgres/releases/tag/10.14-v8) + +- [2032c1f6](https://github.com/stashed/postgres/commit/2032c1f6) Prepare for release 10.14-v8 (#795) +- [ba31a9af](https://github.com/stashed/postgres/commit/ba31a9af) [cherry-pick] Use gomodules.xyz/go-sh (#789) (#790) +- [986207ab](https://github.com/stashed/postgres/commit/986207ab) [cherry-pick] Use klog/v2 (#783) (#784) +- [497c60cb](https://github.com/stashed/postgres/commit/497c60cb) [cherry-pick] Use kglog helper (#778) +- [45c6ea73](https://github.com/stashed/postgres/commit/45c6ea73) Use k8s 1.21.0 toolchain + + +### [11.9-v8](https://github.com/stashed/postgres/releases/tag/11.9-v8) + +- [531246ba](https://github.com/stashed/postgres/commit/531246ba) Prepare for release 11.9-v8 (#796) +- [abebf170](https://github.com/stashed/postgres/commit/abebf170) [cherry-pick] Use gomodules.xyz/go-sh (#789) (#791) +- [7d51c48b](https://github.com/stashed/postgres/commit/7d51c48b) [cherry-pick] Use klog/v2 (#783) (#785) +- [65c3506e](https://github.com/stashed/postgres/commit/65c3506e) [cherry-pick] Use kglog helper (#779) +- [984994b5](https://github.com/stashed/postgres/commit/984994b5) Use k8s 1.21.0 toolchain + + +### [12.4-v8](https://github.com/stashed/postgres/releases/tag/12.4-v8) + +- [f8a784c1](https://github.com/stashed/postgres/commit/f8a784c1) Prepare for release 12.4-v8 (#797) +- [0de72265](https://github.com/stashed/postgres/commit/0de72265) [cherry-pick] Use gomodules.xyz/go-sh (#789) (#792) +- [5d325eb4](https://github.com/stashed/postgres/commit/5d325eb4) [cherry-pick] Use klog/v2 (#783) (#786) +- [74d0b192](https://github.com/stashed/postgres/commit/74d0b192) [cherry-pick] Use kglog helper (#780) +- [4d4a1fb8](https://github.com/stashed/postgres/commit/4d4a1fb8) Use k8s 1.21.0 toolchain + + +### [13.1-v5](https://github.com/stashed/postgres/releases/tag/13.1-v5) + +- [20973db6](https://github.com/stashed/postgres/commit/20973db6) Prepare for release 13.1-v5 (#798) +- [85fac622](https://github.com/stashed/postgres/commit/85fac622) [cherry-pick] Use gomodules.xyz/go-sh (#789) (#793) +- [a903b4df](https://github.com/stashed/postgres/commit/a903b4df) [cherry-pick] Use klog/v2 (#783) (#787) +- [9c91b43d](https://github.com/stashed/postgres/commit/9c91b43d) [cherry-pick] Use kglog helper (#781) +- [dc1f023f](https://github.com/stashed/postgres/commit/dc1f023f) Use k8s 1.21.0 toolchain + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.14.0](https://github.com/stashed/stash/releases/tag/v0.14.0) + +- [028736ed](https://github.com/stashed/stash/commit/028736ed) Prepare for release v0.14.0 (#1354) +- [dc602c0d](https://github.com/stashed/stash/commit/dc602c0d) Prepare for release v0.13.1 (#1353) +- [5d8b403f](https://github.com/stashed/stash/commit/5d8b403f) Send audit events when analytics are enabled (#1352) +- [0d934ce8](https://github.com/stashed/stash/commit/0d934ce8) Use ImagePullPolicy "IfNotPresent" instead of "Always" for addons (#1351) +- [e9f48ec4](https://github.com/stashed/stash/commit/e9f48ec4) Use namespace when looking up running BackupSessions for Invoker (#1343) +- [f79218f1](https://github.com/stashed/stash/commit/f79218f1) Create auditor if license file is provided (#1350) +- [a53710bf](https://github.com/stashed/stash/commit/a53710bf) Disable api priortiy and fairness feature for webhook server (#1349) +- [2780fbc6](https://github.com/stashed/stash/commit/2780fbc6) Publish audit events (#1348) +- [ca26878d](https://github.com/stashed/stash/commit/ca26878d) Use klog/v2 (#1347) +- [f8b0c245](https://github.com/stashed/stash/commit/f8b0c245) Use kglog helpers +- [e9fec332](https://github.com/stashed/stash/commit/e9fec332) Update Kubernetes toolchain to v1.21.0 (#1344) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.02.22.md b/content/docs/v2024.8.27/CHANGELOG-v2022.02.22.md new file mode 100644 index 0000000000..f1352fb43a --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.02.22.md @@ -0,0 +1,548 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.02.22 + name: Changelog-v2022.02.22 + parent: welcome + weight: 20220222 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.02.22/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.02.22/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.02.22 (2022-02-11) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.18.0](https://github.com/stashed/apimachinery/releases/tag/v0.18.0) + +- [79d844fb](https://github.com/stashed/apimachinery/commit/79d844fb) Refactor restore invoker status updater logic (#152) +- [49e0fc85](https://github.com/stashed/apimachinery/commit/49e0fc85) Update SiteInfo (#151) +- [7c80de5c](https://github.com/stashed/apimachinery/commit/7c80de5c) Publish GenericResource (#150) +- [0906fab7](https://github.com/stashed/apimachinery/commit/0906fab7) Add stash-crd-installer image to install CRDs on helm pre-install hook (#145) +- [9c528743](https://github.com/stashed/apimachinery/commit/9c528743) Add phase field to backupconfiguration status. (#144) +- [3e17dd8d](https://github.com/stashed/apimachinery/commit/3e17dd8d) Refactor `metrics.go` file + Add `pushgatewayURL` singletone (#149) +- [553a63a8](https://github.com/stashed/apimachinery/commit/553a63a8) Add `GetCaPath()` method (#148) +- [3f6beb6d](https://github.com/stashed/apimachinery/commit/3f6beb6d) Update repository config (#147) +- [d7bf57bf](https://github.com/stashed/apimachinery/commit/d7bf57bf) Refactor invoker package (#146) +- [7da4b19c](https://github.com/stashed/apimachinery/commit/7da4b19c) Add method to create ResticWrapper from existing shell (#143) +- [68c89614](https://github.com/stashed/apimachinery/commit/68c89614) Show Snapshot ID in kubectl list command (#141) +- [8017cd43](https://github.com/stashed/apimachinery/commit/8017cd43) Review ui apis (#142) +- [d19cc472](https://github.com/stashed/apimachinery/commit/d19cc472) Modify BackupOverview API (#140) +- [c60601b5](https://github.com/stashed/apimachinery/commit/c60601b5) Add helper method for UsagePolicy (#139) +- [bc75d16a](https://github.com/stashed/apimachinery/commit/bc75d16a) Add support for cross-namespace repository (#136) +- [e845509f](https://github.com/stashed/apimachinery/commit/e845509f) Add ui types (#137) +- [6402d026](https://github.com/stashed/apimachinery/commit/6402d026) Allow cross namespace referencing for Repository + Cleanup old APIs (#135) +- [e914179d](https://github.com/stashed/apimachinery/commit/e914179d) Update repository config (#134) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.18.0](https://github.com/stashed/cli/releases/tag/v0.18.0) + +- [fdf799c](https://github.com/stashed/cli/commit/fdf799c) Prepare for release v0.18.0 (#155) +- [71d2142](https://github.com/stashed/cli/commit/71d2142) Update SiteInfo (#153) +- [2363171](https://github.com/stashed/cli/commit/2363171) Add `pause` and `resume` command (#152) +- [e6d907b](https://github.com/stashed/cli/commit/e6d907b) Publish GenericResource (#151) +- [c90bfcc](https://github.com/stashed/cli/commit/c90bfcc) Use stashed/restic image for darwin/arm64 support (#150) +- [b42d851](https://github.com/stashed/cli/commit/b42d851) Release cli for darwin/arm64 (#149) +- [34e30bd](https://github.com/stashed/cli/commit/34e30bd) Fix stash broken cli (#148) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v15](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v15) + +- [5eafa076](https://github.com/stashed/elasticsearch/commit/5eafa076) Prepare for release 5.6.4-v15 (#1097) +- [717701f3](https://github.com/stashed/elasticsearch/commit/717701f3) [cherry-pick] Update SiteInfo (#1089) (#1090) +- [2dacaf65](https://github.com/stashed/elasticsearch/commit/2dacaf65) [cherry-pick] Publish GenericResource (#1079) (#1080) +- [3097dc28](https://github.com/stashed/elasticsearch/commit/3097dc28) Add support for backup and restore from different namespace (#1069) (#1070) + + +### [6.2.4-v15](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v15) + +- [7a7c194d](https://github.com/stashed/elasticsearch/commit/7a7c194d) Prepare for release 6.2.4-v15 (#1098) +- [6c41704d](https://github.com/stashed/elasticsearch/commit/6c41704d) [cherry-pick] Update SiteInfo (#1089) (#1091) +- [398d08d4](https://github.com/stashed/elasticsearch/commit/398d08d4) [cherry-pick] Publish GenericResource (#1079) (#1081) +- [5b9a3530](https://github.com/stashed/elasticsearch/commit/5b9a3530) Add support for backup and restore from different namespace (#1069) (#1071) + + +### [6.3.0-v15](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v15) + +- [811094fc](https://github.com/stashed/elasticsearch/commit/811094fc) Prepare for release 6.3.0-v15 (#1099) +- [7bc3cbe5](https://github.com/stashed/elasticsearch/commit/7bc3cbe5) [cherry-pick] Update SiteInfo (#1089) (#1092) +- [6027c9da](https://github.com/stashed/elasticsearch/commit/6027c9da) [cherry-pick] Publish GenericResource (#1079) (#1082) +- [8b486870](https://github.com/stashed/elasticsearch/commit/8b486870) Add support for backup and restore from different namespace (#1069) (#1072) + + +### [6.4.0-v15](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v15) + +- [c351d557](https://github.com/stashed/elasticsearch/commit/c351d557) Prepare for release 6.4.0-v15 (#1100) +- [12cad4fb](https://github.com/stashed/elasticsearch/commit/12cad4fb) [cherry-pick] Publish GenericResource (#1079) (#1083) +- [ce67978c](https://github.com/stashed/elasticsearch/commit/ce67978c) Add support for backup and restore from different namespace (#1069) (#1073) + + +### [6.5.3-v15](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v15) + +- [885a5c59](https://github.com/stashed/elasticsearch/commit/885a5c59) Prepare for release 6.5.3-v15 (#1101) +- [0012c4c5](https://github.com/stashed/elasticsearch/commit/0012c4c5) [cherry-pick] Publish GenericResource (#1079) (#1084) +- [268a0310](https://github.com/stashed/elasticsearch/commit/268a0310) Add support for backup and restore from different namespace (#1069) (#1074) + + +### [6.8.0-v15](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v15) + +- [702ac2f8](https://github.com/stashed/elasticsearch/commit/702ac2f8) Prepare for release 6.8.0-v15 (#1102) +- [8c2a442f](https://github.com/stashed/elasticsearch/commit/8c2a442f) [cherry-pick] Update SiteInfo (#1089) (#1093) +- [9d595583](https://github.com/stashed/elasticsearch/commit/9d595583) [cherry-pick] Publish GenericResource (#1079) (#1085) +- [43fb310d](https://github.com/stashed/elasticsearch/commit/43fb310d) Add support for backup and restore from different namespace (#1069) (#1075) + + +### [7.2.0-v15](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v15) + +- [b78c499d](https://github.com/stashed/elasticsearch/commit/b78c499d) Prepare for release 7.2.0-v15 (#1104) +- [666a162a](https://github.com/stashed/elasticsearch/commit/666a162a) [cherry-pick] Update SiteInfo (#1089) (#1095) +- [7c39ac5c](https://github.com/stashed/elasticsearch/commit/7c39ac5c) [cherry-pick] Publish GenericResource (#1079) (#1087) +- [e813c925](https://github.com/stashed/elasticsearch/commit/e813c925) Add support for backup and restore from different namespace (#1069) (#1077) + + +### [7.3.2-v15](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v15) + +- [ab9c11e5](https://github.com/stashed/elasticsearch/commit/ab9c11e5) Prepare for release 7.3.2-v15 (#1105) +- [d49adbf5](https://github.com/stashed/elasticsearch/commit/d49adbf5) [cherry-pick] Update SiteInfo (#1089) (#1096) +- [41b2b371](https://github.com/stashed/elasticsearch/commit/41b2b371) [cherry-pick] Publish GenericResource (#1079) (#1088) +- [90c57e9b](https://github.com/stashed/elasticsearch/commit/90c57e9b) Add support for backup and restore from different namespace (#1069) (#1078) +- [6ecd2ef3](https://github.com/stashed/elasticsearch/commit/6ecd2ef3) Prepare for release 7.3.2-v14 (#1067) + + +### [7.14.0-v1](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v1) + +- [c2388a12](https://github.com/stashed/elasticsearch/commit/c2388a12) Prepare for release 7.14.0-v1 (#1103) +- [2b05ab4a](https://github.com/stashed/elasticsearch/commit/2b05ab4a) [cherry-pick] Update SiteInfo (#1089) (#1094) +- [b62eb6a1](https://github.com/stashed/elasticsearch/commit/b62eb6a1) [cherry-pick] Publish GenericResource (#1079) (#1086) +- [e6f4b52d](https://github.com/stashed/elasticsearch/commit/e6f4b52d) [cherry-pick] Add support for backup and restore from different namespace (#1069) (#1076) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.18.0](https://github.com/stashed/enterprise/releases/tag/v0.18.0) + +- [fcf0f4f5](https://github.com/stashed/enterprise/commit/fcf0f4f5) Prepare for release v0.18.0 (#147) +- [55a9a92d](https://github.com/stashed/enterprise/commit/55a9a92d) Update UID generation for GenericResource (#146) +- [cb30a32f](https://github.com/stashed/enterprise/commit/cb30a32f) Refactor restore process status handling + add cross namespace tests (#145) +- [3f50cb35](https://github.com/stashed/enterprise/commit/3f50cb35) Update SiteInfo (#144) +- [ac18da55](https://github.com/stashed/enterprise/commit/ac18da55) Publish GenericResource (#143) +- [efcb6727](https://github.com/stashed/enterprise/commit/efcb6727) Expose original UID for audit events +- [301f2a56](https://github.com/stashed/enterprise/commit/301f2a56) Always set type meta for GenericResource +- [ccfc9ccf](https://github.com/stashed/enterprise/commit/ccfc9ccf) Publish GenericResource (#142) +- [477401a6](https://github.com/stashed/enterprise/commit/477401a6) Don't register CRDs from operator + allow passing crd-installer tag (#138) +- [fc98dd68](https://github.com/stashed/enterprise/commit/fc98dd68) Add validation webhooks for double opt-in check (#137) +- [1fb0d151](https://github.com/stashed/enterprise/commit/1fb0d151) Always keep the last completed backup (when `backupHistoryLimit > 0`) even if outside of history limit (#141) +- [db7fdbf3](https://github.com/stashed/enterprise/commit/db7fdbf3) Add support for custom Pushgateway (#140) +- [83940a05](https://github.com/stashed/enterprise/commit/83940a05) Use refactored invoker package (#139) +- [7a2d8610](https://github.com/stashed/enterprise/commit/7a2d8610) Cleanup legacy code + Support cross namespace Repository reference (#136) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v2](https://github.com/stashed/etcd/releases/tag/3.5.0-v2) + +- [5127c53](https://github.com/stashed/etcd/commit/5127c53) Prepare for release 3.5.0-v2 (#26) +- [f1dd201](https://github.com/stashed/etcd/commit/f1dd201) [cherry-pick] Update SiteInfo (#24) (#25) +- [b6aa1c1](https://github.com/stashed/etcd/commit/b6aa1c1) [cherry-pick] Publish GenericResource (#22) (#23) +- [b14a960](https://github.com/stashed/etcd/commit/b14a960) Add support for backup and restore from different namespace (#20) (#21) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.02.22](https://github.com/stashed/installer/releases/tag/v2022.02.22) + +- [29686b4](https://github.com/stashed/installer/commit/29686b4) Prepare for release v2022.02.22 (#234) +- [31da5db](https://github.com/stashed/installer/commit/31da5db) Update chart version is stash-opscenter chart +- [a341dd1](https://github.com/stashed/installer/commit/a341dd1) Update repository config (#233) +- [c417a24](https://github.com/stashed/installer/commit/c417a24) Update stash-ui-server image tag using makefile +- [0b5b92a](https://github.com/stashed/installer/commit/0b5b92a) Make operator ready for arm64 nodes (#232) +- [fc96a55](https://github.com/stashed/installer/commit/fc96a55) Publish GenericResource (#231) +- [ea1d95f](https://github.com/stashed/installer/commit/ea1d95f) Add crd-installer job (#227) +- [e9b9c1f](https://github.com/stashed/installer/commit/e9b9c1f) Add validating webhook for BackupConfiguration in community chart (#230) +- [c0e15c6](https://github.com/stashed/installer/commit/c0e15c6) Add support for custom Pushgateway (#229) +- [4ad1c1f](https://github.com/stashed/installer/commit/4ad1c1f) Update repository config (#228) +- [5334b19](https://github.com/stashed/installer/commit/5334b19) Update catalogs chart to support backup and restore from different namespace (#226) +- [419b7c3](https://github.com/stashed/installer/commit/419b7c3) Add permission for nonResourceURLs +- [3a5f578](https://github.com/stashed/installer/commit/3a5f578) Updated charts after adding some validator webhook. (#222) +- [774a76b](https://github.com/stashed/installer/commit/774a76b) Correctly generate grafana dashboard name (#225) +- [73fde3c](https://github.com/stashed/installer/commit/73fde3c) Always pull ui-server (#224) +- [f3d6a22](https://github.com/stashed/installer/commit/f3d6a22) Add permission for AppBinding & KubeDB resources in ui server chart (#223) +- [cdeac58](https://github.com/stashed/installer/commit/cdeac58) Add stash-ui-server chart (#220) +- [bfddb33](https://github.com/stashed/installer/commit/bfddb33) Update repository config (#219) +- [dbce5b5](https://github.com/stashed/installer/commit/dbce5b5) Add k8s.io/group label to grafana dashboards +- [3f07f11](https://github.com/stashed/installer/commit/3f07f11) Add Grafana Dashboards (#218) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v8](https://github.com/stashed/mariadb/releases/tag/10.5.8-v8) + +- [3241977](https://github.com/stashed/mariadb/commit/3241977) Prepare for release 10.5.8-v8 (#167) +- [2c34c07](https://github.com/stashed/mariadb/commit/2c34c07) [cherry-pick] Update SiteInfo (#165) (#166) +- [39d3273](https://github.com/stashed/mariadb/commit/39d3273) [cherry-pick] Publish GenericResource (#163) (#164) +- [4ad02b8](https://github.com/stashed/mariadb/commit/4ad02b8) Add support for backup and restore from different namespace (#161) (#162) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v14](https://github.com/stashed/mongodb/releases/tag/3.4.17-v14) + +- [7fdea5ac](https://github.com/stashed/mongodb/commit/7fdea5ac) Prepare for release 3.4.17-v14 (#1410) +- [5770d137](https://github.com/stashed/mongodb/commit/5770d137) [cherry-pick] Update SiteInfo (#1397) (#1398) +- [c97fb271](https://github.com/stashed/mongodb/commit/c97fb271) [cherry-pick] Publish GenericResource (#1383) (#1384) +- [0869cd91](https://github.com/stashed/mongodb/commit/0869cd91) Replace rs.secondaryOk() with rs.slaveOk() (#1370) +- [50073b07](https://github.com/stashed/mongodb/commit/50073b07) Add support for backup and restore from different namespace (#1354) (#1355) + + +### [3.4.22-v14](https://github.com/stashed/mongodb/releases/tag/3.4.22-v14) + +- [256947cb](https://github.com/stashed/mongodb/commit/256947cb) Prepare for release 3.4.22-v14 (#1411) +- [f37eb065](https://github.com/stashed/mongodb/commit/f37eb065) [cherry-pick] Update SiteInfo (#1397) (#1399) +- [2878238c](https://github.com/stashed/mongodb/commit/2878238c) [cherry-pick] Publish GenericResource (#1383) (#1385) +- [234668b6](https://github.com/stashed/mongodb/commit/234668b6) Replace rs.secondaryOk() with rs.slaveOk() (#1371) +- [7548c1ce](https://github.com/stashed/mongodb/commit/7548c1ce) Add support for backup and restore from different namespace (#1354) (#1356) + + +### [3.6.8-v14](https://github.com/stashed/mongodb/releases/tag/3.6.8-v14) + +- [8014a998](https://github.com/stashed/mongodb/commit/8014a998) Prepare for release 3.6.8-v14 (#1413) +- [889e8919](https://github.com/stashed/mongodb/commit/889e8919) [cherry-pick] Update SiteInfo (#1397) (#1401) +- [bc49f316](https://github.com/stashed/mongodb/commit/bc49f316) [cherry-pick] Publish GenericResource (#1383) (#1387) +- [0e83032b](https://github.com/stashed/mongodb/commit/0e83032b) Replace rs.secondaryOk() with rs.slaveOk() (#1372) +- [2a315847](https://github.com/stashed/mongodb/commit/2a315847) Add support for backup and restore from different namespace (#1354) (#1358) + + +### [3.6.13-v14](https://github.com/stashed/mongodb/releases/tag/3.6.13-v14) + +- [9bb40904](https://github.com/stashed/mongodb/commit/9bb40904) Prepare for release 3.6.13-v14 (#1412) +- [f684aea1](https://github.com/stashed/mongodb/commit/f684aea1) [cherry-pick] Update SiteInfo (#1397) (#1400) +- [1fe57cba](https://github.com/stashed/mongodb/commit/1fe57cba) [cherry-pick] Publish GenericResource (#1383) (#1386) +- [2ba645e5](https://github.com/stashed/mongodb/commit/2ba645e5) Replace rs.secondaryOk() with rs.slaveOk() (#1373) +- [9b3eab86](https://github.com/stashed/mongodb/commit/9b3eab86) Add support for backup and restore from different namespace (#1354) (#1357) + + +### [4.0.3-v14](https://github.com/stashed/mongodb/releases/tag/4.0.3-v14) + +- [257c6783](https://github.com/stashed/mongodb/commit/257c6783) Prepare for release 4.0.3-v14 (#1415) +- [7c40ea09](https://github.com/stashed/mongodb/commit/7c40ea09) [cherry-pick] Update SiteInfo (#1397) (#1403) +- [17fae849](https://github.com/stashed/mongodb/commit/17fae849) [cherry-pick] Publish GenericResource (#1383) (#1389) +- [a0f8b46f](https://github.com/stashed/mongodb/commit/a0f8b46f) Replace rs.secondaryOk() with rs.slaveOk() (#1374) +- [12958a7d](https://github.com/stashed/mongodb/commit/12958a7d) Add support for backup and restore from different namespace (#1354) (#1360) + + +### [4.0.5-v14](https://github.com/stashed/mongodb/releases/tag/4.0.5-v14) + +- [d081d8c2](https://github.com/stashed/mongodb/commit/d081d8c2) Prepare for release 4.0.5-v14 (#1416) +- [e8cf5007](https://github.com/stashed/mongodb/commit/e8cf5007) [cherry-pick] Update SiteInfo (#1397) (#1404) +- [8e3796dc](https://github.com/stashed/mongodb/commit/8e3796dc) [cherry-pick] Publish GenericResource (#1383) (#1390) +- [64379f10](https://github.com/stashed/mongodb/commit/64379f10) Replace rs.secondaryOk() with rs.slaveOk() (#1375) +- [5f0670c7](https://github.com/stashed/mongodb/commit/5f0670c7) Add support for backup and restore from different namespace (#1354) (#1361) + + +### [4.0.11-v14](https://github.com/stashed/mongodb/releases/tag/4.0.11-v14) + +- [9a366c96](https://github.com/stashed/mongodb/commit/9a366c96) Prepare for release 4.0.11-v14 (#1414) +- [7666db40](https://github.com/stashed/mongodb/commit/7666db40) [cherry-pick] Update SiteInfo (#1397) (#1402) +- [17e7281a](https://github.com/stashed/mongodb/commit/17e7281a) [cherry-pick] Publish GenericResource (#1383) (#1388) +- [f4535fa3](https://github.com/stashed/mongodb/commit/f4535fa3) Replace rs.secondaryOk() with rs.slaveOk() (#1376) +- [06bd1077](https://github.com/stashed/mongodb/commit/06bd1077) Add support for backup and restore from different namespace (#1354) (#1359) + + +### [4.1.4-v14](https://github.com/stashed/mongodb/releases/tag/4.1.4-v14) + +- [e2fc99c1](https://github.com/stashed/mongodb/commit/e2fc99c1) Prepare for release 4.1.4-v14 (#1418) +- [b81412b3](https://github.com/stashed/mongodb/commit/b81412b3) [cherry-pick] Update SiteInfo (#1397) (#1405) +- [d0e8bc14](https://github.com/stashed/mongodb/commit/d0e8bc14) [cherry-pick] Publish GenericResource (#1383) (#1392) +- [dc2da4b8](https://github.com/stashed/mongodb/commit/dc2da4b8) Replace rs.secondaryOk() with rs.slaveOk() (#1377) +- [9a4d21a2](https://github.com/stashed/mongodb/commit/9a4d21a2) Add support for backup and restore from different namespace (#1354) (#1363) + + +### [4.1.7-v14](https://github.com/stashed/mongodb/releases/tag/4.1.7-v14) + +- [ce6044eb](https://github.com/stashed/mongodb/commit/ce6044eb) Prepare for release 4.1.7-v14 (#1419) +- [21fff000](https://github.com/stashed/mongodb/commit/21fff000) [cherry-pick] Update SiteInfo (#1397) (#1406) +- [e9036951](https://github.com/stashed/mongodb/commit/e9036951) [cherry-pick] Publish GenericResource (#1383) (#1393) +- [f1a5a8db](https://github.com/stashed/mongodb/commit/f1a5a8db) Replace rs.secondaryOk() with rs.slaveOk() (#1378) +- [8a495673](https://github.com/stashed/mongodb/commit/8a495673) Add support for backup and restore from different namespace (#1354) (#1364) + + +### [4.1.13-v14](https://github.com/stashed/mongodb/releases/tag/4.1.13-v14) + +- [cb3eb5ce](https://github.com/stashed/mongodb/commit/cb3eb5ce) Prepare for release 4.1.13-v14 (#1417) +- [55690daa](https://github.com/stashed/mongodb/commit/55690daa) [cherry-pick] Publish GenericResource (#1383) (#1391) +- [2743c644](https://github.com/stashed/mongodb/commit/2743c644) Replace rs.secondaryOk() with rs.slaveOk() (#1379) +- [c5646467](https://github.com/stashed/mongodb/commit/c5646467) Add support for backup and restore from different namespace (#1354) (#1362) + + +### [4.2.3-v14](https://github.com/stashed/mongodb/releases/tag/4.2.3-v14) + +- [fe2ff6dc](https://github.com/stashed/mongodb/commit/fe2ff6dc) Prepare for release 4.2.3-v14 (#1420) +- [680e2e09](https://github.com/stashed/mongodb/commit/680e2e09) [cherry-pick] Update SiteInfo (#1397) (#1407) +- [561836a6](https://github.com/stashed/mongodb/commit/561836a6) [cherry-pick] Publish GenericResource (#1383) (#1394) +- [9bbe8802](https://github.com/stashed/mongodb/commit/9bbe8802) Replace rs.secondaryOk() with rs.slaveOk() (#1380) +- [37d09b42](https://github.com/stashed/mongodb/commit/37d09b42) Add support for backup and restore from different namespace (#1354) (#1365) +- [51c4a8dc](https://github.com/stashed/mongodb/commit/51c4a8dc) Prepare for release 4.2.3-v13 (#1350) + + +### [4.4.6-v5](https://github.com/stashed/mongodb/releases/tag/4.4.6-v5) + +- [b7533ecb](https://github.com/stashed/mongodb/commit/b7533ecb) Prepare for release 4.4.6-v5 (#1421) +- [1de5ff46](https://github.com/stashed/mongodb/commit/1de5ff46) [cherry-pick] Update SiteInfo (#1397) (#1408) +- [ed94bdd8](https://github.com/stashed/mongodb/commit/ed94bdd8) [cherry-pick] Publish GenericResource (#1383) (#1395) +- [1b2e4091](https://github.com/stashed/mongodb/commit/1b2e4091) Replace `adminCreds` with `mongoCreds` (#1381) +- [be037ead](https://github.com/stashed/mongodb/commit/be037ead) Add support for backup and restore from different namespace (#1354) (#1366) +- [e79762be](https://github.com/stashed/mongodb/commit/e79762be) Prepare for release 4.4.6-v4 (#1351) + + +### [5.0.3-v2](https://github.com/stashed/mongodb/releases/tag/5.0.3-v2) + +- [dd8649d1](https://github.com/stashed/mongodb/commit/dd8649d1) Prepare for release 5.0.3-v2 (#1422) +- [db232f1c](https://github.com/stashed/mongodb/commit/db232f1c) [cherry-pick] Update SiteInfo (#1397) (#1409) +- [b157e44d](https://github.com/stashed/mongodb/commit/b157e44d) [cherry-pick] Publish GenericResource (#1383) (#1396) +- [b45c3ad7](https://github.com/stashed/mongodb/commit/b45c3ad7) Replace `adminCreds` with `mongoCreds` (#1382) +- [caf4c255](https://github.com/stashed/mongodb/commit/caf4c255) Add support for backup and restore from different namespace (#1354) (#1367) +- [52d5104b](https://github.com/stashed/mongodb/commit/52d5104b) Prepare for release 5.0.3-v1 (#1352) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v15](https://github.com/stashed/mysql/releases/tag/5.7.25-v15) + +- [5d1d85ce](https://github.com/stashed/mysql/commit/5d1d85ce) Prepare for release 5.7.25-v15 (#574) +- [3e19e8b5](https://github.com/stashed/mysql/commit/3e19e8b5) [cherry-pick] Update SiteInfo (#569) (#570) +- [ea59f1e9](https://github.com/stashed/mysql/commit/ea59f1e9) Publish GenericResource (#564) (#568) +- [0975295b](https://github.com/stashed/mysql/commit/0975295b) Add support for backup and restore from different namespace (#559) (#560) + + +### [8.0.3-v15](https://github.com/stashed/mysql/releases/tag/8.0.3-v15) + +- [ea377e4e](https://github.com/stashed/mysql/commit/ea377e4e) Prepare for release 8.0.3-v15 (#577) +- [78289a40](https://github.com/stashed/mysql/commit/78289a40) [cherry-pick] Update SiteInfo (#569) (#573) +- [c41d4c88](https://github.com/stashed/mysql/commit/c41d4c88) Publish GenericResource (#564) (#565) +- [810af637](https://github.com/stashed/mysql/commit/810af637) Add support for backup and restore from different namespace (#559) (#563) + + +### [8.0.14-v15](https://github.com/stashed/mysql/releases/tag/8.0.14-v15) + +- [1fefc3d4](https://github.com/stashed/mysql/commit/1fefc3d4) Prepare for release 8.0.14-v15 (#575) +- [1bc03e61](https://github.com/stashed/mysql/commit/1bc03e61) [cherry-pick] Update SiteInfo (#569) (#571) +- [d2400622](https://github.com/stashed/mysql/commit/d2400622) Publish GenericResource (#564) (#567) +- [e29d03ef](https://github.com/stashed/mysql/commit/e29d03ef) Add support for backup and restore from different namespace (#559) (#561) + + +### [8.0.21-v9](https://github.com/stashed/mysql/releases/tag/8.0.21-v9) + +- [52988134](https://github.com/stashed/mysql/commit/52988134) Prepare for release 8.0.21-v9 (#576) +- [1b8be622](https://github.com/stashed/mysql/commit/1b8be622) [cherry-pick] Update SiteInfo (#569) (#572) +- [b6ad6e0a](https://github.com/stashed/mysql/commit/b6ad6e0a) Publish GenericResource (#564) (#566) +- [96d2927f](https://github.com/stashed/mysql/commit/96d2927f) Add support for backup and restore from different namespace (#559) (#562) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v2](https://github.com/stashed/nats/releases/tag/2.6.1-v2) + +- [0a8c599](https://github.com/stashed/nats/commit/0a8c599) Prepare for release 2.6.1-v2 (#28) +- [101a0b2](https://github.com/stashed/nats/commit/101a0b2) [cherry-pick] Update SiteInfo (#26) (#27) +- [5eecf9c](https://github.com/stashed/nats/commit/5eecf9c) [cherry-pick] Publish GenericResource (#24) (#25) +- [032b9da](https://github.com/stashed/nats/commit/032b9da) Refactor code by adding new methods (#23) +- [3a59f1f](https://github.com/stashed/nats/commit/3a59f1f) Support backup & restore from different namespace and external NATS Server (#21) (#22) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v10](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v10) + +- [25cd0958](https://github.com/stashed/percona-xtradb/commit/25cd0958) Prepare for release 5.7-v10 (#238) +- [685feb7d](https://github.com/stashed/percona-xtradb/commit/685feb7d) [cherry-pick] Update SiteInfo (#236) (#237) +- [d265928b](https://github.com/stashed/percona-xtradb/commit/d265928b) [cherry-pick] Publish GenericResource (#234) (#235) +- [45cc6e62](https://github.com/stashed/percona-xtradb/commit/45cc6e62) Add support for backup and restore from different namespace (#232) (#233) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v13](https://github.com/stashed/postgres/releases/tag/9.6.19-v13) + +- [2e928b1b](https://github.com/stashed/postgres/commit/2e928b1b) Prepare for release 9.6.19-v13 (#991) +- [7bd10a34](https://github.com/stashed/postgres/commit/7bd10a34) [cherry-pick] Update SiteInfo (#980) (#985) +- [23a9982b](https://github.com/stashed/postgres/commit/23a9982b) [cherry-pick] Publish GenericResource (#973) (#979) +- [0db5519e](https://github.com/stashed/postgres/commit/0db5519e) Add support for backup and restore from different namespace (#966) (#972) + + +### [10.14-v13](https://github.com/stashed/postgres/releases/tag/10.14-v13) + +- [2813a98a](https://github.com/stashed/postgres/commit/2813a98a) Prepare for release 10.14-v13 (#986) +- [50dba7d7](https://github.com/stashed/postgres/commit/50dba7d7) [cherry-pick] Update SiteInfo (#980) (#981) +- [616fd1e5](https://github.com/stashed/postgres/commit/616fd1e5) [cherry-pick] Publish GenericResource (#973) (#974) +- [2e46777c](https://github.com/stashed/postgres/commit/2e46777c) Add support for backup and restore from different namespace (#966) (#967) + + +### [11.9-v13](https://github.com/stashed/postgres/releases/tag/11.9-v13) + +- [91c7414d](https://github.com/stashed/postgres/commit/91c7414d) Prepare for release 11.9-v13 (#987) +- [32e60021](https://github.com/stashed/postgres/commit/32e60021) [cherry-pick] Update SiteInfo (#980) (#982) +- [4e3b5204](https://github.com/stashed/postgres/commit/4e3b5204) [cherry-pick] Publish GenericResource (#973) (#975) +- [c87ee334](https://github.com/stashed/postgres/commit/c87ee334) Add support for backup and restore from different namespace (#966) (#968) + + +### [12.4-v13](https://github.com/stashed/postgres/releases/tag/12.4-v13) + +- [938c3f3a](https://github.com/stashed/postgres/commit/938c3f3a) Prepare for release 12.4-v13 (#988) +- [57b64ffa](https://github.com/stashed/postgres/commit/57b64ffa) [cherry-pick] Update SiteInfo (#980) (#983) +- [4a123cdf](https://github.com/stashed/postgres/commit/4a123cdf) [cherry-pick] Publish GenericResource (#973) (#976) +- [d375d3e6](https://github.com/stashed/postgres/commit/d375d3e6) Add support for backup and restore from different namespace (#966) (#969) + + +### [13.1-v10](https://github.com/stashed/postgres/releases/tag/13.1-v10) + +- [0e9f274d](https://github.com/stashed/postgres/commit/0e9f274d) Prepare for release 13.1-v10 (#989) +- [933223ea](https://github.com/stashed/postgres/commit/933223ea) [cherry-pick] Publish GenericResource (#973) (#977) +- [6491c2c7](https://github.com/stashed/postgres/commit/6491c2c7) Add support for backup and restore from different namespace (#966) (#970) + + +### [14.0-v2](https://github.com/stashed/postgres/releases/tag/14.0-v2) + +- [6335e10e](https://github.com/stashed/postgres/commit/6335e10e) Prepare for release 14.0-v2 (#990) +- [fe4c5c2d](https://github.com/stashed/postgres/commit/fe4c5c2d) [cherry-pick] Update SiteInfo (#980) (#984) +- [a69989d5](https://github.com/stashed/postgres/commit/a69989d5) [cherry-pick] Publish GenericResource (#973) (#978) +- [bd847a6e](https://github.com/stashed/postgres/commit/bd847a6e) Add support for backup and restore from different namespace (#966) (#971) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v3](https://github.com/stashed/redis/releases/tag/5.0.13-v3) + +- [191fc96](https://github.com/stashed/redis/commit/191fc96) Prepare for release 5.0.13-v3 (#78) +- [38599a8](https://github.com/stashed/redis/commit/38599a8) [cherry-pick] Publish GenericResource (#73) (#74) +- [732fae8](https://github.com/stashed/redis/commit/732fae8) Add support for backup and restore from different namespace (#70) (#71) + + +### [6.2.5-v3](https://github.com/stashed/redis/releases/tag/6.2.5-v3) + +- [ba2bd19](https://github.com/stashed/redis/commit/ba2bd19) Prepare for release 6.2.5-v3 (#79) +- [6e5f3d2](https://github.com/stashed/redis/commit/6e5f3d2) [cherry-pick] Publish GenericResource (#73) (#75) +- [d837a32](https://github.com/stashed/redis/commit/d837a32) Add support for backup and restore from different namespace (#70) (#72) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.18.0](https://github.com/stashed/stash/releases/tag/v0.18.0) + +- [9536bc1b](https://github.com/stashed/stash/commit/9536bc1b) Prepare for release v0.18.0 (#1421) +- [0c84840e](https://github.com/stashed/stash/commit/0c84840e) Update UID generation for GenericResource (#1420) +- [2162c125](https://github.com/stashed/stash/commit/2162c125) Refactor restore process status handling + add cross namespace tests (#1419) +- [080ebfcf](https://github.com/stashed/stash/commit/080ebfcf) Update SiteInfo (#1418) +- [2727c071](https://github.com/stashed/stash/commit/2727c071) Publish GenericResource (#1416) +- [dd6b10f0](https://github.com/stashed/stash/commit/dd6b10f0) Expose original UID for generic resource +- [a121b8c3](https://github.com/stashed/stash/commit/a121b8c3) Always set type meta for GenericResource +- [9300292a](https://github.com/stashed/stash/commit/9300292a) Publish GenericResource (#1415) +- [ffe0d847](https://github.com/stashed/stash/commit/ffe0d847) Don't register CRDs from operator + allow passing crd-installer tag (#1409) +- [eb69ad4e](https://github.com/stashed/stash/commit/eb69ad4e) Port UsagePolicy validation related changes from Enterprise operator (#1414) +- [06988c00](https://github.com/stashed/stash/commit/06988c00) Always keep the last completed BackupSession (when `backupHistoryLimit > 0`) even if outside of history limit (#1413) +- [c81cf41b](https://github.com/stashed/stash/commit/c81cf41b) Add support for custom Pusgateway (#1412) +- [127017c9](https://github.com/stashed/stash/commit/127017c9) Update repository config (#1411) +- [1e41192e](https://github.com/stashed/stash/commit/1e41192e) Cleanup legacy code + Port changes from enterprise operator (#1410) +- [1ca2129b](https://github.com/stashed/stash/commit/1ca2129b) Update repository config (#1407) +- [849c782a](https://github.com/stashed/stash/commit/849c782a) Fix invalid task name in restore task resolver (#1406) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.1.0](https://github.com/stashed/ui-server/releases/tag/v0.1.0) + +- [e2ce681](https://github.com/stashed/ui-server/commit/e2ce681) Prepare for release v0.1.0 (#8) +- [264756c](https://github.com/stashed/ui-server/commit/264756c) Update dependencies (#7) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.03.29.md b/content/docs/v2024.8.27/CHANGELOG-v2022.03.29.md new file mode 100644 index 0000000000..174ecb9313 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.03.29.md @@ -0,0 +1,530 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.03.29 + name: Changelog-v2022.03.29 + parent: welcome + weight: 20220329 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.03.29/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.03.29/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.03.29 (2022-03-29) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.19.0](https://github.com/stashed/apimachinery/releases/tag/v0.19.0) + +- [6508ad7e](https://github.com/stashed/apimachinery/commit/6508ad7e) Make calculateBackupInvokerPhase() public (#163) +- [9db91ba2](https://github.com/stashed/apimachinery/commit/9db91ba2) Update Modules (#161) +- [31979993](https://github.com/stashed/apimachinery/commit/31979993) Use restic 0.13.0 (#162) +- [94de58f7](https://github.com/stashed/apimachinery/commit/94de58f7) Add cross-namespace support to Auto-Backup. (#159) +- [64b22c52](https://github.com/stashed/apimachinery/commit/64b22c52) Make Secret Key Optional for GCS, S3 Provider, and Azure (#160) +- [84656cc2](https://github.com/stashed/apimachinery/commit/84656cc2) Use Go 1.18 (#157) +- [c5658a77](https://github.com/stashed/apimachinery/commit/c5658a77) Update UID generation for GenericResource (#158) +- [7df8eca4](https://github.com/stashed/apimachinery/commit/7df8eca4) Fix Pending phase calculation (#155) +- [dc76c985](https://github.com/stashed/apimachinery/commit/dc76c985) Add hook executor helper package (#153) +- [d3d5fb01](https://github.com/stashed/apimachinery/commit/d3d5fb01) make fmt (#154) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.19.0](https://github.com/stashed/cli/releases/tag/v0.19.0) + +- [896c6cb1](https://github.com/stashed/cli/commit/896c6cb1) Prepare for release v0.19.0 (#160) +- [72fa7812](https://github.com/stashed/cli/commit/72fa7812) Use restic 0.13.0 (#159) +- [aa89dd42](https://github.com/stashed/cli/commit/aa89dd42) Use Go 1.18 (#158) +- [bd6a3a15](https://github.com/stashed/cli/commit/bd6a3a15) Use Go 1.18 (#157) +- [8399b7e5](https://github.com/stashed/cli/commit/8399b7e5) Add debug helper commands (#154) +- [ea950f22](https://github.com/stashed/cli/commit/ea950f22) make fmt (#156) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v16](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v16) + +- [d4d7b28c](https://github.com/stashed/elasticsearch/commit/d4d7b28c) Prepare for release 5.6.4-v16 (#1141) +- [ef1aed18](https://github.com/stashed/elasticsearch/commit/ef1aed18) [cherry-pick] Use restic 0.13.0 (#1131) (#1132) +- [8c3054dd](https://github.com/stashed/elasticsearch/commit/8c3054dd) [cherry-pick] Use Go 1.18 (#1127) (#1128) +- [67b1f638](https://github.com/stashed/elasticsearch/commit/67b1f638) [cherry-pick] Use Go 1.18 (#1117) (#1118) +- [2e9690c4](https://github.com/stashed/elasticsearch/commit/2e9690c4) [cherry-pick] make fmt (#1107) (#1108) + + +### [6.2.4-v16](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v16) + +- [fdaf59d4](https://github.com/stashed/elasticsearch/commit/fdaf59d4) Prepare for release 6.2.4-v16 (#1142) +- [aece6da5](https://github.com/stashed/elasticsearch/commit/aece6da5) [cherry-pick] Use restic 0.13.0 (#1131) (#1133) +- [cdfc0e3a](https://github.com/stashed/elasticsearch/commit/cdfc0e3a) [cherry-pick] Use Go 1.18 (#1127) (#1129) +- [5aba3d4c](https://github.com/stashed/elasticsearch/commit/5aba3d4c) [cherry-pick] Use Go 1.18 (#1117) (#1119) +- [3f746ef0](https://github.com/stashed/elasticsearch/commit/3f746ef0) [cherry-pick] make fmt (#1107) (#1109) + + +### [6.3.0-v16](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v16) + +- [2c01868f](https://github.com/stashed/elasticsearch/commit/2c01868f) Prepare for release 6.3.0-v16 (#1143) +- [ddc552fc](https://github.com/stashed/elasticsearch/commit/ddc552fc) [cherry-pick] Use restic 0.13.0 (#1131) (#1134) +- [44b784bf](https://github.com/stashed/elasticsearch/commit/44b784bf) [cherry-pick] Use Go 1.18 (#1127) (#1130) +- [04256ecb](https://github.com/stashed/elasticsearch/commit/04256ecb) [cherry-pick] Use Go 1.18 (#1117) (#1120) +- [c517829a](https://github.com/stashed/elasticsearch/commit/c517829a) [cherry-pick] make fmt (#1107) (#1110) + + +### [6.4.0-v16](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v16) + +- [d19b0163](https://github.com/stashed/elasticsearch/commit/d19b0163) Prepare for release 6.4.0-v16 (#1144) +- [d405ec80](https://github.com/stashed/elasticsearch/commit/d405ec80) [cherry-pick] Use restic 0.13.0 (#1131) (#1135) +- [dd94d90a](https://github.com/stashed/elasticsearch/commit/dd94d90a) [cherry-pick] Use Go 1.18 (#1117) (#1121) +- [0f03b0bf](https://github.com/stashed/elasticsearch/commit/0f03b0bf) [cherry-pick] make fmt (#1107) (#1111) + + +### [6.5.3-v16](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v16) + +- [96a2ea8b](https://github.com/stashed/elasticsearch/commit/96a2ea8b) Prepare for release 6.5.3-v16 (#1145) +- [f8e3c7a7](https://github.com/stashed/elasticsearch/commit/f8e3c7a7) [cherry-pick] Use restic 0.13.0 (#1131) (#1136) +- [c2a9fdd4](https://github.com/stashed/elasticsearch/commit/c2a9fdd4) [cherry-pick] Use Go 1.18 (#1117) (#1122) +- [a9141526](https://github.com/stashed/elasticsearch/commit/a9141526) [cherry-pick] make fmt (#1107) (#1112) + + +### [6.8.0-v16](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v16) + +- [76a7ecaf](https://github.com/stashed/elasticsearch/commit/76a7ecaf) Prepare for release 6.8.0-v16 (#1146) +- [9b65350a](https://github.com/stashed/elasticsearch/commit/9b65350a) [cherry-pick] Use restic 0.13.0 (#1131) (#1137) +- [c114bd14](https://github.com/stashed/elasticsearch/commit/c114bd14) [cherry-pick] Use Go 1.18 (#1117) (#1123) +- [7388c816](https://github.com/stashed/elasticsearch/commit/7388c816) [cherry-pick] make fmt (#1107) (#1113) + + +### [7.2.0-v16](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v16) + +- [60d30030](https://github.com/stashed/elasticsearch/commit/60d30030) Prepare for release 7.2.0-v16 (#1148) +- [3c123803](https://github.com/stashed/elasticsearch/commit/3c123803) [cherry-pick] Use restic 0.13.0 (#1131) (#1139) +- [c5c34027](https://github.com/stashed/elasticsearch/commit/c5c34027) [cherry-pick] Use Go 1.18 (#1117) (#1125) +- [3c25de99](https://github.com/stashed/elasticsearch/commit/3c25de99) [cherry-pick] make fmt (#1107) (#1115) + + +### [7.3.2-v16](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v16) + +- [68552cbf](https://github.com/stashed/elasticsearch/commit/68552cbf) Prepare for release 7.3.2-v16 (#1149) +- [9ddbdfef](https://github.com/stashed/elasticsearch/commit/9ddbdfef) [cherry-pick] Use restic 0.13.0 (#1131) (#1140) +- [f8a7044c](https://github.com/stashed/elasticsearch/commit/f8a7044c) [cherry-pick] Use Go 1.18 (#1117) (#1126) +- [d1707c75](https://github.com/stashed/elasticsearch/commit/d1707c75) [cherry-pick] make fmt (#1107) (#1116) + + +### [7.14.0-v2](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v2) + +- [79de930f](https://github.com/stashed/elasticsearch/commit/79de930f) Prepare for release 7.14.0-v2 (#1147) +- [88c0f2d4](https://github.com/stashed/elasticsearch/commit/88c0f2d4) [cherry-pick] Use restic 0.13.0 (#1131) (#1138) +- [75bcb45b](https://github.com/stashed/elasticsearch/commit/75bcb45b) [cherry-pick] Use Go 1.18 (#1117) (#1124) +- [bb5196e5](https://github.com/stashed/elasticsearch/commit/bb5196e5) [cherry-pick] make fmt (#1107) (#1114) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.19.0](https://github.com/stashed/enterprise/releases/tag/v0.19.0) + + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v3](https://github.com/stashed/etcd/releases/tag/3.5.0-v3) + +- [319fece](https://github.com/stashed/etcd/commit/319fece) Prepare for release 3.5.0-v3 (#35) +- [5e44314](https://github.com/stashed/etcd/commit/5e44314) [cherry-pick] Use restic 0.13.0 (#33) (#34) +- [cbbeedc](https://github.com/stashed/etcd/commit/cbbeedc) [cherry-pick] Use Go 1.18 (#30) (#31) +- [39ee0f6](https://github.com/stashed/etcd/commit/39ee0f6) [cherry-pick] make fmt (#28) (#29) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.03.29](https://github.com/stashed/installer/releases/tag/v2022.03.29) + +- [a13b1fa7](https://github.com/stashed/installer/commit/a13b1fa7) Prepare for release v2022.03.29 (#243) +- [15dfb31d](https://github.com/stashed/installer/commit/15dfb31d) Add validation webhook to BackBlueprint. (#242) +- [6e1e9461](https://github.com/stashed/installer/commit/6e1e9461) Fix schema-checker api type (#237) +- [48aed579](https://github.com/stashed/installer/commit/48aed579) Use restic 0.13.0 (#241) +- [a4ad251a](https://github.com/stashed/installer/commit/a4ad251a) Make dashboards compatible to Grafana 7.3.5 to 8.x (#240) +- [f30dda49](https://github.com/stashed/installer/commit/f30dda49) Use Go 1.18 (#239) +- [b6584e55](https://github.com/stashed/installer/commit/b6584e55) Use Go 1.18 (#238) +- [d021d8c0](https://github.com/stashed/installer/commit/d021d8c0) Update crds +- [5c527d2b](https://github.com/stashed/installer/commit/5c527d2b) Use stash namespace by default (#236) +- [93936767](https://github.com/stashed/installer/commit/93936767) make fmt (#235) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v9](https://github.com/stashed/mariadb/releases/tag/10.5.8-v9) + +- [04c1b78](https://github.com/stashed/mariadb/commit/04c1b78) Prepare for release 10.5.8-v9 (#177) +- [407e8f5](https://github.com/stashed/mariadb/commit/407e8f5) [cherry-pick] Use restic 0.13.0 (#175) (#176) +- [603f917](https://github.com/stashed/mariadb/commit/603f917) Use Go 1.18 (#173) (#174) +- [0f74c1d](https://github.com/stashed/mariadb/commit/0f74c1d) [cherry-pick] Use Go 1.18 (#171) (#172) +- [5d08051](https://github.com/stashed/mariadb/commit/5d08051) [cherry-pick] make fmt (#169) (#170) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v15](https://github.com/stashed/mongodb/releases/tag/3.4.17-v15) + +- [755b8c3d](https://github.com/stashed/mongodb/commit/755b8c3d) Prepare for release 3.4.17-v15 (#1482) +- [0f01ca5a](https://github.com/stashed/mongodb/commit/0f01ca5a) Use restic 0.13.0 (#1480) (#1481) +- [b962d329](https://github.com/stashed/mongodb/commit/b962d329) Use Go 1.18 (#1466) (#1467) +- [81abf07e](https://github.com/stashed/mongodb/commit/81abf07e) [cherry-pick] Use Go 1.18 (#1452) (#1453) +- [77c64325](https://github.com/stashed/mongodb/commit/77c64325) [cherry-pick] make fmt (#1438) (#1439) +- [47ecc163](https://github.com/stashed/mongodb/commit/47ecc163) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1425) + + +### [3.4.22-v15](https://github.com/stashed/mongodb/releases/tag/3.4.22-v15) + +- [31b752ed](https://github.com/stashed/mongodb/commit/31b752ed) Prepare for release 3.4.22-v15 (#1483) +- [fc27bd6c](https://github.com/stashed/mongodb/commit/fc27bd6c) Use restic 0.13.0 (#1480) +- [8f441de2](https://github.com/stashed/mongodb/commit/8f441de2) Use Go 1.18 (#1466) (#1468) +- [f96ecfc3](https://github.com/stashed/mongodb/commit/f96ecfc3) [cherry-pick] Use Go 1.18 (#1452) (#1454) +- [3746814a](https://github.com/stashed/mongodb/commit/3746814a) [cherry-pick] make fmt (#1438) (#1440) +- [8d1a140a](https://github.com/stashed/mongodb/commit/8d1a140a) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1426) + + +### [3.6.8-v15](https://github.com/stashed/mongodb/releases/tag/3.6.8-v15) + +- [1931c4f5](https://github.com/stashed/mongodb/commit/1931c4f5) Prepare for release 3.6.8-v15 (#1485) +- [1a92d450](https://github.com/stashed/mongodb/commit/1a92d450) Use restic 0.13.0 (#1480) +- [bdd7b1cc](https://github.com/stashed/mongodb/commit/bdd7b1cc) Use Go 1.18 (#1466) (#1470) +- [1e54c5da](https://github.com/stashed/mongodb/commit/1e54c5da) [cherry-pick] Use Go 1.18 (#1452) (#1456) +- [fa12f5a3](https://github.com/stashed/mongodb/commit/fa12f5a3) [cherry-pick] make fmt (#1438) (#1442) +- [8caec9f3](https://github.com/stashed/mongodb/commit/8caec9f3) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1428) + + +### [3.6.13-v15](https://github.com/stashed/mongodb/releases/tag/3.6.13-v15) + +- [3207c3d8](https://github.com/stashed/mongodb/commit/3207c3d8) Prepare for release 3.6.13-v15 (#1484) +- [6b81e8c6](https://github.com/stashed/mongodb/commit/6b81e8c6) Use restic 0.13.0 (#1480) +- [ab4e31b1](https://github.com/stashed/mongodb/commit/ab4e31b1) Use Go 1.18 (#1466) (#1469) +- [c71b1318](https://github.com/stashed/mongodb/commit/c71b1318) [cherry-pick] Use Go 1.18 (#1452) (#1455) +- [2f1dbdba](https://github.com/stashed/mongodb/commit/2f1dbdba) [cherry-pick] make fmt (#1438) (#1441) +- [f229bc18](https://github.com/stashed/mongodb/commit/f229bc18) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1427) + + +### [4.0.3-v15](https://github.com/stashed/mongodb/releases/tag/4.0.3-v15) + +- [7214e8fa](https://github.com/stashed/mongodb/commit/7214e8fa) Prepare for release 4.0.3-v15 (#1487) +- [15e09cd3](https://github.com/stashed/mongodb/commit/15e09cd3) Use restic 0.13.0 (#1480) +- [c9d70039](https://github.com/stashed/mongodb/commit/c9d70039) Use Go 1.18 (#1466) (#1472) +- [53b80297](https://github.com/stashed/mongodb/commit/53b80297) [cherry-pick] Use Go 1.18 (#1452) (#1458) +- [8046cba4](https://github.com/stashed/mongodb/commit/8046cba4) [cherry-pick] make fmt (#1438) (#1444) +- [582f10d4](https://github.com/stashed/mongodb/commit/582f10d4) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1430) + + +### [4.0.5-v15](https://github.com/stashed/mongodb/releases/tag/4.0.5-v15) + +- [b4a5a87c](https://github.com/stashed/mongodb/commit/b4a5a87c) Prepare for release 4.0.5-v15 (#1488) +- [de293f86](https://github.com/stashed/mongodb/commit/de293f86) Use restic 0.13.0 (#1480) +- [179b2fdc](https://github.com/stashed/mongodb/commit/179b2fdc) Use Go 1.18 (#1466) (#1473) +- [22a17498](https://github.com/stashed/mongodb/commit/22a17498) [cherry-pick] Use Go 1.18 (#1452) (#1459) +- [e128a299](https://github.com/stashed/mongodb/commit/e128a299) [cherry-pick] make fmt (#1438) (#1445) +- [fc5f6506](https://github.com/stashed/mongodb/commit/fc5f6506) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1431) + + +### [4.0.11-v15](https://github.com/stashed/mongodb/releases/tag/4.0.11-v15) + +- [1d7a3de0](https://github.com/stashed/mongodb/commit/1d7a3de0) Prepare for release 4.0.11-v15 (#1486) +- [0cccc482](https://github.com/stashed/mongodb/commit/0cccc482) Use restic 0.13.0 (#1480) +- [52ee2894](https://github.com/stashed/mongodb/commit/52ee2894) Use Go 1.18 (#1466) (#1471) +- [8ef1c550](https://github.com/stashed/mongodb/commit/8ef1c550) [cherry-pick] Use Go 1.18 (#1452) (#1457) +- [847a3505](https://github.com/stashed/mongodb/commit/847a3505) [cherry-pick] make fmt (#1438) (#1443) +- [c61280d0](https://github.com/stashed/mongodb/commit/c61280d0) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1429) + + +### [4.1.4-v15](https://github.com/stashed/mongodb/releases/tag/4.1.4-v15) + +- [619d4081](https://github.com/stashed/mongodb/commit/619d4081) Prepare for release 4.1.4-v15 (#1490) +- [92453bef](https://github.com/stashed/mongodb/commit/92453bef) Use restic 0.13.0 (#1480) +- [7346833f](https://github.com/stashed/mongodb/commit/7346833f) [cherry-pick] Use Go 1.18 (#1466) (#1475) +- [4908b80a](https://github.com/stashed/mongodb/commit/4908b80a) [cherry-pick] Use Go 1.18 (#1452) (#1461) +- [367d80e1](https://github.com/stashed/mongodb/commit/367d80e1) [cherry-pick] make fmt (#1438) (#1447) +- [13d8ad14](https://github.com/stashed/mongodb/commit/13d8ad14) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1433) + + +### [4.1.7-v15](https://github.com/stashed/mongodb/releases/tag/4.1.7-v15) + +- [eb26eb18](https://github.com/stashed/mongodb/commit/eb26eb18) Prepare for release 4.1.7-v15 (#1491) +- [2481e91d](https://github.com/stashed/mongodb/commit/2481e91d) Use restic 0.13.0 (#1480) +- [9530b9f8](https://github.com/stashed/mongodb/commit/9530b9f8) [cherry-pick] Use Go 1.18 (#1466) (#1476) +- [c5aab733](https://github.com/stashed/mongodb/commit/c5aab733) [cherry-pick] Use Go 1.18 (#1452) (#1462) +- [05adf1b1](https://github.com/stashed/mongodb/commit/05adf1b1) [cherry-pick] make fmt (#1438) (#1448) +- [ccbd1152](https://github.com/stashed/mongodb/commit/ccbd1152) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1434) + + +### [4.1.13-v15](https://github.com/stashed/mongodb/releases/tag/4.1.13-v15) + +- [2c3283e9](https://github.com/stashed/mongodb/commit/2c3283e9) Prepare for release 4.1.13-v15 (#1489) +- [3a8b3866](https://github.com/stashed/mongodb/commit/3a8b3866) Use restic 0.13.0 (#1480) +- [24836e66](https://github.com/stashed/mongodb/commit/24836e66) Use Go 1.18 (#1466) (#1474) +- [11b3b09c](https://github.com/stashed/mongodb/commit/11b3b09c) [cherry-pick] Use Go 1.18 (#1452) (#1460) +- [3bfab9f1](https://github.com/stashed/mongodb/commit/3bfab9f1) [cherry-pick] make fmt (#1438) (#1446) +- [6d2aa5fc](https://github.com/stashed/mongodb/commit/6d2aa5fc) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1432) + + +### [4.2.3-v15](https://github.com/stashed/mongodb/releases/tag/4.2.3-v15) + +- [652a9602](https://github.com/stashed/mongodb/commit/652a9602) Prepare for release 4.2.3-v15 (#1492) +- [120e3822](https://github.com/stashed/mongodb/commit/120e3822) Use restic 0.13.0 (#1480) +- [552c5217](https://github.com/stashed/mongodb/commit/552c5217) [cherry-pick] Use Go 1.18 (#1466) (#1477) +- [cbf442eb](https://github.com/stashed/mongodb/commit/cbf442eb) [cherry-pick] Use Go 1.18 (#1452) (#1463) +- [4d39da7a](https://github.com/stashed/mongodb/commit/4d39da7a) [cherry-pick] make fmt (#1438) (#1449) +- [b60b11fd](https://github.com/stashed/mongodb/commit/b60b11fd) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1435) + + +### [4.4.6-v6](https://github.com/stashed/mongodb/releases/tag/4.4.6-v6) + +- [a7043538](https://github.com/stashed/mongodb/commit/a7043538) Prepare for release 4.4.6-v6 (#1493) +- [6f30e9ef](https://github.com/stashed/mongodb/commit/6f30e9ef) Use restic 0.13.0 (#1480) +- [55ca4046](https://github.com/stashed/mongodb/commit/55ca4046) [cherry-pick] Use Go 1.18 (#1466) (#1478) +- [5b7846c4](https://github.com/stashed/mongodb/commit/5b7846c4) [cherry-pick] Use Go 1.18 (#1452) (#1464) +- [e16bcac4](https://github.com/stashed/mongodb/commit/e16bcac4) [cherry-pick] make fmt (#1438) (#1450) +- [8d939ff6](https://github.com/stashed/mongodb/commit/8d939ff6) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1436) + + +### [5.0.3-v3](https://github.com/stashed/mongodb/releases/tag/5.0.3-v3) + +- [0fc4d4f9](https://github.com/stashed/mongodb/commit/0fc4d4f9) Use restic 0.13.0 (#1480) +- [15939f28](https://github.com/stashed/mongodb/commit/15939f28) [cherry-pick] Use Go 1.18 (#1466) (#1479) +- [e0ae2279](https://github.com/stashed/mongodb/commit/e0ae2279) [cherry-pick] Use Go 1.18 (#1452) (#1465) +- [1cdc0ae5](https://github.com/stashed/mongodb/commit/1cdc0ae5) [cherry-pick] make fmt (#1438) (#1451) +- [1aacdd1f](https://github.com/stashed/mongodb/commit/1aacdd1f) [cherry-pick] Update flags: `--username`, `--password` to `--username=`, `--password=` (#1437) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v16](https://github.com/stashed/mysql/releases/tag/5.7.25-v16) + +- [bb07cd05](https://github.com/stashed/mysql/commit/bb07cd05) Prepare for release 5.7.25-v16 (#599) +- [d481d606](https://github.com/stashed/mysql/commit/d481d606) [cherry-pick] Use restic 0.13.0 (#594) (#595) +- [518948e0](https://github.com/stashed/mysql/commit/518948e0) [cherry-pick] Use Go 1.18 (#589) (#590) +- [77a5f78c](https://github.com/stashed/mysql/commit/77a5f78c) [cherry-pick] Use Go 1.18 (#584) (#585) +- [595a7669](https://github.com/stashed/mysql/commit/595a7669) [cherry-pick] make fmt (#579) (#580) + + +### [8.0.3-v16](https://github.com/stashed/mysql/releases/tag/8.0.3-v16) + +- [2a1de95f](https://github.com/stashed/mysql/commit/2a1de95f) Prepare for release 8.0.3-v16 (#602) +- [7d4c8598](https://github.com/stashed/mysql/commit/7d4c8598) [cherry-pick] Use restic 0.13.0 (#594) (#598) +- [690c5e57](https://github.com/stashed/mysql/commit/690c5e57) [cherry-pick] Use Go 1.18 (#589) (#593) +- [d74f25c0](https://github.com/stashed/mysql/commit/d74f25c0) [cherry-pick] Use Go 1.18 (#584) (#588) +- [8d564007](https://github.com/stashed/mysql/commit/8d564007) [cherry-pick] make fmt (#579) (#583) + + +### [8.0.14-v16](https://github.com/stashed/mysql/releases/tag/8.0.14-v16) + +- [4ddb1407](https://github.com/stashed/mysql/commit/4ddb1407) Prepare for release 8.0.14-v16 (#600) +- [3dac3d8e](https://github.com/stashed/mysql/commit/3dac3d8e) [cherry-pick] Use restic 0.13.0 (#594) (#596) +- [243c3032](https://github.com/stashed/mysql/commit/243c3032) [cherry-pick] Use Go 1.18 (#589) (#591) +- [32dc6eb9](https://github.com/stashed/mysql/commit/32dc6eb9) [cherry-pick] Use Go 1.18 (#584) (#586) +- [a549ebdf](https://github.com/stashed/mysql/commit/a549ebdf) [cherry-pick] make fmt (#579) (#581) + + +### [8.0.21-v10](https://github.com/stashed/mysql/releases/tag/8.0.21-v10) + +- [179a84fb](https://github.com/stashed/mysql/commit/179a84fb) Prepare for release 8.0.21-v10 (#601) +- [8a441e4e](https://github.com/stashed/mysql/commit/8a441e4e) [cherry-pick] Use restic 0.13.0 (#594) (#597) +- [0804b601](https://github.com/stashed/mysql/commit/0804b601) [cherry-pick] Use Go 1.18 (#589) (#592) +- [0064f95c](https://github.com/stashed/mysql/commit/0064f95c) [cherry-pick] Use Go 1.18 (#584) (#587) +- [b6b7c653](https://github.com/stashed/mysql/commit/b6b7c653) [cherry-pick] make fmt (#579) (#582) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v3](https://github.com/stashed/nats/releases/tag/2.6.1-v3) + +- [cfe6a27](https://github.com/stashed/nats/commit/cfe6a27) Prepare for release 2.6.1-v3 (#38) +- [d7d5f7c](https://github.com/stashed/nats/commit/d7d5f7c) [cherry-pick] Use restic 0.13.0 (#36) (#37) +- [234dc73](https://github.com/stashed/nats/commit/234dc73) [cherry-pick] Use Go 1.18 (#34) (#35) +- [ed5c4a7](https://github.com/stashed/nats/commit/ed5c4a7) [cherry-pick] Use Go 1.18 (#32) (#33) +- [17de3e7](https://github.com/stashed/nats/commit/17de3e7) [cherry-pick] make fmt (#30) (#31) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v11](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v11) + +- [be059737](https://github.com/stashed/percona-xtradb/commit/be059737) Prepare for release 5.7-v11 (#248) +- [b5fafc54](https://github.com/stashed/percona-xtradb/commit/b5fafc54) [cherry-pick] Use restic 0.13.0 (#246) (#247) +- [cd6b848e](https://github.com/stashed/percona-xtradb/commit/cd6b848e) [cherry-pick] Use Go 1.18 (#244) (#245) +- [5e9c732d](https://github.com/stashed/percona-xtradb/commit/5e9c732d) [cherry-pick] Use Go 1.18 (#242) (#243) +- [8e2fda28](https://github.com/stashed/percona-xtradb/commit/8e2fda28) [cherry-pick] make fmt (#240) (#241) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v14](https://github.com/stashed/postgres/releases/tag/9.6.19-v14) + +- [daefabc0](https://github.com/stashed/postgres/commit/daefabc0) Prepare for release 9.6.19-v14 (#1025) +- [cb432033](https://github.com/stashed/postgres/commit/cb432033) [cherry-pick] Use restic 0.13.0 (#1014) (#1019) +- [cdc98691](https://github.com/stashed/postgres/commit/cdc98691) [cherry-pick] Use Go 1.18 (#1007) (#1013) +- [f41d2233](https://github.com/stashed/postgres/commit/f41d2233) [cherry-pick] Use Go 1.18 (#1000) (#1006) +- [ef93027e](https://github.com/stashed/postgres/commit/ef93027e) [cherry-pick] make fmt (#993) (#999) + + +### [10.14-v14](https://github.com/stashed/postgres/releases/tag/10.14-v14) + +- [44834ce7](https://github.com/stashed/postgres/commit/44834ce7) Prepare for release 10.14-v14 (#1020) +- [49e26c7b](https://github.com/stashed/postgres/commit/49e26c7b) [cherry-pick] Use restic 0.13.0 (#1014) (#1015) +- [671ede8a](https://github.com/stashed/postgres/commit/671ede8a) [cherry-pick] Use Go 1.18 (#1007) (#1008) +- [9aff959d](https://github.com/stashed/postgres/commit/9aff959d) [cherry-pick] Use Go 1.18 (#1000) (#1001) +- [eed7e597](https://github.com/stashed/postgres/commit/eed7e597) [cherry-pick] make fmt (#993) (#994) + + +### [11.9-v14](https://github.com/stashed/postgres/releases/tag/11.9-v14) + +- [9cf76131](https://github.com/stashed/postgres/commit/9cf76131) Prepare for release 11.9-v14 (#1021) +- [86a00eab](https://github.com/stashed/postgres/commit/86a00eab) [cherry-pick] Use restic 0.13.0 (#1014) (#1016) +- [c09b4c75](https://github.com/stashed/postgres/commit/c09b4c75) [cherry-pick] Use Go 1.18 (#1007) (#1009) +- [61b21ca5](https://github.com/stashed/postgres/commit/61b21ca5) [cherry-pick] Use Go 1.18 (#1000) (#1002) +- [767095f5](https://github.com/stashed/postgres/commit/767095f5) [cherry-pick] make fmt (#993) (#995) + + +### [12.4-v14](https://github.com/stashed/postgres/releases/tag/12.4-v14) + +- [67174902](https://github.com/stashed/postgres/commit/67174902) Prepare for release 12.4-v14 (#1022) +- [3f86c8e0](https://github.com/stashed/postgres/commit/3f86c8e0) [cherry-pick] Use restic 0.13.0 (#1014) (#1017) +- [e3c51f56](https://github.com/stashed/postgres/commit/e3c51f56) [cherry-pick] Use Go 1.18 (#1007) (#1010) +- [24676be8](https://github.com/stashed/postgres/commit/24676be8) [cherry-pick] Use Go 1.18 (#1000) (#1003) +- [d214302e](https://github.com/stashed/postgres/commit/d214302e) [cherry-pick] make fmt (#993) (#996) + + +### [13.1-v11](https://github.com/stashed/postgres/releases/tag/13.1-v11) + +- [0f7020a2](https://github.com/stashed/postgres/commit/0f7020a2) Prepare for release 13.1-v11 (#1023) +- [8f919d23](https://github.com/stashed/postgres/commit/8f919d23) [cherry-pick] Use restic 0.13.0 (#1014) (#1018) +- [fe60ccc3](https://github.com/stashed/postgres/commit/fe60ccc3) [cherry-pick] Use Go 1.18 (#1007) (#1011) +- [723475ed](https://github.com/stashed/postgres/commit/723475ed) [cherry-pick] Use Go 1.18 (#1000) (#1004) +- [b7a719bb](https://github.com/stashed/postgres/commit/b7a719bb) [cherry-pick] make fmt (#993) (#997) + + +### [14.0-v3](https://github.com/stashed/postgres/releases/tag/14.0-v3) + +- [2bdbb796](https://github.com/stashed/postgres/commit/2bdbb796) Prepare for release 14.0-v3 (#1024) +- [3c73aaeb](https://github.com/stashed/postgres/commit/3c73aaeb) [cherry-pick] Use Go 1.18 (#1007) (#1012) +- [851372a5](https://github.com/stashed/postgres/commit/851372a5) [cherry-pick] Use Go 1.18 (#1000) (#1005) +- [a65687e4](https://github.com/stashed/postgres/commit/a65687e4) [cherry-pick] make fmt (#993) (#998) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v4](https://github.com/stashed/redis/releases/tag/5.0.13-v4) + +- [fb8fc3d](https://github.com/stashed/redis/commit/fb8fc3d) Prepare for release 5.0.13-v4 (#93) +- [eaf9b82](https://github.com/stashed/redis/commit/eaf9b82) [cherry-pick] Use restic 0.13.0 (#90) (#91) +- [5cb5e1f](https://github.com/stashed/redis/commit/5cb5e1f) [cherry-pick] Use Go 1.18 (#87) (#88) +- [d0bc853](https://github.com/stashed/redis/commit/d0bc853) [cherry-pick] Use Go 1.18 (#84) (#85) +- [b8d96af](https://github.com/stashed/redis/commit/b8d96af) [cherry-pick] make fmt (#81) (#82) + + +### [6.2.5-v4](https://github.com/stashed/redis/releases/tag/6.2.5-v4) + +- [58a1b2f](https://github.com/stashed/redis/commit/58a1b2f) Prepare for release 6.2.5-v4 (#94) +- [bb461a4](https://github.com/stashed/redis/commit/bb461a4) [cherry-pick] Use restic 0.13.0 (#90) (#92) +- [eec38ca](https://github.com/stashed/redis/commit/eec38ca) [cherry-pick] Use Go 1.18 (#87) (#89) +- [08a04ad](https://github.com/stashed/redis/commit/08a04ad) [cherry-pick] Use Go 1.18 (#84) (#86) +- [9ae8bc3](https://github.com/stashed/redis/commit/9ae8bc3) [cherry-pick] make fmt (#81) (#83) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.19.0](https://github.com/stashed/stash/releases/tag/v0.19.0) + + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.2.0](https://github.com/stashed/ui-server/releases/tag/v0.2.0) + +- [652ae72](https://github.com/stashed/ui-server/commit/652ae72) Prepare for release v0.2.0 (#13) +- [3270566](https://github.com/stashed/ui-server/commit/3270566) Use Go 1.18 (#12) +- [9963c7b](https://github.com/stashed/ui-server/commit/9963c7b) Use Go 1.18 (#11) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.05.12.md b/content/docs/v2024.8.27/CHANGELOG-v2022.05.12.md new file mode 100644 index 0000000000..9672231544 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.05.12.md @@ -0,0 +1,511 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.05.12 + name: Changelog-v2022.05.12 + parent: welcome + weight: 20220512 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.05.12/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.05.12/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.05.12 (2022-05-09) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.20.0](https://github.com/stashed/apimachinery/releases/tag/v0.20.0) + +- [59662acc](https://github.com/stashed/apimachinery/commit/59662acc) Update nats client to v1.15.0 (#168) +- [c840c081](https://github.com/stashed/apimachinery/commit/c840c081) Use EmptyTarget when target is not specified (#156) +- [73208310](https://github.com/stashed/apimachinery/commit/73208310) Utilize target count during calculating invoker phase + Add `backupNamespace` in BackupBlueprint (#167) +- [61c413e1](https://github.com/stashed/apimachinery/commit/61c413e1) Add topologySpreadConstraints to RuntimeSettings (#166) +- [dbb9ce30](https://github.com/stashed/apimachinery/commit/dbb9ce30) Add Cross-namespace target support. (#164) +- [8d0e2056](https://github.com/stashed/apimachinery/commit/8d0e2056) Use restic 0.13.1 (#165) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.20.0](https://github.com/stashed/cli/releases/tag/v0.20.0) + +- [9c3e9a57](https://github.com/stashed/cli/commit/9c3e9a57) Prepare for release v0.20.0 (#163) +- [a267d818](https://github.com/stashed/cli/commit/a267d818) Update nats client to v1.15.0 (#162) +- [a66abe45](https://github.com/stashed/cli/commit/a66abe45) Use restic 0.13.1 (#161) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v17](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v17) + +- [dd7bbf09](https://github.com/stashed/elasticsearch/commit/dd7bbf09) Prepare for release 5.6.4-v17 (#1180) +- [88bf5065](https://github.com/stashed/elasticsearch/commit/88bf5065) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1171) +- [0a7e37fb](https://github.com/stashed/elasticsearch/commit/0a7e37fb) Add support for cross-namespace target (#1160) (#1161) +- [c28cbac3](https://github.com/stashed/elasticsearch/commit/c28cbac3) [cherry-pick] Use restic 0.13.1 (#1151) (#1152) + + +### [6.2.4-v17](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v17) + +- [54721c76](https://github.com/stashed/elasticsearch/commit/54721c76) Prepare for release 6.2.4-v17 (#1181) +- [726d1ff6](https://github.com/stashed/elasticsearch/commit/726d1ff6) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1172) +- [7e4fc91a](https://github.com/stashed/elasticsearch/commit/7e4fc91a) Add support for cross-namespace target (#1160) (#1162) +- [5ece0776](https://github.com/stashed/elasticsearch/commit/5ece0776) [cherry-pick] Use restic 0.13.1 (#1151) (#1153) + + +### [6.3.0-v17](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v17) + +- [c65ea376](https://github.com/stashed/elasticsearch/commit/c65ea376) Prepare for release 6.3.0-v17 (#1182) +- [65650751](https://github.com/stashed/elasticsearch/commit/65650751) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1173) +- [9b38d077](https://github.com/stashed/elasticsearch/commit/9b38d077) Add support for cross-namespace target (#1160) (#1163) +- [bed66f42](https://github.com/stashed/elasticsearch/commit/bed66f42) [cherry-pick] Use restic 0.13.1 (#1151) (#1154) + + +### [6.4.0-v17](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v17) + +- [4d4072c3](https://github.com/stashed/elasticsearch/commit/4d4072c3) Prepare for release 6.4.0-v17 (#1183) +- [6def816f](https://github.com/stashed/elasticsearch/commit/6def816f) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1174) +- [13362334](https://github.com/stashed/elasticsearch/commit/13362334) Add support for cross-namespace target (#1160) (#1164) +- [109f5a4a](https://github.com/stashed/elasticsearch/commit/109f5a4a) [cherry-pick] Use restic 0.13.1 (#1151) (#1155) + + +### [6.5.3-v17](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v17) + +- [e422361c](https://github.com/stashed/elasticsearch/commit/e422361c) Prepare for release 6.5.3-v17 (#1184) +- [c3bc2044](https://github.com/stashed/elasticsearch/commit/c3bc2044) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1175) +- [ad39246d](https://github.com/stashed/elasticsearch/commit/ad39246d) Add support for cross-namespace target (#1160) (#1165) +- [94c472f3](https://github.com/stashed/elasticsearch/commit/94c472f3) [cherry-pick] Use restic 0.13.1 (#1151) (#1156) + + +### [6.8.0-v17](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v17) + +- [2a2eccd8](https://github.com/stashed/elasticsearch/commit/2a2eccd8) Prepare for release 6.8.0-v17 (#1185) +- [133e8dfd](https://github.com/stashed/elasticsearch/commit/133e8dfd) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1176) +- [0ddc79b2](https://github.com/stashed/elasticsearch/commit/0ddc79b2) Add support for cross-namespace target (#1160) (#1166) +- [0cc4d57c](https://github.com/stashed/elasticsearch/commit/0cc4d57c) [cherry-pick] Use restic 0.13.1 (#1151) (#1157) + + +### [7.2.0-v17](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v17) + +- [7c388a05](https://github.com/stashed/elasticsearch/commit/7c388a05) Prepare for release 7.2.0-v17 (#1187) +- [f344f507](https://github.com/stashed/elasticsearch/commit/f344f507) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1178) +- [0d8256bf](https://github.com/stashed/elasticsearch/commit/0d8256bf) [cherry-pick] Add support for cross-namespace target (#1160) (#1168) + + +### [7.3.2-v17](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v17) + +- [4f45b187](https://github.com/stashed/elasticsearch/commit/4f45b187) Prepare for release 7.3.2-v17 (#1188) +- [fc8920a7](https://github.com/stashed/elasticsearch/commit/fc8920a7) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1179) +- [fd63fd18](https://github.com/stashed/elasticsearch/commit/fd63fd18) Add support for cross-namespace target (#1160) (#1169) +- [7389d64d](https://github.com/stashed/elasticsearch/commit/7389d64d) [cherry-pick] Use restic 0.13.1 (#1151) (#1159) + + +### [7.14.0-v3](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v3) + +- [f67cef25](https://github.com/stashed/elasticsearch/commit/f67cef25) Prepare for release 7.14.0-v3 (#1186) +- [3e98ed36](https://github.com/stashed/elasticsearch/commit/3e98ed36) [cherry-pick] Update nats client to v1.15.0 (#1170) (#1177) +- [6b7522e3](https://github.com/stashed/elasticsearch/commit/6b7522e3) Add support for cross-namespace target (#1160) (#1167) +- [8cf47e9f](https://github.com/stashed/elasticsearch/commit/8cf47e9f) [cherry-pick] Use restic 0.13.1 (#1151) (#1158) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.20.0](https://github.com/stashed/enterprise/releases/tag/v0.20.0) + +- [b6f3fac2](https://github.com/stashed/enterprise/commit/b6f3fac2) Prepare for release v0.20.0 (#170) +- [180a6360](https://github.com/stashed/enterprise/commit/180a6360) Update nats client to v1.15.0 (#169) +- [a315a1f6](https://github.com/stashed/enterprise/commit/a315a1f6) Support empty target ref (#151) +- [75e07270](https://github.com/stashed/enterprise/commit/75e07270) Fix errors caught in the e2e tests. (#168) +- [c8a574d5](https://github.com/stashed/enterprise/commit/c8a574d5) Add support for cross-namespace target. (#164) +- [94d51f57](https://github.com/stashed/enterprise/commit/94d51f57) Pass TopologySpreadConstraints in ApplyPodRuntimeSettings() +- [f3b333ae](https://github.com/stashed/enterprise/commit/f3b333ae) Update requirements for VolumeSnapshotter (#167) +- [fb63db1d](https://github.com/stashed/enterprise/commit/fb63db1d) Use restic 0.13.1 (#166) +- [97d5e06d](https://github.com/stashed/enterprise/commit/97d5e06d) Update `RoleBinding` name (#165) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v4](https://github.com/stashed/etcd/releases/tag/3.5.0-v4) + +- [f48c690](https://github.com/stashed/etcd/commit/f48c690) Prepare for release 3.5.0-v4 (#43) +- [119ce00](https://github.com/stashed/etcd/commit/119ce00) [cherry-pick] Update nats client to v1.15.0 (#41) (#42) +- [d17c3e8](https://github.com/stashed/etcd/commit/d17c3e8) Add support for cross-namespace target (#39) (#40) +- [8300c3a](https://github.com/stashed/etcd/commit/8300c3a) [cherry-pick] Use restic 0.13.1 (#37) (#38) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.05.12](https://github.com/stashed/installer/releases/tag/v2022.05.12) + +- [5cbe698c](https://github.com/stashed/installer/commit/5cbe698c) Prepare for release v2022.05.12 (#251) +- [046a8f2d](https://github.com/stashed/installer/commit/046a8f2d) Update nats client to v1.15.0 (#250) +- [55b9a5d5](https://github.com/stashed/installer/commit/55b9a5d5) Add catalogs for manifest-backup addon (#248) +- [e07115b2](https://github.com/stashed/installer/commit/e07115b2) Update grafana dashboard to use updated panopticon metrics format (#249) +- [3e7a25f8](https://github.com/stashed/installer/commit/3e7a25f8) Update MetricsConfiguration (#247) +- [13cefa64](https://github.com/stashed/installer/commit/13cefa64) Add `appbbinding-namespace` flag to backup and restore functions (#246) +- [e2900e0f](https://github.com/stashed/installer/commit/e2900e0f) Use restic 0.13.1 (#245) +- [015b099e](https://github.com/stashed/installer/commit/015b099e) Fix ui-server schema (#244) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0](https://github.com/stashed/kubedump/releases/tag/0.1.0) + +- [7db2e3e](https://github.com/stashed/kubedump/commit/7db2e3e) Prepare for release 0.1.0 (#4) +- [3914bbe](https://github.com/stashed/kubedump/commit/3914bbe) Remove .idea folder +- [08ae97c](https://github.com/stashed/kubedump/commit/08ae97c) Update nats client to v1.15.0 (#3) +- [b742e9b](https://github.com/stashed/kubedump/commit/b742e9b) Use Go 1.18 (#2) +- [0368858](https://github.com/stashed/kubedump/commit/0368858) Merge pull request #1 from stashed/implement-plugin +- [b5b1ae0](https://github.com/stashed/kubedump/commit/b5b1ae0) Fix CI +- [80eb90e](https://github.com/stashed/kubedump/commit/80eb90e) test ci +- [103a512](https://github.com/stashed/kubedump/commit/103a512) test ci +- [5c84f7c](https://github.com/stashed/kubedump/commit/5c84f7c) test ci +- [c00c5d9](https://github.com/stashed/kubedump/commit/c00c5d9) test ci +- [82d7168](https://github.com/stashed/kubedump/commit/82d7168) test ci +- [d550477](https://github.com/stashed/kubedump/commit/d550477) Debug CI failure Signed-off-by: Emruz Hossain +- [143f06b](https://github.com/stashed/kubedump/commit/143f06b) Create kind cluster in ci +- [ce7cdd7](https://github.com/stashed/kubedump/commit/ce7cdd7) Rename components from manifest-backup to kubedump +- [d2a417e](https://github.com/stashed/kubedump/commit/d2a417e) Fix target matcher +- [8c33614](https://github.com/stashed/kubedump/commit/8c33614) Update flags +- [9dbfd9f](https://github.com/stashed/kubedump/commit/9dbfd9f) Finish implementing the plugin +- [103434d](https://github.com/stashed/kubedump/commit/103434d) Refactor code +- [ad144f2](https://github.com/stashed/kubedump/commit/ad144f2) Add appication backup logic +- [8baf9f7](https://github.com/stashed/kubedump/commit/8baf9f7) Implement namespace level backup +- [57a4c48](https://github.com/stashed/kubedump/commit/57a4c48) WIP: Add namespace level backup Signed-off-by: Emruz Hossain +- [a0a61a7](https://github.com/stashed/kubedump/commit/a0a61a7) Implement cluster backup interface +- [18612c3](https://github.com/stashed/kubedump/commit/18612c3) Added all +- [eadc54a](https://github.com/stashed/kubedump/commit/eadc54a) added all +- [c700514](https://github.com/stashed/kubedump/commit/c700514) Implement manifest backup plugin + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v10](https://github.com/stashed/mariadb/releases/tag/10.5.8-v10) + +- [38e5f0b](https://github.com/stashed/mariadb/commit/38e5f0b) Prepare for release 10.5.8-v10 (#185) +- [786a415](https://github.com/stashed/mariadb/commit/786a415) [cherry-pick] Update nats client to v1.15.0 (#183) (#184) +- [35c8298](https://github.com/stashed/mariadb/commit/35c8298) Add support for cross-namespace target (#181) (#182) +- [cdd168d](https://github.com/stashed/mariadb/commit/cdd168d) [cherry-pick] Use restic 0.13.1 (#179) (#180) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v16](https://github.com/stashed/mongodb/releases/tag/3.4.17-v16) + +- [0e639f61](https://github.com/stashed/mongodb/commit/0e639f61) Prepare for release 3.4.17-v16 (#1540) +- [fb90dbf0](https://github.com/stashed/mongodb/commit/fb90dbf0) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1527) +- [02f8442b](https://github.com/stashed/mongodb/commit/02f8442b) Add support for cross-namespace target (#1512) (#1513) +- [27aa698b](https://github.com/stashed/mongodb/commit/27aa698b) [cherry-pick] Use restic 0.13.1 (#1499) (#1500) + + +### [3.4.22-v16](https://github.com/stashed/mongodb/releases/tag/3.4.22-v16) + +- [bd347f29](https://github.com/stashed/mongodb/commit/bd347f29) Prepare for release 3.4.22-v16 (#1541) +- [eadd2e6c](https://github.com/stashed/mongodb/commit/eadd2e6c) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1528) +- [039c7147](https://github.com/stashed/mongodb/commit/039c7147) Add support for cross-namespace target (#1512) (#1514) +- [a1f3d87e](https://github.com/stashed/mongodb/commit/a1f3d87e) [cherry-pick] Use restic 0.13.1 (#1499) (#1501) + + +### [3.6.8-v16](https://github.com/stashed/mongodb/releases/tag/3.6.8-v16) + +- [f0fadf84](https://github.com/stashed/mongodb/commit/f0fadf84) Prepare for release 3.6.8-v16 (#1543) +- [786684e1](https://github.com/stashed/mongodb/commit/786684e1) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1530) +- [c662ea7c](https://github.com/stashed/mongodb/commit/c662ea7c) Add support for cross-namespace target (#1512) (#1516) +- [0085bc6b](https://github.com/stashed/mongodb/commit/0085bc6b) [cherry-pick] Use restic 0.13.1 (#1499) (#1503) + + +### [3.6.13-v16](https://github.com/stashed/mongodb/releases/tag/3.6.13-v16) + +- [4113f8e6](https://github.com/stashed/mongodb/commit/4113f8e6) Prepare for release 3.6.13-v16 (#1542) +- [df373044](https://github.com/stashed/mongodb/commit/df373044) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1529) +- [9e453aa4](https://github.com/stashed/mongodb/commit/9e453aa4) Add support for cross-namespace target (#1512) (#1515) +- [2f3c7cdc](https://github.com/stashed/mongodb/commit/2f3c7cdc) [cherry-pick] Use restic 0.13.1 (#1499) (#1502) + + +### [4.0.3-v16](https://github.com/stashed/mongodb/releases/tag/4.0.3-v16) + +- [155311ce](https://github.com/stashed/mongodb/commit/155311ce) Prepare for release 4.0.3-v16 (#1545) +- [b577ae9b](https://github.com/stashed/mongodb/commit/b577ae9b) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1532) +- [9fa69e76](https://github.com/stashed/mongodb/commit/9fa69e76) [cherry-pick] Add support for cross-namespace target (#1512) (#1518) + + +### [4.0.5-v16](https://github.com/stashed/mongodb/releases/tag/4.0.5-v16) + +- [8734aca2](https://github.com/stashed/mongodb/commit/8734aca2) Prepare for release 4.0.5-v16 (#1546) +- [a16532df](https://github.com/stashed/mongodb/commit/a16532df) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1533) +- [db963072](https://github.com/stashed/mongodb/commit/db963072) Add support for cross-namespace target (#1512) (#1519) +- [8efe9034](https://github.com/stashed/mongodb/commit/8efe9034) [cherry-pick] Use restic 0.13.1 (#1499) (#1505) + + +### [4.0.11-v16](https://github.com/stashed/mongodb/releases/tag/4.0.11-v16) + +- [62a11848](https://github.com/stashed/mongodb/commit/62a11848) Prepare for release 4.0.11-v16 (#1544) +- [4c7ce065](https://github.com/stashed/mongodb/commit/4c7ce065) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1531) +- [731a900f](https://github.com/stashed/mongodb/commit/731a900f) Add support for cross-namespace target (#1512) (#1517) +- [d4e7f6df](https://github.com/stashed/mongodb/commit/d4e7f6df) [cherry-pick] Use restic 0.13.1 (#1499) (#1504) + + +### [4.1.4-v16](https://github.com/stashed/mongodb/releases/tag/4.1.4-v16) + +- [e849db61](https://github.com/stashed/mongodb/commit/e849db61) Prepare for release 4.1.4-v16 (#1548) +- [32576241](https://github.com/stashed/mongodb/commit/32576241) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1535) +- [16601091](https://github.com/stashed/mongodb/commit/16601091) Add support for cross-namespace target (#1512) (#1521) +- [c7c78813](https://github.com/stashed/mongodb/commit/c7c78813) [cherry-pick] Use restic 0.13.1 (#1499) (#1507) + + +### [4.1.7-v16](https://github.com/stashed/mongodb/releases/tag/4.1.7-v16) + +- [a4697d1b](https://github.com/stashed/mongodb/commit/a4697d1b) Prepare for release 4.1.7-v16 (#1549) +- [3effe3ec](https://github.com/stashed/mongodb/commit/3effe3ec) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1536) +- [07ea7e1a](https://github.com/stashed/mongodb/commit/07ea7e1a) Add support for cross-namespace target (#1512) (#1522) +- [2495ebb1](https://github.com/stashed/mongodb/commit/2495ebb1) [cherry-pick] Use restic 0.13.1 (#1499) (#1508) + + +### [4.1.13-v16](https://github.com/stashed/mongodb/releases/tag/4.1.13-v16) + +- [b7a7701b](https://github.com/stashed/mongodb/commit/b7a7701b) Prepare for release 4.1.13-v16 (#1547) +- [39a5c0ea](https://github.com/stashed/mongodb/commit/39a5c0ea) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1534) +- [eca54d4d](https://github.com/stashed/mongodb/commit/eca54d4d) Add support for cross-namespace target (#1512) (#1520) +- [7e77a7d1](https://github.com/stashed/mongodb/commit/7e77a7d1) [cherry-pick] Use restic 0.13.1 (#1499) (#1506) + + +### [4.2.3-v16](https://github.com/stashed/mongodb/releases/tag/4.2.3-v16) + +- [8661ee65](https://github.com/stashed/mongodb/commit/8661ee65) Prepare for release 4.2.3-v16 (#1550) +- [612d78ec](https://github.com/stashed/mongodb/commit/612d78ec) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1537) +- [ae60a061](https://github.com/stashed/mongodb/commit/ae60a061) Add support for cross-namespace target (#1512) (#1523) +- [ad4b202b](https://github.com/stashed/mongodb/commit/ad4b202b) [cherry-pick] Use restic 0.13.1 (#1499) (#1509) + + +### [4.4.6-v7](https://github.com/stashed/mongodb/releases/tag/4.4.6-v7) + +- [12d5d20f](https://github.com/stashed/mongodb/commit/12d5d20f) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1538) +- [1d007579](https://github.com/stashed/mongodb/commit/1d007579) Add support for cross-namespace target (#1512) (#1524) +- [d1660f7f](https://github.com/stashed/mongodb/commit/d1660f7f) [cherry-pick] Use restic 0.13.1 (#1499) (#1510) + + +### [5.0.3-v4](https://github.com/stashed/mongodb/releases/tag/5.0.3-v4) + +- [4cf40adb](https://github.com/stashed/mongodb/commit/4cf40adb) [cherry-pick] Update nats client to v1.15.0 (#1526) (#1539) +- [1c739adb](https://github.com/stashed/mongodb/commit/1c739adb) Add support for cross-namespace target (#1512) (#1525) +- [8a6f7fb1](https://github.com/stashed/mongodb/commit/8a6f7fb1) [cherry-pick] Use restic 0.13.1 (#1499) (#1511) +- [5bc21111](https://github.com/stashed/mongodb/commit/5bc21111) Prepare for release 5.0.3-v3 (#1497) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v17](https://github.com/stashed/mysql/releases/tag/5.7.25-v17) + +- [6818869f](https://github.com/stashed/mysql/commit/6818869f) Prepare for release 5.7.25-v17 (#617) +- [73139959](https://github.com/stashed/mysql/commit/73139959) [cherry-pick] Update nats client to v1.15.0 (#612) (#613) +- [f0a6b8e0](https://github.com/stashed/mysql/commit/f0a6b8e0) Add support for cross-namespace target. (#607) (#608) +- [060f151a](https://github.com/stashed/mysql/commit/060f151a) [cherry-pick] Use restic 0.13.1 (#604) (#605) + + +### [8.0.3-v17](https://github.com/stashed/mysql/releases/tag/8.0.3-v17) + +- [9e7d3a11](https://github.com/stashed/mysql/commit/9e7d3a11) Prepare for release 8.0.3-v17 (#620) +- [42ba01a5](https://github.com/stashed/mysql/commit/42ba01a5) [cherry-pick] Update nats client to v1.15.0 (#612) (#616) +- [d8a0eb4e](https://github.com/stashed/mysql/commit/d8a0eb4e) [cherry-pick] Add support for cross-namespace target. (#607) (#611) + + +### [8.0.14-v17](https://github.com/stashed/mysql/releases/tag/8.0.14-v17) + +- [408bad82](https://github.com/stashed/mysql/commit/408bad82) Prepare for release 8.0.14-v17 (#618) +- [27fc0d17](https://github.com/stashed/mysql/commit/27fc0d17) [cherry-pick] Update nats client to v1.15.0 (#612) (#614) +- [3106710c](https://github.com/stashed/mysql/commit/3106710c) Add support for cross-namespace target. (#607) (#609) +- [ea8c60ec](https://github.com/stashed/mysql/commit/ea8c60ec) [cherry-pick] Use restic 0.13.1 (#604) (#606) + + +### [8.0.21-v11](https://github.com/stashed/mysql/releases/tag/8.0.21-v11) + +- [39f458ec](https://github.com/stashed/mysql/commit/39f458ec) Prepare for release 8.0.21-v11 (#619) +- [92ce6a21](https://github.com/stashed/mysql/commit/92ce6a21) [cherry-pick] Update nats client to v1.15.0 (#612) (#615) +- [6ad9564f](https://github.com/stashed/mysql/commit/6ad9564f) [cherry-pick] Add support for cross-namespace target. (#607) (#610) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v4](https://github.com/stashed/nats/releases/tag/2.6.1-v4) + +- [6539d98](https://github.com/stashed/nats/commit/6539d98) Prepare for release 2.6.1-v4 (#46) +- [596b907](https://github.com/stashed/nats/commit/596b907) [cherry-pick] Update nats client to v1.15.0 (#44) (#45) +- [2ab3cb0](https://github.com/stashed/nats/commit/2ab3cb0) Add support for cross-namespace target (#42) (#43) +- [e8cc6a4](https://github.com/stashed/nats/commit/e8cc6a4) [cherry-pick] Use restic 0.13.1 (#40) (#41) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v12](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v12) + +- [fca0f716](https://github.com/stashed/percona-xtradb/commit/fca0f716) Prepare for release 5.7-v12 (#256) +- [3c6c291e](https://github.com/stashed/percona-xtradb/commit/3c6c291e) [cherry-pick] Update nats client to v1.15.0 (#254) (#255) +- [71212215](https://github.com/stashed/percona-xtradb/commit/71212215) Add support for cross-namespace target (#252) (#253) +- [e7a31aea](https://github.com/stashed/percona-xtradb/commit/e7a31aea) [cherry-pick] Use restic 0.13.1 (#250) (#251) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v15](https://github.com/stashed/postgres/releases/tag/9.6.19-v15) + +- [827b4e06](https://github.com/stashed/postgres/commit/827b4e06) Prepare for release 9.6.19-v15 (#1051) +- [b89c3611](https://github.com/stashed/postgres/commit/b89c3611) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1045) +- [59f69a03](https://github.com/stashed/postgres/commit/59f69a03) Add support for cross-namespace target (#1032) (#1038) +- [8b064613](https://github.com/stashed/postgres/commit/8b064613) [cherry-pick] Use restic 0.13.1 (#1027) (#1031) + + +### [10.14-v15](https://github.com/stashed/postgres/releases/tag/10.14-v15) + +- [97bbc626](https://github.com/stashed/postgres/commit/97bbc626) Prepare for release 10.14-v15 (#1046) +- [b8a36039](https://github.com/stashed/postgres/commit/b8a36039) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1040) +- [730ce380](https://github.com/stashed/postgres/commit/730ce380) Add support for cross-namespace target (#1032) (#1033) +- [df8339af](https://github.com/stashed/postgres/commit/df8339af) [cherry-pick] Use restic 0.13.1 (#1027) (#1028) + + +### [11.9-v15](https://github.com/stashed/postgres/releases/tag/11.9-v15) + +- [61dbe6ef](https://github.com/stashed/postgres/commit/61dbe6ef) Prepare for release 11.9-v15 (#1047) +- [20bb0dce](https://github.com/stashed/postgres/commit/20bb0dce) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1041) +- [b450f154](https://github.com/stashed/postgres/commit/b450f154) Add support for cross-namespace target (#1032) (#1034) +- [eef99803](https://github.com/stashed/postgres/commit/eef99803) [cherry-pick] Use restic 0.13.1 (#1027) (#1029) + + +### [12.4-v15](https://github.com/stashed/postgres/releases/tag/12.4-v15) + +- [4055f1b2](https://github.com/stashed/postgres/commit/4055f1b2) Prepare for release 12.4-v15 (#1048) +- [cccf210e](https://github.com/stashed/postgres/commit/cccf210e) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1042) +- [6b106d50](https://github.com/stashed/postgres/commit/6b106d50) Add support for cross-namespace target (#1032) (#1035) +- [26099d08](https://github.com/stashed/postgres/commit/26099d08) [cherry-pick] Use restic 0.13.1 (#1027) (#1030) + + +### [13.1-v12](https://github.com/stashed/postgres/releases/tag/13.1-v12) + +- [6a452173](https://github.com/stashed/postgres/commit/6a452173) Prepare for release 13.1-v12 (#1049) +- [140a00e8](https://github.com/stashed/postgres/commit/140a00e8) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1043) +- [1a7f5854](https://github.com/stashed/postgres/commit/1a7f5854) [cherry-pick] Add support for cross-namespace target (#1032) (#1036) + + +### [14.0-v4](https://github.com/stashed/postgres/releases/tag/14.0-v4) + +- [9b91f298](https://github.com/stashed/postgres/commit/9b91f298) Prepare for release 14.0-v4 (#1050) +- [2afdd9e7](https://github.com/stashed/postgres/commit/2afdd9e7) [cherry-pick] Update nats client to v1.15.0 (#1039) (#1044) +- [196fd0fd](https://github.com/stashed/postgres/commit/196fd0fd) [cherry-pick] Add support for cross-namespace target (#1032) (#1037) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v5](https://github.com/stashed/redis/releases/tag/5.0.13-v5) + +- [b3f3395](https://github.com/stashed/redis/commit/b3f3395) Prepare for release 5.0.13-v5 (#103) +- [6d37e9c](https://github.com/stashed/redis/commit/6d37e9c) [cherry-pick] Update nats client to v1.15.0 (#100) (#101) +- [429b312](https://github.com/stashed/redis/commit/429b312) Add support for cross-namespace target (#99) +- [b2af9aa](https://github.com/stashed/redis/commit/b2af9aa) [cherry-pick] Use restic 0.13.1 (#96) (#97) + + +### [6.2.5-v5](https://github.com/stashed/redis/releases/tag/6.2.5-v5) + +- [73c4af8](https://github.com/stashed/redis/commit/73c4af8) Prepare for release 6.2.5-v5 (#104) +- [165f4a3](https://github.com/stashed/redis/commit/165f4a3) [cherry-pick] Update nats client to v1.15.0 (#100) (#102) +- [757f2a7](https://github.com/stashed/redis/commit/757f2a7) Add support for cross-namespace target (#99) +- [b4bfe91](https://github.com/stashed/redis/commit/b4bfe91) [cherry-pick] Use restic 0.13.1 (#96) (#98) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.20.0](https://github.com/stashed/stash/releases/tag/v0.20.0) + +- [6a3680ec](https://github.com/stashed/stash/commit/6a3680ec) Prepare for release v0.20.0 (#1443) +- [a56bfc73](https://github.com/stashed/stash/commit/a56bfc73) Update nats client to v1.15.0 (#1442) +- [2d0b4e97](https://github.com/stashed/stash/commit/2d0b4e97) Port Cross-namespace target support related change from enterprise repo (#1441) +- [4927bcef](https://github.com/stashed/stash/commit/4927bcef) Pass `TopologySpreadConstraints` in `ApplyPodRuntimeSettings()` (#1440) +- [ca8ef3be](https://github.com/stashed/stash/commit/ca8ef3be) Update requirements for `VolumeSnapshotter` +- [93b93361](https://github.com/stashed/stash/commit/93b93361) Update requirements for VolumeSnapshotter +- [82de61a2](https://github.com/stashed/stash/commit/82de61a2) Update RoleBinding name (#1437) +- [2e328b9e](https://github.com/stashed/stash/commit/2e328b9e) Use restic 0.13.1 (#1438) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.05.18.md b/content/docs/v2024.8.27/CHANGELOG-v2022.05.18.md new file mode 100644 index 0000000000..fdf31e138c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.05.18.md @@ -0,0 +1,137 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.05.18 + name: Changelog-v2022.05.18 + parent: welcome + weight: 20220518 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.05.18/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.05.18/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.05.18 (2022-05-18) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.20.1](https://github.com/stashed/apimachinery/releases/tag/v0.20.1) + +- [9d802e3a](https://github.com/stashed/apimachinery/commit/9d802e3a) Make commit + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.20.1](https://github.com/stashed/enterprise/releases/tag/v0.20.1) + +- [948438a9](https://github.com/stashed/enterprise/commit/948438a9) Prepare for release v0.20.1 (#174) +- [e2fde1aa](https://github.com/stashed/enterprise/commit/e2fde1aa) Fix ImagePullSecrets not passing to the backup job properly (#172) +- [6f871d57](https://github.com/stashed/enterprise/commit/6f871d57) Update BackupConfiguration webhook to make the target immutable (#171) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.05.18](https://github.com/stashed/installer/releases/tag/v2022.05.18) + +- [3b45a21b](https://github.com/stashed/installer/commit/3b45a21b) Prepare for release v2022.05.18 (#255) +- [fc961396](https://github.com/stashed/installer/commit/fc961396) Add support for Elasticsearch 8.2.0 (#254) +- [41561f81](https://github.com/stashed/installer/commit/41561f81) Update registry templates to support custom default registry (ghcr.io) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v5](https://github.com/stashed/nats/releases/tag/2.6.1-v5) + +- [3fe0e88](https://github.com/stashed/nats/commit/3fe0e88) Prepare for release 2.6.1-v4 (#49) + + +### [2.8.2](https://github.com/stashed/nats/releases/tag/2.8.2) + + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.20.1](https://github.com/stashed/stash/releases/tag/v0.20.1) + +- [9771f5db](https://github.com/stashed/stash/commit/9771f5db) Prepare for release v0.20.1 (#1446) +- [58168343](https://github.com/stashed/stash/commit/58168343) Merge pull request #1445 from stashed/fix-imagepull-secrets +- [d6290dd7](https://github.com/stashed/stash/commit/d6290dd7) Fix ImagePullSecrets not passing to the backup job properly +- [86342a7e](https://github.com/stashed/stash/commit/86342a7e) Update BackupConfiguration webhook to make the target immutable (#1444) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.06.21.md b/content/docs/v2024.8.27/CHANGELOG-v2022.06.21.md new file mode 100644 index 0000000000..ed6b5f6e26 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.06.21.md @@ -0,0 +1,481 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.06.21 + name: Changelog-v2022.06.21 + parent: welcome + weight: 20220621 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.06.21/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.06.21/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.06.21 (2022-06-17) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.21.0](https://github.com/stashed/apimachinery/releases/tag/v0.21.0) + +- [e19298fd](https://github.com/stashed/apimachinery/commit/e19298fd) Add Hook and TimeOut support in auto-backup (#174) +- [b90c85f4](https://github.com/stashed/apimachinery/commit/b90c85f4) Update to k8s 1.24 toolchain (#172) +- [5d2e9a06](https://github.com/stashed/apimachinery/commit/5d2e9a06) Add timeout for backup and restore (#169) +- [1c812e70](https://github.com/stashed/apimachinery/commit/1c812e70) Update metrics labels to sync with Panopticon. (#170) +- [6891e99a](https://github.com/stashed/apimachinery/commit/6891e99a) Test against Kubernetes 1.24.0 (#171) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.21.0](https://github.com/stashed/cli/releases/tag/v0.21.0) + +- [4942f3ec](https://github.com/stashed/cli/commit/4942f3ec) Prepare for release v0.21.0 (#164) +- [fdd47d95](https://github.com/stashed/cli/commit/fdd47d95) Update to k8s 1.24 toolchain +- [fabefbdd](https://github.com/stashed/cli/commit/fabefbdd) Cancel concurrent in pogress CI runs + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v18](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v18) + +- [f71cc84e](https://github.com/stashed/elasticsearch/commit/f71cc84e) Prepare for release 5.6.4-v18 (#1213) +- [d13474d2](https://github.com/stashed/elasticsearch/commit/d13474d2) Use Go 1.18 (#1203) +- [f942b902](https://github.com/stashed/elasticsearch/commit/f942b902) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1193) + + +### [6.2.4-v18](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v18) + +- [60daf578](https://github.com/stashed/elasticsearch/commit/60daf578) Prepare for release 6.2.4-v18 (#1214) +- [7e107d0d](https://github.com/stashed/elasticsearch/commit/7e107d0d) Use Go 1.18 (#1204) +- [e097a0f7](https://github.com/stashed/elasticsearch/commit/e097a0f7) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1194) + + +### [6.3.0-v18](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v18) + +- [2ab1c09a](https://github.com/stashed/elasticsearch/commit/2ab1c09a) Prepare for release 6.3.0-v18 (#1215) +- [902833b5](https://github.com/stashed/elasticsearch/commit/902833b5) Use Go 1.18 (#1205) +- [9b81f591](https://github.com/stashed/elasticsearch/commit/9b81f591) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1195) + + +### [6.4.0-v18](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v18) + +- [a7c65048](https://github.com/stashed/elasticsearch/commit/a7c65048) Prepare for release 6.4.0-v18 (#1216) +- [95e1e146](https://github.com/stashed/elasticsearch/commit/95e1e146) Use Go 1.18 (#1206) +- [c2127005](https://github.com/stashed/elasticsearch/commit/c2127005) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1196) + + +### [6.5.3-v18](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v18) + +- [08aa5cd0](https://github.com/stashed/elasticsearch/commit/08aa5cd0) Prepare for release 6.5.3-v18 (#1217) +- [39022b9c](https://github.com/stashed/elasticsearch/commit/39022b9c) Use Go 1.18 (#1207) +- [ea839cea](https://github.com/stashed/elasticsearch/commit/ea839cea) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1197) + + +### [6.8.0-v18](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v18) + +- [917089a9](https://github.com/stashed/elasticsearch/commit/917089a9) Prepare for release 6.8.0-v18 (#1218) +- [6cddcce7](https://github.com/stashed/elasticsearch/commit/6cddcce7) Use Go 1.18 (#1208) +- [0b23666b](https://github.com/stashed/elasticsearch/commit/0b23666b) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1198) + + +### [7.2.0-v18](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v18) + +- [9b84e4c5](https://github.com/stashed/elasticsearch/commit/9b84e4c5) Use Go 1.18 (#1210) +- [4bae3459](https://github.com/stashed/elasticsearch/commit/4bae3459) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1200) + + +### [7.3.2-v18](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v18) + +- [6f2b4ece](https://github.com/stashed/elasticsearch/commit/6f2b4ece) Use Go 1.18 (#1212) +- [fb895a65](https://github.com/stashed/elasticsearch/commit/fb895a65) [cherry-pick] Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1201) + + +### [7.14.0-v4](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v4) + +- [ccd4b478](https://github.com/stashed/elasticsearch/commit/ccd4b478) Stop sending Google analytics events +- [9aaec379](https://github.com/stashed/elasticsearch/commit/9aaec379) Use Go 1.18 (#1209) +- [24eb7559](https://github.com/stashed/elasticsearch/commit/24eb7559) Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1199) + + +### [8.2.0-v1](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v1) + +- [055cf095](https://github.com/stashed/elasticsearch/commit/055cf095) Use Go 1.18 (#1211) +- [0da3aec9](https://github.com/stashed/elasticsearch/commit/0da3aec9) Make sure to fail the backup/restore sessions if license check fails. (#1192) (#1202) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.21.0](https://github.com/stashed/enterprise/releases/tag/v0.21.0) + +- [a6f2dc48](https://github.com/stashed/enterprise/commit/a6f2dc48) Prepare for release v0.21.0 (#179) +- [1da47ae2](https://github.com/stashed/enterprise/commit/1da47ae2) Add support for Hook and TimeOut in auto-backup (#178) +- [92d46877](https://github.com/stashed/enterprise/commit/92d46877) Cleanup dependencies (#177) +- [7124c7f3](https://github.com/stashed/enterprise/commit/7124c7f3) Update to k8s 1.24 toolchain (#176) +- [ba59e128](https://github.com/stashed/enterprise/commit/ba59e128) Add timeout for backup and restore (#173) +- [a51a3725](https://github.com/stashed/enterprise/commit/a51a3725) Check restore output before updating restore status (#175) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v5](https://github.com/stashed/etcd/releases/tag/3.5.0-v5) + +- [7d96b9b](https://github.com/stashed/etcd/commit/7d96b9b) Prepare for release 3.5.0-v5 (#49) +- [a59967d](https://github.com/stashed/etcd/commit/a59967d) Use Go 1.18 (#48) +- [3d20c8f](https://github.com/stashed/etcd/commit/3d20c8f) Use Go 1.18 (#32) (#47) +- [8705d44](https://github.com/stashed/etcd/commit/8705d44) Make sure to fail the backup/restore sessions if license check fails. (#45) (#46) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.06.21](https://github.com/stashed/installer/releases/tag/v2022.06.21) + +- [38ca633b](https://github.com/stashed/installer/commit/38ca633b) Prepare for release v2022.06.21 (#263) +- [6a6c4726](https://github.com/stashed/installer/commit/6a6c4726) Remove stash-metrics from stash chart (#262) +- [32e21c6f](https://github.com/stashed/installer/commit/32e21c6f) Update crds (#261) +- [dd3340dd](https://github.com/stashed/installer/commit/dd3340dd) Don't set tag in values files +- [803d36db](https://github.com/stashed/installer/commit/803d36db) Add RBAC permissions for `coordination.k8s.io/leases` (#260) +- [c0bf346e](https://github.com/stashed/installer/commit/c0bf346e) Rename percona-xtradb to perconaxtradb in catalog.json (#259) +- [5b581a8b](https://github.com/stashed/installer/commit/5b581a8b) Update to k8s 1.24 toolchain +- [0dd58f75](https://github.com/stashed/installer/commit/0dd58f75) Update Grafana dashboard's labels. (#257) +- [b92b8989](https://github.com/stashed/installer/commit/b92b8989) Get operator tag from .Chart.AppVersion (#258) +- [72537db0](https://github.com/stashed/installer/commit/72537db0) Test against Kubernetes 1.24.0 (#256) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v1](https://github.com/stashed/kubedump/releases/tag/0.1.0-v1) + +- [8b71a18](https://github.com/stashed/kubedump/commit/8b71a18) Prepare for release 0.1.0-v1 (#9) +- [d976331](https://github.com/stashed/kubedump/commit/d976331) Go 1.18 (#8) +- [3b2d4f8](https://github.com/stashed/kubedump/commit/3b2d4f8) Make sure to fail the backup/restore sessions if license check fails. (#7) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v11](https://github.com/stashed/mariadb/releases/tag/10.5.8-v11) + +- [75a46ec](https://github.com/stashed/mariadb/commit/75a46ec) Prepare for release 10.5.8-v11 (#190) +- [f105e19](https://github.com/stashed/mariadb/commit/f105e19) Go 1.18 (#189) +- [b825468](https://github.com/stashed/mariadb/commit/b825468) Make sure to fail the backup/restore sessions if license check fails. (#187) (#188) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v17](https://github.com/stashed/mongodb/releases/tag/3.4.17-v17) + +- [da8cc237](https://github.com/stashed/mongodb/commit/da8cc237) Prepare for release 3.4.17-v17 (#1579) +- [7180c291](https://github.com/stashed/mongodb/commit/7180c291) Go 1.18 (#1568) +- [1ca50bd5](https://github.com/stashed/mongodb/commit/1ca50bd5) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1555) + + +### [3.4.22-v17](https://github.com/stashed/mongodb/releases/tag/3.4.22-v17) + +- [3d2739cf](https://github.com/stashed/mongodb/commit/3d2739cf) Prepare for release 3.4.22-v17 (#1580) +- [2be6391c](https://github.com/stashed/mongodb/commit/2be6391c) Go 1.18 (#1578) +- [fc17eb80](https://github.com/stashed/mongodb/commit/fc17eb80) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1556) + + +### [3.6.8-v17](https://github.com/stashed/mongodb/releases/tag/3.6.8-v17) + +- [b41ddb46](https://github.com/stashed/mongodb/commit/b41ddb46) Prepare for release 3.6.8-v17 (#1582) +- [0b147350](https://github.com/stashed/mongodb/commit/0b147350) Go 1.18 (#1576) +- [f27ba96e](https://github.com/stashed/mongodb/commit/f27ba96e) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1558) + + +### [3.6.13-v17](https://github.com/stashed/mongodb/releases/tag/3.6.13-v17) + +- [687f7d8f](https://github.com/stashed/mongodb/commit/687f7d8f) Prepare for release 3.6.13-v17 (#1581) +- [c672503e](https://github.com/stashed/mongodb/commit/c672503e) Go 1.18 (#1577) +- [896889f1](https://github.com/stashed/mongodb/commit/896889f1) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1557) + + +### [4.0.3-v17](https://github.com/stashed/mongodb/releases/tag/4.0.3-v17) + +- [c0cb607a](https://github.com/stashed/mongodb/commit/c0cb607a) Prepare for release 4.0.3-v17 (#1584) +- [fdabcd75](https://github.com/stashed/mongodb/commit/fdabcd75) Go 1.18 (#1574) +- [c309e641](https://github.com/stashed/mongodb/commit/c309e641) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1560) + + +### [4.0.5-v17](https://github.com/stashed/mongodb/releases/tag/4.0.5-v17) + +- [f30c6a13](https://github.com/stashed/mongodb/commit/f30c6a13) Prepare for release 4.0.5-v17 (#1585) +- [2ab11e66](https://github.com/stashed/mongodb/commit/2ab11e66) Go 1.18 (#1573) +- [41529a1b](https://github.com/stashed/mongodb/commit/41529a1b) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1561) + + +### [4.0.11-v17](https://github.com/stashed/mongodb/releases/tag/4.0.11-v17) + +- [b9ea05bd](https://github.com/stashed/mongodb/commit/b9ea05bd) Prepare for release 4.0.11-v17 (#1583) +- [f4984613](https://github.com/stashed/mongodb/commit/f4984613) Go 1.18 (#1575) +- [66fc2e57](https://github.com/stashed/mongodb/commit/66fc2e57) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1559) + + +### [4.1.4-v17](https://github.com/stashed/mongodb/releases/tag/4.1.4-v17) + +- [4c92d8a3](https://github.com/stashed/mongodb/commit/4c92d8a3) Prepare for release 4.1.4-v17 (#1587) +- [236d7475](https://github.com/stashed/mongodb/commit/236d7475) Go 1.18 (#1571) +- [7ab9f03d](https://github.com/stashed/mongodb/commit/7ab9f03d) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1563) + + +### [4.1.7-v17](https://github.com/stashed/mongodb/releases/tag/4.1.7-v17) + +- [104d28bd](https://github.com/stashed/mongodb/commit/104d28bd) Prepare for release 4.1.7-v17 (#1588) +- [0a8dbae0](https://github.com/stashed/mongodb/commit/0a8dbae0) Go 1.18 (#1570) +- [6f3d4da7](https://github.com/stashed/mongodb/commit/6f3d4da7) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1564) + + +### [4.1.13-v17](https://github.com/stashed/mongodb/releases/tag/4.1.13-v17) + +- [252b5708](https://github.com/stashed/mongodb/commit/252b5708) Prepare for release 4.1.13-v17 (#1586) +- [6ffef02c](https://github.com/stashed/mongodb/commit/6ffef02c) Go 1.18 (#1572) +- [a1de60e6](https://github.com/stashed/mongodb/commit/a1de60e6) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1562) + + +### [4.2.3-v17](https://github.com/stashed/mongodb/releases/tag/4.2.3-v17) + +- [fb5eb455](https://github.com/stashed/mongodb/commit/fb5eb455) Prepare for release 4.2.3-v17 (#1589) +- [730ff66a](https://github.com/stashed/mongodb/commit/730ff66a) Go 1.18 (#1569) +- [820fffd0](https://github.com/stashed/mongodb/commit/820fffd0) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1565) + + +### [4.4.6-v8](https://github.com/stashed/mongodb/releases/tag/4.4.6-v8) + +- [ba6f8429](https://github.com/stashed/mongodb/commit/ba6f8429) Prepare for release 4.4.6-v8 (#1590) +- [768a40c1](https://github.com/stashed/mongodb/commit/768a40c1) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1566) + + +### [5.0.3-v5](https://github.com/stashed/mongodb/releases/tag/5.0.3-v5) + +- [40168c44](https://github.com/stashed/mongodb/commit/40168c44) Prepare for release 5.0.3-v5 (#1591) +- [78999c9e](https://github.com/stashed/mongodb/commit/78999c9e) Make sure to fail the backup/restore sessions if license check fails. (#1554) (#1567) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v18](https://github.com/stashed/mysql/releases/tag/5.7.25-v18) + +- [6788bc23](https://github.com/stashed/mysql/commit/6788bc23) Prepare for release 5.7.25-v18 (#633) +- [bf7bb0bc](https://github.com/stashed/mysql/commit/bf7bb0bc) [cherry-pick] Use Go 1.18 (#629) +- [6fca045a](https://github.com/stashed/mysql/commit/6fca045a) Make sure to fail the backup/restore sessions if license check fails. (#622) (#623) + + +### [8.0.3-v18](https://github.com/stashed/mysql/releases/tag/8.0.3-v18) + +- [00a92f31](https://github.com/stashed/mysql/commit/00a92f31) Prepare for release 8.0.3-v18 (#636) +- [071a7d3f](https://github.com/stashed/mysql/commit/071a7d3f) [cherry-pick] Use Go 1.18 (#632) +- [d5b5a0b3](https://github.com/stashed/mysql/commit/d5b5a0b3) Use restic 0.13.1 (#604) (#627) +- [881b2a0e](https://github.com/stashed/mysql/commit/881b2a0e) Make sure to fail the backup/restore sessions if license check fails. (#622) (#626) + + +### [8.0.14-v18](https://github.com/stashed/mysql/releases/tag/8.0.14-v18) + +- [0b2d6ec7](https://github.com/stashed/mysql/commit/0b2d6ec7) Prepare for release 8.0.14-v18 (#634) +- [e0034276](https://github.com/stashed/mysql/commit/e0034276) [cherry-pick] Use Go 1.18 (#630) +- [afae11d3](https://github.com/stashed/mysql/commit/afae11d3) Make sure to fail the backup/restore sessions if license check fails. (#622) (#624) + + +### [8.0.21-v12](https://github.com/stashed/mysql/releases/tag/8.0.21-v12) + +- [c2d3d592](https://github.com/stashed/mysql/commit/c2d3d592) Prepare for release 8.0.21-v12 (#635) +- [4f532409](https://github.com/stashed/mysql/commit/4f532409) [cherry-pick] Use Go 1.18 (#631) +- [b8a3b870](https://github.com/stashed/mysql/commit/b8a3b870) Use restic 0.13.1 (#604) (#628) +- [b045519d](https://github.com/stashed/mysql/commit/b045519d) Make sure to fail the backup/restore sessions if license check fails. (#622) (#625) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v6](https://github.com/stashed/nats/releases/tag/2.6.1-v6) + +- [45e3eb5](https://github.com/stashed/nats/commit/45e3eb5) Prepare for release 2.6.1-v5 (#57) +- [918fba8](https://github.com/stashed/nats/commit/918fba8) [cherry-pick] Use Go 1.18 (#55) +- [d895e5b](https://github.com/stashed/nats/commit/d895e5b) Make sure to fail the backup/restore sessions if license check fails. (#52) (#53) + + +### [2.8.2-v1](https://github.com/stashed/nats/releases/tag/2.8.2-v1) + +- [b2540f1](https://github.com/stashed/nats/commit/b2540f1) Prepare for release 2.8.2-v1 (#58) +- [f462469](https://github.com/stashed/nats/commit/f462469) [cherry-pick] Use Go 1.18 (#56) +- [bb05983](https://github.com/stashed/nats/commit/bb05983) Make sure to fail the backup/restore sessions if license check fails. (#52) (#54) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v13](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v13) + +- [e02373e5](https://github.com/stashed/percona-xtradb/commit/e02373e5) Prepare for release 5.7-v13 (#261) +- [fc1a4395](https://github.com/stashed/percona-xtradb/commit/fc1a4395) [cherry-pick] Use Go 1.18 (#260) +- [e33797e5](https://github.com/stashed/percona-xtradb/commit/e33797e5) Make sure to fail the backup/restore sessions if license check fails. (#258) (#259) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v16](https://github.com/stashed/postgres/releases/tag/9.6.19-v16) + +- [1db055d0](https://github.com/stashed/postgres/commit/1db055d0) Prepare for release 9.6.19-v16 (#1074) +- [f245c188](https://github.com/stashed/postgres/commit/f245c188) [cherry-pick] Use Go 1.18 (#1068) +- [df3de5f4](https://github.com/stashed/postgres/commit/df3de5f4) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1059) + + +### [10.14-v16](https://github.com/stashed/postgres/releases/tag/10.14-v16) + +- [7a6cca43](https://github.com/stashed/postgres/commit/7a6cca43) Prepare for release 10.14-v16 (#1069) +- [5e1d6ba6](https://github.com/stashed/postgres/commit/5e1d6ba6) [cherry-pick] Use Go 1.18 (#1063) +- [a8548d33](https://github.com/stashed/postgres/commit/a8548d33) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1054) + + +### [11.9-v16](https://github.com/stashed/postgres/releases/tag/11.9-v16) + +- [ade2cb88](https://github.com/stashed/postgres/commit/ade2cb88) Prepare for release 11.9-v16 (#1070) +- [f02ceab3](https://github.com/stashed/postgres/commit/f02ceab3) [cherry-pick] Use Go 1.18 (#1064) +- [47293bab](https://github.com/stashed/postgres/commit/47293bab) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1055) + + +### [12.4-v16](https://github.com/stashed/postgres/releases/tag/12.4-v16) + +- [a632d377](https://github.com/stashed/postgres/commit/a632d377) Prepare for release 12.4-v16 (#1071) +- [bcca56e6](https://github.com/stashed/postgres/commit/bcca56e6) [cherry-pick] Use Go 1.18 (#1065) +- [ba595303](https://github.com/stashed/postgres/commit/ba595303) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1056) + + +### [13.1-v13](https://github.com/stashed/postgres/releases/tag/13.1-v13) + +- [61861efc](https://github.com/stashed/postgres/commit/61861efc) Prepare for release 13.1-v13 (#1072) +- [b3bba6a9](https://github.com/stashed/postgres/commit/b3bba6a9) [cherry-pick] Use Go 1.18 (#1066) +- [051ce90c](https://github.com/stashed/postgres/commit/051ce90c) Use restic 0.13.1 (#1027) (#1061) +- [b7fc16da](https://github.com/stashed/postgres/commit/b7fc16da) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1057) + + +### [14.0-v5](https://github.com/stashed/postgres/releases/tag/14.0-v5) + +- [1fba7100](https://github.com/stashed/postgres/commit/1fba7100) Prepare for release 14.0-v5 (#1073) +- [a4d857ef](https://github.com/stashed/postgres/commit/a4d857ef) [cherry-pick] Use Go 1.18 (#1067) +- [b90b5890](https://github.com/stashed/postgres/commit/b90b5890) Use restic 0.13.1 (#1027) (#1060) +- [4638c6e1](https://github.com/stashed/postgres/commit/4638c6e1) Make sure to fail the backup/restore sessions if license check fails. (#1053) (#1058) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v6](https://github.com/stashed/redis/releases/tag/5.0.13-v6) + +- [2d26534](https://github.com/stashed/redis/commit/2d26534) Prepare for release 5.0.13-v6 (#113) +- [1ca8f25](https://github.com/stashed/redis/commit/1ca8f25) [cherry-pick] Use Go 1.18 (#111) +- [51ff930](https://github.com/stashed/redis/commit/51ff930) Make sure to fail the backup/restore sessions if license check fails. (#106) (#107) + + +### [6.2.5-v6](https://github.com/stashed/redis/releases/tag/6.2.5-v6) + +- [e9528e1](https://github.com/stashed/redis/commit/e9528e1) Prepare for release 6.2.5-v6 (#114) +- [d565078](https://github.com/stashed/redis/commit/d565078) [cherry-pick] Use Go 1.18 (#112) +- [e7bb8c9](https://github.com/stashed/redis/commit/e7bb8c9) Make sure to fail the backup/restore sessions if license check fails. (#106) (#108) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.21.0](https://github.com/stashed/stash/releases/tag/v0.21.0) + +- [76df41cc](https://github.com/stashed/stash/commit/76df41cc) Prepare for release v0.21.0 (#1453) +- [e1bae66f](https://github.com/stashed/stash/commit/e1bae66f) Add RBAC permissions for `coordination.k8s.io/leases` +- [df9553d0](https://github.com/stashed/stash/commit/df9553d0) Add RBAC permissions for `coordination.k8s.io/leases` +- [846d952f](https://github.com/stashed/stash/commit/846d952f) Fix linter warning +- [6e5fd706](https://github.com/stashed/stash/commit/6e5fd706) Clean up dependencies (#1451) +- [4b6dd4eb](https://github.com/stashed/stash/commit/4b6dd4eb) Use github.com/imdario/mergo@v0.3.5 +- [f2109b78](https://github.com/stashed/stash/commit/f2109b78) Update to k8s 1.24 toolchain (#1450) +- [33073c9b](https://github.com/stashed/stash/commit/33073c9b) Add timeout for backup and restore (#1449) +- [49926ef1](https://github.com/stashed/stash/commit/49926ef1) Check if restore output is nil before updating restore status (#1448) +- [a9ce58ed](https://github.com/stashed/stash/commit/a9ce58ed) Test against Kubernetes 1.24.0 (#1447) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.3.0](https://github.com/stashed/ui-server/releases/tag/v0.3.0) + +- [dbe1690](https://github.com/stashed/ui-server/commit/dbe1690) Prepare for release v0.3.0 (#14) +- [ccb5f80](https://github.com/stashed/ui-server/commit/ccb5f80) Use k8s 1.24 tool chain + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.06.27.md b/content/docs/v2024.8.27/CHANGELOG-v2022.06.27.md new file mode 100644 index 0000000000..c1c3e6889c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.06.27.md @@ -0,0 +1,195 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.06.27 + name: Changelog-v2022.06.27 + parent: welcome + weight: 20220627 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.06.27/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.06.27/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.06.27 (2022-06-27) + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.06.27](https://github.com/stashed/installer/releases/tag/v2022.06.27) + +- [e8a6472b](https://github.com/stashed/installer/commit/e8a6472b) Prepare for release v2022.06.27 (#265) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v18](https://github.com/stashed/mongodb/releases/tag/3.4.17-v18) + +- [aff82bdd](https://github.com/stashed/mongodb/commit/aff82bdd) [cherry-pick] Fix license checking error. (#1593) (#1594) + + +### [3.4.22-v18](https://github.com/stashed/mongodb/releases/tag/3.4.22-v18) + +- [789d9b33](https://github.com/stashed/mongodb/commit/789d9b33) [cherry-pick] Fix license checking error. (#1593) (#1595) + + +### [3.6.8-v18](https://github.com/stashed/mongodb/releases/tag/3.6.8-v18) + +- [97a59fcf](https://github.com/stashed/mongodb/commit/97a59fcf) [cherry-pick] Fix license checking error. (#1593) (#1597) + + +### [3.6.13-v18](https://github.com/stashed/mongodb/releases/tag/3.6.13-v18) + +- [9a5ffacb](https://github.com/stashed/mongodb/commit/9a5ffacb) [cherry-pick] Fix license checking error. (#1593) (#1596) + + +### [4.0.3-v18](https://github.com/stashed/mongodb/releases/tag/4.0.3-v18) + +- [c8873280](https://github.com/stashed/mongodb/commit/c8873280) [cherry-pick] Fix license checking error. (#1593) (#1599) + + +### [4.0.5-v18](https://github.com/stashed/mongodb/releases/tag/4.0.5-v18) + +- [49ed6399](https://github.com/stashed/mongodb/commit/49ed6399) [cherry-pick] Fix license checking error. (#1593) (#1600) + + +### [4.0.11-v18](https://github.com/stashed/mongodb/releases/tag/4.0.11-v18) + +- [368ef71b](https://github.com/stashed/mongodb/commit/368ef71b) [cherry-pick] Fix license checking error. (#1593) (#1598) + + +### [4.1.4-v18](https://github.com/stashed/mongodb/releases/tag/4.1.4-v18) + +- [f8b92ad8](https://github.com/stashed/mongodb/commit/f8b92ad8) [cherry-pick] Fix license checking error. (#1593) (#1602) + + +### [4.1.7-v18](https://github.com/stashed/mongodb/releases/tag/4.1.7-v18) + +- [199e37cd](https://github.com/stashed/mongodb/commit/199e37cd) [cherry-pick] Fix license checking error. (#1593) (#1603) + + +### [4.1.13-v18](https://github.com/stashed/mongodb/releases/tag/4.1.13-v18) + +- [f3eacd9f](https://github.com/stashed/mongodb/commit/f3eacd9f) [cherry-pick] Fix license checking error. (#1593) (#1601) + + +### [4.2.3-v18](https://github.com/stashed/mongodb/releases/tag/4.2.3-v18) + +- [15bc3f6b](https://github.com/stashed/mongodb/commit/15bc3f6b) [cherry-pick] Fix license checking error. (#1593) (#1604) + + +### [4.4.6-v9](https://github.com/stashed/mongodb/releases/tag/4.4.6-v9) + +- [710a47ca](https://github.com/stashed/mongodb/commit/710a47ca) [cherry-pick] Fix license checking error. (#1593) (#1605) + + +### [5.0.3-v6](https://github.com/stashed/mongodb/releases/tag/5.0.3-v6) + +- [fa9cb3cb](https://github.com/stashed/mongodb/commit/fa9cb3cb) [cherry-pick] Fix license checking error. (#1593) (#1606) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v17](https://github.com/stashed/postgres/releases/tag/9.6.19-v17) + +- [9ec2f296](https://github.com/stashed/postgres/commit/9ec2f296) [cherry-pick] Fix license checking error. (#1077) (#1083) + + +### [10.14-v17](https://github.com/stashed/postgres/releases/tag/10.14-v17) + +- [dc2b85ce](https://github.com/stashed/postgres/commit/dc2b85ce) [cherry-pick] Fix license checking error. (#1077) (#1078) + + +### [11.9-v17](https://github.com/stashed/postgres/releases/tag/11.9-v17) + +- [ab3747db](https://github.com/stashed/postgres/commit/ab3747db) [cherry-pick] Fix license checking error. (#1077) (#1079) + + +### [12.4-v17](https://github.com/stashed/postgres/releases/tag/12.4-v17) + +- [9d5645cd](https://github.com/stashed/postgres/commit/9d5645cd) [cherry-pick] Fix license checking error. (#1077) (#1080) + + +### [13.1-v14](https://github.com/stashed/postgres/releases/tag/13.1-v14) + +- [9cafed82](https://github.com/stashed/postgres/commit/9cafed82) [cherry-pick] Fix license checking error. (#1077) (#1081) + + +### [14.0-v6](https://github.com/stashed/postgres/releases/tag/14.0-v6) + +- [093044d7](https://github.com/stashed/postgres/commit/093044d7) [cherry-pick] Fix license checking error. (#1077) (#1082) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.07.09.md b/content/docs/v2024.8.27/CHANGELOG-v2022.07.09.md new file mode 100644 index 0000000000..4a21a24da7 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.07.09.md @@ -0,0 +1,140 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.07.09 + name: Changelog-v2022.07.09 + parent: welcome + weight: 20220709 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.07.09/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.07.09/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.07.09 (2022-07-09) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.22.0](https://github.com/stashed/apimachinery/releases/tag/v0.22.0) + +- [0d8b4a6b](https://github.com/stashed/apimachinery/commit/0d8b4a6b) Don't mark session phase completed until all step executes (#176) +- [eda5d7b6](https://github.com/stashed/apimachinery/commit/eda5d7b6) Add `executionPolicy` for controlling Hook execution (#175) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.22.0](https://github.com/stashed/cli/releases/tag/v0.22.0) + +- [48205e7b](https://github.com/stashed/cli/commit/48205e7b) Prepare for release v0.22.0 (#165) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.22.0](https://github.com/stashed/enterprise/releases/tag/v0.22.0) + +- [22673dec](https://github.com/stashed/enterprise/commit/22673dec) Prepare for release v0.22.0 (#183) +- [d0c08788](https://github.com/stashed/enterprise/commit/d0c08788) Add support for hook executionPolicy (#181) +- [d183ca59](https://github.com/stashed/enterprise/commit/d183ca59) Add RBAC permissions for finalizers (#182) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.07.09](https://github.com/stashed/installer/releases/tag/v2022.07.09) + +- [6516d4a2](https://github.com/stashed/installer/commit/6516d4a2) Prepare for release v2022.07.09 (#268) +- [72439121](https://github.com/stashed/installer/commit/72439121) Add RBAC permissions for finalizers (#267) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.22.0](https://github.com/stashed/stash/releases/tag/v0.22.0) + +- [b7f17c08](https://github.com/stashed/stash/commit/b7f17c08) Prepare for release v0.22.0 (#1459) +- [98d35685](https://github.com/stashed/stash/commit/98d35685) Add support for hook executionPolicy (#1457) +- [85d6c506](https://github.com/stashed/stash/commit/85d6c506) Add RBAC permissions for finalizers (#1458) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.4.0](https://github.com/stashed/ui-server/releases/tag/v0.4.0) + +- [fe19a0f](https://github.com/stashed/ui-server/commit/fe19a0f) Prepare for release v0.4.0 (#15) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.09.29.md b/content/docs/v2024.8.27/CHANGELOG-v2022.09.29.md new file mode 100644 index 0000000000..b0cb6e7213 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.09.29.md @@ -0,0 +1,608 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.09.29 + name: Changelog-v2022.09.29 + parent: welcome + weight: 20220929 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.09.29/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.09.29/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.09.29 (2022-09-26) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.23.0](https://github.com/stashed/apimachinery/releases/tag/v0.23.0) + +- [92b9a652](https://github.com/stashed/apimachinery/commit/92b9a652) Add backup retry helpers + use `metav1.Duration` for `TimeOut` (#188) +- [a5ba7404](https://github.com/stashed/apimachinery/commit/a5ba7404) Revert to restic 0.13.1 (#190) +- [8821fa34](https://github.com/stashed/apimachinery/commit/8821fa34) Test against Kubernetes 1.25.0 (#189) +- [6b79486c](https://github.com/stashed/apimachinery/commit/6b79486c) Fix RestoreSession phase calculation (#187) +- [cb39527c](https://github.com/stashed/apimachinery/commit/cb39527c) Add re-try logic for failed backup session (#182) +- [b8925184](https://github.com/stashed/apimachinery/commit/b8925184) Check for CronJob/VolumeSnapshot version only once (#186) +- [a3b5eb90](https://github.com/stashed/apimachinery/commit/a3b5eb90) Remove slack link +- [40ce6cb2](https://github.com/stashed/apimachinery/commit/40ce6cb2) Handle status conversion for CronJob/VolumeSnapshot (#185) +- [55dff331](https://github.com/stashed/apimachinery/commit/55dff331) Use restic 0.14.0 (#184) +- [522f4e18](https://github.com/stashed/apimachinery/commit/522f4e18) Use k8s 1.25.1 libs (#183) +- [a68816b4](https://github.com/stashed/apimachinery/commit/a68816b4) Acquire license from license-proxyserver if available (#181) +- [f76f80b6](https://github.com/stashed/apimachinery/commit/f76f80b6) Fix namespace defaulting in restore target ref (#180) +- [ffd3a856](https://github.com/stashed/apimachinery/commit/ffd3a856) Make PostBackupHook and PostRestoreHook pointer to avoid defaulting (#179) +- [2e6ad371](https://github.com/stashed/apimachinery/commit/2e6ad371) Add target related constants + re-organize constants (#177) +- [c8f94328](https://github.com/stashed/apimachinery/commit/c8f94328) Fix issue in sending backupsession and restoresession success metrics. (#178) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.23.0](https://github.com/stashed/cli/releases/tag/v0.23.0) + +- [55cd97a6](https://github.com/stashed/cli/commit/55cd97a6) Prepare for release v0.23.0 (#171) +- [c6df635c](https://github.com/stashed/cli/commit/c6df635c) Revert to restic 0.13.1 (#170) +- [b522f73f](https://github.com/stashed/cli/commit/b522f73f) Use restic 0.14.0 (#169) +- [b03af4b2](https://github.com/stashed/cli/commit/b03af4b2) Use k8s 1.25.1 libs (#168) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v19](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v19) + +- [966a449b](https://github.com/stashed/elasticsearch/commit/966a449b) Prepare for release 5.6.4-v19 (#1268) +- [69530abc](https://github.com/stashed/elasticsearch/commit/69530abc) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1258) +- [5202ddcf](https://github.com/stashed/elasticsearch/commit/5202ddcf) [cherry-pick] Use restic 0.14.0 (#1246) (#1247) +- [831f0550](https://github.com/stashed/elasticsearch/commit/831f0550) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1236) +- [c310969d](https://github.com/stashed/elasticsearch/commit/c310969d) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1225) + + +### [6.2.4-v19](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v19) + +- [6ba65875](https://github.com/stashed/elasticsearch/commit/6ba65875) Prepare for release 6.2.4-v19 (#1269) +- [de0252b1](https://github.com/stashed/elasticsearch/commit/de0252b1) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1259) +- [4ca1fe5d](https://github.com/stashed/elasticsearch/commit/4ca1fe5d) [cherry-pick] Use restic 0.14.0 (#1246) (#1248) +- [3cb020f6](https://github.com/stashed/elasticsearch/commit/3cb020f6) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1237) +- [e6a3931e](https://github.com/stashed/elasticsearch/commit/e6a3931e) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1226) + + +### [6.3.0-v19](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v19) + +- [35be503d](https://github.com/stashed/elasticsearch/commit/35be503d) Prepare for release 6.3.0-v19 (#1270) +- [a83a0f92](https://github.com/stashed/elasticsearch/commit/a83a0f92) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1260) +- [4fc1c5ea](https://github.com/stashed/elasticsearch/commit/4fc1c5ea) [cherry-pick] Use restic 0.14.0 (#1246) (#1249) +- [f5f6bd25](https://github.com/stashed/elasticsearch/commit/f5f6bd25) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1238) +- [3fb18e38](https://github.com/stashed/elasticsearch/commit/3fb18e38) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1227) + + +### [6.4.0-v19](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v19) + +- [bb078f5b](https://github.com/stashed/elasticsearch/commit/bb078f5b) Prepare for release 6.4.0-v19 (#1271) +- [3326965e](https://github.com/stashed/elasticsearch/commit/3326965e) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1261) +- [7a38f82a](https://github.com/stashed/elasticsearch/commit/7a38f82a) [cherry-pick] Use restic 0.14.0 (#1246) (#1250) +- [4c080247](https://github.com/stashed/elasticsearch/commit/4c080247) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1239) +- [a0a65026](https://github.com/stashed/elasticsearch/commit/a0a65026) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1228) + + +### [6.5.3-v19](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v19) + +- [7a026075](https://github.com/stashed/elasticsearch/commit/7a026075) Prepare for release 6.5.3-v19 (#1272) +- [75e486af](https://github.com/stashed/elasticsearch/commit/75e486af) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1262) +- [cb9bd0fa](https://github.com/stashed/elasticsearch/commit/cb9bd0fa) [cherry-pick] Use restic 0.14.0 (#1246) (#1251) +- [150cf448](https://github.com/stashed/elasticsearch/commit/150cf448) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1240) +- [60dbba03](https://github.com/stashed/elasticsearch/commit/60dbba03) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1229) + + +### [6.8.0-v19](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v19) + +- [d158623c](https://github.com/stashed/elasticsearch/commit/d158623c) Prepare for release 6.8.0-v19 (#1273) +- [918b5f8f](https://github.com/stashed/elasticsearch/commit/918b5f8f) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1263) +- [350384af](https://github.com/stashed/elasticsearch/commit/350384af) [cherry-pick] Use restic 0.14.0 (#1246) (#1252) +- [61d07df4](https://github.com/stashed/elasticsearch/commit/61d07df4) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1241) +- [dab04aa8](https://github.com/stashed/elasticsearch/commit/dab04aa8) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1230) + + +### [7.2.0-v19](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v19) + +- [b5b166a1](https://github.com/stashed/elasticsearch/commit/b5b166a1) Prepare for release 7.2.0-v19 (#1275) +- [ac13c36b](https://github.com/stashed/elasticsearch/commit/ac13c36b) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1265) +- [7aa291c7](https://github.com/stashed/elasticsearch/commit/7aa291c7) [cherry-pick] Use restic 0.14.0 (#1246) (#1254) +- [4240c297](https://github.com/stashed/elasticsearch/commit/4240c297) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1243) +- [e32f9641](https://github.com/stashed/elasticsearch/commit/e32f9641) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1232) +- [9ed8203d](https://github.com/stashed/elasticsearch/commit/9ed8203d) Prepare for release 7.2.0-v18 (#1220) + + +### [7.3.2-v19](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v19) + +- [27366a89](https://github.com/stashed/elasticsearch/commit/27366a89) Prepare for release 7.3.2-v19 (#1276) +- [20f7d0c0](https://github.com/stashed/elasticsearch/commit/20f7d0c0) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1266) +- [9051b5e8](https://github.com/stashed/elasticsearch/commit/9051b5e8) [cherry-pick] Use restic 0.14.0 (#1246) (#1255) +- [3af9b3c9](https://github.com/stashed/elasticsearch/commit/3af9b3c9) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1244) +- [b866149e](https://github.com/stashed/elasticsearch/commit/b866149e) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1233) +- [6d92e35f](https://github.com/stashed/elasticsearch/commit/6d92e35f) Prepare for release 7.3.2-v18 (#1221) + + +### [7.14.0-v5](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v5) + +- [c0f3296c](https://github.com/stashed/elasticsearch/commit/c0f3296c) Prepare for release 7.14.0-v5 (#1274) +- [fe1ba0d3](https://github.com/stashed/elasticsearch/commit/fe1ba0d3) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1264) +- [d1735e73](https://github.com/stashed/elasticsearch/commit/d1735e73) [cherry-pick] Use restic 0.14.0 (#1246) (#1253) +- [19670067](https://github.com/stashed/elasticsearch/commit/19670067) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1242) +- [2759db09](https://github.com/stashed/elasticsearch/commit/2759db09) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1231) +- [49ba85f7](https://github.com/stashed/elasticsearch/commit/49ba85f7) Prepare for release 7.14.0-v4 (#1219) + + +### [8.2.0-v2](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v2) + +- [0c1ae9ff](https://github.com/stashed/elasticsearch/commit/0c1ae9ff) Prepare for release 8.2.0-v2 (#1277) +- [1c020913](https://github.com/stashed/elasticsearch/commit/1c020913) [cherry-pick] Revert to restic 0.13.1 (#1257) (#1267) +- [fc81884f](https://github.com/stashed/elasticsearch/commit/fc81884f) [cherry-pick] Use restic 0.14.0 (#1246) (#1256) +- [7689cccc](https://github.com/stashed/elasticsearch/commit/7689cccc) [cherry-pick] Use k8s 1.25.1 libs (#1235) (#1245) +- [5d5cbcd3](https://github.com/stashed/elasticsearch/commit/5d5cbcd3) [cherry-pick] Acquire license from license-proxyserver if available (#1224) (#1234) +- [e3026385](https://github.com/stashed/elasticsearch/commit/e3026385) Prepare for release 8.2.0-v1 (#1222) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.23.0](https://github.com/stashed/enterprise/releases/tag/v0.23.0) + +- [4cb35fb1](https://github.com/stashed/enterprise/commit/4cb35fb1) Prepare for release v0.23.0 (#205) +- [88cf38fc](https://github.com/stashed/enterprise/commit/88cf38fc) Implement retry logic for failed backup + use `metav1.Duration` for `TimeOut` (#204) +- [3951fa2c](https://github.com/stashed/enterprise/commit/3951fa2c) Revert to restic 0.13.1 (#203) +- [81ec3c07](https://github.com/stashed/enterprise/commit/81ec3c07) Refactor codebase (#195) +- [ca228c24](https://github.com/stashed/enterprise/commit/ca228c24) Validate `TimeOut` field in Backup and Restore (#202) +- [657982b5](https://github.com/stashed/enterprise/commit/657982b5) Fix unit tests +- [a348041f](https://github.com/stashed/enterprise/commit/a348041f) Check for CronJob/VolumeSnapshot version only once (#201) +- [a5550bb0](https://github.com/stashed/enterprise/commit/a5550bb0) Handle CronJob api type dynamically (#200) +- [79ba1c50](https://github.com/stashed/enterprise/commit/79ba1c50) Handle status conversion for CronJob/VolumeSnapshot (#199) +- [521b7e4e](https://github.com/stashed/enterprise/commit/521b7e4e) Use restic 0.14.0 (#198) +- [60b48411](https://github.com/stashed/enterprise/commit/60b48411) Use VolumeSnapshot api dynamically (#197) +- [cf034b8b](https://github.com/stashed/enterprise/commit/cf034b8b) Use k8s 1.25.1 libs (#196) +- [f2c419a7](https://github.com/stashed/enterprise/commit/f2c419a7) Acquire license from license-proxyserver if available (#194) +- [316cd592](https://github.com/stashed/enterprise/commit/316cd592) Fix total host calculation for VolumeSnapshot (#189) +- [7fdce67e](https://github.com/stashed/enterprise/commit/7fdce67e) Fix label passing to restore job (#193) +- [0052217d](https://github.com/stashed/enterprise/commit/0052217d) Fix hook defaulting issue (#192) +- [d78cfc50](https://github.com/stashed/enterprise/commit/d78cfc50) Add support for multiple blueprint name in target annotations (#190) +- [07327ac2](https://github.com/stashed/enterprise/commit/07327ac2) Set BackupSession Duration before sending metrics. (#191) +- [52ceac2b](https://github.com/stashed/enterprise/commit/52ceac2b) Cancel concurrent CI runs + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v6](https://github.com/stashed/etcd/releases/tag/3.5.0-v6) + +- [3bbcbfb](https://github.com/stashed/etcd/commit/3bbcbfb) Prepare for release 3.5.0-v6 (#59) +- [fad156c](https://github.com/stashed/etcd/commit/fad156c) [cherry-pick] Revert to restic 0.13.1 (#57) (#58) +- [7836d45](https://github.com/stashed/etcd/commit/7836d45) [cherry-pick] Use restic 0.14.0 (#55) (#56) +- [c1989f5](https://github.com/stashed/etcd/commit/c1989f5) [cherry-pick] Use k8s 1.25.1 libs (#53) (#54) +- [12b1d0e](https://github.com/stashed/etcd/commit/12b1d0e) [cherry-pick] Acquire license from license-proxyserver if available (#51) (#52) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.09.29](https://github.com/stashed/installer/releases/tag/v2022.09.29) + +- [29710ffb](https://github.com/stashed/installer/commit/29710ffb) Prepare for release v2022.09.29 (#282) +- [2d65e197](https://github.com/stashed/installer/commit/2d65e197) Redis 7.0.5 (#281) +- [38eb2de1](https://github.com/stashed/installer/commit/38eb2de1) Update crds +- [8916a69d](https://github.com/stashed/installer/commit/8916a69d) Remove ReplicaSet and ReplicationController support from community edition (#280) +- [4e11f0d6](https://github.com/stashed/installer/commit/4e11f0d6) Test against Kubernetes 1.25.0 (#279) +- [744d7c6a](https://github.com/stashed/installer/commit/744d7c6a) Don't add PSP permissions in Kubernetes version v1.25.0+ (#278) +- [2542d4af](https://github.com/stashed/installer/commit/2542d4af) Remove support ReplicaSet and ReplicationController (#276) +- [30779daa](https://github.com/stashed/installer/commit/30779daa) Use k8s 1.25.1 libs (#277) +- [e7dc289e](https://github.com/stashed/installer/commit/e7dc289e) Acquire license from license-proxyserver if available (#275) +- [3d8c9552](https://github.com/stashed/installer/commit/3d8c9552) Add permission for license-proxyserver (#274) +- [fcb4bdbe](https://github.com/stashed/installer/commit/fcb4bdbe) Add catalog for Redis 7.0.4 (#273) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v2](https://github.com/stashed/kubedump/releases/tag/0.1.0-v2) + +- [d949ed6](https://github.com/stashed/kubedump/commit/d949ed6) Prepare for release 0.1.0-v2 (#19) +- [b2c51fb](https://github.com/stashed/kubedump/commit/b2c51fb) Revert to restic 0.13.1 (#17) (#18) +- [540670b](https://github.com/stashed/kubedump/commit/540670b) [cherry-pick] Use restic 0.14.0 (#15) (#16) +- [ca8bdc6](https://github.com/stashed/kubedump/commit/ca8bdc6) [cherry-pick] Use k8s 1.25.1 libs (#13) (#14) +- [7d1fc6f](https://github.com/stashed/kubedump/commit/7d1fc6f) [cherry-pick] Acquire license from license-proxyserver if available (#11) (#12) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v12](https://github.com/stashed/mariadb/releases/tag/10.5.8-v12) + +- [38c4724](https://github.com/stashed/mariadb/commit/38c4724) Prepare for release 10.5.8-v12 (#200) +- [b861b65](https://github.com/stashed/mariadb/commit/b861b65) [cherry-pick] Revert to restic 0.13.1 (#198) (#199) +- [7e6751a](https://github.com/stashed/mariadb/commit/7e6751a) [cherry-pick] Use restic 0.14.0 (#196) (#197) +- [610ea64](https://github.com/stashed/mariadb/commit/610ea64) [cherry-pick] Use k8s 1.25.1 libs (#194) (#195) +- [e476217](https://github.com/stashed/mariadb/commit/e476217) [cherry-pick] Acquire license from license-proxyserver if available (#192) (#193) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v19](https://github.com/stashed/mongodb/releases/tag/3.4.17-v19) + +- [3a90213c](https://github.com/stashed/mongodb/commit/3a90213c) Prepare for release 3.4.17-v19 (#1663) +- [dcc89b05](https://github.com/stashed/mongodb/commit/dcc89b05) [cherry-pick] Revert to restic 0.13.1 (#1649) (#1650) +- [d9d43b0b](https://github.com/stashed/mongodb/commit/d9d43b0b) [cherry-pick] Use restic 0.14.0 (#1635) (#1636) +- [c838b452](https://github.com/stashed/mongodb/commit/c838b452) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1622) +- [78fb76b1](https://github.com/stashed/mongodb/commit/78fb76b1) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1608) + + +### [3.4.22-v19](https://github.com/stashed/mongodb/releases/tag/3.4.22-v19) + +- [bd473140](https://github.com/stashed/mongodb/commit/bd473140) Prepare for release 3.4.22-v19 (#1664) +- [ee17bd96](https://github.com/stashed/mongodb/commit/ee17bd96) Revert to restic 0.13.1 (#1649) (#1651) +- [5a3562ae](https://github.com/stashed/mongodb/commit/5a3562ae) [cherry-pick] Use restic 0.14.0 (#1635) (#1637) +- [d660184a](https://github.com/stashed/mongodb/commit/d660184a) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1623) +- [3d73c7f8](https://github.com/stashed/mongodb/commit/3d73c7f8) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1609) + + +### [3.6.8-v19](https://github.com/stashed/mongodb/releases/tag/3.6.8-v19) + +- [2a5d0729](https://github.com/stashed/mongodb/commit/2a5d0729) Prepare for release 3.6.8-v19 (#1666) +- [98abf305](https://github.com/stashed/mongodb/commit/98abf305) [cherry-pick] Revert to restic 0.13.1 (#1649) (#1653) +- [52614ce5](https://github.com/stashed/mongodb/commit/52614ce5) [cherry-pick] Use restic 0.14.0 (#1635) (#1639) +- [a3c6cdb0](https://github.com/stashed/mongodb/commit/a3c6cdb0) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1625) +- [09da5ad7](https://github.com/stashed/mongodb/commit/09da5ad7) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1611) + + +### [3.6.13-v19](https://github.com/stashed/mongodb/releases/tag/3.6.13-v19) + +- [36b22e54](https://github.com/stashed/mongodb/commit/36b22e54) Prepare for release 3.6.13-v19 (#1665) +- [0b579101](https://github.com/stashed/mongodb/commit/0b579101) Revert to restic 0.13.1 (#1649) (#1652) +- [f335db0d](https://github.com/stashed/mongodb/commit/f335db0d) [cherry-pick] Use restic 0.14.0 (#1635) (#1638) +- [a194f438](https://github.com/stashed/mongodb/commit/a194f438) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1624) +- [a389cd0c](https://github.com/stashed/mongodb/commit/a389cd0c) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1610) + + +### [4.0.3-v19](https://github.com/stashed/mongodb/releases/tag/4.0.3-v19) + +- [1ba18787](https://github.com/stashed/mongodb/commit/1ba18787) Prepare for release 4.0.3-v19 (#1668) +- [20c26852](https://github.com/stashed/mongodb/commit/20c26852) Revert to restic 0.13.1 (#1649) (#1655) +- [3cd8cbe0](https://github.com/stashed/mongodb/commit/3cd8cbe0) [cherry-pick] Use restic 0.14.0 (#1635) (#1641) +- [8d7a12a8](https://github.com/stashed/mongodb/commit/8d7a12a8) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1627) +- [dec6b1b5](https://github.com/stashed/mongodb/commit/dec6b1b5) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1613) + + +### [4.0.5-v19](https://github.com/stashed/mongodb/releases/tag/4.0.5-v19) + +- [7fa68368](https://github.com/stashed/mongodb/commit/7fa68368) Prepare for release 4.0.5-v19 (#1669) +- [ae8bc602](https://github.com/stashed/mongodb/commit/ae8bc602) Revert to restic 0.13.1 (#1649) (#1656) +- [cf032c32](https://github.com/stashed/mongodb/commit/cf032c32) [cherry-pick] Use restic 0.14.0 (#1635) (#1642) +- [05f691f6](https://github.com/stashed/mongodb/commit/05f691f6) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1628) +- [425887a0](https://github.com/stashed/mongodb/commit/425887a0) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1614) + + +### [4.0.11-v19](https://github.com/stashed/mongodb/releases/tag/4.0.11-v19) + +- [f519a6b1](https://github.com/stashed/mongodb/commit/f519a6b1) Prepare for release 4.0.11-v19 (#1667) +- [f1977fd5](https://github.com/stashed/mongodb/commit/f1977fd5) [cherry-pick] Revert to restic 0.13.1 (#1649) (#1654) +- [1c0e894f](https://github.com/stashed/mongodb/commit/1c0e894f) [cherry-pick] Use restic 0.14.0 (#1635) (#1640) +- [269719a6](https://github.com/stashed/mongodb/commit/269719a6) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1626) +- [fcbc9b82](https://github.com/stashed/mongodb/commit/fcbc9b82) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1612) + + +### [4.1.4-v19](https://github.com/stashed/mongodb/releases/tag/4.1.4-v19) + +- [1bc0d9c6](https://github.com/stashed/mongodb/commit/1bc0d9c6) Prepare for release 4.1.4-v19 (#1671) +- [eb3b71a0](https://github.com/stashed/mongodb/commit/eb3b71a0) [cherry-pick] Revert to restic 0.13.1 (#1649) (#1658) +- [1e53dfeb](https://github.com/stashed/mongodb/commit/1e53dfeb) [cherry-pick] Use restic 0.14.0 (#1635) (#1644) +- [0ea9f2ee](https://github.com/stashed/mongodb/commit/0ea9f2ee) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1630) +- [2e27e199](https://github.com/stashed/mongodb/commit/2e27e199) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1616) + + +### [4.1.7-v19](https://github.com/stashed/mongodb/releases/tag/4.1.7-v19) + +- [7029f3cb](https://github.com/stashed/mongodb/commit/7029f3cb) Prepare for release 4.1.7-v19 (#1672) +- [5a7188dc](https://github.com/stashed/mongodb/commit/5a7188dc) [cherry-pick] Revert to restic 0.13.1 (#1649) (#1659) +- [b068d1cb](https://github.com/stashed/mongodb/commit/b068d1cb) [cherry-pick] Use restic 0.14.0 (#1635) (#1645) +- [7b413b54](https://github.com/stashed/mongodb/commit/7b413b54) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1631) +- [cd1f4626](https://github.com/stashed/mongodb/commit/cd1f4626) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1617) + + +### [4.1.13-v19](https://github.com/stashed/mongodb/releases/tag/4.1.13-v19) + +- [0fb41942](https://github.com/stashed/mongodb/commit/0fb41942) Prepare for release 4.1.13-v19 (#1670) +- [48fe3980](https://github.com/stashed/mongodb/commit/48fe3980) Revert to restic 0.13.1 (#1649) (#1657) +- [a09f450c](https://github.com/stashed/mongodb/commit/a09f450c) [cherry-pick] Use restic 0.14.0 (#1635) (#1643) +- [a56f9680](https://github.com/stashed/mongodb/commit/a56f9680) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1629) +- [0f64d312](https://github.com/stashed/mongodb/commit/0f64d312) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1615) + + +### [4.2.3-v19](https://github.com/stashed/mongodb/releases/tag/4.2.3-v19) + +- [faebeabf](https://github.com/stashed/mongodb/commit/faebeabf) Prepare for release 4.2.3-v19 (#1673) +- [630081c4](https://github.com/stashed/mongodb/commit/630081c4) Revert to restic 0.13.1 (#1649) (#1660) +- [db2b2154](https://github.com/stashed/mongodb/commit/db2b2154) [cherry-pick] Use restic 0.14.0 (#1635) (#1646) +- [465c0f96](https://github.com/stashed/mongodb/commit/465c0f96) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1632) +- [07b25e67](https://github.com/stashed/mongodb/commit/07b25e67) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1618) + + +### [4.4.6-v10](https://github.com/stashed/mongodb/releases/tag/4.4.6-v10) + +- [3f080a1a](https://github.com/stashed/mongodb/commit/3f080a1a) Revert to restic 0.13.1 (#1649) (#1661) +- [61c5a63a](https://github.com/stashed/mongodb/commit/61c5a63a) [cherry-pick] Use restic 0.14.0 (#1635) (#1647) +- [945b11ff](https://github.com/stashed/mongodb/commit/945b11ff) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1633) +- [8d5c1da5](https://github.com/stashed/mongodb/commit/8d5c1da5) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1619) + + +### [5.0.3-v7](https://github.com/stashed/mongodb/releases/tag/5.0.3-v7) + +- [b794121f](https://github.com/stashed/mongodb/commit/b794121f) Revert to restic 0.13.1 (#1649) (#1662) +- [048c224d](https://github.com/stashed/mongodb/commit/048c224d) [cherry-pick] Use restic 0.14.0 (#1635) (#1648) +- [ae70b357](https://github.com/stashed/mongodb/commit/ae70b357) [cherry-pick] Use k8s 1.25.1 libs (#1621) (#1634) +- [23063a3b](https://github.com/stashed/mongodb/commit/23063a3b) [cherry-pick] Acquire license from license-proxyserver if available (#1607) (#1620) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v19](https://github.com/stashed/mysql/releases/tag/5.7.25-v19) + +- [2e7b1ded](https://github.com/stashed/mysql/commit/2e7b1ded) Prepare for release 5.7.25-v19 (#656) +- [1502553e](https://github.com/stashed/mysql/commit/1502553e) [cherry-pick] Revert to restic 0.13.1 (#652) (#653) +- [fb6b7842](https://github.com/stashed/mysql/commit/fb6b7842) [cherry-pick] Use restic 0.14.0 (#648) (#649) +- [517967e9](https://github.com/stashed/mysql/commit/517967e9) [cherry-pick] Use k8s 1.25.1 libs (#643) (#644) +- [8b8d50c0](https://github.com/stashed/mysql/commit/8b8d50c0) [cherry-pick] Acquire license from license-proxyserver if available (#638) (#639) + + +### [8.0.3-v19](https://github.com/stashed/mysql/releases/tag/8.0.3-v19) + +- [a776fc40](https://github.com/stashed/mysql/commit/a776fc40) Prepare for release 8.0.3-v19 (#659) +- [513cf746](https://github.com/stashed/mysql/commit/513cf746) [cherry-pick] Use k8s 1.25.1 libs (#643) (#647) +- [f23808a4](https://github.com/stashed/mysql/commit/f23808a4) [cherry-pick] Acquire license from license-proxyserver if available (#638) (#642) + + +### [8.0.14-v19](https://github.com/stashed/mysql/releases/tag/8.0.14-v19) + +- [28076a91](https://github.com/stashed/mysql/commit/28076a91) Prepare for release 8.0.14-v19 (#657) +- [a3232b0c](https://github.com/stashed/mysql/commit/a3232b0c) [cherry-pick] Revert to restic 0.13.1 (#652) (#654) +- [7dd4e9be](https://github.com/stashed/mysql/commit/7dd4e9be) [cherry-pick] Use restic 0.14.0 (#648) (#650) +- [6c47a15a](https://github.com/stashed/mysql/commit/6c47a15a) [cherry-pick] Use k8s 1.25.1 libs (#643) (#645) +- [17110198](https://github.com/stashed/mysql/commit/17110198) [cherry-pick] Acquire license from license-proxyserver if available (#638) (#640) + + +### [8.0.21-v13](https://github.com/stashed/mysql/releases/tag/8.0.21-v13) + +- [10631bcb](https://github.com/stashed/mysql/commit/10631bcb) Prepare for release 8.0.21-v13 (#658) +- [3ebde7be](https://github.com/stashed/mysql/commit/3ebde7be) [cherry-pick] Revert to restic 0.13.1 (#652) (#655) +- [5d5dfe4f](https://github.com/stashed/mysql/commit/5d5dfe4f) [cherry-pick] Use restic 0.14.0 (#648) (#651) +- [2d32097f](https://github.com/stashed/mysql/commit/2d32097f) [cherry-pick] Use k8s 1.25.1 libs (#643) (#646) +- [fd685f29](https://github.com/stashed/mysql/commit/fd685f29) [cherry-pick] Acquire license from license-proxyserver if available (#638) (#641) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v7](https://github.com/stashed/nats/releases/tag/2.6.1-v7) + +- [ff84cf8](https://github.com/stashed/nats/commit/ff84cf8) Prepare for release 2.6.1-v6 (#72) +- [27915ef](https://github.com/stashed/nats/commit/27915ef) [cherry-pick] Revert to restic 0.13.1 (#69) (#70) +- [4e4f933](https://github.com/stashed/nats/commit/4e4f933) Fix Dockerfile +- [f984718](https://github.com/stashed/nats/commit/f984718) [cherry-pick] Use restic 0.14.0 (#66) (#67) +- [45ba241](https://github.com/stashed/nats/commit/45ba241) [cherry-pick] Use k8s 1.25.1 libs (#63) (#64) +- [1bfa57c](https://github.com/stashed/nats/commit/1bfa57c) [cherry-pick] Acquire license from license-proxyserver if available (#60) (#61) + + +### [2.8.2-v2](https://github.com/stashed/nats/releases/tag/2.8.2-v2) + +- [185b43b](https://github.com/stashed/nats/commit/185b43b) Prepare for release 2.8.2-v2 (#73) +- [92a0d85](https://github.com/stashed/nats/commit/92a0d85) [cherry-pick] Revert to restic 0.13.1 (#69) (#71) +- [a20f667](https://github.com/stashed/nats/commit/a20f667) [cherry-pick] Use restic 0.14.0 (#66) (#68) +- [6e70b66](https://github.com/stashed/nats/commit/6e70b66) [cherry-pick] Use k8s 1.25.1 libs (#63) (#65) +- [3d1ed5a](https://github.com/stashed/nats/commit/3d1ed5a) [cherry-pick] Acquire license from license-proxyserver if available (#60) (#62) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v14](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v14) + +- [60dcbc42](https://github.com/stashed/percona-xtradb/commit/60dcbc42) Prepare for release 5.7-v14 (#272) +- [4910525d](https://github.com/stashed/percona-xtradb/commit/4910525d) [cherry-pick] Revert to restic 0.13.1 (#270) (#271) +- [f36ec767](https://github.com/stashed/percona-xtradb/commit/f36ec767) [cherry-pick] Use restic 0.14.0 (#268) (#269) +- [3bc0f8b1](https://github.com/stashed/percona-xtradb/commit/3bc0f8b1) [cherry-pick] Use k8s 1.25.1 libs (#266) (#267) +- [3176f6c4](https://github.com/stashed/percona-xtradb/commit/3176f6c4) [cherry-pick] Acquire license from license-proxyserver if available (#264) (#265) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v18](https://github.com/stashed/postgres/releases/tag/9.6.19-v18) + +- [82f3ce67](https://github.com/stashed/postgres/commit/82f3ce67) Prepare for release 9.6.19-v18 (#1117) +- [2010667b](https://github.com/stashed/postgres/commit/2010667b) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1111) +- [ebbbcbac](https://github.com/stashed/postgres/commit/ebbbcbac) [cherry-pick] Use restic 0.14.0 (#1098) (#1104) +- [c010f284](https://github.com/stashed/postgres/commit/c010f284) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1097) +- [3f12e462](https://github.com/stashed/postgres/commit/3f12e462) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1090) + + +### [10.14-v18](https://github.com/stashed/postgres/releases/tag/10.14-v18) + +- [21c2297c](https://github.com/stashed/postgres/commit/21c2297c) Prepare for release 10.14-v18 (#1112) +- [f88623ae](https://github.com/stashed/postgres/commit/f88623ae) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1106) +- [2095d664](https://github.com/stashed/postgres/commit/2095d664) [cherry-pick] Use restic 0.14.0 (#1098) (#1099) +- [05343728](https://github.com/stashed/postgres/commit/05343728) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1092) +- [b47ffe3a](https://github.com/stashed/postgres/commit/b47ffe3a) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1085) + + +### [11.9-v18](https://github.com/stashed/postgres/releases/tag/11.9-v18) + +- [d94521f0](https://github.com/stashed/postgres/commit/d94521f0) Prepare for release 11.9-v18 (#1113) +- [80d58dcf](https://github.com/stashed/postgres/commit/80d58dcf) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1107) +- [0f80a028](https://github.com/stashed/postgres/commit/0f80a028) [cherry-pick] Use restic 0.14.0 (#1098) (#1100) +- [1dc3d12a](https://github.com/stashed/postgres/commit/1dc3d12a) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1093) +- [8bb7face](https://github.com/stashed/postgres/commit/8bb7face) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1086) + + +### [12.4-v18](https://github.com/stashed/postgres/releases/tag/12.4-v18) + +- [9aeadf3d](https://github.com/stashed/postgres/commit/9aeadf3d) Prepare for release 12.4-v18 (#1114) +- [dc133e24](https://github.com/stashed/postgres/commit/dc133e24) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1108) +- [b076014d](https://github.com/stashed/postgres/commit/b076014d) [cherry-pick] Use restic 0.14.0 (#1098) (#1101) +- [0d9bb51a](https://github.com/stashed/postgres/commit/0d9bb51a) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1094) +- [4c40d495](https://github.com/stashed/postgres/commit/4c40d495) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1087) + + +### [13.1-v15](https://github.com/stashed/postgres/releases/tag/13.1-v15) + +- [d5514c07](https://github.com/stashed/postgres/commit/d5514c07) Prepare for release 13.1-v15 (#1115) +- [6ae5c873](https://github.com/stashed/postgres/commit/6ae5c873) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1109) +- [a99069cf](https://github.com/stashed/postgres/commit/a99069cf) [cherry-pick] Use restic 0.14.0 (#1098) (#1102) +- [085f7ae0](https://github.com/stashed/postgres/commit/085f7ae0) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1095) +- [ee7e4c40](https://github.com/stashed/postgres/commit/ee7e4c40) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1088) + + +### [14.0-v7](https://github.com/stashed/postgres/releases/tag/14.0-v7) + +- [334d54bb](https://github.com/stashed/postgres/commit/334d54bb) Prepare for release 14.0-v7 (#1116) +- [84426fe5](https://github.com/stashed/postgres/commit/84426fe5) [cherry-pick] Revert to restic 0.13.1 (#1105) (#1110) +- [d5225dd7](https://github.com/stashed/postgres/commit/d5225dd7) [cherry-pick] Use restic 0.14.0 (#1098) (#1103) +- [b382b035](https://github.com/stashed/postgres/commit/b382b035) [cherry-pick] Use k8s 1.25.1 libs (#1091) (#1096) +- [bf7ebaec](https://github.com/stashed/postgres/commit/bf7ebaec) [cherry-pick] Acquire license from license-proxyserver if available (#1084) (#1089) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v7](https://github.com/stashed/redis/releases/tag/5.0.13-v7) + +- [23db3eb](https://github.com/stashed/redis/commit/23db3eb) Prepare for release 5.0.13-v7 (#129) +- [09696ff](https://github.com/stashed/redis/commit/09696ff) [cherry-pick] Revert to restic 0.13.1 (#126) (#127) +- [218357a](https://github.com/stashed/redis/commit/218357a) [cherry-pick] Use restic 0.14.0 (#123) (#124) +- [ef82eb8](https://github.com/stashed/redis/commit/ef82eb8) [cherry-pick] Use k8s 1.25.1 libs (#120) (#121) +- [083affe](https://github.com/stashed/redis/commit/083affe) [cherry-pick] Acquire license from license-proxyserver if available (#117) (#118) + + +### [6.2.5-v7](https://github.com/stashed/redis/releases/tag/6.2.5-v7) + +- [8448d92](https://github.com/stashed/redis/commit/8448d92) Prepare for release 6.2.5-v7 (#130) +- [6e14704](https://github.com/stashed/redis/commit/6e14704) [cherry-pick] Revert to restic 0.13.1 (#126) (#128) +- [418d73f](https://github.com/stashed/redis/commit/418d73f) Fix pointer +- [b30d3a7](https://github.com/stashed/redis/commit/b30d3a7) [cherry-pick] Use restic 0.14.0 (#123) (#125) +- [4711712](https://github.com/stashed/redis/commit/4711712) [cherry-pick] Use k8s 1.25.1 libs (#120) (#122) +- [0d4cfbd](https://github.com/stashed/redis/commit/0d4cfbd) [cherry-pick] Acquire license from license-proxyserver if available (#117) (#119) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.23.0](https://github.com/stashed/stash/releases/tag/v0.23.0) + +- [2df11f82](https://github.com/stashed/stash/commit/2df11f82) Prepare for release v0.23.0 (#1486) +- [ee8134e5](https://github.com/stashed/stash/commit/ee8134e5) Port changes from Stash Enterprise edition +- [f209179c](https://github.com/stashed/stash/commit/f209179c) Fix snapshot test failure +- [583a8f56](https://github.com/stashed/stash/commit/583a8f56) Port changes from Stash Enterprise edition +- [d8e8f4c9](https://github.com/stashed/stash/commit/d8e8f4c9) Revert to restic 0.13.1 (#1483) +- [57de24c7](https://github.com/stashed/stash/commit/57de24c7) Test against Kubernetes 1.25.0 (#1482) +- [bf1826c8](https://github.com/stashed/stash/commit/bf1826c8) Validate `TimeOut` in backup and restore (#1481) +- [1ae696dd](https://github.com/stashed/stash/commit/1ae696dd) Fix unit tests +- [41064183](https://github.com/stashed/stash/commit/41064183) Check for CronJob/VolumeSnapshot version only once (#1479) +- [fc4e2602](https://github.com/stashed/stash/commit/fc4e2602) Handle CronJob api type dynamically (#1478) +- [7c055aec](https://github.com/stashed/stash/commit/7c055aec) Handle status conversion for CronJob/VolumeSnapshot (#1477) +- [fb80667d](https://github.com/stashed/stash/commit/fb80667d) Use restic 0.14.0 (#1476) +- [4ce5e18d](https://github.com/stashed/stash/commit/4ce5e18d) Use VolumeSnapshot api dynamically (#1475) +- [b0519c85](https://github.com/stashed/stash/commit/b0519c85) Fix linter warnings +- [779297d4](https://github.com/stashed/stash/commit/779297d4) Use k8s 1.25.1 libs (#1474) +- [8c87f9fc](https://github.com/stashed/stash/commit/8c87f9fc) Acquire license from license-proxyserver if available (#1472) +- [63cac4e9](https://github.com/stashed/stash/commit/63cac4e9) Fix total host calculation for VolumeSnapshot +- [aca8fde0](https://github.com/stashed/stash/commit/aca8fde0) Remove unused variable +- [6bbd94ba](https://github.com/stashed/stash/commit/6bbd94ba) Remove unnecessary else +- [d28750a3](https://github.com/stashed/stash/commit/d28750a3) Fix total host calculation for VolumeSnapshot +- [42f39b5b](https://github.com/stashed/stash/commit/42f39b5b) Fix label passing to backup/restore jobs (#1470) +- [2b445ce1](https://github.com/stashed/stash/commit/2b445ce1) Fix hook defaulting issue +- [12436ad2](https://github.com/stashed/stash/commit/12436ad2) Fix hook defaulting issue +- [e2f44131](https://github.com/stashed/stash/commit/e2f44131) Support multiple backup invoker against a target +- [7fafed89](https://github.com/stashed/stash/commit/7fafed89) Support multiple backup invoker against a target +- [e4e7b69e](https://github.com/stashed/stash/commit/e4e7b69e) Set BackupSession duration before sending metrics. (#1466) +- [cd9bcecc](https://github.com/stashed/stash/commit/cd9bcecc) Cancel concurrent ci runs + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.5.0](https://github.com/stashed/ui-server/releases/tag/v0.5.0) + +- [13db95c](https://github.com/stashed/ui-server/commit/13db95c) Prepare for release v0.5.0 (#17) +- [2382c83](https://github.com/stashed/ui-server/commit/2382c83) Use k8s 1.25.1 libs (#16) +- [7fabd18](https://github.com/stashed/ui-server/commit/7fabd18) Cancel concurrent CI runs + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2022.12.11.md b/content/docs/v2024.8.27/CHANGELOG-v2022.12.11.md new file mode 100644 index 0000000000..89c9028278 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2022.12.11.md @@ -0,0 +1,435 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2022.12.11 + name: Changelog-v2022.12.11 + parent: welcome + weight: 20221211 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2022.12.11/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2022.12.11/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2022.12.11 (2022-12-11) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.24.0](https://github.com/stashed/apimachinery/releases/tag/v0.24.0) + +- [8be49b48](https://github.com/stashed/apimachinery/commit/8be49b48) Update vulnerable deps (#195) +- [a7a5533d](https://github.com/stashed/apimachinery/commit/a7a5533d) Run GH actions on ubuntu-20.04 (#194) +- [dfd6e64f](https://github.com/stashed/apimachinery/commit/dfd6e64f) Add `--no-lock` flag for read operations (#192) +- [d6d88798](https://github.com/stashed/apimachinery/commit/d6d88798) Indicate repository required backend fields (#191) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.24.0](https://github.com/stashed/cli/releases/tag/v0.24.0) + +- [827ee17a](https://github.com/stashed/cli/commit/827ee17a) Prepare for release v0.24.0 (#173) +- [b481ee3b](https://github.com/stashed/cli/commit/b481ee3b) Update vulnerable deps +- [7b3e18a0](https://github.com/stashed/cli/commit/7b3e18a0) Run GH actions on ubuntu-20.04 (#172) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v20](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v20) + +- [65a2d53e](https://github.com/stashed/elasticsearch/commit/65a2d53e) Prepare for release 5.6.4-v20 (#1289) +- [291684ce](https://github.com/stashed/elasticsearch/commit/291684ce) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1279) + + +### [6.2.4-v20](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v20) + +- [1b9be669](https://github.com/stashed/elasticsearch/commit/1b9be669) Prepare for release 6.2.4-v20 (#1290) +- [5aa4a261](https://github.com/stashed/elasticsearch/commit/5aa4a261) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1280) + + +### [6.3.0-v20](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v20) + +- [f0c50dc5](https://github.com/stashed/elasticsearch/commit/f0c50dc5) Prepare for release 6.3.0-v20 (#1291) +- [13521327](https://github.com/stashed/elasticsearch/commit/13521327) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1281) + + +### [6.4.0-v20](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v20) + +- [f7f7f8ba](https://github.com/stashed/elasticsearch/commit/f7f7f8ba) Prepare for release 6.4.0-v20 (#1292) +- [0058df29](https://github.com/stashed/elasticsearch/commit/0058df29) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1282) + + +### [6.5.3-v20](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v20) + +- [95916905](https://github.com/stashed/elasticsearch/commit/95916905) Prepare for release 6.5.3-v20 (#1293) +- [6d372fd5](https://github.com/stashed/elasticsearch/commit/6d372fd5) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1283) + + +### [6.8.0-v20](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v20) + +- [265999ff](https://github.com/stashed/elasticsearch/commit/265999ff) Prepare for release 6.8.0-v20 (#1294) +- [fbd522f9](https://github.com/stashed/elasticsearch/commit/fbd522f9) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1284) + + +### [7.2.0-v20](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v20) + +- [e5fac39f](https://github.com/stashed/elasticsearch/commit/e5fac39f) Prepare for release 7.2.0-v20 (#1296) +- [562e07c2](https://github.com/stashed/elasticsearch/commit/562e07c2) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1286) + + +### [7.3.2-v20](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v20) + +- [a142cc89](https://github.com/stashed/elasticsearch/commit/a142cc89) Prepare for release 7.3.2-v20 (#1297) +- [82d44ebd](https://github.com/stashed/elasticsearch/commit/82d44ebd) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1287) + + +### [7.14.0-v6](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v6) + +- [73bd77a1](https://github.com/stashed/elasticsearch/commit/73bd77a1) Prepare for release 7.14.0-v6 (#1295) +- [bd3f7b0a](https://github.com/stashed/elasticsearch/commit/bd3f7b0a) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1285) + + +### [8.2.0-v3](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v3) + +- [fbe1a6b4](https://github.com/stashed/elasticsearch/commit/fbe1a6b4) Prepare for release 8.2.0-v3 (#1298) +- [9148d4ee](https://github.com/stashed/elasticsearch/commit/9148d4ee) [cherry-pick] Run GH actions on ubuntu-20.04 (#1278) (#1288) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.24.0](https://github.com/stashed/enterprise/releases/tag/v0.24.0) + +- [362a77ca](https://github.com/stashed/enterprise/commit/362a77ca) Prepare for release v0.24.0 (#213) +- [c477c2f4](https://github.com/stashed/enterprise/commit/c477c2f4) Update vulnerable deps (#212) +- [6ccc066f](https://github.com/stashed/enterprise/commit/6ccc066f) Run GH actions on ubuntu-20.04 (#211) +- [890948b2](https://github.com/stashed/enterprise/commit/890948b2) Update RBAC for VaultServer Backup & Restore (#208) +- [7ffc5ecd](https://github.com/stashed/enterprise/commit/7ffc5ecd) Acquire license from proxyserver (#209) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v7](https://github.com/stashed/etcd/releases/tag/3.5.0-v7) + +- [056c220](https://github.com/stashed/etcd/commit/056c220) Prepare for release 3.5.0-v7 (#63) +- [bec459d](https://github.com/stashed/etcd/commit/bec459d) [cherry-pick] Run GH actions on ubuntu-20.04 (#61) (#62) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2022.12.11](https://github.com/stashed/installer/releases/tag/v2022.12.11) + +- [5162994b](https://github.com/stashed/installer/commit/5162994b) Prepare for release v2022.12.11 (#288) +- [8d43a822](https://github.com/stashed/installer/commit/8d43a822) Run GH actions on ubuntu-20.04 (#287) +- [b68bcaa2](https://github.com/stashed/installer/commit/b68bcaa2) Update ClusterRole for Vault Backup & Restore (#285) +- [8a6bbf45](https://github.com/stashed/installer/commit/8a6bbf45) Add Plugin for Postgres 15 (#286) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v3](https://github.com/stashed/kubedump/releases/tag/0.1.0-v3) + +- [f8ce289](https://github.com/stashed/kubedump/commit/f8ce289) Prepare for release 0.1.0-v3 (#23) +- [5da34c4](https://github.com/stashed/kubedump/commit/5da34c4) Run GH actions on ubuntu-20.04 (#22) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v13](https://github.com/stashed/mariadb/releases/tag/10.5.8-v13) + +- [8147cc1](https://github.com/stashed/mariadb/commit/8147cc1) Prepare for release 10.5.8-v13 (#206) +- [4fca73b](https://github.com/stashed/mariadb/commit/4fca73b) Run GH actions on ubuntu-20.04 (#204) (#205) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v20](https://github.com/stashed/mongodb/releases/tag/3.4.17-v20) + +- [286d6ec2](https://github.com/stashed/mongodb/commit/286d6ec2) Prepare for release 3.4.17-v20 (#1690) +- [eb1e21ca](https://github.com/stashed/mongodb/commit/eb1e21ca) Run GH actions on ubuntu-20.04 (#1677) (#1689) + + +### [3.4.22-v20](https://github.com/stashed/mongodb/releases/tag/3.4.22-v20) + +- [2b6a2925](https://github.com/stashed/mongodb/commit/2b6a2925) Prepare for release 3.4.22-v20 (#1691) +- [11386500](https://github.com/stashed/mongodb/commit/11386500) Run GH actions on ubuntu-20.04 (#1677) (#1688) + + +### [3.6.8-v20](https://github.com/stashed/mongodb/releases/tag/3.6.8-v20) + +- [38d327b3](https://github.com/stashed/mongodb/commit/38d327b3) Prepare for release 3.6.8-v20 (#1693) +- [d814c266](https://github.com/stashed/mongodb/commit/d814c266) Run GH actions on ubuntu-20.04 (#1677) (#1686) + + +### [3.6.13-v20](https://github.com/stashed/mongodb/releases/tag/3.6.13-v20) + +- [c0212417](https://github.com/stashed/mongodb/commit/c0212417) Prepare for release 3.6.13-v20 (#1692) +- [ac655744](https://github.com/stashed/mongodb/commit/ac655744) Run GH actions on ubuntu-20.04 (#1677) (#1687) + + +### [4.0.3-v20](https://github.com/stashed/mongodb/releases/tag/4.0.3-v20) + +- [c197e5a3](https://github.com/stashed/mongodb/commit/c197e5a3) Prepare for release 4.0.3-v20 (#1695) +- [a1b5a29e](https://github.com/stashed/mongodb/commit/a1b5a29e) Run GH actions on ubuntu-20.04 (#1677) (#1684) + + +### [4.0.5-v20](https://github.com/stashed/mongodb/releases/tag/4.0.5-v20) + +- [2e3e02c0](https://github.com/stashed/mongodb/commit/2e3e02c0) Prepare for release 4.0.5-v20 (#1696) +- [74ba8bb0](https://github.com/stashed/mongodb/commit/74ba8bb0) Run GH actions on ubuntu-20.04 (#1677) (#1683) + + +### [4.0.11-v20](https://github.com/stashed/mongodb/releases/tag/4.0.11-v20) + +- [2a196426](https://github.com/stashed/mongodb/commit/2a196426) Prepare for release 4.0.11-v20 (#1694) +- [df8566b4](https://github.com/stashed/mongodb/commit/df8566b4) Run GH actions on ubuntu-20.04 (#1677) (#1685) + + +### [4.1.4-v20](https://github.com/stashed/mongodb/releases/tag/4.1.4-v20) + +- [482cbb9f](https://github.com/stashed/mongodb/commit/482cbb9f) Prepare for release 4.1.4-v20 (#1698) +- [19d35fa3](https://github.com/stashed/mongodb/commit/19d35fa3) Run GH actions on ubuntu-20.04 (#1677) (#1682) + + +### [4.1.7-v20](https://github.com/stashed/mongodb/releases/tag/4.1.7-v20) + +- [daeea0d2](https://github.com/stashed/mongodb/commit/daeea0d2) Prepare for release 4.1.7-v20 (#1699) +- [935f0b54](https://github.com/stashed/mongodb/commit/935f0b54) Run GH actions on ubuntu-20.04 (#1677) (#1678) + + +### [4.1.13-v20](https://github.com/stashed/mongodb/releases/tag/4.1.13-v20) + +- [3dc0dba9](https://github.com/stashed/mongodb/commit/3dc0dba9) Prepare for release 4.1.13-v20 (#1697) +- [15979e9f](https://github.com/stashed/mongodb/commit/15979e9f) Run GH actions on ubuntu-20.04 + + +### [4.2.3-v20](https://github.com/stashed/mongodb/releases/tag/4.2.3-v20) + +- [88d01c6e](https://github.com/stashed/mongodb/commit/88d01c6e) Prepare for release 4.2.3-v20 (#1701) +- [5132c6c2](https://github.com/stashed/mongodb/commit/5132c6c2) Run GH actions on ubuntu-20.04 (#1677) (#1681) + + +### [4.4.6-v11](https://github.com/stashed/mongodb/releases/tag/4.4.6-v11) + +- [d7ef7330](https://github.com/stashed/mongodb/commit/d7ef7330) Run GH actions on ubuntu-20.04 (#1677) (#1680) + + +### [5.0.3-v8](https://github.com/stashed/mongodb/releases/tag/5.0.3-v8) + +- [230ddc83](https://github.com/stashed/mongodb/commit/230ddc83) Run GH actions on ubuntu-20.04 (#1677) (#1679) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v20](https://github.com/stashed/mysql/releases/tag/5.7.25-v20) + +- [6e909b5c](https://github.com/stashed/mysql/commit/6e909b5c) Prepare for release 5.7.25-v20 (#666) +- [c0444876](https://github.com/stashed/mysql/commit/c0444876) [cherry-pick] Run GH actions on ubuntu-20.04 (#661) (#662) + + +### [8.0.3-v20](https://github.com/stashed/mysql/releases/tag/8.0.3-v20) + +- [2df6a148](https://github.com/stashed/mysql/commit/2df6a148) Prepare for release 8.0.3-v20 (#669) +- [5def6186](https://github.com/stashed/mysql/commit/5def6186) [cherry-pick] Run GH actions on ubuntu-20.04 (#661) (#665) + + +### [8.0.14-v20](https://github.com/stashed/mysql/releases/tag/8.0.14-v20) + +- [7c73243d](https://github.com/stashed/mysql/commit/7c73243d) Prepare for release 8.0.14-v20 (#667) +- [6b745e21](https://github.com/stashed/mysql/commit/6b745e21) [cherry-pick] Run GH actions on ubuntu-20.04 (#661) (#663) + + +### [8.0.21-v14](https://github.com/stashed/mysql/releases/tag/8.0.21-v14) + +- [e145e190](https://github.com/stashed/mysql/commit/e145e190) Prepare for release 8.0.21-v14 (#668) +- [50af3373](https://github.com/stashed/mysql/commit/50af3373) [cherry-pick] Run GH actions on ubuntu-20.04 (#661) (#664) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v8](https://github.com/stashed/nats/releases/tag/2.6.1-v8) + +- [148b347](https://github.com/stashed/nats/commit/148b347) Prepare for release 2.6.1-v8 (#78) +- [f13cacd](https://github.com/stashed/nats/commit/f13cacd) [cherry-pick] Run GH actions on ubuntu-20.04 (#75) (#76) + + +### [2.8.2-v3](https://github.com/stashed/nats/releases/tag/2.8.2-v3) + +- [8565844](https://github.com/stashed/nats/commit/8565844) Prepare for release 2.8.2-v3 (#79) +- [860bda2](https://github.com/stashed/nats/commit/860bda2) [cherry-pick] Run GH actions on ubuntu-20.04 (#75) (#77) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v15](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v15) + +- [b7a3bb56](https://github.com/stashed/percona-xtradb/commit/b7a3bb56) Prepare for release 5.7-v15 (#276) +- [751522d9](https://github.com/stashed/percona-xtradb/commit/751522d9) [cherry-pick] Run GH actions on ubuntu-20.04 (#274) (#275) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v19](https://github.com/stashed/postgres/releases/tag/9.6.19-v19) + +- [faee608a](https://github.com/stashed/postgres/commit/faee608a) Prepare for release 9.6.19-v19 (#1134) +- [5d466cf8](https://github.com/stashed/postgres/commit/5d466cf8) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1127) + + +### [10.14-v19](https://github.com/stashed/postgres/releases/tag/10.14-v19) + +- [1d0cdfb7](https://github.com/stashed/postgres/commit/1d0cdfb7) Prepare for release 10.14-v19 (#1128) +- [23308405](https://github.com/stashed/postgres/commit/23308405) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1121) + + +### [11.9-v19](https://github.com/stashed/postgres/releases/tag/11.9-v19) + +- [458a24a6](https://github.com/stashed/postgres/commit/458a24a6) Prepare for release 11.9-v19 (#1129) +- [f13f0d8b](https://github.com/stashed/postgres/commit/f13f0d8b) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1122) + + +### [12.4-v19](https://github.com/stashed/postgres/releases/tag/12.4-v19) + +- [5ac61672](https://github.com/stashed/postgres/commit/5ac61672) Prepare for release 12.4-v19 (#1130) +- [0b32f4e3](https://github.com/stashed/postgres/commit/0b32f4e3) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1123) + + +### [13.1-v16](https://github.com/stashed/postgres/releases/tag/13.1-v16) + +- [33c9a9a4](https://github.com/stashed/postgres/commit/33c9a9a4) Prepare for release 13.1-v16 (#1131) +- [fdd75a0d](https://github.com/stashed/postgres/commit/fdd75a0d) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1124) + + +### [14.0-v8](https://github.com/stashed/postgres/releases/tag/14.0-v8) + +- [a94f2d59](https://github.com/stashed/postgres/commit/a94f2d59) Prepare for release 14.0-v8 (#1132) +- [dfd4aea9](https://github.com/stashed/postgres/commit/dfd4aea9) [cherry-pick] Run GH actions on ubuntu-20.04 (#1120) (#1125) + + +### [15.1](https://github.com/stashed/postgres/releases/tag/15.1) + + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v8](https://github.com/stashed/redis/releases/tag/5.0.13-v8) + +- [2f3ecde](https://github.com/stashed/redis/commit/2f3ecde) Prepare for release 5.0.13-v8 (#136) +- [76a64b2](https://github.com/stashed/redis/commit/76a64b2) Run GH actions on ubuntu-20.04 (#132) (#135) + + +### [6.2.5-v8](https://github.com/stashed/redis/releases/tag/6.2.5-v8) + +- [e09e2c7](https://github.com/stashed/redis/commit/e09e2c7) Prepare for release 6.2.5-v8 (#137) +- [3f84ac4](https://github.com/stashed/redis/commit/3f84ac4) Run GH actions on ubuntu-20.04 (#132) (#134) + + +### [7.0.5-v1](https://github.com/stashed/redis/releases/tag/7.0.5-v1) + +- [de8306f](https://github.com/stashed/redis/commit/de8306f) Prepare for release 7.0.5-v1 (#138) +- [46304f4](https://github.com/stashed/redis/commit/46304f4) Run GH actions on ubuntu-20.04 (#132) (#133) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.24.0](https://github.com/stashed/stash/releases/tag/v0.24.0) + +- [000aceb4](https://github.com/stashed/stash/commit/000aceb4f) Prepare for release v0.24.0 (#1496) +- [c1288849](https://github.com/stashed/stash/commit/c12888498) Update vulnerable deps (#1495) +- [f64ec230](https://github.com/stashed/stash/commit/f64ec2309) Run GH actions on ubuntu-20.04 (#1494) +- [82baf7fb](https://github.com/stashed/stash/commit/82baf7fb3) Acquire license from proxyserver (#1491) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.6.0](https://github.com/stashed/ui-server/releases/tag/v0.6.0) + +- [5fef8c3](https://github.com/stashed/ui-server/commit/5fef8c3) Prepare for release v0.6.0 (#19) +- [2fa4b08](https://github.com/stashed/ui-server/commit/2fa4b08) Update vulnerable deps +- [2c846f5](https://github.com/stashed/ui-server/commit/2c846f5) Run GH actions on ubuntu-20.04 (#18) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.01.05.md b/content/docs/v2024.8.27/CHANGELOG-v2023.01.05.md new file mode 100644 index 0000000000..e8e9dd45c0 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.01.05.md @@ -0,0 +1,396 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.01.05 + name: Changelog-v2023.01.05 + parent: welcome + weight: 20230105 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.01.05/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.01.05/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.01.05 (2023-01-03) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.25.0](https://github.com/stashed/apimachinery/releases/tag/v0.25.0) + +- [3f20f5fe](https://github.com/stashed/apimachinery/commit/3f20f5fe) Add stash prefix for temp directory (#196) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.25.0](https://github.com/stashed/cli/releases/tag/v0.25.0) + +- [c8dabb77](https://github.com/stashed/cli/commit/c8dabb77) Prepare for release v0.25.0 (#174) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v21](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v21) + +- [b121b807](https://github.com/stashed/elasticsearch/commit/b121b807) Prepare for release 5.6.4-v21 (#1300) + + +### [6.2.4-v21](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v21) + +- [a94d6ef3](https://github.com/stashed/elasticsearch/commit/a94d6ef3) Prepare for release 6.2.4-v21 (#1301) + + +### [6.3.0-v21](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v21) + +- [73bb53f0](https://github.com/stashed/elasticsearch/commit/73bb53f0) Prepare for release 6.3.0-v21 (#1302) + + +### [6.4.0-v21](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v21) + +- [583f64fe](https://github.com/stashed/elasticsearch/commit/583f64fe) Prepare for release 6.4.0-v21 (#1303) + + +### [6.5.3-v21](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v21) + +- [c49eec09](https://github.com/stashed/elasticsearch/commit/c49eec09) Prepare for release 6.5.3-v21 (#1304) + + +### [6.8.0-v21](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v21) + +- [29b29eb6](https://github.com/stashed/elasticsearch/commit/29b29eb6) Prepare for release 6.8.0-v21 (#1305) + + +### [7.2.0-v21](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v21) + +- [c50a0904](https://github.com/stashed/elasticsearch/commit/c50a0904) Prepare for release 7.2.0-v21 (#1307) + + +### [7.3.2-v21](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v21) + +- [9288c6fb](https://github.com/stashed/elasticsearch/commit/9288c6fb) Prepare for release 7.3.2-v21 (#1308) + + +### [7.14.0-v7](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v7) + +- [5130f2a4](https://github.com/stashed/elasticsearch/commit/5130f2a4) Prepare for release 7.14.0-v7 (#1306) + + +### [8.2.0-v4](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v4) + +- [4807ee49](https://github.com/stashed/elasticsearch/commit/4807ee49) Prepare for release 8.2.0-v4 (#1309) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.25.0](https://github.com/stashed/enterprise/releases/tag/v0.25.0) + +- [762ebb4e](https://github.com/stashed/enterprise/commit/762ebb4eb) Prepare for release v0.25.0 (#216) +- [8cb82074](https://github.com/stashed/enterprise/commit/8cb82074a) Fix upserting temporary volume (#215) +- [57d0906c](https://github.com/stashed/enterprise/commit/57d0906c8) Fix NPE using license-proxyserver (#214) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v8](https://github.com/stashed/etcd/releases/tag/3.5.0-v8) + +- [523fc8f](https://github.com/stashed/etcd/commit/523fc8f) Prepare for release 3.5.0-v8 (#65) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.01.05](https://github.com/stashed/installer/releases/tag/v2023.01.05) + +- [33a11ef1](https://github.com/stashed/installer/commit/33a11ef1) Prepare for release v2023.01.05 (#290) +- [358d9bf9](https://github.com/stashed/installer/commit/358d9bf9) Add `stash` prefix in temporary directory (#289) +- [8c09e3f5](https://github.com/stashed/installer/commit/8c09e3f5) Update publish-oci.yml +- [38568dfc](https://github.com/stashed/installer/commit/38568dfc) Publish helm charts as OCI artifacts + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v4](https://github.com/stashed/kubedump/releases/tag/0.1.0-v4) + +- [77c648c](https://github.com/stashed/kubedump/commit/77c648c) Prepare for release 0.1.0-v4 (#25) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v14](https://github.com/stashed/mariadb/releases/tag/10.5.8-v14) + +- [c86d3d8](https://github.com/stashed/mariadb/commit/c86d3d8) Prepare for release 10.5.8-v14 (#208) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v21](https://github.com/stashed/mongodb/releases/tag/3.4.17-v21) + +- [05ebbe8c](https://github.com/stashed/mongodb/commit/05ebbe8c) Prepare for release 3.4.17-v21 (#1705) + + +### [3.4.22-v21](https://github.com/stashed/mongodb/releases/tag/3.4.22-v21) + +- [cd8f3b79](https://github.com/stashed/mongodb/commit/cd8f3b79) Prepare for release 3.4.22-v21 (#1706) + + +### [3.6.8-v21](https://github.com/stashed/mongodb/releases/tag/3.6.8-v21) + +- [78218444](https://github.com/stashed/mongodb/commit/78218444) Prepare for release 3.6.8-v21 (#1708) + + +### [3.6.13-v21](https://github.com/stashed/mongodb/releases/tag/3.6.13-v21) + +- [8b5e5f26](https://github.com/stashed/mongodb/commit/8b5e5f26) Prepare for release 3.6.13-v21 (#1707) + + +### [4.0.3-v21](https://github.com/stashed/mongodb/releases/tag/4.0.3-v21) + +- [ede5e29c](https://github.com/stashed/mongodb/commit/ede5e29c) Prepare for release 4.0.3-v21 (#1710) + + +### [4.0.5-v21](https://github.com/stashed/mongodb/releases/tag/4.0.5-v21) + +- [5caeaeda](https://github.com/stashed/mongodb/commit/5caeaeda) Prepare for release 4.0.5-v21 (#1711) + + +### [4.0.11-v21](https://github.com/stashed/mongodb/releases/tag/4.0.11-v21) + +- [deba26e1](https://github.com/stashed/mongodb/commit/deba26e1) Prepare for release 4.0.11-v21 (#1709) + + +### [4.1.4-v21](https://github.com/stashed/mongodb/releases/tag/4.1.4-v21) + +- [4b2ad2ab](https://github.com/stashed/mongodb/commit/4b2ad2ab) Prepare for release 4.1.4-v21 (#1713) + + +### [4.1.7-v21](https://github.com/stashed/mongodb/releases/tag/4.1.7-v21) + +- [a7b8fe3b](https://github.com/stashed/mongodb/commit/a7b8fe3b) Prepare for release 4.1.7-v21 (#1714) + + +### [4.1.13-v21](https://github.com/stashed/mongodb/releases/tag/4.1.13-v21) + +- [dc6ef634](https://github.com/stashed/mongodb/commit/dc6ef634) Prepare for release 4.1.13-v21 (#1712) + + +### [4.2.3-v21](https://github.com/stashed/mongodb/releases/tag/4.2.3-v21) + +- [358bfa5c](https://github.com/stashed/mongodb/commit/358bfa5c) Prepare for release 4.2.3-v21 (#1715) + + +### [4.4.6-v12](https://github.com/stashed/mongodb/releases/tag/4.4.6-v12) + +- [7b684f62](https://github.com/stashed/mongodb/commit/7b684f62) Prepare for release 4.4.6-v12 (#1716) +- [e7414415](https://github.com/stashed/mongodb/commit/e7414415) Prepare for release 4.4.6-v11 (#1702) + + +### [5.0.3-v9](https://github.com/stashed/mongodb/releases/tag/5.0.3-v9) + +- [b63fcd29](https://github.com/stashed/mongodb/commit/b63fcd29) Prepare for release 5.0.3-v9 (#1717) +- [963cb8ef](https://github.com/stashed/mongodb/commit/963cb8ef) Prepare for release 5.0.3-v8 (#1703) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v21](https://github.com/stashed/mysql/releases/tag/5.7.25-v21) + +- [cdd2b0f9](https://github.com/stashed/mysql/commit/cdd2b0f9) Prepare for release 5.7.25-v21 (#671) + + +### [8.0.3-v21](https://github.com/stashed/mysql/releases/tag/8.0.3-v21) + +- [74efb1f1](https://github.com/stashed/mysql/commit/74efb1f1) Prepare for release 8.0.3-v21 (#674) + + +### [8.0.14-v21](https://github.com/stashed/mysql/releases/tag/8.0.14-v21) + +- [6c643791](https://github.com/stashed/mysql/commit/6c643791) Prepare for release 8.0.14-v21 (#672) + + +### [8.0.21-v15](https://github.com/stashed/mysql/releases/tag/8.0.21-v15) + +- [63f6fdc1](https://github.com/stashed/mysql/commit/63f6fdc1) Prepare for release 8.0.21-v15 (#673) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v9](https://github.com/stashed/nats/releases/tag/2.6.1-v9) + +- [b07278f](https://github.com/stashed/nats/commit/b07278f) Prepare for release 2.6.1-v9 (#81) + + +### [2.8.2-v4](https://github.com/stashed/nats/releases/tag/2.8.2-v4) + +- [d374ae2](https://github.com/stashed/nats/commit/d374ae2) Prepare for release 2.8.2-v4 (#82) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v16](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v16) + +- [dceb6fd5](https://github.com/stashed/percona-xtradb/commit/dceb6fd5) Prepare for release 5.7-v16 (#278) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v20](https://github.com/stashed/postgres/releases/tag/9.6.19-v20) + +- [c5a91002](https://github.com/stashed/postgres/commit/c5a91002) Prepare for release 9.6.19-v20 (#1142) + + +### [10.14-v20](https://github.com/stashed/postgres/releases/tag/10.14-v20) + +- [6a71a45a](https://github.com/stashed/postgres/commit/6a71a45a) Prepare for release 10.14-v20 (#1136) + + +### [11.9-v20](https://github.com/stashed/postgres/releases/tag/11.9-v20) + +- [a52a1e1e](https://github.com/stashed/postgres/commit/a52a1e1e) Prepare for release 11.9-v20 (#1137) + + +### [12.4-v20](https://github.com/stashed/postgres/releases/tag/12.4-v20) + +- [012c0bc1](https://github.com/stashed/postgres/commit/012c0bc1) Prepare for release 12.4-v20 (#1138) + + +### [13.1-v17](https://github.com/stashed/postgres/releases/tag/13.1-v17) + +- [929f348e](https://github.com/stashed/postgres/commit/929f348e) Prepare for release 13.1-v17 (#1139) + + +### [14.0-v9](https://github.com/stashed/postgres/releases/tag/14.0-v9) + +- [bbd9e54c](https://github.com/stashed/postgres/commit/bbd9e54c) Prepare for release 14.0-v9 (#1140) + + +### [15.1-v1](https://github.com/stashed/postgres/releases/tag/15.1-v1) + +- [c1411460](https://github.com/stashed/postgres/commit/c1411460) Prepare for release 15.1-v1 (#1141) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v9](https://github.com/stashed/redis/releases/tag/5.0.13-v9) + +- [307f9a7](https://github.com/stashed/redis/commit/307f9a7) Prepare for release 5.0.13-v9 (#140) + + +### [6.2.5-v9](https://github.com/stashed/redis/releases/tag/6.2.5-v9) + +- [fea59b5](https://github.com/stashed/redis/commit/fea59b5) Prepare for release 6.2.5-v9 (#141) + + +### [7.0.5-v2](https://github.com/stashed/redis/releases/tag/7.0.5-v2) + +- [92ab44b](https://github.com/stashed/redis/commit/92ab44b) Prepare for release 7.0.5-v2 (#142) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.25.0](https://github.com/stashed/stash/releases/tag/v0.25.0) + +- [06faa1fa](https://github.com/stashed/stash/commit/06faa1fae) Prepare for release v0.25.0 (#1499) +- [b7ed85bf](https://github.com/stashed/stash/commit/b7ed85bfe) Fix Upserting temporary volume (#1498) +- [371fefee](https://github.com/stashed/stash/commit/371fefeee) Fix NPE using license-proxyserver (#1497) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.7.0](https://github.com/stashed/ui-server/releases/tag/v0.7.0) + +- [40819d4](https://github.com/stashed/ui-server/commit/40819d4) Prepare for release v0.7.0 (#20) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v1](https://github.com/stashed/vault/releases/tag/1.10.3-v1) + +- [39030875](https://github.com/stashed/vault/commit/39030875) Prepare for release 1.10.3-v1 (#3) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.02.28.md b/content/docs/v2024.8.27/CHANGELOG-v2023.02.28.md new file mode 100644 index 0000000000..3f56e44b06 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.02.28.md @@ -0,0 +1,391 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.02.28 + name: Changelog-v2023.02.28 + parent: welcome + weight: 20230228 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.02.28/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.02.28/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.02.28 (2023-03-01) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.26.0](https://github.com/stashed/apimachinery/releases/tag/v0.26.0) + +- [38cb356b](https://github.com/stashed/apimachinery/commit/38cb356b) Update deps + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.26.0](https://github.com/stashed/cli/releases/tag/v0.26.0) + +- [39be7edf](https://github.com/stashed/cli/commit/39be7edf) Prepare for release v0.26.0 (#175) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v22](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v22) + +- [9b77bc33](https://github.com/stashed/elasticsearch/commit/9b77bc33) Prepare for release 5.6.4-v22 (#1310) + + +### [6.2.4-v22](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v22) + +- [ac06258d](https://github.com/stashed/elasticsearch/commit/ac06258d) Prepare for release 6.2.4-v22 (#1311) + + +### [6.3.0-v22](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v22) + +- [bcd376ec](https://github.com/stashed/elasticsearch/commit/bcd376ec) Prepare for release 6.3.0-v22 (#1312) + + +### [6.4.0-v22](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v22) + +- [b2799053](https://github.com/stashed/elasticsearch/commit/b2799053) Prepare for release 6.4.0-v22 (#1313) + + +### [6.5.3-v22](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v22) + +- [9a25cb57](https://github.com/stashed/elasticsearch/commit/9a25cb57) Prepare for release 6.5.3-v22 (#1314) + + +### [6.8.0-v22](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v22) + +- [b5d9aeca](https://github.com/stashed/elasticsearch/commit/b5d9aeca) Prepare for release 6.8.0-v22 (#1315) + + +### [7.2.0-v22](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v22) + +- [01144db2](https://github.com/stashed/elasticsearch/commit/01144db2) Prepare for release 7.2.0-v22 (#1317) + + +### [7.3.2-v22](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v22) + +- [011b8b4d](https://github.com/stashed/elasticsearch/commit/011b8b4d) Prepare for release 7.3.2-v22 (#1318) + + +### [7.14.0-v8](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v8) + +- [0fe02f51](https://github.com/stashed/elasticsearch/commit/0fe02f51) Prepare for release 7.14.0-v8 (#1316) + + +### [8.2.0-v5](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v5) + +- [5e2c1f2b](https://github.com/stashed/elasticsearch/commit/5e2c1f2b) Prepare for release 8.2.0-v5 (#1319) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.26.0](https://github.com/stashed/enterprise/releases/tag/v0.26.0) + +- [df406b77](https://github.com/stashed/enterprise/commit/df406b770) Prepare for release v0.26.0 (#219) +- [86f5d92c](https://github.com/stashed/enterprise/commit/86f5d92cb) Fix BackupBlueprint resolver (#218) +- [4e539c88](https://github.com/stashed/enterprise/commit/4e539c881) Update Backup Target Conditions for VolumeSnapshotter (#217) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v9](https://github.com/stashed/etcd/releases/tag/3.5.0-v9) + +- [1d33849](https://github.com/stashed/etcd/commit/1d33849) Prepare for release 3.5.0-v9 (#67) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.02.28](https://github.com/stashed/installer/releases/tag/v2023.02.28) + +- [20e21083](https://github.com/stashed/installer/commit/20e21083) Prepare for release v2023.02.28 (#294) +- [ebf193a8](https://github.com/stashed/installer/commit/ebf193a8) Run GH actions on ubuntu-20.04 (#291) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v5](https://github.com/stashed/kubedump/releases/tag/0.1.0-v5) + +- [472c892](https://github.com/stashed/kubedump/commit/472c892) Prepare for release 0.1.0-v5 (#27) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v15](https://github.com/stashed/mariadb/releases/tag/10.5.8-v15) + +- [4591bd5](https://github.com/stashed/mariadb/commit/4591bd5) Prepare for release 10.5.8-v15 (#210) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v22](https://github.com/stashed/mongodb/releases/tag/3.4.17-v22) + +- [830dcd31](https://github.com/stashed/mongodb/commit/830dcd31) Prepare for release 3.4.17-v22 (#1718) + + +### [3.4.22-v22](https://github.com/stashed/mongodb/releases/tag/3.4.22-v22) + +- [1bd76847](https://github.com/stashed/mongodb/commit/1bd76847) Prepare for release 3.4.22-v22 (#1719) + + +### [3.6.8-v22](https://github.com/stashed/mongodb/releases/tag/3.6.8-v22) + +- [e52ccd58](https://github.com/stashed/mongodb/commit/e52ccd58) Prepare for release 3.6.8-v22 (#1721) + + +### [3.6.13-v22](https://github.com/stashed/mongodb/releases/tag/3.6.13-v22) + +- [2d8fa2aa](https://github.com/stashed/mongodb/commit/2d8fa2aa) Prepare for release 3.6.13-v22 (#1720) + + +### [4.0.3-v22](https://github.com/stashed/mongodb/releases/tag/4.0.3-v22) + +- [ef458a74](https://github.com/stashed/mongodb/commit/ef458a74) Prepare for release 4.0.3-v22 (#1723) + + +### [4.0.5-v22](https://github.com/stashed/mongodb/releases/tag/4.0.5-v22) + +- [497da3b7](https://github.com/stashed/mongodb/commit/497da3b7) Prepare for release 4.0.5-v22 (#1724) + + +### [4.0.11-v22](https://github.com/stashed/mongodb/releases/tag/4.0.11-v22) + +- [aa9c6f32](https://github.com/stashed/mongodb/commit/aa9c6f32) Prepare for release 4.0.11-v22 (#1722) + + +### [4.1.4-v22](https://github.com/stashed/mongodb/releases/tag/4.1.4-v22) + +- [a2fff17c](https://github.com/stashed/mongodb/commit/a2fff17c) Prepare for release 4.1.4-v22 (#1726) + + +### [4.1.7-v22](https://github.com/stashed/mongodb/releases/tag/4.1.7-v22) + +- [16dd4a13](https://github.com/stashed/mongodb/commit/16dd4a13) Prepare for release 4.1.7-v22 (#1727) + + +### [4.1.13-v22](https://github.com/stashed/mongodb/releases/tag/4.1.13-v22) + +- [118255a9](https://github.com/stashed/mongodb/commit/118255a9) Prepare for release 4.1.13-v22 (#1725) + + +### [4.2.3-v22](https://github.com/stashed/mongodb/releases/tag/4.2.3-v22) + +- [1a6305af](https://github.com/stashed/mongodb/commit/1a6305af) Prepare for release 4.2.3-v22 (#1728) + + +### [4.4.6-v13](https://github.com/stashed/mongodb/releases/tag/4.4.6-v13) + +- [a6d88593](https://github.com/stashed/mongodb/commit/a6d88593) Prepare for release 4.4.6-v13 (#1729) + + +### [5.0.3-v10](https://github.com/stashed/mongodb/releases/tag/5.0.3-v10) + +- [d896df47](https://github.com/stashed/mongodb/commit/d896df47) Prepare for release 5.0.3-v10 (#1731) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v22](https://github.com/stashed/mysql/releases/tag/5.7.25-v22) + +- [9da4bdcb](https://github.com/stashed/mysql/commit/9da4bdcb) Prepare for release 5.7.25-v22 (#676) + + +### [8.0.3-v22](https://github.com/stashed/mysql/releases/tag/8.0.3-v22) + +- [5becd133](https://github.com/stashed/mysql/commit/5becd133) Prepare for release 8.0.3-v22 (#679) + + +### [8.0.14-v22](https://github.com/stashed/mysql/releases/tag/8.0.14-v22) + +- [55634236](https://github.com/stashed/mysql/commit/55634236) Prepare for release 8.0.14-v22 (#677) + + +### [8.0.21-v16](https://github.com/stashed/mysql/releases/tag/8.0.21-v16) + +- [853ef87c](https://github.com/stashed/mysql/commit/853ef87c) Prepare for release 8.0.21-v16 (#678) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v10](https://github.com/stashed/nats/releases/tag/2.6.1-v10) + +- [e0ba713](https://github.com/stashed/nats/commit/e0ba713) Prepare for release 2.6.1-v10 (#84) + + +### [2.8.2-v5](https://github.com/stashed/nats/releases/tag/2.8.2-v5) + +- [668989d](https://github.com/stashed/nats/commit/668989d) Prepare for release 2.8.2-v5 (#85) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v17](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v17) + +- [f6d1b63b](https://github.com/stashed/percona-xtradb/commit/f6d1b63b) Prepare for release 5.7-v17 (#280) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v21](https://github.com/stashed/postgres/releases/tag/9.6.19-v21) + +- [5a34673c](https://github.com/stashed/postgres/commit/5a34673c) Prepare for release 9.6.19-v21 (#1150) + + +### [10.14-v21](https://github.com/stashed/postgres/releases/tag/10.14-v21) + +- [9fd0b5a3](https://github.com/stashed/postgres/commit/9fd0b5a3) Prepare for release 10.14-v21 (#1144) + + +### [11.9-v21](https://github.com/stashed/postgres/releases/tag/11.9-v21) + +- [1d8c983e](https://github.com/stashed/postgres/commit/1d8c983e) Prepare for release 11.9-v21 (#1145) + + +### [12.4-v21](https://github.com/stashed/postgres/releases/tag/12.4-v21) + +- [3c2d69cd](https://github.com/stashed/postgres/commit/3c2d69cd) Prepare for release 12.4-v21 (#1146) + + +### [13.1-v18](https://github.com/stashed/postgres/releases/tag/13.1-v18) + +- [18e00555](https://github.com/stashed/postgres/commit/18e00555) Prepare for release 13.1-v18 (#1147) + + +### [14.0-v10](https://github.com/stashed/postgres/releases/tag/14.0-v10) + +- [9c7d6efa](https://github.com/stashed/postgres/commit/9c7d6efa) Prepare for release 14.0-v10 (#1148) + + +### [15.1-v2](https://github.com/stashed/postgres/releases/tag/15.1-v2) + +- [9ec57c96](https://github.com/stashed/postgres/commit/9ec57c96) Prepare for release 15.1-v2 (#1149) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v10](https://github.com/stashed/redis/releases/tag/5.0.13-v10) + +- [602099c](https://github.com/stashed/redis/commit/602099c) Prepare for release 5.0.13-v10 (#144) + + +### [6.2.5-v10](https://github.com/stashed/redis/releases/tag/6.2.5-v10) + +- [8fb361c](https://github.com/stashed/redis/commit/8fb361c) Prepare for release 6.2.5-v10 (#145) + + +### [7.0.5-v3](https://github.com/stashed/redis/releases/tag/7.0.5-v3) + +- [2c2e6f1](https://github.com/stashed/redis/commit/2c2e6f1) Prepare for release 7.0.5-v3 (#146) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.26.0](https://github.com/stashed/stash/releases/tag/v0.26.0) + +- [0ee682b5](https://github.com/stashed/stash/commit/0ee682b59) Prepare for release v0.26.0 (#1501) +- [23bc702a](https://github.com/stashed/stash/commit/23bc702ae) Fix status updating of volumesnapshotter command. (#1500) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.8.0](https://github.com/stashed/ui-server/releases/tag/v0.8.0) + +- [d3b13ce](https://github.com/stashed/ui-server/commit/d3b13ce) Prepare for release v0.8.0 (#21) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v2](https://github.com/stashed/vault/releases/tag/1.10.3-v2) + +- [e47e82e9](https://github.com/stashed/vault/commit/e47e82e9) Prepare for release 1.10.3-v2 (#5) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.03.13.md b/content/docs/v2024.8.27/CHANGELOG-v2023.03.13.md new file mode 100644 index 0000000000..d564b136d3 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.03.13.md @@ -0,0 +1,441 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.03.13 + name: Changelog-v2023.03.13 + parent: welcome + weight: 20230313 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.03.13/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.03.13/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.03.13 (2023-03-13) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.27.0](https://github.com/stashed/apimachinery/releases/tag/v0.27.0) + +- [4fef7bc2](https://github.com/stashed/apimachinery/commit/4fef7bc2) Allow ci and update-crds workflows cocurrently +- [83908c99](https://github.com/stashed/apimachinery/commit/83908c99) Fix unlock error message in prune command +- [f47c89ef](https://github.com/stashed/apimachinery/commit/f47c89ef) Unlock if prune fails for locked repo (#198) +- [1f431032](https://github.com/stashed/apimachinery/commit/1f431032) Update workflows (Go 1.20, k8s 1.26) (#197) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.27.0](https://github.com/stashed/cli/releases/tag/v0.27.0) + +- [db608b5f](https://github.com/stashed/cli/commit/db608b5f) Prepare for release v0.27.0 (#178) +- [ee66407a](https://github.com/stashed/cli/commit/ee66407a) Fix unlock command for local repository (#177) +- [ba3e3b07](https://github.com/stashed/cli/commit/ba3e3b07) Update workflows (Go 1.20, k8s 1.26) (#176) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v23](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v23) + +- [25cf7cac](https://github.com/stashed/elasticsearch/commit/25cf7cac) Prepare for release 5.6.4-v23 (#1332) +- [e2549ec7](https://github.com/stashed/elasticsearch/commit/e2549ec7) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1322) + + +### [6.2.4-v23](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v23) + +- [965fdba5](https://github.com/stashed/elasticsearch/commit/965fdba5) Prepare for release 6.2.4-v23 (#1333) +- [027714c6](https://github.com/stashed/elasticsearch/commit/027714c6) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1323) + + +### [6.3.0-v23](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v23) + +- [ef7ffd30](https://github.com/stashed/elasticsearch/commit/ef7ffd30) Prepare for release 6.3.0-v23 (#1334) +- [e3f63e8e](https://github.com/stashed/elasticsearch/commit/e3f63e8e) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1324) + + +### [6.4.0-v23](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v23) + +- [6580b4a3](https://github.com/stashed/elasticsearch/commit/6580b4a3) Prepare for release 6.4.0-v23 (#1335) +- [2f5d2491](https://github.com/stashed/elasticsearch/commit/2f5d2491) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1325) + + +### [6.5.3-v23](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v23) + +- [408e0c76](https://github.com/stashed/elasticsearch/commit/408e0c76) Prepare for release 6.5.3-v23 (#1336) +- [0d231f63](https://github.com/stashed/elasticsearch/commit/0d231f63) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1326) + + +### [6.8.0-v23](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v23) + +- [2de1fd44](https://github.com/stashed/elasticsearch/commit/2de1fd44) Prepare for release 6.8.0-v23 (#1337) +- [7d004667](https://github.com/stashed/elasticsearch/commit/7d004667) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1327) + + +### [7.2.0-v23](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v23) + +- [97143e82](https://github.com/stashed/elasticsearch/commit/97143e82) Prepare for release 7.2.0-v23 (#1339) +- [3d172262](https://github.com/stashed/elasticsearch/commit/3d172262) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1329) + + +### [7.3.2-v23](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v23) + +- [fdadc2fc](https://github.com/stashed/elasticsearch/commit/fdadc2fc) Prepare for release 7.3.2-v23 (#1340) +- [0a26217c](https://github.com/stashed/elasticsearch/commit/0a26217c) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1330) + + +### [7.14.0-v9](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v9) + +- [f707e6a9](https://github.com/stashed/elasticsearch/commit/f707e6a9) Prepare for release 7.14.0-v9 (#1338) +- [c3017395](https://github.com/stashed/elasticsearch/commit/c3017395) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1328) + + +### [8.2.0-v6](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v6) + +- [a06cd438](https://github.com/stashed/elasticsearch/commit/a06cd438) Prepare for release 8.2.0-v6 (#1341) +- [a31a3fc4](https://github.com/stashed/elasticsearch/commit/a31a3fc4) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1321) (#1331) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.27.0](https://github.com/stashed/enterprise/releases/tag/v0.27.0) + +- [089b0070](https://github.com/stashed/enterprise/commit/089b00703) Prepare for release v0.27.0 (#223) +- [4bfef40b](https://github.com/stashed/enterprise/commit/4bfef40bf) Use valid labels for AutoBackup resources (#221) +- [053392e9](https://github.com/stashed/enterprise/commit/053392e98) Update workflows (Go 1.20, k8s 1.26) (#220) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v10](https://github.com/stashed/etcd/releases/tag/3.5.0-v10) + +- [ba337f8](https://github.com/stashed/etcd/commit/ba337f8) Prepare for release 3.5.0-v10 (#71) +- [9491906](https://github.com/stashed/etcd/commit/9491906) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#69) (#70) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.03.13](https://github.com/stashed/installer/releases/tag/v2023.03.13) + +- [63853c7a](https://github.com/stashed/installer/commit/63853c7a) Prepare for release v2023.03.13 (#296) +- [ab96161a](https://github.com/stashed/installer/commit/ab96161a) Update workflows (Go 1.20, k8s 1.26) (#295) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v6](https://github.com/stashed/kubedump/releases/tag/0.1.0-v6) + +- [71e0a72](https://github.com/stashed/kubedump/commit/71e0a72) Prepare for release 0.1.0-v6 (#31) +- [f3597b9](https://github.com/stashed/kubedump/commit/f3597b9) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#29) (#30) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v16](https://github.com/stashed/mariadb/releases/tag/10.5.8-v16) + +- [cd88cee](https://github.com/stashed/mariadb/commit/cd88cee) Prepare for release 10.5.8-v16 (#214) +- [e6b9f6a](https://github.com/stashed/mariadb/commit/e6b9f6a) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#212) (#213) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v23](https://github.com/stashed/mongodb/releases/tag/3.4.17-v23) + +- [5cd80f95](https://github.com/stashed/mongodb/commit/5cd80f95) Prepare for release 3.4.17-v23 (#1746) +- [5efeda9a](https://github.com/stashed/mongodb/commit/5efeda9a) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1733) + + +### [3.4.22-v23](https://github.com/stashed/mongodb/releases/tag/3.4.22-v23) + +- [e6a93a3b](https://github.com/stashed/mongodb/commit/e6a93a3b) Prepare for release 3.4.22-v23 (#1747) +- [4b0272c7](https://github.com/stashed/mongodb/commit/4b0272c7) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1734) + + +### [3.6.8-v23](https://github.com/stashed/mongodb/releases/tag/3.6.8-v23) + +- [ab9e3843](https://github.com/stashed/mongodb/commit/ab9e3843) Prepare for release 3.6.8-v23 (#1749) +- [892ece69](https://github.com/stashed/mongodb/commit/892ece69) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1736) + + +### [3.6.13-v23](https://github.com/stashed/mongodb/releases/tag/3.6.13-v23) + +- [ba9f6e18](https://github.com/stashed/mongodb/commit/ba9f6e18) Prepare for release 3.6.13-v23 (#1748) +- [2f597645](https://github.com/stashed/mongodb/commit/2f597645) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1735) + + +### [4.0.3-v23](https://github.com/stashed/mongodb/releases/tag/4.0.3-v23) + +- [6cade14c](https://github.com/stashed/mongodb/commit/6cade14c) Prepare for release 4.0.3-v23 (#1751) +- [07f9216c](https://github.com/stashed/mongodb/commit/07f9216c) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1738) + + +### [4.0.5-v23](https://github.com/stashed/mongodb/releases/tag/4.0.5-v23) + +- [aa33c9f0](https://github.com/stashed/mongodb/commit/aa33c9f0) Prepare for release 4.0.5-v23 (#1752) +- [30373c9c](https://github.com/stashed/mongodb/commit/30373c9c) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1739) + + +### [4.0.11-v23](https://github.com/stashed/mongodb/releases/tag/4.0.11-v23) + +- [f4ed5644](https://github.com/stashed/mongodb/commit/f4ed5644) Prepare for release 4.0.11-v23 (#1750) +- [7df3c35f](https://github.com/stashed/mongodb/commit/7df3c35f) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1737) + + +### [4.1.4-v23](https://github.com/stashed/mongodb/releases/tag/4.1.4-v23) + +- [68561b23](https://github.com/stashed/mongodb/commit/68561b23) Prepare for release 4.1.4-v23 (#1754) +- [2ec01364](https://github.com/stashed/mongodb/commit/2ec01364) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1741) + + +### [4.1.7-v23](https://github.com/stashed/mongodb/releases/tag/4.1.7-v23) + +- [a2faed5c](https://github.com/stashed/mongodb/commit/a2faed5c) Prepare for release 4.1.7-v23 (#1755) +- [2ff4480e](https://github.com/stashed/mongodb/commit/2ff4480e) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1742) + + +### [4.1.13-v23](https://github.com/stashed/mongodb/releases/tag/4.1.13-v23) + +- [5c3afe06](https://github.com/stashed/mongodb/commit/5c3afe06) Prepare for release 4.1.13-v23 (#1753) +- [15b0cb45](https://github.com/stashed/mongodb/commit/15b0cb45) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1740) + + +### [4.2.3-v23](https://github.com/stashed/mongodb/releases/tag/4.2.3-v23) + +- [8fc50278](https://github.com/stashed/mongodb/commit/8fc50278) Prepare for release 4.2.3-v23 (#1756) +- [9751cb56](https://github.com/stashed/mongodb/commit/9751cb56) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1743) + + +### [4.4.6-v14](https://github.com/stashed/mongodb/releases/tag/4.4.6-v14) + +- [5277b7fa](https://github.com/stashed/mongodb/commit/5277b7fa) Prepare for release 4.4.6-v14 (#1757) +- [4942cba5](https://github.com/stashed/mongodb/commit/4942cba5) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1744) + + +### [5.0.3-v11](https://github.com/stashed/mongodb/releases/tag/5.0.3-v11) + +- [e7262879](https://github.com/stashed/mongodb/commit/e7262879) Prepare for release 5.0.3-v11 (#1758) +- [71903562](https://github.com/stashed/mongodb/commit/71903562) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1732) (#1745) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v23](https://github.com/stashed/mysql/releases/tag/5.7.25-v23) + +- [4d73c4c7](https://github.com/stashed/mysql/commit/4d73c4c7) Prepare for release 5.7.25-v23 (#686) +- [2a260942](https://github.com/stashed/mysql/commit/2a260942) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#681) (#682) + + +### [8.0.3-v23](https://github.com/stashed/mysql/releases/tag/8.0.3-v23) + +- [820c4b34](https://github.com/stashed/mysql/commit/820c4b34) Prepare for release 8.0.3-v23 (#689) +- [fd404c15](https://github.com/stashed/mysql/commit/fd404c15) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#681) (#685) + + +### [8.0.14-v23](https://github.com/stashed/mysql/releases/tag/8.0.14-v23) + +- [2a043152](https://github.com/stashed/mysql/commit/2a043152) Prepare for release 8.0.14-v23 (#687) +- [93517b8d](https://github.com/stashed/mysql/commit/93517b8d) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#681) (#683) + + +### [8.0.21-v17](https://github.com/stashed/mysql/releases/tag/8.0.21-v17) + +- [e1d2a3fd](https://github.com/stashed/mysql/commit/e1d2a3fd) Prepare for release 8.0.21-v17 (#688) +- [5587ec19](https://github.com/stashed/mysql/commit/5587ec19) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#681) (#684) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v11](https://github.com/stashed/nats/releases/tag/2.6.1-v11) + +- [29202da](https://github.com/stashed/nats/commit/29202da) Prepare for release 2.6.1-v11 (#90) +- [78b4136](https://github.com/stashed/nats/commit/78b4136) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#87) (#88) + + +### [2.8.2-v6](https://github.com/stashed/nats/releases/tag/2.8.2-v6) + +- [1d3b90e](https://github.com/stashed/nats/commit/1d3b90e) Prepare for release 2.8.2-v6 (#91) +- [92a4648](https://github.com/stashed/nats/commit/92a4648) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#87) (#89) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v18](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v18) + +- [efc95cd8](https://github.com/stashed/percona-xtradb/commit/efc95cd8) Prepare for release 5.7-v18 (#284) +- [bb2fd734](https://github.com/stashed/percona-xtradb/commit/bb2fd734) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#282) (#283) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v22](https://github.com/stashed/postgres/releases/tag/9.6.19-v22) + +- [776eae29](https://github.com/stashed/postgres/commit/776eae29) Prepare for release 9.6.19-v22 (#1166) +- [4b01ad51](https://github.com/stashed/postgres/commit/4b01ad51) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1159) + + +### [10.14-v22](https://github.com/stashed/postgres/releases/tag/10.14-v22) + +- [74283c70](https://github.com/stashed/postgres/commit/74283c70) Prepare for release 10.14-v22 (#1160) +- [7d65c166](https://github.com/stashed/postgres/commit/7d65c166) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1153) + + +### [11.9-v22](https://github.com/stashed/postgres/releases/tag/11.9-v22) + +- [9f1de1c6](https://github.com/stashed/postgres/commit/9f1de1c6) Prepare for release 11.9-v22 (#1161) +- [605163a2](https://github.com/stashed/postgres/commit/605163a2) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1154) + + +### [12.4-v22](https://github.com/stashed/postgres/releases/tag/12.4-v22) + +- [788806a2](https://github.com/stashed/postgres/commit/788806a2) Prepare for release 12.4-v22 (#1162) +- [db464ab0](https://github.com/stashed/postgres/commit/db464ab0) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1155) + + +### [13.1-v19](https://github.com/stashed/postgres/releases/tag/13.1-v19) + +- [7fb61d96](https://github.com/stashed/postgres/commit/7fb61d96) Prepare for release 13.1-v19 (#1163) +- [8c935e00](https://github.com/stashed/postgres/commit/8c935e00) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1156) + + +### [14.0-v11](https://github.com/stashed/postgres/releases/tag/14.0-v11) + +- [93212ea6](https://github.com/stashed/postgres/commit/93212ea6) Prepare for release 14.0-v11 (#1164) +- [1ac9edd5](https://github.com/stashed/postgres/commit/1ac9edd5) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1157) + + +### [15.1-v3](https://github.com/stashed/postgres/releases/tag/15.1-v3) + +- [31f3dd33](https://github.com/stashed/postgres/commit/31f3dd33) Prepare for release 15.1-v3 (#1165) +- [9c6d9590](https://github.com/stashed/postgres/commit/9c6d9590) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#1152) (#1158) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v11](https://github.com/stashed/redis/releases/tag/5.0.13-v11) + +- [73da1c1](https://github.com/stashed/redis/commit/73da1c1) Prepare for release 5.0.13-v11 (#152) +- [9f7e222](https://github.com/stashed/redis/commit/9f7e222) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#148) (#149) + + +### [6.2.5-v11](https://github.com/stashed/redis/releases/tag/6.2.5-v11) + +- [dc8e853](https://github.com/stashed/redis/commit/dc8e853) Prepare for release 6.2.5-v11 (#153) +- [e865167](https://github.com/stashed/redis/commit/e865167) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#148) (#150) + + +### [7.0.5-v4](https://github.com/stashed/redis/releases/tag/7.0.5-v4) + +- [dd4da56](https://github.com/stashed/redis/commit/dd4da56) Prepare for release 7.0.5-v4 (#154) +- [ae71390](https://github.com/stashed/redis/commit/ae71390) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#148) (#151) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.27.0](https://github.com/stashed/stash/releases/tag/v0.27.0) + +- [d3428094](https://github.com/stashed/stash/commit/d3428094a) Prepare for release v0.27.0 (#1508) +- [87bf7e8e](https://github.com/stashed/stash/commit/87bf7e8e5) Update workflows (Go 1.20, k8s 1.26) (#1502) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.9.0](https://github.com/stashed/ui-server/releases/tag/v0.9.0) + +- [0c31efb](https://github.com/stashed/ui-server/commit/0c31efb) Prepare for release v0.9.0 (#23) +- [01975fa](https://github.com/stashed/ui-server/commit/01975fa) Update workflows (Go 1.20, k8s 1.26) (#22) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v3](https://github.com/stashed/vault/releases/tag/1.10.3-v3) + +- [52bbbf05](https://github.com/stashed/vault/commit/52bbbf05) Prepare for release 1.10.3-v3 (#9) +- [4dac4a85](https://github.com/stashed/vault/commit/4dac4a85) [cherry-pick] Update workflows (Go 1.20, k8s 1.26) (#7) (#8) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.03.20.md b/content/docs/v2024.8.27/CHANGELOG-v2023.03.20.md new file mode 100644 index 0000000000..402e15e815 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.03.20.md @@ -0,0 +1,392 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.03.20 + name: Changelog-v2023.03.20 + parent: welcome + weight: 20230320 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.03.20/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.03.20/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.03.20 (2023-03-19) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.28.0](https://github.com/stashed/apimachinery/releases/tag/v0.28.0) + +- [292f37f4](https://github.com/stashed/apimachinery/commit/292f37f4) Update dependencies +- [1c5d99c3](https://github.com/stashed/apimachinery/commit/1c5d99c3) Create directory for local repository for restic init (#199) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.28.0](https://github.com/stashed/cli/releases/tag/v0.28.0) + +- [fc785021](https://github.com/stashed/cli/commit/fc785021) Prepare for release v0.28.0 (#180) +- [9cadafcb](https://github.com/stashed/cli/commit/9cadafcb) Enable unlocking of local repository on NFS volume (#179) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v24](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v24) + +- [6cd18de9](https://github.com/stashed/elasticsearch/commit/6cd18de9) Prepare for release 5.6.4-v24 (#1344) + + +### [6.2.4-v24](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v24) + +- [11f17468](https://github.com/stashed/elasticsearch/commit/11f17468) Prepare for release 6.2.4-v24 (#1345) + + +### [6.3.0-v24](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v24) + +- [72441b73](https://github.com/stashed/elasticsearch/commit/72441b73) Prepare for release 6.3.0-v24 (#1346) + + +### [6.4.0-v24](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v24) + +- [ebb9119a](https://github.com/stashed/elasticsearch/commit/ebb9119a) Prepare for release 6.4.0-v24 (#1347) + + +### [6.5.3-v24](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v24) + +- [2bfe6379](https://github.com/stashed/elasticsearch/commit/2bfe6379) Prepare for release 6.5.3-v24 (#1348) + + +### [6.8.0-v24](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v24) + +- [7f221239](https://github.com/stashed/elasticsearch/commit/7f221239) Prepare for release 6.8.0-v24 (#1349) + + +### [7.2.0-v24](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v24) + +- [cf23989f](https://github.com/stashed/elasticsearch/commit/cf23989f) Prepare for release 7.2.0-v24 (#1351) + + +### [7.3.2-v24](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v24) + +- [eb185e09](https://github.com/stashed/elasticsearch/commit/eb185e09) Prepare for release 7.3.2-v24 (#1352) + + +### [7.14.0-v10](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v10) + +- [2fc98a7b](https://github.com/stashed/elasticsearch/commit/2fc98a7b) Prepare for release 7.14.0-v10 (#1350) + + +### [8.2.0-v7](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v7) + +- [3c4d977e](https://github.com/stashed/elasticsearch/commit/3c4d977e) Prepare for release 8.2.0-v7 (#1353) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.28.0](https://github.com/stashed/enterprise/releases/tag/v0.28.0) + +- [69cc9409](https://github.com/stashed/enterprise/commit/69cc9409f) Prepare for release v0.28.0 (#226) +- [d882beb1](https://github.com/stashed/enterprise/commit/d882beb1a) Add unlock command for CLI (#224) +- [25b4ff16](https://github.com/stashed/enterprise/commit/25b4ff160) Append image pull secrets instead of replace (#225) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v11](https://github.com/stashed/etcd/releases/tag/3.5.0-v11) + +- [67526a5](https://github.com/stashed/etcd/commit/67526a5) Prepare for release 3.5.0-v11 (#73) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.03.20](https://github.com/stashed/installer/releases/tag/v2023.03.20) + +- [1ec11e29](https://github.com/stashed/installer/commit/1ec11e29) Prepare for release v2023.03.20 (#297) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v7](https://github.com/stashed/kubedump/releases/tag/0.1.0-v7) + +- [f6961d5](https://github.com/stashed/kubedump/commit/f6961d5) Prepare for release 0.1.0-v7 (#33) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v17](https://github.com/stashed/mariadb/releases/tag/10.5.8-v17) + +- [18974b1](https://github.com/stashed/mariadb/commit/18974b1) Prepare for release 10.5.8-v17 (#216) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v24](https://github.com/stashed/mongodb/releases/tag/3.4.17-v24) + +- [a35ca221](https://github.com/stashed/mongodb/commit/a35ca221) Prepare for release 3.4.17-v24 (#1760) + + +### [3.4.22-v24](https://github.com/stashed/mongodb/releases/tag/3.4.22-v24) + +- [0acd0614](https://github.com/stashed/mongodb/commit/0acd0614) Prepare for release 3.4.22-v24 (#1761) + + +### [3.6.8-v24](https://github.com/stashed/mongodb/releases/tag/3.6.8-v24) + +- [90e1ee6f](https://github.com/stashed/mongodb/commit/90e1ee6f) Prepare for release 3.6.8-v24 (#1763) + + +### [3.6.13-v24](https://github.com/stashed/mongodb/releases/tag/3.6.13-v24) + +- [3b6758d1](https://github.com/stashed/mongodb/commit/3b6758d1) Prepare for release 3.6.13-v24 (#1762) + + +### [4.0.3-v24](https://github.com/stashed/mongodb/releases/tag/4.0.3-v24) + +- [e102289e](https://github.com/stashed/mongodb/commit/e102289e) Prepare for release 4.0.3-v24 (#1765) + + +### [4.0.5-v24](https://github.com/stashed/mongodb/releases/tag/4.0.5-v24) + +- [65473863](https://github.com/stashed/mongodb/commit/65473863) Prepare for release 4.0.5-v24 (#1766) + + +### [4.0.11-v24](https://github.com/stashed/mongodb/releases/tag/4.0.11-v24) + +- [2d985943](https://github.com/stashed/mongodb/commit/2d985943) Prepare for release 4.0.11-v24 (#1764) + + +### [4.1.4-v24](https://github.com/stashed/mongodb/releases/tag/4.1.4-v24) + +- [539a0db1](https://github.com/stashed/mongodb/commit/539a0db1) Prepare for release 4.1.4-v24 (#1768) + + +### [4.1.7-v24](https://github.com/stashed/mongodb/releases/tag/4.1.7-v24) + +- [3e8c030d](https://github.com/stashed/mongodb/commit/3e8c030d) Prepare for release 4.1.7-v24 (#1769) + + +### [4.1.13-v24](https://github.com/stashed/mongodb/releases/tag/4.1.13-v24) + +- [b501f60f](https://github.com/stashed/mongodb/commit/b501f60f) Prepare for release 4.1.13-v24 (#1767) + + +### [4.2.3-v24](https://github.com/stashed/mongodb/releases/tag/4.2.3-v24) + +- [c526024e](https://github.com/stashed/mongodb/commit/c526024e) Prepare for release 4.2.3-v24 (#1770) + + +### [4.4.6-v15](https://github.com/stashed/mongodb/releases/tag/4.4.6-v15) + +- [61902b46](https://github.com/stashed/mongodb/commit/61902b46) Prepare for release 4.4.6-v15 (#1771) + + +### [5.0.3-v12](https://github.com/stashed/mongodb/releases/tag/5.0.3-v12) + +- [38ad041e](https://github.com/stashed/mongodb/commit/38ad041e) Prepare for release 5.0.3-v12 (#1772) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v24](https://github.com/stashed/mysql/releases/tag/5.7.25-v24) + +- [a8dcdc62](https://github.com/stashed/mysql/commit/a8dcdc62) Prepare for release 5.7.25-v24 (#691) + + +### [8.0.3-v24](https://github.com/stashed/mysql/releases/tag/8.0.3-v24) + +- [15020258](https://github.com/stashed/mysql/commit/15020258) Prepare for release 8.0.3-v24 (#694) + + +### [8.0.14-v24](https://github.com/stashed/mysql/releases/tag/8.0.14-v24) + +- [80fe4fb8](https://github.com/stashed/mysql/commit/80fe4fb8) Prepare for release 8.0.14-v24 (#692) + + +### [8.0.21-v18](https://github.com/stashed/mysql/releases/tag/8.0.21-v18) + +- [5fed08e3](https://github.com/stashed/mysql/commit/5fed08e3) Prepare for release 8.0.21-v18 (#693) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v12](https://github.com/stashed/nats/releases/tag/2.6.1-v12) + +- [0a385ca](https://github.com/stashed/nats/commit/0a385ca) Prepare for release 2.6.1-v12 (#93) + + +### [2.8.2-v7](https://github.com/stashed/nats/releases/tag/2.8.2-v7) + +- [e050da5](https://github.com/stashed/nats/commit/e050da5) Prepare for release 2.8.2-v7 (#94) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v19](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v19) + +- [4c93ae53](https://github.com/stashed/percona-xtradb/commit/4c93ae53) Prepare for release 5.7-v19 (#286) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v23](https://github.com/stashed/postgres/releases/tag/9.6.19-v23) + +- [ca9ce6bd](https://github.com/stashed/postgres/commit/ca9ce6bd) Prepare for release 9.6.19-v23 (#1174) + + +### [10.14-v23](https://github.com/stashed/postgres/releases/tag/10.14-v23) + +- [47b1062f](https://github.com/stashed/postgres/commit/47b1062f) Prepare for release 10.14-v23 (#1168) + + +### [11.9-v23](https://github.com/stashed/postgres/releases/tag/11.9-v23) + +- [398f746e](https://github.com/stashed/postgres/commit/398f746e) Prepare for release 11.9-v23 (#1169) + + +### [12.4-v23](https://github.com/stashed/postgres/releases/tag/12.4-v23) + +- [0f2c4aa1](https://github.com/stashed/postgres/commit/0f2c4aa1) Prepare for release 12.4-v23 (#1170) + + +### [13.1-v20](https://github.com/stashed/postgres/releases/tag/13.1-v20) + +- [646372a2](https://github.com/stashed/postgres/commit/646372a2) Prepare for release 13.1-v20 (#1171) + + +### [14.0-v12](https://github.com/stashed/postgres/releases/tag/14.0-v12) + +- [9a83d73b](https://github.com/stashed/postgres/commit/9a83d73b) Prepare for release 14.0-v12 (#1172) + + +### [15.1-v4](https://github.com/stashed/postgres/releases/tag/15.1-v4) + +- [4be14a52](https://github.com/stashed/postgres/commit/4be14a52) Prepare for release 15.1-v4 (#1173) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v12](https://github.com/stashed/redis/releases/tag/5.0.13-v12) + +- [9b351df](https://github.com/stashed/redis/commit/9b351df) Prepare for release 5.0.13-v12 (#156) + + +### [6.2.5-v12](https://github.com/stashed/redis/releases/tag/6.2.5-v12) + +- [1d7e7cf](https://github.com/stashed/redis/commit/1d7e7cf) Prepare for release 6.2.5-v12 (#157) + + +### [7.0.5-v5](https://github.com/stashed/redis/releases/tag/7.0.5-v5) + +- [46bddd9](https://github.com/stashed/redis/commit/46bddd9) Prepare for release 7.0.5-v5 (#158) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.28.0](https://github.com/stashed/stash/releases/tag/v0.28.0) + +- [7e74e401](https://github.com/stashed/stash/commit/7e74e4014) Prepare for release v0.28.0 (#1510) +- [5fb5bda3](https://github.com/stashed/stash/commit/5fb5bda34) Append image pull secrets instead of replace (#1509) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.10.0](https://github.com/stashed/ui-server/releases/tag/v0.10.0) + +- [6b61475](https://github.com/stashed/ui-server/commit/6b61475) Prepare for release v0.10.0 (#24) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v4](https://github.com/stashed/vault/releases/tag/1.10.3-v4) + +- [d70c128f](https://github.com/stashed/vault/commit/d70c128f) Prepare for release 1.10.3-v4 (#11) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.04.30.md b/content/docs/v2024.8.27/CHANGELOG-v2023.04.30.md new file mode 100644 index 0000000000..a78c9f476a --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.04.30.md @@ -0,0 +1,453 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.04.30 + name: Changelog-v2023.04.30 + parent: welcome + weight: 20230430 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.04.30/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.04.30/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.04.30 (2023-05-01) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.29.0](https://github.com/stashed/apimachinery/releases/tag/v0.29.0) + +- [cf255d28](https://github.com/stashed/apimachinery/commit/cf255d28) Make dump public as DumpOnce (#201) +- [d75b9663](https://github.com/stashed/apimachinery/commit/d75b9663) Use ghcr.io (#200) +- [8a1c90af](https://github.com/stashed/apimachinery/commit/8a1c90af) make gen fmt + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.29.0](https://github.com/stashed/cli/releases/tag/v0.29.0) + +- [58ff504f](https://github.com/stashed/cli/commit/58ff504f) Prepare for release v0.29.0 (#181) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v25](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v25) + +- [0ee516bf](https://github.com/stashed/elasticsearch/commit/0ee516bf) Prepare for release 5.6.4-v25 (#1368) +- [e9f9b93c](https://github.com/stashed/elasticsearch/commit/e9f9b93c) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1358) + + +### [6.2.4-v25](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v25) + +- [9d7318d0](https://github.com/stashed/elasticsearch/commit/9d7318d0) Prepare for release 6.2.4-v25 (#1369) +- [0aef89d3](https://github.com/stashed/elasticsearch/commit/0aef89d3) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1359) + + +### [6.3.0-v25](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v25) + +- [74d20240](https://github.com/stashed/elasticsearch/commit/74d20240) Prepare for release 6.3.0-v25 (#1370) +- [c0f6ec9b](https://github.com/stashed/elasticsearch/commit/c0f6ec9b) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1360) + + +### [6.4.0-v25](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v25) + +- [d54966fa](https://github.com/stashed/elasticsearch/commit/d54966fa) Prepare for release 6.4.0-v25 (#1371) +- [55e8573a](https://github.com/stashed/elasticsearch/commit/55e8573a) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1361) + + +### [6.5.3-v25](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v25) + +- [15d08d71](https://github.com/stashed/elasticsearch/commit/15d08d71) Prepare for release 6.5.3-v25 (#1372) +- [5b4c2eac](https://github.com/stashed/elasticsearch/commit/5b4c2eac) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1362) + + +### [6.8.0-v25](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v25) + +- [1a05c3a8](https://github.com/stashed/elasticsearch/commit/1a05c3a8) Prepare for release 6.8.0-v25 (#1373) +- [84dcd7f3](https://github.com/stashed/elasticsearch/commit/84dcd7f3) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1363) + + +### [7.2.0-v25](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v25) + +- [1c547594](https://github.com/stashed/elasticsearch/commit/1c547594) Prepare for release 7.2.0-v25 (#1375) +- [fbf47b6b](https://github.com/stashed/elasticsearch/commit/fbf47b6b) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1365) + + +### [7.3.2-v25](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v25) + +- [a27dbe82](https://github.com/stashed/elasticsearch/commit/a27dbe82) Prepare for release 7.3.2-v25 (#1376) +- [d4ae0196](https://github.com/stashed/elasticsearch/commit/d4ae0196) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1366) + + +### [7.14.0-v11](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v11) + +- [94794608](https://github.com/stashed/elasticsearch/commit/94794608) Prepare for release 7.14.0-v11 (#1374) +- [7c70adf7](https://github.com/stashed/elasticsearch/commit/7c70adf7) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1364) + + +### [8.2.0-v8](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v8) + +- [6e557492](https://github.com/stashed/elasticsearch/commit/6e557492) Prepare for release 8.2.0-v8 (#1377) +- [4bac3d22](https://github.com/stashed/elasticsearch/commit/4bac3d22) [cherry-pick] Use numeric uid in Dockerfile (#1357) (#1367) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.29.0](https://github.com/stashed/enterprise/releases/tag/v0.29.0) + +- [1a51e875](https://github.com/stashed/enterprise/commit/1a51e875f) Prepare for release v0.29.0 (#229) +- [a67955d0](https://github.com/stashed/enterprise/commit/a67955d0a) Use numeric uid in Dockerfile (#228) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v12](https://github.com/stashed/etcd/releases/tag/3.5.0-v12) + +- [ef26a24](https://github.com/stashed/etcd/commit/ef26a24) Prepare for release 3.5.0-v12 (#77) +- [07c7c30](https://github.com/stashed/etcd/commit/07c7c30) [cherry-pick] Use numeric uid in Dockerfile (#75) (#76) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.04.30](https://github.com/stashed/installer/releases/tag/v2023.04.30) + +- [f69ead12](https://github.com/stashed/installer/commit/f69ead12) Prepare for release v2023.04.30 (#302) +- [729afc21](https://github.com/stashed/installer/commit/729afc21) Test against k8s 1.27.1 (#301) +- [8ecafa65](https://github.com/stashed/installer/commit/8ecafa65) Use ghcr.io (#300) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v8](https://github.com/stashed/kubedump/releases/tag/0.1.0-v8) + +- [b454d58](https://github.com/stashed/kubedump/commit/b454d58) Prepare for release 0.1.0-v8 (#37) +- [70f0d3c](https://github.com/stashed/kubedump/commit/70f0d3c) [cherry-pick] Use numeric uid in Dockerfile (#35) (#36) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v18](https://github.com/stashed/mariadb/releases/tag/10.5.8-v18) + +- [40471eb](https://github.com/stashed/mariadb/commit/40471eb) Prepare for release 10.5.8-v18 (#220) +- [7e8d8d1](https://github.com/stashed/mariadb/commit/7e8d8d1) [cherry-pick] Use numeric uid in Dockerfile (#218) (#219) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v25](https://github.com/stashed/mongodb/releases/tag/3.4.17-v25) + +- [ee474ffb](https://github.com/stashed/mongodb/commit/ee474ffb) Prepare for release 3.4.17-v25 (#1789) +- [6aa4d7be](https://github.com/stashed/mongodb/commit/6aa4d7be) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1775) + + +### [3.4.22-v25](https://github.com/stashed/mongodb/releases/tag/3.4.22-v25) + +- [58db6548](https://github.com/stashed/mongodb/commit/58db6548) Prepare for release 3.4.22-v25 (#1790) +- [cf380322](https://github.com/stashed/mongodb/commit/cf380322) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1776) + + +### [3.6.8-v25](https://github.com/stashed/mongodb/releases/tag/3.6.8-v25) + +- [05f2b457](https://github.com/stashed/mongodb/commit/05f2b457) Prepare for release 3.6.8-v25 (#1792) +- [8a973cc7](https://github.com/stashed/mongodb/commit/8a973cc7) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1778) + + +### [3.6.13-v25](https://github.com/stashed/mongodb/releases/tag/3.6.13-v25) + +- [4c76961f](https://github.com/stashed/mongodb/commit/4c76961f) Prepare for release 3.6.13-v25 (#1791) +- [7b4f5756](https://github.com/stashed/mongodb/commit/7b4f5756) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1777) + + +### [4.0.3-v25](https://github.com/stashed/mongodb/releases/tag/4.0.3-v25) + +- [55f20859](https://github.com/stashed/mongodb/commit/55f20859) Prepare for release 4.0.3-v25 (#1794) +- [9c56288a](https://github.com/stashed/mongodb/commit/9c56288a) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1780) + + +### [4.0.5-v25](https://github.com/stashed/mongodb/releases/tag/4.0.5-v25) + +- [14ed2e50](https://github.com/stashed/mongodb/commit/14ed2e50) Prepare for release 4.0.5-v25 (#1795) +- [7a92e2d8](https://github.com/stashed/mongodb/commit/7a92e2d8) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1781) + + +### [4.0.11-v25](https://github.com/stashed/mongodb/releases/tag/4.0.11-v25) + +- [f27bea0a](https://github.com/stashed/mongodb/commit/f27bea0a) Prepare for release 4.0.11-v25 (#1793) +- [e421ed2f](https://github.com/stashed/mongodb/commit/e421ed2f) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1779) + + +### [4.1.4-v25](https://github.com/stashed/mongodb/releases/tag/4.1.4-v25) + +- [73c9bc38](https://github.com/stashed/mongodb/commit/73c9bc38) Prepare for release 4.1.4-v25 (#1797) +- [aabe17c4](https://github.com/stashed/mongodb/commit/aabe17c4) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1783) + + +### [4.1.7-v25](https://github.com/stashed/mongodb/releases/tag/4.1.7-v25) + +- [d39c4f50](https://github.com/stashed/mongodb/commit/d39c4f50) Prepare for release 4.1.7-v25 (#1798) +- [28c67f0c](https://github.com/stashed/mongodb/commit/28c67f0c) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1784) + + +### [4.1.13-v25](https://github.com/stashed/mongodb/releases/tag/4.1.13-v25) + +- [ba045e54](https://github.com/stashed/mongodb/commit/ba045e54) Prepare for release 4.1.13-v25 (#1796) +- [f81ee4da](https://github.com/stashed/mongodb/commit/f81ee4da) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1782) + + +### [4.2.3-v25](https://github.com/stashed/mongodb/releases/tag/4.2.3-v25) + +- [9bf064bb](https://github.com/stashed/mongodb/commit/9bf064bb) Prepare for release 4.2.3-v25 (#1799) +- [b1a08dba](https://github.com/stashed/mongodb/commit/b1a08dba) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1785) + + +### [4.4.6-v16](https://github.com/stashed/mongodb/releases/tag/4.4.6-v16) + +- [14e1d296](https://github.com/stashed/mongodb/commit/14e1d296) Prepare for release 4.4.6-v16 (#1800) +- [640b1544](https://github.com/stashed/mongodb/commit/640b1544) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1786) + + +### [5.0.3-v13](https://github.com/stashed/mongodb/releases/tag/5.0.3-v13) + +- [3affc0f9](https://github.com/stashed/mongodb/commit/3affc0f9) Prepare for release 5.0.3-v13 (#1801) +- [3c32151a](https://github.com/stashed/mongodb/commit/3c32151a) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1787) + + +### [6.0.5-v1](https://github.com/stashed/mongodb/releases/tag/6.0.5-v1) + +- [9960c95c](https://github.com/stashed/mongodb/commit/9960c95c) Prepare for release 6.0.5-v1 (#1802) +- [983b59c6](https://github.com/stashed/mongodb/commit/983b59c6) [cherry-pick] Use numeric uid in Dockerfile (#1774) (#1788) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v25](https://github.com/stashed/mysql/releases/tag/5.7.25-v25) + +- [5eae9b8b](https://github.com/stashed/mysql/commit/5eae9b8b) Prepare for release 5.7.25-v25 (#701) +- [dbfc2143](https://github.com/stashed/mysql/commit/dbfc2143) Use numeric uid in Dockerfile (#696) (#697) + + +### [8.0.3-v25](https://github.com/stashed/mysql/releases/tag/8.0.3-v25) + +- [c2a30c87](https://github.com/stashed/mysql/commit/c2a30c87) Prepare for release 8.0.3-v25 (#704) +- [bd69d6ad](https://github.com/stashed/mysql/commit/bd69d6ad) Use numeric uid in Dockerfile (#696) (#700) + + +### [8.0.14-v25](https://github.com/stashed/mysql/releases/tag/8.0.14-v25) + +- [a9385be7](https://github.com/stashed/mysql/commit/a9385be7) Prepare for release 8.0.14-v25 (#702) +- [05a04a56](https://github.com/stashed/mysql/commit/05a04a56) Use numeric uid in Dockerfile (#696) (#698) + + +### [8.0.21-v19](https://github.com/stashed/mysql/releases/tag/8.0.21-v19) + +- [7f68cb08](https://github.com/stashed/mysql/commit/7f68cb08) Prepare for release 8.0.21-v19 (#703) +- [6beb1eed](https://github.com/stashed/mysql/commit/6beb1eed) [cherry-pick] Use numeric uid in Dockerfile (#696) (#699) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v13](https://github.com/stashed/nats/releases/tag/2.6.1-v13) + +- [2cfd5b8](https://github.com/stashed/nats/commit/2cfd5b8) Prepare for release 2.6.1-v13 (#100) +- [02f2e3c](https://github.com/stashed/nats/commit/02f2e3c) [cherry-pick] Use numeric uid in Dockerfile (#97) (#98) + + +### [2.8.2-v8](https://github.com/stashed/nats/releases/tag/2.8.2-v8) + +- [bd1c3b9](https://github.com/stashed/nats/commit/bd1c3b9) Prepare for release 2.8.2-v8 (#101) +- [9977ac2](https://github.com/stashed/nats/commit/9977ac2) [cherry-pick] Use numeric uid in Dockerfile (#97) (#99) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v20](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v20) + +- [9e5a1789](https://github.com/stashed/percona-xtradb/commit/9e5a1789) Prepare for release 5.7-v20 (#290) +- [dce46839](https://github.com/stashed/percona-xtradb/commit/dce46839) [cherry-pick] Use numeric uid in Dockerfile (#288) (#289) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v24](https://github.com/stashed/postgres/releases/tag/9.6.19-v24) + +- [5fd149a6](https://github.com/stashed/postgres/commit/5fd149a6) Prepare for release 9.6.19-v24 (#1190) +- [e09a4972](https://github.com/stashed/postgres/commit/e09a4972) Use numeric uid in Dockerfile (#1176) (#1183) + + +### [10.14-v24](https://github.com/stashed/postgres/releases/tag/10.14-v24) + +- [77fb4d62](https://github.com/stashed/postgres/commit/77fb4d62) Prepare for release 10.14-v24 (#1184) +- [e229b03c](https://github.com/stashed/postgres/commit/e229b03c) Use numeric uid in Dockerfile (#1176) (#1177) + + +### [11.9-v24](https://github.com/stashed/postgres/releases/tag/11.9-v24) + +- [f4e574c9](https://github.com/stashed/postgres/commit/f4e574c9) Prepare for release 11.9-v24 (#1185) +- [435c1e58](https://github.com/stashed/postgres/commit/435c1e58) Use numeric uid in Dockerfile (#1176) (#1178) + + +### [12.4-v24](https://github.com/stashed/postgres/releases/tag/12.4-v24) + +- [f2854938](https://github.com/stashed/postgres/commit/f2854938) Prepare for release 12.4-v24 (#1186) +- [15249a55](https://github.com/stashed/postgres/commit/15249a55) [cherry-pick] Use numeric uid in Dockerfile (#1176) (#1179) + + +### [13.1-v21](https://github.com/stashed/postgres/releases/tag/13.1-v21) + +- [677de51c](https://github.com/stashed/postgres/commit/677de51c) Prepare for release 13.1-v21 (#1187) +- [0a2426e2](https://github.com/stashed/postgres/commit/0a2426e2) [cherry-pick] Use numeric uid in Dockerfile (#1176) (#1180) + + +### [14.0-v13](https://github.com/stashed/postgres/releases/tag/14.0-v13) + +- [1a97a10c](https://github.com/stashed/postgres/commit/1a97a10c) Prepare for release 14.0-v13 (#1188) +- [06b6ad43](https://github.com/stashed/postgres/commit/06b6ad43) [cherry-pick] Use numeric uid in Dockerfile (#1176) (#1181) + + +### [15.1-v5](https://github.com/stashed/postgres/releases/tag/15.1-v5) + +- [aa21b8e8](https://github.com/stashed/postgres/commit/aa21b8e8) Prepare for release 15.1-v5 (#1189) +- [4fddfae3](https://github.com/stashed/postgres/commit/4fddfae3) [cherry-pick] Use numeric uid in Dockerfile (#1176) (#1182) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v13](https://github.com/stashed/redis/releases/tag/5.0.13-v13) + +- [f5cfc4b](https://github.com/stashed/redis/commit/f5cfc4b) Prepare for release 5.0.13-v13 (#168) +- [35b6cd5](https://github.com/stashed/redis/commit/35b6cd5) [cherry-pick] Support backup and restore for redis clusters (#164) (#165) +- [5dbc12b](https://github.com/stashed/redis/commit/5dbc12b) Use ghcr.io for appscode/golang-dev +- [b67eb58](https://github.com/stashed/redis/commit/b67eb58) Add Support for Redis when Auth is Disabled in Kubedb (#77) +- [8372b08](https://github.com/stashed/redis/commit/8372b08) [cherry-pick] Use numeric uid in Dockerfile (#160) (#161) + + +### [6.2.5-v13](https://github.com/stashed/redis/releases/tag/6.2.5-v13) + +- [468c1bd](https://github.com/stashed/redis/commit/468c1bd) Prepare for release 6.2.5-v13 (#169) +- [d549e24](https://github.com/stashed/redis/commit/d549e24) [cherry-pick] Support backup and restore for redis clusters (#164) (#166) +- [7803cc9](https://github.com/stashed/redis/commit/7803cc9) Use ghcr.io for appscode/golang-dev +- [eb9af10](https://github.com/stashed/redis/commit/eb9af10) Add Support for Redis when Auth is Disabled in Kubedb (#77) +- [bec48a2](https://github.com/stashed/redis/commit/bec48a2) [cherry-pick] Use numeric uid in Dockerfile (#160) (#162) + + +### [7.0.5-v6](https://github.com/stashed/redis/releases/tag/7.0.5-v6) + +- [a2088a4](https://github.com/stashed/redis/commit/a2088a4) Prepare for release 7.0.5-v6 (#170) +- [b7b327a](https://github.com/stashed/redis/commit/b7b327a) [cherry-pick] Support backup and restore for redis clusters (#164) (#167) +- [be87eed](https://github.com/stashed/redis/commit/be87eed) Use ghcr.io for appscode/golang-dev +- [7c48c51](https://github.com/stashed/redis/commit/7c48c51) Add Support for Redis when Auth is Disabled in Kubedb (#77) +- [7d8d9b4](https://github.com/stashed/redis/commit/7d8d9b4) [cherry-pick] Use numeric uid in Dockerfile (#160) (#163) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.29.0](https://github.com/stashed/stash/releases/tag/v0.29.0) + +- [a80cbf90](https://github.com/stashed/stash/commit/a80cbf905) Prepare for release v0.29.0 (#1514) +- [3625b857](https://github.com/stashed/stash/commit/3625b8579) Use numeric uid in Dockerfile (#1513) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.11.0](https://github.com/stashed/ui-server/releases/tag/v0.11.0) + +- [633cf86](https://github.com/stashed/ui-server/commit/633cf86) Prepare for release v0.11.0 (#26) +- [0a6ce3a](https://github.com/stashed/ui-server/commit/0a6ce3a) Use numeric uid in Dockerfile (#25) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v5](https://github.com/stashed/vault/releases/tag/1.10.3-v5) + +- [6b7fd704](https://github.com/stashed/vault/commit/6b7fd704) Prepare for release 1.10.3-v5 (#15) +- [389cd328](https://github.com/stashed/vault/commit/389cd328) [cherry-pick] Use numeric uid in Dockerfile (#13) (#14) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.05.31.md b/content/docs/v2024.8.27/CHANGELOG-v2023.05.31.md new file mode 100644 index 0000000000..158086c2e0 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.05.31.md @@ -0,0 +1,445 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.05.31 + name: Changelog-v2023.05.31 + parent: welcome + weight: 20230531 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.05.31/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.05.31/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.05.31 (2023-05-30) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.30.0](https://github.com/stashed/apimachinery/releases/tag/v0.30.0) + +- [45c1d9e0](https://github.com/stashed/apimachinery/commit/45c1d9e0) Update deps (#205) +- [1e979c48](https://github.com/stashed/apimachinery/commit/1e979c48) Store error in restic stats for parallel backup and dump (#204) +- [ba0e4342](https://github.com/stashed/apimachinery/commit/ba0e4342) Fix backup initiation check + Add constants for ES restoration (#203) +- [f06d7a0e](https://github.com/stashed/apimachinery/commit/f06d7a0e) Fix build (#202) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.30.0](https://github.com/stashed/cli/releases/tag/v0.30.0) + +- [21f75035](https://github.com/stashed/cli/commit/21f75035) Prepare for release v0.30.0 (#183) +- [2e0ea3ce](https://github.com/stashed/cli/commit/2e0ea3ce) Add repository name as prefix to mount path of NFS volume accessor (#182) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v26](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v26) + +- [f09bc4d8](https://github.com/stashed/elasticsearch/commit/f09bc4d8) Prepare for release 5.6.4-v26 (#1390) +- [80dad168](https://github.com/stashed/elasticsearch/commit/80dad168) [cherry-pick] Dump PVC storage information (#1379) (#1380) + + +### [6.2.4-v26](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v26) + +- [225c35b6](https://github.com/stashed/elasticsearch/commit/225c35b6) Prepare for release 6.2.4-v26 (#1391) +- [162692bf](https://github.com/stashed/elasticsearch/commit/162692bf) [cherry-pick] Dump PVC storage information (#1379) (#1381) + + +### [6.3.0-v26](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v26) + +- [cc95e4e8](https://github.com/stashed/elasticsearch/commit/cc95e4e8) Prepare for release 6.3.0-v26 (#1392) +- [1e1d0f67](https://github.com/stashed/elasticsearch/commit/1e1d0f67) [cherry-pick] Dump PVC storage information (#1379) (#1382) + + +### [6.4.0-v26](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v26) + +- [2a0e72ea](https://github.com/stashed/elasticsearch/commit/2a0e72ea) Prepare for release 6.4.0-v26 (#1393) +- [5ee51cb1](https://github.com/stashed/elasticsearch/commit/5ee51cb1) [cherry-pick] Dump PVC storage information (#1379) (#1383) + + +### [6.5.3-v26](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v26) + +- [ffeafd96](https://github.com/stashed/elasticsearch/commit/ffeafd96) Prepare for release 6.5.3-v26 (#1394) +- [193ef15f](https://github.com/stashed/elasticsearch/commit/193ef15f) [cherry-pick] Dump PVC storage information (#1379) (#1384) + + +### [6.8.0-v26](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v26) + +- [a90506a8](https://github.com/stashed/elasticsearch/commit/a90506a8) Prepare for release 6.8.0-v26 (#1395) +- [54525e6d](https://github.com/stashed/elasticsearch/commit/54525e6d) [cherry-pick] Dump PVC storage information (#1379) (#1385) + + +### [7.2.0-v26](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v26) + +- [0d6226f6](https://github.com/stashed/elasticsearch/commit/0d6226f6) Prepare for release 7.2.0-v26 (#1397) +- [5b25a987](https://github.com/stashed/elasticsearch/commit/5b25a987) [cherry-pick] Dump PVC storage information (#1379) (#1387) + + +### [7.3.2-v26](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v26) + +- [00f4531c](https://github.com/stashed/elasticsearch/commit/00f4531c) Prepare for release 7.3.2-v26 (#1398) +- [0fe78ca7](https://github.com/stashed/elasticsearch/commit/0fe78ca7) [cherry-pick] Dump PVC storage information (#1379) (#1388) + + +### [7.14.0-v12](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v12) + +- [ef0141a2](https://github.com/stashed/elasticsearch/commit/ef0141a2) Prepare for release 7.14.0-v12 (#1396) +- [690cda8e](https://github.com/stashed/elasticsearch/commit/690cda8e) [cherry-pick] Dump PVC storage information (#1379) (#1386) + + +### [8.2.0-v9](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v9) + +- [7a3ae1ac](https://github.com/stashed/elasticsearch/commit/7a3ae1ac) Prepare for release 8.2.0-v9 (#1399) +- [0d2956d2](https://github.com/stashed/elasticsearch/commit/0d2956d2) [cherry-pick] Dump PVC storage information (#1379) (#1389) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.30.0](https://github.com/stashed/enterprise/releases/tag/v0.30.0) + +- [6cd51d79](https://github.com/stashed/enterprise/commit/6cd51d79d) Prepare for release v0.30.0 (#234) +- [8f260c6e](https://github.com/stashed/enterprise/commit/8f260c6ea) Add InterimVolume storage request calculator for Elasticsearch Backup (#230) +- [e5e2d9a2](https://github.com/stashed/enterprise/commit/e5e2d9a2e) Add repository name as prefix to mount path of NFS volume accessor (#232) +- [4ec5bc18](https://github.com/stashed/enterprise/commit/4ec5bc18d) Fix Cronjob name generation + Cleanup skipped BackupSessions (#233) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v13](https://github.com/stashed/etcd/releases/tag/3.5.0-v13) + +- [568299a](https://github.com/stashed/etcd/commit/568299a) Prepare for release 3.5.0-v13 (#79) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.05.31](https://github.com/stashed/installer/releases/tag/v2023.05.31) + +- [09d9471d](https://github.com/stashed/installer/commit/09d9471d) Prepare for release v2023.05.31 (#304) +- [9c733919](https://github.com/stashed/installer/commit/9c733919) Add Cluster role permissions for elasticsearch (#303) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v9](https://github.com/stashed/kubedump/releases/tag/0.1.0-v9) + +- [ef8f697](https://github.com/stashed/kubedump/commit/ef8f697) Prepare for release 0.1.0-v9 (#39) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v19](https://github.com/stashed/mariadb/releases/tag/10.5.8-v19) + +- [2fcc724](https://github.com/stashed/mariadb/commit/2fcc724) Prepare for release 10.5.8-v19 (#222) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v26](https://github.com/stashed/mongodb/releases/tag/3.4.17-v26) + +- [77efc24c](https://github.com/stashed/mongodb/commit/77efc24c) Prepare for release 3.4.17-v26 (#1835) +- [335f1787](https://github.com/stashed/mongodb/commit/335f1787) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1821) +- [e0ea3df6](https://github.com/stashed/mongodb/commit/e0ea3df6) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1807) + + +### [3.4.22-v26](https://github.com/stashed/mongodb/releases/tag/3.4.22-v26) + +- [0ee2f542](https://github.com/stashed/mongodb/commit/0ee2f542) Prepare for release 3.4.22-v26 (#1836) +- [5a1b61b7](https://github.com/stashed/mongodb/commit/5a1b61b7) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1822) +- [47b66a8b](https://github.com/stashed/mongodb/commit/47b66a8b) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1808) + + +### [3.6.8-v26](https://github.com/stashed/mongodb/releases/tag/3.6.8-v26) + +- [93b25a8a](https://github.com/stashed/mongodb/commit/93b25a8a) Prepare for release 3.6.8-v26 (#1838) +- [f4cc733b](https://github.com/stashed/mongodb/commit/f4cc733b) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1824) +- [7ac0f9e6](https://github.com/stashed/mongodb/commit/7ac0f9e6) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1810) + + +### [3.6.13-v26](https://github.com/stashed/mongodb/releases/tag/3.6.13-v26) + +- [865035f5](https://github.com/stashed/mongodb/commit/865035f5) Prepare for release 3.6.13-v26 (#1837) +- [cfd53930](https://github.com/stashed/mongodb/commit/cfd53930) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1823) +- [4fba330b](https://github.com/stashed/mongodb/commit/4fba330b) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1809) + + +### [4.0.3-v26](https://github.com/stashed/mongodb/releases/tag/4.0.3-v26) + +- [0b50a887](https://github.com/stashed/mongodb/commit/0b50a887) Prepare for release 4.0.3-v26 (#1840) +- [ce72f08f](https://github.com/stashed/mongodb/commit/ce72f08f) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1826) +- [33e82e40](https://github.com/stashed/mongodb/commit/33e82e40) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1812) + + +### [4.0.5-v26](https://github.com/stashed/mongodb/releases/tag/4.0.5-v26) + +- [72beb293](https://github.com/stashed/mongodb/commit/72beb293) Prepare for release 4.0.5-v26 (#1841) +- [a5d36c8b](https://github.com/stashed/mongodb/commit/a5d36c8b) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1827) +- [71a355d8](https://github.com/stashed/mongodb/commit/71a355d8) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1813) + + +### [4.0.11-v26](https://github.com/stashed/mongodb/releases/tag/4.0.11-v26) + +- [0e2d6ab8](https://github.com/stashed/mongodb/commit/0e2d6ab8) Prepare for release 4.0.11-v26 (#1839) +- [865f8e31](https://github.com/stashed/mongodb/commit/865f8e31) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1825) +- [d2b19dc9](https://github.com/stashed/mongodb/commit/d2b19dc9) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1811) + + +### [4.1.4-v26](https://github.com/stashed/mongodb/releases/tag/4.1.4-v26) + +- [c9214b93](https://github.com/stashed/mongodb/commit/c9214b93) Prepare for release 4.1.4-v26 (#1843) +- [9122435f](https://github.com/stashed/mongodb/commit/9122435f) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1829) +- [8a9b3dc1](https://github.com/stashed/mongodb/commit/8a9b3dc1) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1815) +- [6d1afa77](https://github.com/stashed/mongodb/commit/6d1afa77) Prepare for release 4.1.4-v25 (#1804) + + +### [4.1.7-v26](https://github.com/stashed/mongodb/releases/tag/4.1.7-v26) + +- [d123975b](https://github.com/stashed/mongodb/commit/d123975b) Prepare for release 4.1.7-v26 (#1844) +- [e5ac3e0d](https://github.com/stashed/mongodb/commit/e5ac3e0d) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1830) +- [bc5c567f](https://github.com/stashed/mongodb/commit/bc5c567f) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1816) + + +### [4.1.13-v26](https://github.com/stashed/mongodb/releases/tag/4.1.13-v26) + +- [26420e41](https://github.com/stashed/mongodb/commit/26420e41) Prepare for release 4.1.13-v26 (#1842) +- [230e572d](https://github.com/stashed/mongodb/commit/230e572d) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1828) +- [b9ca59ca](https://github.com/stashed/mongodb/commit/b9ca59ca) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1814) + + +### [4.2.3-v26](https://github.com/stashed/mongodb/releases/tag/4.2.3-v26) + +- [df7ae46f](https://github.com/stashed/mongodb/commit/df7ae46f) Prepare for release 4.2.3-v26 (#1845) +- [fe6d98d3](https://github.com/stashed/mongodb/commit/fe6d98d3) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1831) +- [eb2bf583](https://github.com/stashed/mongodb/commit/eb2bf583) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1817) + + +### [4.4.6-v17](https://github.com/stashed/mongodb/releases/tag/4.4.6-v17) + +- [3c0aa2fe](https://github.com/stashed/mongodb/commit/3c0aa2fe) Prepare for release 4.4.6-v17 (#1846) +- [c58fa36e](https://github.com/stashed/mongodb/commit/c58fa36e) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1832) +- [a2c61f59](https://github.com/stashed/mongodb/commit/a2c61f59) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1818) + + +### [5.0.3-v14](https://github.com/stashed/mongodb/releases/tag/5.0.3-v14) + +- [d4c4a484](https://github.com/stashed/mongodb/commit/d4c4a484) Prepare for release 5.0.3-v14 (#1847) +- [525adda1](https://github.com/stashed/mongodb/commit/525adda1) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1833) +- [ec116a61](https://github.com/stashed/mongodb/commit/ec116a61) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1819) +- [6e6859ad](https://github.com/stashed/mongodb/commit/6e6859ad) Fix backup for mongodb 5.0.x + + +### [6.0.5-v2](https://github.com/stashed/mongodb/releases/tag/6.0.5-v2) + +- [8286bbb8](https://github.com/stashed/mongodb/commit/8286bbb8) Prepare for release 6.0.5-v2 (#1848) +- [fc9befad](https://github.com/stashed/mongodb/commit/fc9befad) [cherry-pick] Fix component status updating for shard backup and restore (#1806) (#1834) +- [82e162a7](https://github.com/stashed/mongodb/commit/82e162a7) [cherry-pick] Fix Backup and Restore for TLS enabled mongo (#1805) (#1820) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v26](https://github.com/stashed/mysql/releases/tag/5.7.25-v26) + +- [f4e24f08](https://github.com/stashed/mysql/commit/f4e24f08) Prepare for release 5.7.25-v26 (#706) + + +### [8.0.3-v26](https://github.com/stashed/mysql/releases/tag/8.0.3-v26) + +- [c57db948](https://github.com/stashed/mysql/commit/c57db948) Prepare for release 8.0.3-v26 (#709) + + +### [8.0.14-v26](https://github.com/stashed/mysql/releases/tag/8.0.14-v26) + +- [713feadb](https://github.com/stashed/mysql/commit/713feadb) Prepare for release 8.0.14-v26 (#707) + + +### [8.0.21-v20](https://github.com/stashed/mysql/releases/tag/8.0.21-v20) + +- [23c7c8b8](https://github.com/stashed/mysql/commit/23c7c8b8) Prepare for release 8.0.21-v20 (#708) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v14](https://github.com/stashed/nats/releases/tag/2.6.1-v14) + +- [1c05a39](https://github.com/stashed/nats/commit/1c05a39) Prepare for release 2.6.1-v14 (#103) + + +### [2.8.2-v9](https://github.com/stashed/nats/releases/tag/2.8.2-v9) + +- [167a172](https://github.com/stashed/nats/commit/167a172) Prepare for release 2.8.2-v9 (#104) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v21](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v21) + +- [c3b32c76](https://github.com/stashed/percona-xtradb/commit/c3b32c76) Prepare for release 5.7-v21 (#292) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v25](https://github.com/stashed/postgres/releases/tag/9.6.19-v25) + +- [95fbec26](https://github.com/stashed/postgres/commit/95fbec26) Prepare for release 9.6.19-v25 (#1198) + + +### [10.14-v25](https://github.com/stashed/postgres/releases/tag/10.14-v25) + +- [0c104a8b](https://github.com/stashed/postgres/commit/0c104a8b) Prepare for release 10.14-v25 (#1192) + + +### [11.9-v25](https://github.com/stashed/postgres/releases/tag/11.9-v25) + +- [dc1ea0d4](https://github.com/stashed/postgres/commit/dc1ea0d4) Prepare for release 11.9-v25 (#1193) + + +### [12.4-v25](https://github.com/stashed/postgres/releases/tag/12.4-v25) + +- [b45471ce](https://github.com/stashed/postgres/commit/b45471ce) Prepare for release 12.4-v25 (#1194) + + +### [13.1-v22](https://github.com/stashed/postgres/releases/tag/13.1-v22) + +- [b89e2d73](https://github.com/stashed/postgres/commit/b89e2d73) Prepare for release 13.1-v22 (#1195) + + +### [14.0-v14](https://github.com/stashed/postgres/releases/tag/14.0-v14) + +- [57782aec](https://github.com/stashed/postgres/commit/57782aec) Prepare for release 14.0-v14 (#1196) + + +### [15.1-v6](https://github.com/stashed/postgres/releases/tag/15.1-v6) + +- [4f3ecc41](https://github.com/stashed/postgres/commit/4f3ecc41) Prepare for release 15.1-v6 (#1197) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v14](https://github.com/stashed/redis/releases/tag/5.0.13-v14) + +- [0a38067](https://github.com/stashed/redis/commit/0a38067) Prepare for release 5.0.13-v14 (#176) +- [f40f32c](https://github.com/stashed/redis/commit/f40f32c) [cherry-pick] Add Insecure TLS verify (#172) (#173) + + +### [6.2.5-v14](https://github.com/stashed/redis/releases/tag/6.2.5-v14) + +- [704e687](https://github.com/stashed/redis/commit/704e687) Prepare for release 6.2.5-v14 (#177) +- [f708927](https://github.com/stashed/redis/commit/f708927) [cherry-pick] Add Insecure TLS verify (#172) (#174) + + +### [7.0.5-v7](https://github.com/stashed/redis/releases/tag/7.0.5-v7) + +- [20c3604](https://github.com/stashed/redis/commit/20c3604) Prepare for release 7.0.5-v7 (#178) +- [b4f6d5f](https://github.com/stashed/redis/commit/b4f6d5f) [cherry-pick] Add Insecure TLS verify (#172) (#175) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.30.0](https://github.com/stashed/stash/releases/tag/v0.30.0) + +- [e465af2f](https://github.com/stashed/stash/commit/e465af2fc) Prepare for release v0.30.0 (#1527) +- [3aa466cb](https://github.com/stashed/stash/commit/3aa466cb7) Update deps +- [929d1f53](https://github.com/stashed/stash/commit/929d1f535) Fix Cronjob name generation + Cleanup skipped BackupSession (#1525) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.12.0](https://github.com/stashed/ui-server/releases/tag/v0.12.0) + +- [785f737](https://github.com/stashed/ui-server/commit/785f737) Prepare for release v0.12.0 (#27) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v6](https://github.com/stashed/vault/releases/tag/1.10.3-v6) + +- [336f14a2](https://github.com/stashed/vault/commit/336f14a2) Prepare for release 1.10.3-v6 (#17) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.08.18.md b/content/docs/v2024.8.27/CHANGELOG-v2023.08.18.md new file mode 100644 index 0000000000..299a7eede5 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.08.18.md @@ -0,0 +1,503 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.08.18 + name: Changelog-v2023.08.18 + parent: welcome + weight: 20230818 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.08.18/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.08.18/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.08.18 (2023-08-15) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.31.0](https://github.com/stashed/apimachinery/releases/tag/v0.31.0) + +- [fcb8a910](https://github.com/stashed/apimachinery/commit/fcb8a910) Update deps +- [2893b111](https://github.com/stashed/apimachinery/commit/2893b111) Update deps +- [56274c74](https://github.com/stashed/apimachinery/commit/56274c74) Use updated kmapi Conditions (#208) +- [194d615e](https://github.com/stashed/apimachinery/commit/194d615e) Update license verifier (#206) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.31.0](https://github.com/stashed/cli/releases/tag/v0.31.0) + +- [bb941061](https://github.com/stashed/cli/commit/bb941061) Prepare for release v0.31.0 (#186) +- [30b10340](https://github.com/stashed/cli/commit/30b10340) Update deps (#185) +- [9a24aeb3](https://github.com/stashed/cli/commit/9a24aeb3) Update license verifier (#184) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v27](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v27) + +- [1f5e8c0b](https://github.com/stashed/elasticsearch/commit/1f5e8c0b) Prepare for release 5.6.4-v27 (#1423) +- [a7603e0e](https://github.com/stashed/elasticsearch/commit/a7603e0e) [cherry-pick] Update deps (#1412) (#1413) +- [0e7db083](https://github.com/stashed/elasticsearch/commit/0e7db083) [cherry-pick] Update license verifier (#1401) (#1402) + + +### [6.2.4-v27](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v27) + +- [6c58e223](https://github.com/stashed/elasticsearch/commit/6c58e223) Prepare for release 6.2.4-v27 (#1424) +- [53bb559f](https://github.com/stashed/elasticsearch/commit/53bb559f) [cherry-pick] Update deps (#1412) (#1414) +- [ab875802](https://github.com/stashed/elasticsearch/commit/ab875802) [cherry-pick] Update license verifier (#1401) (#1403) + + +### [6.3.0-v27](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v27) + +- [34b75935](https://github.com/stashed/elasticsearch/commit/34b75935) Prepare for release 6.3.0-v27 (#1425) +- [c949ffae](https://github.com/stashed/elasticsearch/commit/c949ffae) [cherry-pick] Update deps (#1412) (#1415) +- [c834647a](https://github.com/stashed/elasticsearch/commit/c834647a) [cherry-pick] Update license verifier (#1401) (#1404) + + +### [6.4.0-v27](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v27) + +- [fa3238de](https://github.com/stashed/elasticsearch/commit/fa3238de) Prepare for release 6.4.0-v27 (#1426) +- [4e309c43](https://github.com/stashed/elasticsearch/commit/4e309c43) [cherry-pick] Update deps (#1412) (#1416) +- [535cd3a7](https://github.com/stashed/elasticsearch/commit/535cd3a7) [cherry-pick] Update license verifier (#1401) (#1405) + + +### [6.5.3-v27](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v27) + +- [3083ad90](https://github.com/stashed/elasticsearch/commit/3083ad90) Prepare for release 6.5.3-v27 (#1427) +- [bd989773](https://github.com/stashed/elasticsearch/commit/bd989773) [cherry-pick] Update deps (#1412) (#1417) +- [89721491](https://github.com/stashed/elasticsearch/commit/89721491) [cherry-pick] Update license verifier (#1401) (#1406) + + +### [6.8.0-v27](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v27) + +- [46152912](https://github.com/stashed/elasticsearch/commit/46152912) Prepare for release 6.8.0-v27 (#1428) +- [75418b1b](https://github.com/stashed/elasticsearch/commit/75418b1b) [cherry-pick] Update deps (#1412) (#1418) +- [a52d876c](https://github.com/stashed/elasticsearch/commit/a52d876c) [cherry-pick] Update license verifier (#1401) (#1407) + + +### [7.2.0-v27](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v27) + +- [d51640f7](https://github.com/stashed/elasticsearch/commit/d51640f7) Prepare for release 7.2.0-v27 (#1430) +- [092e99fa](https://github.com/stashed/elasticsearch/commit/092e99fa) [cherry-pick] Update deps (#1412) (#1420) +- [939ea566](https://github.com/stashed/elasticsearch/commit/939ea566) [cherry-pick] Update license verifier (#1401) (#1409) + + +### [7.3.2-v27](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v27) + +- [f2629fc5](https://github.com/stashed/elasticsearch/commit/f2629fc5) Prepare for release 7.3.2-v27 (#1431) +- [a180f5c7](https://github.com/stashed/elasticsearch/commit/a180f5c7) [cherry-pick] Update deps (#1412) (#1421) +- [c1da7015](https://github.com/stashed/elasticsearch/commit/c1da7015) [cherry-pick] Update license verifier (#1401) (#1410) + + +### [7.14.0-v13](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v13) + +- [bf4e73e5](https://github.com/stashed/elasticsearch/commit/bf4e73e5) Prepare for release 7.14.0-v13 (#1429) +- [6c475fd0](https://github.com/stashed/elasticsearch/commit/6c475fd0) [cherry-pick] Update deps (#1412) (#1419) +- [2633267d](https://github.com/stashed/elasticsearch/commit/2633267d) [cherry-pick] Update license verifier (#1401) (#1408) + + +### [8.2.0-v10](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v10) + +- [5e52c7b3](https://github.com/stashed/elasticsearch/commit/5e52c7b3) Prepare for release 8.2.0-v10 (#1432) +- [ed82d9e4](https://github.com/stashed/elasticsearch/commit/ed82d9e4) [cherry-pick] Update deps (#1412) (#1422) +- [6cace96f](https://github.com/stashed/elasticsearch/commit/6cace96f) [cherry-pick] Update license verifier (#1401) (#1411) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.31.0](https://github.com/stashed/enterprise/releases/tag/v0.31.0) + +- [a704d1f0](https://github.com/stashed/enterprise/commit/a704d1f02) Prepare for release v0.31.0 (#237) +- [4aaf8825](https://github.com/stashed/enterprise/commit/4aaf88252) Update deps (#236) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v14](https://github.com/stashed/etcd/releases/tag/3.5.0-v14) + +- [9d550b8](https://github.com/stashed/etcd/commit/9d550b8) Prepare for release 3.5.0-v14 (#81) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.08.14](https://github.com/stashed/installer/releases/tag/v2023.08.14) + +- [a641610a](https://github.com/stashed/installer/commit/a641610a) Prepare for release v2023.08.14 (#314) +- [b514321f](https://github.com/stashed/installer/commit/b514321f) Update deps (#313) +- [b3d902bb](https://github.com/stashed/installer/commit/b3d902bb) Add support for mongodb 5.0.15 backup-restore addon (#311) +- [7bd860ce](https://github.com/stashed/installer/commit/7bd860ce) Don't mount license vol when both license and licenseSecretName is empty (#312) +- [6396e2d6](https://github.com/stashed/installer/commit/6396e2d6) Add licenseSecretName values (#310) +- [05218a8d](https://github.com/stashed/installer/commit/05218a8d) Switch to failurePolicy: Ignore by default for webhooks (#309) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v10](https://github.com/stashed/kubedump/releases/tag/0.1.0-v10) + +- [7022e46](https://github.com/stashed/kubedump/commit/7022e46) Prepare for release 0.1.0-v10 (#45) +- [4ba8582](https://github.com/stashed/kubedump/commit/4ba8582) [cherry-pick] Update deps (#43) (#44) +- [126a77a](https://github.com/stashed/kubedump/commit/126a77a) Update license verifier (#41) (#42) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v20](https://github.com/stashed/mariadb/releases/tag/10.5.8-v20) + +- [6b90e17](https://github.com/stashed/mariadb/commit/6b90e17) Prepare for release 10.5.8-v20 (#228) +- [ae007fc](https://github.com/stashed/mariadb/commit/ae007fc) [cherry-pick] Update deps (#226) (#227) +- [e7e066d](https://github.com/stashed/mariadb/commit/e7e066d) [cherry-pick] Update license verifier (#224) (#225) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v27](https://github.com/stashed/mongodb/releases/tag/3.4.17-v27) + +- [31635810](https://github.com/stashed/mongodb/commit/31635810) Prepare for release 3.4.17-v27 (#1909) +- [6ec316e2](https://github.com/stashed/mongodb/commit/6ec316e2) [cherry-pick] Update deps (#1892) (#1893) +- [ebe9dcdf](https://github.com/stashed/mongodb/commit/ebe9dcdf) Use rs.slaveOk to fix mongo 3.4.17 backup (#1884) + + +### [3.4.22-v27](https://github.com/stashed/mongodb/releases/tag/3.4.22-v27) + +- [fcb3e7ea](https://github.com/stashed/mongodb/commit/fcb3e7ea) Prepare for release 3.4.22-v27 (#1910) +- [7116c874](https://github.com/stashed/mongodb/commit/7116c874) [cherry-pick] Update deps (#1892) (#1894) +- [6583d90b](https://github.com/stashed/mongodb/commit/6583d90b) Use rs.slaveOk to fix mongo 3.4.22 backup (#1885) + + +### [3.6.8-v27](https://github.com/stashed/mongodb/releases/tag/3.6.8-v27) + +- [40e8bd4d](https://github.com/stashed/mongodb/commit/40e8bd4d) Prepare for release 3.6.8-v27 (#1912) +- [41e660e2](https://github.com/stashed/mongodb/commit/41e660e2) [cherry-pick] Update deps (#1892) (#1896) +- [a3884165](https://github.com/stashed/mongodb/commit/a3884165) Use rs.slaveOk to fix mongo 3.6.8 backup (#1886) + + +### [3.6.13-v27](https://github.com/stashed/mongodb/releases/tag/3.6.13-v27) + +- [8d78c8bb](https://github.com/stashed/mongodb/commit/8d78c8bb) Prepare for release 3.6.13-v27 (#1911) +- [d88c7b7f](https://github.com/stashed/mongodb/commit/d88c7b7f) [cherry-pick] Update deps (#1892) (#1895) +- [6732af8c](https://github.com/stashed/mongodb/commit/6732af8c) Use rs.slaveOk to fix mongo 3.6.13 backup (#1883) + + +### [4.0.3-v27](https://github.com/stashed/mongodb/releases/tag/4.0.3-v27) + +- [d089c4d9](https://github.com/stashed/mongodb/commit/d089c4d9) Prepare for release 4.0.3-v27 (#1914) +- [398bf1a8](https://github.com/stashed/mongodb/commit/398bf1a8) [cherry-pick] Update deps (#1892) (#1898) +- [8e6e78d3](https://github.com/stashed/mongodb/commit/8e6e78d3) Use rs.slaveOk to fix mongo 4.0.3 backup (#1887) + + +### [4.0.5-v27](https://github.com/stashed/mongodb/releases/tag/4.0.5-v27) + +- [71661352](https://github.com/stashed/mongodb/commit/71661352) Prepare for release 4.0.5-v27 (#1915) +- [0a5b911a](https://github.com/stashed/mongodb/commit/0a5b911a) [cherry-pick] Update deps (#1892) (#1899) +- [21950874](https://github.com/stashed/mongodb/commit/21950874) Use rs.slaveOk to fix mongo 4.0.5 backup (#1882) + + +### [4.0.11-v27](https://github.com/stashed/mongodb/releases/tag/4.0.11-v27) + +- [67963872](https://github.com/stashed/mongodb/commit/67963872) Prepare for release 4.0.11-v27 (#1913) +- [072abb64](https://github.com/stashed/mongodb/commit/072abb64) [cherry-pick] Update deps (#1892) (#1897) +- [0ee67462](https://github.com/stashed/mongodb/commit/0ee67462) Use rs.slaveOk to fix mongo 4.0.11 backup (#1888) + + +### [4.1.4-v27](https://github.com/stashed/mongodb/releases/tag/4.1.4-v27) + +- [4fe47624](https://github.com/stashed/mongodb/commit/4fe47624) Prepare for release 4.1.4-v27 (#1917) +- [ab5889bb](https://github.com/stashed/mongodb/commit/ab5889bb) [cherry-pick] Update deps (#1892) (#1901) +- [d1c21e4f](https://github.com/stashed/mongodb/commit/d1c21e4f) Use rs.slaveOk to fix mongo 4.1.4 backup (#1889) + + +### [4.1.7-v27](https://github.com/stashed/mongodb/releases/tag/4.1.7-v27) + +- [254b78c9](https://github.com/stashed/mongodb/commit/254b78c9) Prepare for release 4.1.7-v27 (#1918) +- [94d2a8f5](https://github.com/stashed/mongodb/commit/94d2a8f5) [cherry-pick] Update deps (#1892) (#1902) +- [3b14cf33](https://github.com/stashed/mongodb/commit/3b14cf33) Use rs.slaveOk to fix mongo 4.1.7 backup (#1890) + + +### [4.1.13-v27](https://github.com/stashed/mongodb/releases/tag/4.1.13-v27) + +- [9bb4e999](https://github.com/stashed/mongodb/commit/9bb4e999) Prepare for release 4.1.13-v27 (#1916) +- [3aef0db6](https://github.com/stashed/mongodb/commit/3aef0db6) [cherry-pick] Update deps (#1892) (#1900) +- [90bfad36](https://github.com/stashed/mongodb/commit/90bfad36) Use rs.slaveOk to fix mongo 4.1.13 backup (#1891) + + +### [4.2.3-v27](https://github.com/stashed/mongodb/releases/tag/4.2.3-v27) + +- [48c97d77](https://github.com/stashed/mongodb/commit/48c97d77) Prepare for release 4.2.3-v27 (#1919) +- [604b34e2](https://github.com/stashed/mongodb/commit/604b34e2) [cherry-pick] Update deps (#1892) (#1903) +- [29896b2c](https://github.com/stashed/mongodb/commit/29896b2c) Use rs.slaveOk to fix mongo 4.2.3 backup (#1881) + + +### [4.4.6-v18](https://github.com/stashed/mongodb/releases/tag/4.4.6-v18) + +- [4eaddcf7](https://github.com/stashed/mongodb/commit/4eaddcf7) Prepare for release 4.4.6-v18 (#1920) +- [349e8939](https://github.com/stashed/mongodb/commit/349e8939) [cherry-pick] Update deps (#1892) (#1904) + + +### [5.0.3-v15](https://github.com/stashed/mongodb/releases/tag/5.0.3-v15) + +- [bfa14b3c](https://github.com/stashed/mongodb/commit/bfa14b3c) Prepare for release 5.0.3-v15 (#1922) +- [fc14b59b](https://github.com/stashed/mongodb/commit/fc14b59b) [cherry-pick] Update deps (#1892) (#1906) +- [0ae911f5](https://github.com/stashed/mongodb/commit/0ae911f5) Fix 5.0 early patch version restore issue (#1880) + + +### [5.0.15](https://github.com/stashed/mongodb/releases/tag/5.0.15) + +- [d9ea0f83](https://github.com/stashed/mongodb/commit/d9ea0f83) Prepare for release 5.0.15 (#1921) +- [3c32faf0](https://github.com/stashed/mongodb/commit/3c32faf0) [cherry-pick] Update deps (#1892) (#1905) + + +### [6.0.5-v3](https://github.com/stashed/mongodb/releases/tag/6.0.5-v3) + +- [fc388b3b](https://github.com/stashed/mongodb/commit/fc388b3b) Prepare for release 6.0.5-v3 (#1924) +- [d54d6af2](https://github.com/stashed/mongodb/commit/d54d6af2) Fix mg 6.0.5 backup-restore (#1908) +- [2687edeb](https://github.com/stashed/mongodb/commit/2687edeb) [cherry-pick] Update deps (#1892) (#1907) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v27](https://github.com/stashed/mysql/releases/tag/5.7.25-v27) + +- [690a6a1f](https://github.com/stashed/mysql/commit/690a6a1f) Fix gmodules.xyz/logs issue +- [8c164ff2](https://github.com/stashed/mysql/commit/8c164ff2) Prepare for release 5.7.25-v27 (#722) +- [cf9b1708](https://github.com/stashed/mysql/commit/cf9b1708) Exclude system databases during backup (#716) +- [d972d8e7](https://github.com/stashed/mysql/commit/d972d8e7) [cherry-pick] Update license verifier (#711) (#712) + + +### [8.0.3-v27](https://github.com/stashed/mysql/releases/tag/8.0.3-v27) + +- [4a2e46f1](https://github.com/stashed/mysql/commit/4a2e46f1) Prepare for release 8.0.3-v27 (#725) +- [a1b790d5](https://github.com/stashed/mysql/commit/a1b790d5) [cherry-pick] Update deps (#717) (#721) +- [52f58b34](https://github.com/stashed/mysql/commit/52f58b34) [cherry-pick] Update license verifier (#711) (#715) + + +### [8.0.14-v27](https://github.com/stashed/mysql/releases/tag/8.0.14-v27) + +- [823af2aa](https://github.com/stashed/mysql/commit/823af2aa) Prepare for release 8.0.14-v27 (#723) +- [8a4d09d0](https://github.com/stashed/mysql/commit/8a4d09d0) [cherry-pick] Update license verifier (#711) (#713) + + +### [8.0.21-v21](https://github.com/stashed/mysql/releases/tag/8.0.21-v21) + +- [c2c15078](https://github.com/stashed/mysql/commit/c2c15078) Prepare for release 8.0.21-v21 (#724) +- [ddf262f2](https://github.com/stashed/mysql/commit/ddf262f2) [cherry-pick] Update deps (#717) (#720) +- [77f327b7](https://github.com/stashed/mysql/commit/77f327b7) [cherry-pick] Update license verifier (#711) (#714) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v15](https://github.com/stashed/nats/releases/tag/2.6.1-v15) + +- [9c47e0f](https://github.com/stashed/nats/commit/9c47e0f) Prepare for release 2.6.1-v15 (#114) +- [a18e2c6](https://github.com/stashed/nats/commit/a18e2c6) [cherry-pick] Update deps (#111) (#112) +- [a93d038](https://github.com/stashed/nats/commit/a93d038) [cherry-pick] Update license verifier (#108) (#109) +- [365c806](https://github.com/stashed/nats/commit/365c806) [cherry-pick] Fix Cleanup log (#96) (#106) + + +### [2.8.2-v10](https://github.com/stashed/nats/releases/tag/2.8.2-v10) + +- [2717429](https://github.com/stashed/nats/commit/2717429) Prepare for release 2.8.2-v10 (#115) +- [77a7bc5](https://github.com/stashed/nats/commit/77a7bc5) [cherry-pick] Update deps (#111) (#113) +- [5eda0f0](https://github.com/stashed/nats/commit/5eda0f0) [cherry-pick] Update license verifier (#108) (#110) +- [f32fe64](https://github.com/stashed/nats/commit/f32fe64) [cherry-pick] Fix Cleanup log (#96) (#107) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v22](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v22) + +- [44195a4b](https://github.com/stashed/percona-xtradb/commit/44195a4b) Prepare for release 5.7-v22 (#298) +- [5618947a](https://github.com/stashed/percona-xtradb/commit/5618947a) [cherry-pick] Update deps (#296) (#297) +- [bf715ef2](https://github.com/stashed/percona-xtradb/commit/bf715ef2) [cherry-pick] Update license verifier (#294) (#295) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v26](https://github.com/stashed/postgres/releases/tag/9.6.19-v26) + +- [216b6b37](https://github.com/stashed/postgres/commit/216b6b37) Prepare for release 9.6.19-v26 (#1222) +- [d2e7f4fb](https://github.com/stashed/postgres/commit/d2e7f4fb) [cherry-pick] Update deps (#1208) (#1215) +- [029164b4](https://github.com/stashed/postgres/commit/029164b4) [cherry-pick] Update license verifier (#1200) (#1207) + + +### [10.14-v26](https://github.com/stashed/postgres/releases/tag/10.14-v26) + +- [a54f7fc5](https://github.com/stashed/postgres/commit/a54f7fc5) Prepare for release 10.14-v26 (#1216) +- [ed324cf1](https://github.com/stashed/postgres/commit/ed324cf1) [cherry-pick] Update deps (#1208) (#1209) +- [746f73ec](https://github.com/stashed/postgres/commit/746f73ec) [cherry-pick] Update license verifier (#1200) (#1201) + + +### [11.9-v26](https://github.com/stashed/postgres/releases/tag/11.9-v26) + +- [936bcc3f](https://github.com/stashed/postgres/commit/936bcc3f) Prepare for release 11.9-v26 (#1217) +- [795fb54c](https://github.com/stashed/postgres/commit/795fb54c) [cherry-pick] Update deps (#1208) (#1210) +- [62f15553](https://github.com/stashed/postgres/commit/62f15553) [cherry-pick] Update license verifier (#1200) (#1202) + + +### [12.4-v26](https://github.com/stashed/postgres/releases/tag/12.4-v26) + +- [6fa36063](https://github.com/stashed/postgres/commit/6fa36063) Prepare for release 12.4-v26 (#1218) +- [63446f68](https://github.com/stashed/postgres/commit/63446f68) [cherry-pick] Update deps (#1208) (#1211) +- [bd1cfbfd](https://github.com/stashed/postgres/commit/bd1cfbfd) [cherry-pick] Update license verifier (#1200) (#1203) + + +### [13.1-v23](https://github.com/stashed/postgres/releases/tag/13.1-v23) + +- [6bd114ee](https://github.com/stashed/postgres/commit/6bd114ee) Prepare for release 13.1-v23 (#1219) +- [78e1b266](https://github.com/stashed/postgres/commit/78e1b266) [cherry-pick] Update deps (#1208) (#1212) +- [0c7606c6](https://github.com/stashed/postgres/commit/0c7606c6) [cherry-pick] Update license verifier (#1200) (#1204) + + +### [14.0-v15](https://github.com/stashed/postgres/releases/tag/14.0-v15) + +- [990a5dff](https://github.com/stashed/postgres/commit/990a5dff) Prepare for release 14.0-v15 (#1220) +- [1263620a](https://github.com/stashed/postgres/commit/1263620a) [cherry-pick] Update deps (#1208) (#1213) +- [c9672862](https://github.com/stashed/postgres/commit/c9672862) [cherry-pick] Update license verifier (#1200) (#1205) + + +### [15.1-v7](https://github.com/stashed/postgres/releases/tag/15.1-v7) + +- [efc38fee](https://github.com/stashed/postgres/commit/efc38fee) Prepare for release 15.1-v7 (#1221) +- [37bea2c4](https://github.com/stashed/postgres/commit/37bea2c4) [cherry-pick] Update deps (#1208) (#1214) +- [79262385](https://github.com/stashed/postgres/commit/79262385) [cherry-pick] Update license verifier (#1200) (#1206) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v15](https://github.com/stashed/redis/releases/tag/5.0.13-v15) + +- [355b4c8](https://github.com/stashed/redis/commit/355b4c8) Prepare for release 5.0.13-v15 (#188) +- [9bf188a](https://github.com/stashed/redis/commit/9bf188a) [cherry-pick] Update deps (#184) (#185) +- [af8b8f2](https://github.com/stashed/redis/commit/af8b8f2) [cherry-pick] Update license verifier (#180) (#181) + + +### [6.2.5-v15](https://github.com/stashed/redis/releases/tag/6.2.5-v15) + +- [628e69c](https://github.com/stashed/redis/commit/628e69c) Prepare for release 6.2.5-v15 (#189) +- [ccac2f6](https://github.com/stashed/redis/commit/ccac2f6) [cherry-pick] Update deps (#184) (#186) +- [e6350ca](https://github.com/stashed/redis/commit/e6350ca) [cherry-pick] Update license verifier (#180) (#182) + + +### [7.0.5-v8](https://github.com/stashed/redis/releases/tag/7.0.5-v8) + +- [a92be34](https://github.com/stashed/redis/commit/a92be34) Prepare for release 7.0.5-v8 (#190) +- [0839664](https://github.com/stashed/redis/commit/0839664) [cherry-pick] Update deps (#184) (#187) +- [0d92953](https://github.com/stashed/redis/commit/0d92953) [cherry-pick] Update license verifier (#180) (#183) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.31.0](https://github.com/stashed/stash/releases/tag/v0.31.0) + +- [f9619308](https://github.com/stashed/stash/commit/f96193085) Prepare for release v0.31.0 (#1535) +- [06bacfdd](https://github.com/stashed/stash/commit/06bacfddb) Update deps (#1534) +- [93a4b4cd](https://github.com/stashed/stash/commit/93a4b4cd4) Update license verifier (#1529) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.13.0](https://github.com/stashed/ui-server/releases/tag/v0.13.0) + +- [76be456](https://github.com/stashed/ui-server/commit/76be456) Prepare for release v0.13.0 (#31) +- [e36e542](https://github.com/stashed/ui-server/commit/e36e542) Update deps (#30) +- [404390e](https://github.com/stashed/ui-server/commit/404390e) Update deps (#29) +- [cc4c1f0](https://github.com/stashed/ui-server/commit/cc4c1f0) Update license verifier (#28) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v7](https://github.com/stashed/vault/releases/tag/1.10.3-v7) + +- [108e96c3](https://github.com/stashed/vault/commit/108e96c3) Prepare for release 1.10.3-v7 (#23) +- [b5d77977](https://github.com/stashed/vault/commit/b5d77977) [cherry-pick] Update deps (#21) (#22) +- [3e339de5](https://github.com/stashed/vault/commit/3e339de5) [cherry-pick] Update license verifier (#19) (#20) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2023.10.9.md b/content/docs/v2024.8.27/CHANGELOG-v2023.10.9.md new file mode 100644 index 0000000000..e759a46c7a --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2023.10.9.md @@ -0,0 +1,439 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2023.10.9 + name: Changelog-v2023.10.9 + parent: welcome + weight: 20231009 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2023.10.9/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2023.10.9/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2023.10.9 (2023-10-04) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.32.0](https://github.com/stashed/apimachinery/releases/tag/v0.32.0) + +- [47e563c6](https://github.com/stashed/apimachinery/commit/47e563c6) Update deps +- [741d0149](https://github.com/stashed/apimachinery/commit/741d0149) Add restic methods for managing restic keys (#211) +- [3eb3dc0d](https://github.com/stashed/apimachinery/commit/3eb3dc0d) Add new hookExecutionPolicy `OnFinalRetryFailure` (#210) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.32.0](https://github.com/stashed/cli/releases/tag/v0.32.0) + +- [575a83da](https://github.com/stashed/cli/commit/575a83da) Prepare for release v0.32.0 (#190) +- [a5706148](https://github.com/stashed/cli/commit/a5706148) Add commands for generating restore rules and managing restic keys (#189) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v28](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v28) + +- [a8d57072](https://github.com/stashed/elasticsearch/commit/a8d57072) Prepare for release 5.6.4-v28 (#1434) + + +### [6.2.4-v28](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v28) + +- [7dbca84a](https://github.com/stashed/elasticsearch/commit/7dbca84a) Prepare for release 6.2.4-v28 (#1435) + + +### [6.3.0-v28](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v28) + +- [a9ece1ec](https://github.com/stashed/elasticsearch/commit/a9ece1ec) Prepare for release 6.3.0-v28 (#1436) + + +### [6.4.0-v28](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v28) + +- [8b4ab388](https://github.com/stashed/elasticsearch/commit/8b4ab388) Prepare for release 6.4.0-v28 (#1437) + + +### [6.5.3-v28](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v28) + +- [082ca286](https://github.com/stashed/elasticsearch/commit/082ca286) Prepare for release 6.5.3-v28 (#1438) + + +### [6.8.0-v28](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v28) + +- [84e1ee57](https://github.com/stashed/elasticsearch/commit/84e1ee57) Prepare for release 6.8.0-v28 (#1439) + + +### [7.2.0-v28](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v28) + +- [3e6a708f](https://github.com/stashed/elasticsearch/commit/3e6a708f) Prepare for release 7.2.0-v28 (#1441) + + +### [7.3.2-v28](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v28) + +- [9249eefe](https://github.com/stashed/elasticsearch/commit/9249eefe) Prepare for release 7.3.2-v28 (#1442) + + +### [7.14.0-v14](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v14) + +- [91ad7fe5](https://github.com/stashed/elasticsearch/commit/91ad7fe5) Prepare for release 7.14.0-v14 (#1440) + + +### [8.2.0-v11](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v11) + +- [8142ea6d](https://github.com/stashed/elasticsearch/commit/8142ea6d) Prepare for release 8.2.0-v11 (#1443) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.32.0](https://github.com/stashed/enterprise/releases/tag/v0.32.0) + +- [433789a4](https://github.com/stashed/enterprise/commit/433789a4c) Prepare for release v0.32.0 (#240) +- [149f81cc](https://github.com/stashed/enterprise/commit/149f81cc2) Add commands for managing restic passwords + Update snapshot download directory (#239) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v15](https://github.com/stashed/etcd/releases/tag/3.5.0-v15) + +- [47078d2](https://github.com/stashed/etcd/commit/47078d2) Prepare for release 3.5.0-v15 (#83) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2023.10.9](https://github.com/stashed/installer/releases/tag/v2023.10.9) + +- [7bd4fbf5](https://github.com/stashed/installer/commit/7bd4fbf5) Prepare for release v2023.10.9 (#321) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v11](https://github.com/stashed/kubedump/releases/tag/0.1.0-v11) + +- [f4af197](https://github.com/stashed/kubedump/commit/f4af197) Prepare for release 0.1.0-v11 (#47) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v21](https://github.com/stashed/mariadb/releases/tag/10.5.8-v21) + +- [8a94399](https://github.com/stashed/mariadb/commit/8a94399) Prepare for release 10.5.8-v21 (#230) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v28](https://github.com/stashed/mongodb/releases/tag/3.4.17-v28) + +- [bcf4a647](https://github.com/stashed/mongodb/commit/bcf4a647) Prepare for release 3.4.17-v28 (#1976) +- [66d02849](https://github.com/stashed/mongodb/commit/66d02849) Unlock and sync secondary (#1973) +- [8d14efa5](https://github.com/stashed/mongodb/commit/8d14efa5) Add support for restoring specific snapshot (#1927) (#1947) +- [cb8f9ff8](https://github.com/stashed/mongodb/commit/cb8f9ff8) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1930) + + +### [3.4.22-v28](https://github.com/stashed/mongodb/releases/tag/3.4.22-v28) + +- [65bf1bd4](https://github.com/stashed/mongodb/commit/65bf1bd4) Prepare for release 3.4.22-v28 (#1977) +- [7f588f23](https://github.com/stashed/mongodb/commit/7f588f23) Unlock and sync secondary (#1972) +- [704053fb](https://github.com/stashed/mongodb/commit/704053fb) Add support for restoring specific snapshot (#1927) (#1948) +- [fad11e0b](https://github.com/stashed/mongodb/commit/fad11e0b) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1931) + + +### [3.6.8-v28](https://github.com/stashed/mongodb/releases/tag/3.6.8-v28) + +- [64352461](https://github.com/stashed/mongodb/commit/64352461) Prepare for release 3.6.8-v28 (#1979) +- [f28e5990](https://github.com/stashed/mongodb/commit/f28e5990) Unlock and sync secondary (#1969) +- [58e82130](https://github.com/stashed/mongodb/commit/58e82130) Add support for restoring specific snapshot (#1927) (#1950) +- [e594e6ef](https://github.com/stashed/mongodb/commit/e594e6ef) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1933) + + +### [3.6.13-v28](https://github.com/stashed/mongodb/releases/tag/3.6.13-v28) + +- [3da732da](https://github.com/stashed/mongodb/commit/3da732da) Prepare for release 3.6.13-v28 (#1978) +- [3e032a81](https://github.com/stashed/mongodb/commit/3e032a81) Unlock and sync secondary (#1970) +- [4cca80c3](https://github.com/stashed/mongodb/commit/4cca80c3) Add support for restoring specific snapshot (#1927) (#1949) +- [18c43f7e](https://github.com/stashed/mongodb/commit/18c43f7e) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1932) + + +### [4.0.3-v28](https://github.com/stashed/mongodb/releases/tag/4.0.3-v28) + +- [ed7e2a5f](https://github.com/stashed/mongodb/commit/ed7e2a5f) Prepare for release 4.0.3-v28 (#1981) +- [3340ae34](https://github.com/stashed/mongodb/commit/3340ae34) Unlock and sync secondary (#1971) +- [26f42032](https://github.com/stashed/mongodb/commit/26f42032) Add support for restoring specific snapshot (#1927) (#1952) +- [f16cbfba](https://github.com/stashed/mongodb/commit/f16cbfba) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1935) + + +### [4.0.5-v28](https://github.com/stashed/mongodb/releases/tag/4.0.5-v28) + +- [7d29cfa8](https://github.com/stashed/mongodb/commit/7d29cfa8) Prepare for release 4.0.5-v28 (#1982) +- [d0461920](https://github.com/stashed/mongodb/commit/d0461920) Unlock and sync secondary (#1974) +- [2eeec3ba](https://github.com/stashed/mongodb/commit/2eeec3ba) Add support for restoring specific snapshot (#1927) (#1953) +- [4efc8bff](https://github.com/stashed/mongodb/commit/4efc8bff) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1936) + + +### [4.0.11-v28](https://github.com/stashed/mongodb/releases/tag/4.0.11-v28) + +- [9891070f](https://github.com/stashed/mongodb/commit/9891070f) Prepare for release 4.0.11-v28 (#1980) +- [37bfb091](https://github.com/stashed/mongodb/commit/37bfb091) unlock and sync secondary (#1975) +- [53244213](https://github.com/stashed/mongodb/commit/53244213) Add support for restoring specific snapshot (#1927) (#1951) +- [c61568dd](https://github.com/stashed/mongodb/commit/c61568dd) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1934) + + +### [4.1.4-v28](https://github.com/stashed/mongodb/releases/tag/4.1.4-v28) + +- [90543078](https://github.com/stashed/mongodb/commit/90543078) Prepare for release 4.1.4-v28 (#1984) +- [62d36ac9](https://github.com/stashed/mongodb/commit/62d36ac9) Unlock and sync secondary (#1965) +- [11c75f06](https://github.com/stashed/mongodb/commit/11c75f06) Add support for restoring specific snapshot (#1927) (#1955) +- [16475896](https://github.com/stashed/mongodb/commit/16475896) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1938) + + +### [4.1.7-v28](https://github.com/stashed/mongodb/releases/tag/4.1.7-v28) + +- [ad96467e](https://github.com/stashed/mongodb/commit/ad96467e) Prepare for release 4.1.7-v28 (#1985) +- [fe5de7da](https://github.com/stashed/mongodb/commit/fe5de7da) Unlock and sync secondary (#1966) +- [d2810a49](https://github.com/stashed/mongodb/commit/d2810a49) Add support for restoring specific snapshot (#1927) (#1956) +- [209aaa40](https://github.com/stashed/mongodb/commit/209aaa40) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1939) + + +### [4.1.13-v28](https://github.com/stashed/mongodb/releases/tag/4.1.13-v28) + +- [26289363](https://github.com/stashed/mongodb/commit/26289363) Prepare for release 4.1.13-v28 (#1983) +- [a529618c](https://github.com/stashed/mongodb/commit/a529618c) Unlock and sync secondary (#1967) +- [c2de7995](https://github.com/stashed/mongodb/commit/c2de7995) Add support for restoring specific snapshot (#1927) (#1954) +- [c3118596](https://github.com/stashed/mongodb/commit/c3118596) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1937) + + +### [4.2.3-v28](https://github.com/stashed/mongodb/releases/tag/4.2.3-v28) + +- [d716d870](https://github.com/stashed/mongodb/commit/d716d870) Prepare for release 4.2.3-v28 (#1987) +- [5b708249](https://github.com/stashed/mongodb/commit/5b708249) Unlock and sync secondary (#1968) +- [89798c12](https://github.com/stashed/mongodb/commit/89798c12) Add support for restoring specific snapshot (#1927) (#1957) +- [3e23f106](https://github.com/stashed/mongodb/commit/3e23f106) [cherry-pick] Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1940) + + +### [4.4.6-v19](https://github.com/stashed/mongodb/releases/tag/4.4.6-v19) + +- [aba61b85](https://github.com/stashed/mongodb/commit/aba61b85) Prepare for release 4.4.6-v19 (#1988) +- [34ab90b8](https://github.com/stashed/mongodb/commit/34ab90b8) Unlock and sync secondary hosts (#1945) +- [68c8b8c8](https://github.com/stashed/mongodb/commit/68c8b8c8) Add support for restoring specific snapshot (#1927) (#1958) +- [476c6063](https://github.com/stashed/mongodb/commit/476c6063) Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1941) +- [a8474619](https://github.com/stashed/mongodb/commit/a8474619) Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1928) + + +### [5.0.3-v16](https://github.com/stashed/mongodb/releases/tag/5.0.3-v16) + +- [8f480622](https://github.com/stashed/mongodb/commit/8f480622) Prepare for release 5.0.3-v16 (#1990) +- [70f9d538](https://github.com/stashed/mongodb/commit/70f9d538) Unlock and sync secondary (#1964) +- [be10f0b2](https://github.com/stashed/mongodb/commit/be10f0b2) Add support for restoring specific snapshot (#1927) (#1960) +- [147be12d](https://github.com/stashed/mongodb/commit/147be12d) Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1943) + + +### [5.0.15-v1](https://github.com/stashed/mongodb/releases/tag/5.0.15-v1) + +- [070dc6c6](https://github.com/stashed/mongodb/commit/070dc6c6) Prepare for release 5.0.15-v1 (#1989) +- [95f520db](https://github.com/stashed/mongodb/commit/95f520db) Unlock and sync secondary (#1963) +- [ff442bc0](https://github.com/stashed/mongodb/commit/ff442bc0) Add support for restoring specific snapshot (#1927) (#1959) +- [f4bed984](https://github.com/stashed/mongodb/commit/f4bed984) Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1942) + + +### [6.0.5-v4](https://github.com/stashed/mongodb/releases/tag/6.0.5-v4) + +- [093dcce3](https://github.com/stashed/mongodb/commit/093dcce3) Prepare for release 6.0.5-v4 (#1991) +- [b20054bc](https://github.com/stashed/mongodb/commit/b20054bc) Unlock and sync secondary (#1962) +- [f9357173](https://github.com/stashed/mongodb/commit/f9357173) Add support for restoring specific snapshot (#1927) (#1961) +- [5f2f88ea](https://github.com/stashed/mongodb/commit/5f2f88ea) Add stopBalancer timeout; Retry setBalancerState; Improve logging (#1929) (#1944) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v28](https://github.com/stashed/mysql/releases/tag/5.7.25-v28) + +- [e8925996](https://github.com/stashed/mysql/commit/e8925996) Prepare for release 5.7.25-v28 (#727) + + +### [8.0.3-v28](https://github.com/stashed/mysql/releases/tag/8.0.3-v28) + +- [00672e31](https://github.com/stashed/mysql/commit/00672e31) Prepare for release 8.0.3-v28 (#730) + + +### [8.0.14-v28](https://github.com/stashed/mysql/releases/tag/8.0.14-v28) + +- [a7c4579f](https://github.com/stashed/mysql/commit/a7c4579f) Prepare for release 8.0.14-v28 (#728) + + +### [8.0.21-v22](https://github.com/stashed/mysql/releases/tag/8.0.21-v22) + +- [2c21d225](https://github.com/stashed/mysql/commit/2c21d225) Prepare for release 8.0.21-v22 (#729) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v16](https://github.com/stashed/nats/releases/tag/2.6.1-v16) + +- [fb04742](https://github.com/stashed/nats/commit/fb04742) Prepare for release 2.6.1-v16 (#117) + + +### [2.8.2-v11](https://github.com/stashed/nats/releases/tag/2.8.2-v11) + +- [535e051](https://github.com/stashed/nats/commit/535e051) Prepare for release 2.8.2-v11 (#118) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v23](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v23) + +- [54009c23](https://github.com/stashed/percona-xtradb/commit/54009c23) Prepare for release 5.7-v23 (#300) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v27](https://github.com/stashed/postgres/releases/tag/9.6.19-v27) + +- [c8aa8598](https://github.com/stashed/postgres/commit/c8aa8598) Prepare for release 9.6.19-v27 (#1230) + + +### [10.14-v27](https://github.com/stashed/postgres/releases/tag/10.14-v27) + +- [3a7ba3fa](https://github.com/stashed/postgres/commit/3a7ba3fa) Prepare for release 10.14-v27 (#1224) + + +### [11.9-v27](https://github.com/stashed/postgres/releases/tag/11.9-v27) + +- [b8bb39e3](https://github.com/stashed/postgres/commit/b8bb39e3) Prepare for release 11.9-v27 (#1225) + + +### [12.4-v27](https://github.com/stashed/postgres/releases/tag/12.4-v27) + +- [fb6b2835](https://github.com/stashed/postgres/commit/fb6b2835) Prepare for release 12.4-v27 (#1226) + + +### [13.1-v24](https://github.com/stashed/postgres/releases/tag/13.1-v24) + +- [3e815eba](https://github.com/stashed/postgres/commit/3e815eba) Prepare for release 13.1-v24 (#1227) + + +### [14.0-v16](https://github.com/stashed/postgres/releases/tag/14.0-v16) + +- [7183205b](https://github.com/stashed/postgres/commit/7183205b) Prepare for release 14.0-v16 (#1228) + + +### [15.1-v8](https://github.com/stashed/postgres/releases/tag/15.1-v8) + +- [00deb5be](https://github.com/stashed/postgres/commit/00deb5be) Prepare for release 15.1-v8 (#1229) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v16](https://github.com/stashed/redis/releases/tag/5.0.13-v16) + +- [e267408](https://github.com/stashed/redis/commit/e267408) Prepare for release 5.0.13-v16 (#192) + + +### [6.2.5-v16](https://github.com/stashed/redis/releases/tag/6.2.5-v16) + +- [f1e5414](https://github.com/stashed/redis/commit/f1e5414) Prepare for release 6.2.5-v16 (#193) + + +### [7.0.5-v9](https://github.com/stashed/redis/releases/tag/7.0.5-v9) + +- [4e11289](https://github.com/stashed/redis/commit/4e11289) Prepare for release 7.0.5-v9 (#194) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.32.0](https://github.com/stashed/stash/releases/tag/v0.32.0) + +- [993671e7](https://github.com/stashed/stash/commit/993671e74) Prepare for release v0.32.0 (#1539) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v8](https://github.com/stashed/vault/releases/tag/1.10.3-v8) + +- [4b96de6a](https://github.com/stashed/vault/commit/4b96de6a) Prepare for release 1.10.3-v8 (#25) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2024.2.13.md b/content/docs/v2024.8.27/CHANGELOG-v2024.2.13.md new file mode 100644 index 0000000000..966a8ee295 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2024.2.13.md @@ -0,0 +1,441 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2024.2.13 + name: Changelog-v2024.2.13 + parent: welcome + weight: 20240213 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2024.2.13/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2024.2.13/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2024.2.13 (2024-02-14) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.33.0](https://github.com/stashed/apimachinery/releases/tag/v0.33.0) + +- [8624cbcb](https://github.com/stashed/apimachinery/commit/8624cbcb) Update deps +- [999853f0](https://github.com/stashed/apimachinery/commit/999853f0) Fix flags +- [a7373104](https://github.com/stashed/apimachinery/commit/a7373104) Update deps +- [152e1d41](https://github.com/stashed/apimachinery/commit/152e1d41) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#219) +- [c604da62](https://github.com/stashed/apimachinery/commit/c604da62) Upsert task params (#218) +- [a91ab94b](https://github.com/stashed/apimachinery/commit/a91ab94b) Update lint command (#217) +- [ef308633](https://github.com/stashed/apimachinery/commit/ef308633) Fix linter +- [6f5a8df2](https://github.com/stashed/apimachinery/commit/6f5a8df2) Use k8s 1.29 client libs (#215) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.33.0](https://github.com/stashed/cli/releases/tag/v0.33.0) + +- [2330558e](https://github.com/stashed/cli/commit/2330558e) Prepare for release v0.33.0 (#195) +- [e9ef1060](https://github.com/stashed/cli/commit/e9ef1060) Prepare for release v0.33.0-rc.0 (#194) +- [6bfaa69b](https://github.com/stashed/cli/commit/6bfaa69b) Update deps (#193) +- [2fa9872b](https://github.com/stashed/cli/commit/2fa9872b) Use k8s 1.29 client libs (#192) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v30](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v30) + +- [0f3a558d](https://github.com/stashed/elasticsearch/commit/0f3a558d) Prepare for release 5.6.4-v30 (#1498) + + +### [6.2.4-v30](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v30) + +- [0380f47c](https://github.com/stashed/elasticsearch/commit/0380f47c) Prepare for release 6.2.4-v30 (#1499) + + +### [6.3.0-v30](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v30) + +- [92104224](https://github.com/stashed/elasticsearch/commit/92104224) Prepare for release 6.3.0-v30 (#1500) + + +### [6.4.0-v30](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v30) + +- [6d8db1c3](https://github.com/stashed/elasticsearch/commit/6d8db1c3) Prepare for release 6.4.0-v30 (#1501) + + +### [6.5.3-v30](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v30) + +- [967b0d5d](https://github.com/stashed/elasticsearch/commit/967b0d5d) Prepare for release 6.5.3-v30 (#1502) + + +### [6.8.0-v30](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v30) + +- [b888ee9a](https://github.com/stashed/elasticsearch/commit/b888ee9a) Prepare for release 6.8.0-v30 (#1503) + + +### [7.2.0-v30](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v30) + +- [b341edf1](https://github.com/stashed/elasticsearch/commit/b341edf1) Prepare for release 7.2.0-v30 (#1505) + + +### [7.3.2-v30](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v30) + +- [fe59875e](https://github.com/stashed/elasticsearch/commit/fe59875e) Prepare for release 7.3.2-v30 (#1506) + + +### [7.14.0-v16](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v16) + +- [f1b23a52](https://github.com/stashed/elasticsearch/commit/f1b23a52) Prepare for release 7.14.0-v16 (#1504) + + +### [8.2.0-v13](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v13) + +- [99781148](https://github.com/stashed/elasticsearch/commit/99781148) Prepare for release 8.2.0-v13 (#1507) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.33.0](https://github.com/stashed/enterprise/releases/tag/v0.33.0) + +- [056fe40e](https://github.com/stashed/enterprise/commit/056fe40ea) Prepare for release v0.33.0 (#249) +- [d00e48c4](https://github.com/stashed/enterprise/commit/d00e48c4c) Resolve Empty String Bug Across Different Storage Providers Excluding S3 (#248) +- [926b5487](https://github.com/stashed/enterprise/commit/926b54873) Prepare for release v0.33.0-rc.0 (#247) +- [728318a7](https://github.com/stashed/enterprise/commit/728318a76) Use external-snapshotter v7 +- [e187755d](https://github.com/stashed/enterprise/commit/e187755d7) Update deps (#246) +- [b0ca48ec](https://github.com/stashed/enterprise/commit/b0ca48ecc) Add disabling TLS Certificate Verification support for Secure `S3` Storage (#245) +- [8a257274](https://github.com/stashed/enterprise/commit/8a2572742) Add kibana dashboard backup and restore support (#244) +- [0d77a340](https://github.com/stashed/enterprise/commit/0d77a3401) Fix eas +- [af352f7e](https://github.com/stashed/enterprise/commit/af352f7e2) Update gendocs script +- [cc95c59e](https://github.com/stashed/enterprise/commit/cc95c59ed) Configure openapi v3 +- [4fbde18f](https://github.com/stashed/enterprise/commit/4fbde18f1) Use k8s 1.29 client libs (#242) +- [cd3342c0](https://github.com/stashed/enterprise/commit/cd3342c04) Send audit events hourly +- [272590c6](https://github.com/stashed/enterprise/commit/272590c64) Update InterimVolume storage request calculator function name (#241) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v17](https://github.com/stashed/etcd/releases/tag/3.5.0-v17) + +- [e1609a4](https://github.com/stashed/etcd/commit/e1609a4) Prepare for release 3.5.0-v17 (#89) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2024.2.13](https://github.com/stashed/installer/releases/tag/v2024.2.13) + +- [2b363d9f](https://github.com/stashed/installer/commit/2b363d9f) Prepare for release v2024.2.13 (#329) +- [56bd5380](https://github.com/stashed/installer/commit/56bd5380) Prepare for release v2024.2.9-rc.0 (#328) +- [20c7b9a2](https://github.com/stashed/installer/commit/20c7b9a2) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#326) +- [c66f9803](https://github.com/stashed/installer/commit/c66f9803) Add dashboard backup and restore support (#325) +- [f6f31321](https://github.com/stashed/installer/commit/f6f31321) Use k8s 1.29 client libs (#324) +- [722af4d3](https://github.com/stashed/installer/commit/722af4d3) Check for image existence (#323) +- [4ed53d44](https://github.com/stashed/installer/commit/4ed53d44) Update deps + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v13](https://github.com/stashed/kubedump/releases/tag/0.1.0-v13) + +- [f60b817](https://github.com/stashed/kubedump/commit/f60b817) Prepare for release 0.1.0-v13 (#57) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v24](https://github.com/stashed/mariadb/releases/tag/10.5.8-v24) + +- [caae4d31](https://github.com/stashed/mariadb/commit/caae4d31) Prepare for release 10.5.8-v24 (#240) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v30](https://github.com/stashed/mongodb/releases/tag/3.4.17-v30) + +- [5081c341](https://github.com/stashed/mongodb/commit/5081c341) Prepare for release 3.4.17-v30 (#2080) + + +### [3.4.22-v30](https://github.com/stashed/mongodb/releases/tag/3.4.22-v30) + +- [f6207dac](https://github.com/stashed/mongodb/commit/f6207dac) Prepare for release 3.4.22-v30 (#2081) + + +### [3.6.8-v30](https://github.com/stashed/mongodb/releases/tag/3.6.8-v30) + +- [2387f378](https://github.com/stashed/mongodb/commit/2387f378) Prepare for release 3.6.8-v30 (#2083) + + +### [3.6.13-v30](https://github.com/stashed/mongodb/releases/tag/3.6.13-v30) + +- [61271bff](https://github.com/stashed/mongodb/commit/61271bff) Prepare for release 3.6.13-v30 (#2082) + + +### [4.0.3-v30](https://github.com/stashed/mongodb/releases/tag/4.0.3-v30) + +- [f326d30a](https://github.com/stashed/mongodb/commit/f326d30a) Prepare for release 4.0.3-v30 (#2085) + + +### [4.0.5-v30](https://github.com/stashed/mongodb/releases/tag/4.0.5-v30) + +- [7e96bbf7](https://github.com/stashed/mongodb/commit/7e96bbf7) Prepare for release 4.0.5-v30 (#2086) + + +### [4.0.11-v30](https://github.com/stashed/mongodb/releases/tag/4.0.11-v30) + +- [44da1d6f](https://github.com/stashed/mongodb/commit/44da1d6f) Prepare for release 4.0.11-v30 (#2084) + + +### [4.1.4-v30](https://github.com/stashed/mongodb/releases/tag/4.1.4-v30) + +- [2356a00a](https://github.com/stashed/mongodb/commit/2356a00a) Prepare for release 4.1.4-v30 (#2088) + + +### [4.1.7-v30](https://github.com/stashed/mongodb/releases/tag/4.1.7-v30) + +- [bdaaef1d](https://github.com/stashed/mongodb/commit/bdaaef1d) Prepare for release 4.1.7-v30 (#2089) + + +### [4.1.13-v30](https://github.com/stashed/mongodb/releases/tag/4.1.13-v30) + +- [5469bb49](https://github.com/stashed/mongodb/commit/5469bb49) Prepare for release 4.1.13-v30 (#2087) + + +### [4.2.3-v30](https://github.com/stashed/mongodb/releases/tag/4.2.3-v30) + +- [2bc8be8a](https://github.com/stashed/mongodb/commit/2bc8be8a) Prepare for release 4.2.3-v30 (#2090) + + +### [4.4.6-v21](https://github.com/stashed/mongodb/releases/tag/4.4.6-v21) + +- [809c73d8](https://github.com/stashed/mongodb/commit/809c73d8) Prepare for release 4.4.6-v21 (#2091) + + +### [5.0.3-v18](https://github.com/stashed/mongodb/releases/tag/5.0.3-v18) + +- [8de25714](https://github.com/stashed/mongodb/commit/8de25714) Prepare for release 5.0.3-v18 (#2093) + + +### [5.0.15-v3](https://github.com/stashed/mongodb/releases/tag/5.0.15-v3) + +- [bee01d90](https://github.com/stashed/mongodb/commit/bee01d90) Prepare for release 5.0.15-v3 (#2092) + + +### [6.0.5-v6](https://github.com/stashed/mongodb/releases/tag/6.0.5-v6) + +- [fae938ce](https://github.com/stashed/mongodb/commit/fae938ce) Prepare for release 6.0.5-v6 (#2094) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v30](https://github.com/stashed/mysql/releases/tag/5.7.25-v30) + +- [b3aa034b](https://github.com/stashed/mysql/commit/b3aa034b) Prepare for release 5.7.25-v30 (#756) + + +### [8.0.3-v30](https://github.com/stashed/mysql/releases/tag/8.0.3-v30) + +- [81c6d225](https://github.com/stashed/mysql/commit/81c6d225) Prepare for release 8.0.3-v30 (#759) + + +### [8.0.14-v30](https://github.com/stashed/mysql/releases/tag/8.0.14-v30) + +- [d63e3687](https://github.com/stashed/mysql/commit/d63e3687) Prepare for release 8.0.14-v30 (#757) + + +### [8.0.21-v24](https://github.com/stashed/mysql/releases/tag/8.0.21-v24) + +- [e3cf2123](https://github.com/stashed/mysql/commit/e3cf2123) Prepare for release 8.0.21-v24 (#758) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v18](https://github.com/stashed/nats/releases/tag/2.6.1-v18) + +- [f0bc785](https://github.com/stashed/nats/commit/f0bc785) Prepare for release 2.6.1-v18 (#132) + + +### [2.8.2-v13](https://github.com/stashed/nats/releases/tag/2.8.2-v13) + +- [9e86ae7](https://github.com/stashed/nats/commit/9e86ae7) Prepare for release 2.8.2-v13 (#133) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v25](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v25) + +- [2890ead5](https://github.com/stashed/percona-xtradb/commit/2890ead5) Prepare for release 5.7-v25 (#312) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v29](https://github.com/stashed/postgres/releases/tag/9.6.19-v29) + +- [c52291e5](https://github.com/stashed/postgres/commit/c52291e5) Prepare for release 9.6.19-v29 (#1272) + + +### [10.14-v29](https://github.com/stashed/postgres/releases/tag/10.14-v29) + +- [80a3c18f](https://github.com/stashed/postgres/commit/80a3c18f) Prepare for release 10.14-v29 (#1266) + + +### [11.9-v29](https://github.com/stashed/postgres/releases/tag/11.9-v29) + +- [8df3672a](https://github.com/stashed/postgres/commit/8df3672a) Prepare for release 11.9-v29 (#1267) + + +### [12.4-v29](https://github.com/stashed/postgres/releases/tag/12.4-v29) + +- [67373668](https://github.com/stashed/postgres/commit/67373668) Prepare for release 12.4-v29 (#1268) + + +### [13.1-v26](https://github.com/stashed/postgres/releases/tag/13.1-v26) + +- [b058e4fc](https://github.com/stashed/postgres/commit/b058e4fc) Prepare for release 13.1-v26 (#1269) + + +### [14.0-v18](https://github.com/stashed/postgres/releases/tag/14.0-v18) + +- [e4d8de36](https://github.com/stashed/postgres/commit/e4d8de36) Prepare for release 14.0-v18 (#1270) + + +### [15.1-v10](https://github.com/stashed/postgres/releases/tag/15.1-v10) + +- [e1f30a46](https://github.com/stashed/postgres/commit/e1f30a46) Prepare for release 15.1-v10 (#1271) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v18](https://github.com/stashed/redis/releases/tag/5.0.13-v18) + +- [aa46891](https://github.com/stashed/redis/commit/aa46891) Prepare for release 5.0.13-v18 (#212) + + +### [6.2.5-v18](https://github.com/stashed/redis/releases/tag/6.2.5-v18) + +- [96a6d0f](https://github.com/stashed/redis/commit/96a6d0f) Prepare for release 6.2.5-v18 (#213) + + +### [7.0.5-v11](https://github.com/stashed/redis/releases/tag/7.0.5-v11) + +- [9902062](https://github.com/stashed/redis/commit/9902062) Prepare for release 7.0.5-v11 (#214) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.33.0](https://github.com/stashed/stash/releases/tag/v0.33.0) + +- [8f76d737](https://github.com/stashed/stash/commit/8f76d7376) Prepare for release v0.33.0 (#1558) +- [b0ecb486](https://github.com/stashed/stash/commit/b0ecb486c) Resolve Empty String Bug Across Different Storage Providers Excluding `S3` (#1557) +- [8cb8f6f6](https://github.com/stashed/stash/commit/8cb8f6f6d) Fix webhook server +- [4bd38bd4](https://github.com/stashed/stash/commit/4bd38bd45) Prepare for release v0.33.0-rc.0 (#1556) +- [2d785965](https://github.com/stashed/stash/commit/2d7859658) Use external-snapshotter/v7 +- [c221c378](https://github.com/stashed/stash/commit/c221c3789) Update deps (#1555) +- [8fa0835d](https://github.com/stashed/stash/commit/8fa0835de) Add disabling TLS Certificate Verification support for Secure S3 Storage (#1554) +- [6d5ad36a](https://github.com/stashed/stash/commit/6d5ad36a8) Fix eas +- [dc70cedd](https://github.com/stashed/stash/commit/dc70cedd9) Update gendocs script +- [86fb04f8](https://github.com/stashed/stash/commit/86fb04f87) Configure openapi v3 (#1551) +- [2b252fac](https://github.com/stashed/stash/commit/2b252fac5) Use k8s 1.29 client libs (#1550) +- [620a6236](https://github.com/stashed/stash/commit/620a6236b) Use k8s 1.29 client libs (#1547) +- [01bdb47d](https://github.com/stashed/stash/commit/01bdb47d4) Send audit events hourly + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.14.0](https://github.com/stashed/ui-server/releases/tag/v0.14.0) + +- [9e9d2512](https://github.com/stashed/ui-server/commit/9e9d2512) Prepare for release v0.14.0 (#36) +- [2473d4b9](https://github.com/stashed/ui-server/commit/2473d4b9) Configure openapi v3 (#35) +- [4622b7bd](https://github.com/stashed/ui-server/commit/4622b7bd) Prepare for release v0.14.0-rc.0 (#34) +- [0ad06c75](https://github.com/stashed/ui-server/commit/0ad06c75) Update deps (#33) +- [e44a14af](https://github.com/stashed/ui-server/commit/e44a14af) Use k8s 1.29 client libs (#32) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v10](https://github.com/stashed/vault/releases/tag/1.10.3-v10) + +- [53f85d89](https://github.com/stashed/vault/commit/53f85d89) Prepare for release 1.10.3-v10 (#33) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2024.2.9-rc.0.md b/content/docs/v2024.8.27/CHANGELOG-v2024.2.9-rc.0.md new file mode 100644 index 0000000000..6ff23a7585 --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2024.2.9-rc.0.md @@ -0,0 +1,575 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2024.2.9-rc.0 + name: Changelog-v2024.2.9-rc.0 + parent: welcome + weight: 20240209 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2024.2.9-rc.0/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2024.2.9-rc.0/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2024.2.9-rc.0 (2024-02-10) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.33.0-rc.0](https://github.com/stashed/apimachinery/releases/tag/v0.33.0-rc.0) + +- [a7373104](https://github.com/stashed/apimachinery/commit/a7373104) Update deps +- [152e1d41](https://github.com/stashed/apimachinery/commit/152e1d41) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#219) +- [c604da62](https://github.com/stashed/apimachinery/commit/c604da62) Upsert task params (#218) +- [a91ab94b](https://github.com/stashed/apimachinery/commit/a91ab94b) Update lint command (#217) +- [ef308633](https://github.com/stashed/apimachinery/commit/ef308633) Fix linter +- [6f5a8df2](https://github.com/stashed/apimachinery/commit/6f5a8df2) Use k8s 1.29 client libs (#215) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.33.0-rc.0](https://github.com/stashed/cli/releases/tag/v0.33.0-rc.0) + +- [e9ef1060](https://github.com/stashed/cli/commit/e9ef1060) Prepare for release v0.33.0-rc.0 (#194) +- [6bfaa69b](https://github.com/stashed/cli/commit/6bfaa69b) Update deps (#193) +- [2fa9872b](https://github.com/stashed/cli/commit/2fa9872b) Use k8s 1.29 client libs (#192) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v29](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v29) + +- [ff4072db](https://github.com/stashed/elasticsearch/commit/ff4072db) Prepare for release 5.6.4-v29 (#1487) +- [401a46bd](https://github.com/stashed/elasticsearch/commit/401a46bd) [cherry-pick] Update deps (#1476) (#1477) +- [df5b3426](https://github.com/stashed/elasticsearch/commit/df5b3426) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1466) +- [ac3e9b95](https://github.com/stashed/elasticsearch/commit/ac3e9b95) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1448) + + +### [6.2.4-v29](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v29) + +- [29e0e68b](https://github.com/stashed/elasticsearch/commit/29e0e68b) Prepare for release 6.2.4-v29 (#1488) +- [3cac9319](https://github.com/stashed/elasticsearch/commit/3cac9319) [cherry-pick] Update deps (#1476) (#1478) +- [0ca14e64](https://github.com/stashed/elasticsearch/commit/0ca14e64) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1467) +- [c625ef36](https://github.com/stashed/elasticsearch/commit/c625ef36) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1449) + + +### [6.3.0-v29](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v29) + +- [3030fac0](https://github.com/stashed/elasticsearch/commit/3030fac0) Prepare for release 6.3.0-v29 (#1489) +- [7ab46bb8](https://github.com/stashed/elasticsearch/commit/7ab46bb8) [cherry-pick] Update deps (#1476) (#1479) +- [e6837aaf](https://github.com/stashed/elasticsearch/commit/e6837aaf) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1468) +- [f8b13f4e](https://github.com/stashed/elasticsearch/commit/f8b13f4e) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1450) + + +### [6.4.0-v29](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v29) + +- [b4ecccae](https://github.com/stashed/elasticsearch/commit/b4ecccae) Prepare for release 6.4.0-v29 (#1490) +- [ded2a668](https://github.com/stashed/elasticsearch/commit/ded2a668) [cherry-pick] Update deps (#1476) (#1480) +- [3a25ece0](https://github.com/stashed/elasticsearch/commit/3a25ece0) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1469) +- [9bc0fadf](https://github.com/stashed/elasticsearch/commit/9bc0fadf) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1451) + + +### [6.5.3-v29](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v29) + +- [bdcaa0e7](https://github.com/stashed/elasticsearch/commit/bdcaa0e7) Prepare for release 6.5.3-v29 (#1491) +- [e699231e](https://github.com/stashed/elasticsearch/commit/e699231e) [cherry-pick] Update deps (#1476) (#1481) +- [9cf2d65c](https://github.com/stashed/elasticsearch/commit/9cf2d65c) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1470) +- [f69899fd](https://github.com/stashed/elasticsearch/commit/f69899fd) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1452) + + +### [6.8.0-v29](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v29) + +- [44c54065](https://github.com/stashed/elasticsearch/commit/44c54065) Prepare for release 6.8.0-v29 (#1492) +- [b9a96d34](https://github.com/stashed/elasticsearch/commit/b9a96d34) [cherry-pick] Update deps (#1476) (#1482) +- [a2b29367](https://github.com/stashed/elasticsearch/commit/a2b29367) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1471) +- [39aa61a8](https://github.com/stashed/elasticsearch/commit/39aa61a8) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1453) + + +### [7.2.0-v29](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v29) + +- [9c1db06d](https://github.com/stashed/elasticsearch/commit/9c1db06d) Prepare for release 7.2.0-v29 (#1494) +- [bffe38f9](https://github.com/stashed/elasticsearch/commit/bffe38f9) [cherry-pick] Update deps (#1476) (#1484) +- [99242034](https://github.com/stashed/elasticsearch/commit/99242034) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1473) +- [e55ccd73](https://github.com/stashed/elasticsearch/commit/e55ccd73) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1455) + + +### [7.3.2-v29](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v29) + +- [b5ba17b3](https://github.com/stashed/elasticsearch/commit/b5ba17b3) Prepare for release 7.3.2-v29 (#1495) +- [2be8c1c2](https://github.com/stashed/elasticsearch/commit/2be8c1c2) [cherry-pick] Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1474) +- [b6b8d77f](https://github.com/stashed/elasticsearch/commit/b6b8d77f) Add support for kibana dashboard spaces (#1464) +- [54e83f21](https://github.com/stashed/elasticsearch/commit/54e83f21) Add Support for ES v7.3.2 dashboard backup and restore (#1461) +- [7a7a90b8](https://github.com/stashed/elasticsearch/commit/7a7a90b8) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1456) + + +### [7.14.0-v15](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v15) + +- [b1e40261](https://github.com/stashed/elasticsearch/commit/b1e40261) Prepare for release 7.14.0-v15 (#1493) +- [9731068a](https://github.com/stashed/elasticsearch/commit/9731068a) [cherry-pick] Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1472) +- [edd0d306](https://github.com/stashed/elasticsearch/commit/edd0d306) Add support for kibana dashboard spaces (#1463) +- [c64c7f07](https://github.com/stashed/elasticsearch/commit/c64c7f07) Add Support for ES v7.14.0 dashboard backup and restore (#1460) +- [635f1ad0](https://github.com/stashed/elasticsearch/commit/635f1ad0) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1454) + + +### [8.2.0-v12](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v12) + +- [12360a2e](https://github.com/stashed/elasticsearch/commit/12360a2e) Prepare for release 8.2.0-v12 (#1496) +- [ffdfddad](https://github.com/stashed/elasticsearch/commit/ffdfddad) [cherry-pick] Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1462) (#1475) +- [d1d5985d](https://github.com/stashed/elasticsearch/commit/d1d5985d) Add support for kibana dashboard spaces (#1465) +- [24ecc281](https://github.com/stashed/elasticsearch/commit/24ecc281) Add Support for ES v8.2.0 dashboard backup and restore (#1459) +- [feb7c4ad](https://github.com/stashed/elasticsearch/commit/feb7c4ad) [cherry-pick] Use k8s 1.29 client libs (#1447) (#1457) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.33.0-rc.0](https://github.com/stashed/enterprise/releases/tag/v0.33.0-rc.0) + +- [926b5487](https://github.com/stashed/enterprise/commit/926b54873) Prepare for release v0.33.0-rc.0 (#247) +- [728318a7](https://github.com/stashed/enterprise/commit/728318a76) Use external-snapshotter v7 +- [e187755d](https://github.com/stashed/enterprise/commit/e187755d7) Update deps (#246) +- [b0ca48ec](https://github.com/stashed/enterprise/commit/b0ca48ecc) Add disabling TLS Certificate Verification support for Secure `S3` Storage (#245) +- [8a257274](https://github.com/stashed/enterprise/commit/8a2572742) Add kibana dashboard backup and restore support (#244) +- [0d77a340](https://github.com/stashed/enterprise/commit/0d77a3401) Fix eas +- [af352f7e](https://github.com/stashed/enterprise/commit/af352f7e2) Update gendocs script +- [cc95c59e](https://github.com/stashed/enterprise/commit/cc95c59ed) Configure openapi v3 +- [4fbde18f](https://github.com/stashed/enterprise/commit/4fbde18f1) Use k8s 1.29 client libs (#242) +- [cd3342c0](https://github.com/stashed/enterprise/commit/cd3342c04) Send audit events hourly +- [272590c6](https://github.com/stashed/enterprise/commit/272590c64) Update InterimVolume storage request calculator function name (#241) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v16](https://github.com/stashed/etcd/releases/tag/3.5.0-v16) + +- [8915468](https://github.com/stashed/etcd/commit/8915468) Prepare for release 3.5.0-v16 (#87) +- [c55295f](https://github.com/stashed/etcd/commit/c55295f) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#85) (#86) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2024.2.9-rc.0](https://github.com/stashed/installer/releases/tag/v2024.2.9-rc.0) + +- [56bd5380](https://github.com/stashed/installer/commit/56bd5380) Prepare for release v2024.2.9-rc.0 (#328) +- [20c7b9a2](https://github.com/stashed/installer/commit/20c7b9a2) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#326) +- [c66f9803](https://github.com/stashed/installer/commit/c66f9803) Add dashboard backup and restore support (#325) +- [f6f31321](https://github.com/stashed/installer/commit/f6f31321) Use k8s 1.29 client libs (#324) +- [722af4d3](https://github.com/stashed/installer/commit/722af4d3) Check for image existence (#323) +- [4ed53d44](https://github.com/stashed/installer/commit/4ed53d44) Update deps + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v12](https://github.com/stashed/kubedump/releases/tag/0.1.0-v12) + +- [c8ea88c](https://github.com/stashed/kubedump/commit/c8ea88c) Prepare for release 0.1.0-v12 (#55) +- [b64c87b](https://github.com/stashed/kubedump/commit/b64c87b) [cherry-pick] Update deps (#53) (#54) +- [7a54044](https://github.com/stashed/kubedump/commit/7a54044) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#51) (#52) +- [527d154](https://github.com/stashed/kubedump/commit/527d154) [cherry-pick] Use k8s 1.29 client libs (#49) (#50) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v23](https://github.com/stashed/mariadb/releases/tag/10.5.8-v23) + +- [92adb079](https://github.com/stashed/mariadb/commit/92adb079) Prepare for release 10.5.8-v23 (#238) +- [146a661b](https://github.com/stashed/mariadb/commit/146a661b) [cherry-pick] Update deps (#236) (#237) +- [6dd82d4e](https://github.com/stashed/mariadb/commit/6dd82d4e) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#234) (#235) +- [805b7e72](https://github.com/stashed/mariadb/commit/805b7e72) [cherry-pick] Use k8s 1.29 client libs (#232) (#233) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v29](https://github.com/stashed/mongodb/releases/tag/3.4.17-v29) + +- [c13af7f2](https://github.com/stashed/mongodb/commit/c13af7f2) Prepare for release 3.4.17-v29 (#2064) +- [212f6698](https://github.com/stashed/mongodb/commit/212f6698) [cherry-pick] Update deps (#2039) (#2049) +- [749f4849](https://github.com/stashed/mongodb/commit/749f4849) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2024) +- [8425019e](https://github.com/stashed/mongodb/commit/8425019e) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2002) + + +### [3.4.22-v29](https://github.com/stashed/mongodb/releases/tag/3.4.22-v29) + +- [9e8f639f](https://github.com/stashed/mongodb/commit/9e8f639f) Prepare for release 3.4.22-v29 (#2065) +- [82403e18](https://github.com/stashed/mongodb/commit/82403e18) [cherry-pick] Update deps (#2039) (#2050) +- [2388cd5c](https://github.com/stashed/mongodb/commit/2388cd5c) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2025) +- [e9aaf4a0](https://github.com/stashed/mongodb/commit/e9aaf4a0) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2003) + + +### [3.6.8-v29](https://github.com/stashed/mongodb/releases/tag/3.6.8-v29) + +- [83bd3ca6](https://github.com/stashed/mongodb/commit/83bd3ca6) Prepare for release 3.6.8-v29 (#2067) +- [a4ac2495](https://github.com/stashed/mongodb/commit/a4ac2495) [cherry-pick] Update deps (#2039) (#2052) +- [b0fcceb6](https://github.com/stashed/mongodb/commit/b0fcceb6) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2027) +- [4183dce4](https://github.com/stashed/mongodb/commit/4183dce4) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2005) + + +### [3.6.13-v29](https://github.com/stashed/mongodb/releases/tag/3.6.13-v29) + +- [d436bac9](https://github.com/stashed/mongodb/commit/d436bac9) Prepare for release 3.6.13-v29 (#2066) +- [0c784ae5](https://github.com/stashed/mongodb/commit/0c784ae5) [cherry-pick] Update deps (#2039) (#2051) +- [b166ba18](https://github.com/stashed/mongodb/commit/b166ba18) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2026) +- [89bf4a8b](https://github.com/stashed/mongodb/commit/89bf4a8b) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2004) + + +### [4.0.3-v29](https://github.com/stashed/mongodb/releases/tag/4.0.3-v29) + +- [1d55691c](https://github.com/stashed/mongodb/commit/1d55691c) Prepare for release 4.0.3-v29 (#2069) +- [3fcfa629](https://github.com/stashed/mongodb/commit/3fcfa629) [cherry-pick] Update deps (#2039) (#2054) +- [a5471f8f](https://github.com/stashed/mongodb/commit/a5471f8f) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2029) +- [e26590ae](https://github.com/stashed/mongodb/commit/e26590ae) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2007) + + +### [4.0.5-v29](https://github.com/stashed/mongodb/releases/tag/4.0.5-v29) + +- [4d047823](https://github.com/stashed/mongodb/commit/4d047823) Prepare for release 4.0.5-v29 (#2070) +- [bd30b43a](https://github.com/stashed/mongodb/commit/bd30b43a) [cherry-pick] Update deps (#2039) (#2055) +- [e6d4e4c8](https://github.com/stashed/mongodb/commit/e6d4e4c8) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2030) +- [b5a80d5e](https://github.com/stashed/mongodb/commit/b5a80d5e) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2008) + + +### [4.0.11-v29](https://github.com/stashed/mongodb/releases/tag/4.0.11-v29) + +- [970d7a65](https://github.com/stashed/mongodb/commit/970d7a65) Prepare for release 4.0.11-v29 (#2068) +- [aa662509](https://github.com/stashed/mongodb/commit/aa662509) [cherry-pick] Update deps (#2039) (#2053) +- [2f79e431](https://github.com/stashed/mongodb/commit/2f79e431) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2028) +- [fc915fda](https://github.com/stashed/mongodb/commit/fc915fda) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2006) + + +### [4.1.4-v29](https://github.com/stashed/mongodb/releases/tag/4.1.4-v29) + +- [84fa06fa](https://github.com/stashed/mongodb/commit/84fa06fa) Prepare for release 4.1.4-v29 (#2072) +- [2941b00e](https://github.com/stashed/mongodb/commit/2941b00e) [cherry-pick] Update deps (#2039) (#2057) +- [c777ebda](https://github.com/stashed/mongodb/commit/c777ebda) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2032) +- [0d95db7f](https://github.com/stashed/mongodb/commit/0d95db7f) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2010) + + +### [4.1.7-v29](https://github.com/stashed/mongodb/releases/tag/4.1.7-v29) + +- [3487b26b](https://github.com/stashed/mongodb/commit/3487b26b) Prepare for release 4.1.7-v29 (#2073) +- [edb5c6fc](https://github.com/stashed/mongodb/commit/edb5c6fc) [cherry-pick] Update deps (#2039) (#2058) +- [48a7bddb](https://github.com/stashed/mongodb/commit/48a7bddb) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2033) +- [88b717dc](https://github.com/stashed/mongodb/commit/88b717dc) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2011) + + +### [4.1.13-v29](https://github.com/stashed/mongodb/releases/tag/4.1.13-v29) + +- [a378670e](https://github.com/stashed/mongodb/commit/a378670e) Prepare for release 4.1.13-v29 (#2071) +- [3322389c](https://github.com/stashed/mongodb/commit/3322389c) [cherry-pick] Update deps (#2039) (#2056) +- [cb6a03ad](https://github.com/stashed/mongodb/commit/cb6a03ad) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2031) +- [f35e6d45](https://github.com/stashed/mongodb/commit/f35e6d45) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2009) + + +### [4.2.3-v29](https://github.com/stashed/mongodb/releases/tag/4.2.3-v29) + +- [b442c846](https://github.com/stashed/mongodb/commit/b442c846) Prepare for release 4.2.3-v29 (#2074) +- [987f365c](https://github.com/stashed/mongodb/commit/987f365c) [cherry-pick] Update deps (#2039) (#2059) +- [c3489059](https://github.com/stashed/mongodb/commit/c3489059) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2034) +- [c22e4250](https://github.com/stashed/mongodb/commit/c22e4250) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2012) + + +### [4.4.6-v20](https://github.com/stashed/mongodb/releases/tag/4.4.6-v20) + +- [dcbd4cba](https://github.com/stashed/mongodb/commit/dcbd4cba) Prepare for release 4.4.6-v20 (#2075) +- [7e68a707](https://github.com/stashed/mongodb/commit/7e68a707) [cherry-pick] Update deps (#2039) (#2060) +- [f4361716](https://github.com/stashed/mongodb/commit/f4361716) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2035) +- [9844fd23](https://github.com/stashed/mongodb/commit/9844fd23) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2013) + + +### [5.0.3-v17](https://github.com/stashed/mongodb/releases/tag/5.0.3-v17) + +- [eed701a8](https://github.com/stashed/mongodb/commit/eed701a8) Prepare for release 5.0.3-v17 (#2077) +- [63e6f8b8](https://github.com/stashed/mongodb/commit/63e6f8b8) [cherry-pick] Update deps (#2039) (#2062) +- [817a5a24](https://github.com/stashed/mongodb/commit/817a5a24) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2037) +- [7c1a1b56](https://github.com/stashed/mongodb/commit/7c1a1b56) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2001) +- [3b98fbfb](https://github.com/stashed/mongodb/commit/3b98fbfb) currentOp command update (#1995) +- [03259fa1](https://github.com/stashed/mongodb/commit/03259fa1) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2015) + + +### [5.0.15-v2](https://github.com/stashed/mongodb/releases/tag/5.0.15-v2) + +- [f9129172](https://github.com/stashed/mongodb/commit/f9129172) Prepare for release 5.0.15-v2 (#2076) +- [51380ede](https://github.com/stashed/mongodb/commit/51380ede) [cherry-pick] Update deps (#2039) (#2061) +- [f371d67f](https://github.com/stashed/mongodb/commit/f371d67f) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2036) +- [14512d91](https://github.com/stashed/mongodb/commit/14512d91) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2000) +- [53a8791c](https://github.com/stashed/mongodb/commit/53a8791c) currentOp command update (#1994) +- [607a859f](https://github.com/stashed/mongodb/commit/607a859f) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2014) + + +### [6.0.5-v5](https://github.com/stashed/mongodb/releases/tag/6.0.5-v5) + +- [959a6454](https://github.com/stashed/mongodb/commit/959a6454) Prepare for release 6.0.5-v5 (#2078) +- [2481466c](https://github.com/stashed/mongodb/commit/2481466c) [cherry-pick] Update deps (#2039) (#2063) +- [603acda9](https://github.com/stashed/mongodb/commit/603acda9) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#2017) (#2038) +- [03362717](https://github.com/stashed/mongodb/commit/03362717) [cherry-pick] Use k8s 1.29 client libs (#1998) (#1999) +- [3c35e5fc](https://github.com/stashed/mongodb/commit/3c35e5fc) Command and tickers updated (#1993) +- [f43fb564](https://github.com/stashed/mongodb/commit/f43fb564) [cherry-pick] Use k8s 1.29 client libs (#1998) (#2016) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v29](https://github.com/stashed/mysql/releases/tag/5.7.25-v29) + +- [281bf6b3](https://github.com/stashed/mysql/commit/281bf6b3) Prepare for release 5.7.25-v29 (#751) +- [72e566db](https://github.com/stashed/mysql/commit/72e566db) [cherry-pick] Update deps (#746) (#747) +- [b531d9ef](https://github.com/stashed/mysql/commit/b531d9ef) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#741) (#742) +- [da312878](https://github.com/stashed/mysql/commit/da312878) [cherry-pick] Use k8s 1.29 client libs (#735) (#737) +- [44c6fe0a](https://github.com/stashed/mysql/commit/44c6fe0a) Don't set all-databases as default for args (#733) + + +### [8.0.3-v29](https://github.com/stashed/mysql/releases/tag/8.0.3-v29) + +- [4379d0d1](https://github.com/stashed/mysql/commit/4379d0d1) Prepare for release 8.0.3-v29 (#754) +- [55b685c1](https://github.com/stashed/mysql/commit/55b685c1) [cherry-pick] Update deps (#746) (#750) +- [8c8860f6](https://github.com/stashed/mysql/commit/8c8860f6) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#741) (#745) +- [ba633e81](https://github.com/stashed/mysql/commit/ba633e81) [cherry-pick] Use k8s 1.29 client libs (#735) (#740) + + +### [8.0.14-v29](https://github.com/stashed/mysql/releases/tag/8.0.14-v29) + +- [b5ec7da8](https://github.com/stashed/mysql/commit/b5ec7da8) Prepare for release 8.0.14-v29 (#752) +- [c7584d82](https://github.com/stashed/mysql/commit/c7584d82) Update deps (#746) (#748) +- [8be31363](https://github.com/stashed/mysql/commit/8be31363) [cherry-pick] Add support Disabling TLS Certificate Verification for Secure S3 Storage (#741) (#743) +- [b976105c](https://github.com/stashed/mysql/commit/b976105c) [cherry-pick] Use k8s 1.29 client libs (#735) (#738) + + +### [8.0.21-v23](https://github.com/stashed/mysql/releases/tag/8.0.21-v23) + +- [81b49dae](https://github.com/stashed/mysql/commit/81b49dae) Prepare for release 8.0.21-v23 (#753) +- [1e6948b0](https://github.com/stashed/mysql/commit/1e6948b0) [cherry-pick] Update deps (#746) (#749) +- [66c5d072](https://github.com/stashed/mysql/commit/66c5d072) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#741) (#744) +- [61c02de7](https://github.com/stashed/mysql/commit/61c02de7) [cherry-pick] Use k8s 1.29 client libs (#735) (#739) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v17](https://github.com/stashed/nats/releases/tag/2.6.1-v17) + +- [87fd44c](https://github.com/stashed/nats/commit/87fd44c) Prepare for release 2.6.1-v17 (#129) +- [774bc06](https://github.com/stashed/nats/commit/774bc06) [cherry-pick] Update deps (#126) (#127) +- [8986edb](https://github.com/stashed/nats/commit/8986edb) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#123) (#124) +- [f50f0dc](https://github.com/stashed/nats/commit/f50f0dc) [cherry-pick] Use k8s 1.29 client libs (#120) (#121) + + +### [2.8.2-v12](https://github.com/stashed/nats/releases/tag/2.8.2-v12) + +- [76ae834](https://github.com/stashed/nats/commit/76ae834) Prepare for release 2.8.2-v12 (#130) +- [6428446](https://github.com/stashed/nats/commit/6428446) [cherry-pick] Update deps (#126) (#128) +- [701911e](https://github.com/stashed/nats/commit/701911e) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#123) (#125) +- [39b638b](https://github.com/stashed/nats/commit/39b638b) [cherry-pick] Use k8s 1.29 client libs (#120) (#122) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v24](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v24) + +- [3b132129](https://github.com/stashed/percona-xtradb/commit/3b132129) Prepare for release 5.7-v24 (#310) +- [162d38f0](https://github.com/stashed/percona-xtradb/commit/162d38f0) [cherry-pick] Update deps (#308) (#309) +- [7df261de](https://github.com/stashed/percona-xtradb/commit/7df261de) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#306) (#307) +- [16812768](https://github.com/stashed/percona-xtradb/commit/16812768) [cherry-pick] Use k8s 1.29 client libs (#304) (#305) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v28](https://github.com/stashed/postgres/releases/tag/9.6.19-v28) + +- [1298dbbe](https://github.com/stashed/postgres/commit/1298dbbe) Prepare for release 9.6.19-v28 (#1264) +- [083bee7c](https://github.com/stashed/postgres/commit/083bee7c) [cherry-pick] Update deps (#1250) (#1257) +- [ee274af0](https://github.com/stashed/postgres/commit/ee274af0) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1249) +- [f9c2bb70](https://github.com/stashed/postgres/commit/f9c2bb70) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1241) + + +### [10.14-v28](https://github.com/stashed/postgres/releases/tag/10.14-v28) + +- [c027e2a2](https://github.com/stashed/postgres/commit/c027e2a2) Prepare for release 10.14-v28 (#1258) +- [d1d89159](https://github.com/stashed/postgres/commit/d1d89159) [cherry-pick] Update deps (#1250) (#1251) +- [55379bf9](https://github.com/stashed/postgres/commit/55379bf9) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1243) +- [5f027026](https://github.com/stashed/postgres/commit/5f027026) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1235) + + +### [11.9-v28](https://github.com/stashed/postgres/releases/tag/11.9-v28) + +- [29d470cc](https://github.com/stashed/postgres/commit/29d470cc) Prepare for release 11.9-v28 (#1259) +- [04aaf44c](https://github.com/stashed/postgres/commit/04aaf44c) [cherry-pick] Update deps (#1250) (#1252) +- [210165b4](https://github.com/stashed/postgres/commit/210165b4) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1244) +- [b232264d](https://github.com/stashed/postgres/commit/b232264d) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1236) + + +### [12.4-v28](https://github.com/stashed/postgres/releases/tag/12.4-v28) + +- [c0667397](https://github.com/stashed/postgres/commit/c0667397) Prepare for release 12.4-v28 (#1260) +- [a3a6b107](https://github.com/stashed/postgres/commit/a3a6b107) [cherry-pick] Update deps (#1250) (#1253) +- [9a35e5d8](https://github.com/stashed/postgres/commit/9a35e5d8) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1245) +- [e12724e1](https://github.com/stashed/postgres/commit/e12724e1) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1237) + + +### [13.1-v25](https://github.com/stashed/postgres/releases/tag/13.1-v25) + +- [e8caeb88](https://github.com/stashed/postgres/commit/e8caeb88) Prepare for release 13.1-v25 (#1261) +- [b5f19962](https://github.com/stashed/postgres/commit/b5f19962) [cherry-pick] Update deps (#1250) (#1254) +- [d0d8f879](https://github.com/stashed/postgres/commit/d0d8f879) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1246) +- [a7ee90fe](https://github.com/stashed/postgres/commit/a7ee90fe) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1238) + + +### [14.0-v17](https://github.com/stashed/postgres/releases/tag/14.0-v17) + +- [d2d8e1e6](https://github.com/stashed/postgres/commit/d2d8e1e6) Prepare for release 14.0-v17 (#1262) +- [a4a2f372](https://github.com/stashed/postgres/commit/a4a2f372) [cherry-pick] Update deps (#1250) (#1255) +- [37bef4c2](https://github.com/stashed/postgres/commit/37bef4c2) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1247) +- [a1e5b9e0](https://github.com/stashed/postgres/commit/a1e5b9e0) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1239) + + +### [15.1-v9](https://github.com/stashed/postgres/releases/tag/15.1-v9) + +- [d7d48fe0](https://github.com/stashed/postgres/commit/d7d48fe0) Prepare for release 15.1-v9 (#1263) +- [a6efcbbc](https://github.com/stashed/postgres/commit/a6efcbbc) [cherry-pick] Update deps (#1250) (#1256) +- [fc400a3b](https://github.com/stashed/postgres/commit/fc400a3b) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#1242) (#1248) +- [449876a7](https://github.com/stashed/postgres/commit/449876a7) [cherry-pick] Use k8s 1.29 client libs (#1234) (#1240) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v17](https://github.com/stashed/redis/releases/tag/5.0.13-v17) + +- [ea1ecca](https://github.com/stashed/redis/commit/ea1ecca) Prepare for release 5.0.13-v17 (#208) +- [938a96a](https://github.com/stashed/redis/commit/938a96a) [cherry-pick] Update deps (#204) (#205) +- [4a80c23](https://github.com/stashed/redis/commit/4a80c23) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#200) (#201) +- [33440aa](https://github.com/stashed/redis/commit/33440aa) [cherry-pick] Use k8s 1.29 client libs (#196) (#197) + + +### [6.2.5-v17](https://github.com/stashed/redis/releases/tag/6.2.5-v17) + +- [2770727](https://github.com/stashed/redis/commit/2770727) Prepare for release 6.2.5-v17 (#209) +- [eea6853](https://github.com/stashed/redis/commit/eea6853) [cherry-pick] Update deps (#204) (#206) +- [4ceecb7](https://github.com/stashed/redis/commit/4ceecb7) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#200) (#202) +- [f0d103a](https://github.com/stashed/redis/commit/f0d103a) [cherry-pick] Use k8s 1.29 client libs (#196) (#198) + + +### [7.0.5-v10](https://github.com/stashed/redis/releases/tag/7.0.5-v10) + +- [16a721d](https://github.com/stashed/redis/commit/16a721d) Prepare for release 7.0.5-v10 (#210) +- [bc586b3](https://github.com/stashed/redis/commit/bc586b3) [cherry-pick] Update deps (#204) (#207) +- [ab433e4](https://github.com/stashed/redis/commit/ab433e4) Add support Disabling TLS Certificate Verification for Secure S3 Storage (#200) (#203) +- [596efd3](https://github.com/stashed/redis/commit/596efd3) [cherry-pick] Use k8s 1.29 client libs (#196) (#199) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.33.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.33.0-rc.0) + +- [4bd38bd4](https://github.com/stashed/stash/commit/4bd38bd45) Prepare for release v0.33.0-rc.0 (#1556) +- [2d785965](https://github.com/stashed/stash/commit/2d7859658) Use external-snapshotter/v7 +- [c221c378](https://github.com/stashed/stash/commit/c221c3789) Update deps (#1555) +- [8fa0835d](https://github.com/stashed/stash/commit/8fa0835de) Add disabling TLS Certificate Verification support for Secure S3 Storage (#1554) +- [6d5ad36a](https://github.com/stashed/stash/commit/6d5ad36a8) Fix eas +- [dc70cedd](https://github.com/stashed/stash/commit/dc70cedd9) Update gendocs script +- [86fb04f8](https://github.com/stashed/stash/commit/86fb04f87) Configure openapi v3 (#1551) +- [2b252fac](https://github.com/stashed/stash/commit/2b252fac5) Use k8s 1.29 client libs (#1550) +- [620a6236](https://github.com/stashed/stash/commit/620a6236b) Use k8s 1.29 client libs (#1547) +- [01bdb47d](https://github.com/stashed/stash/commit/01bdb47d4) Send audit events hourly + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.14.0-rc.0](https://github.com/stashed/ui-server/releases/tag/v0.14.0-rc.0) + +- [4622b7bd](https://github.com/stashed/ui-server/commit/4622b7bd) Prepare for release v0.14.0-rc.0 (#34) +- [0ad06c75](https://github.com/stashed/ui-server/commit/0ad06c75) Update deps (#33) +- [e44a14af](https://github.com/stashed/ui-server/commit/e44a14af) Use k8s 1.29 client libs (#32) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v9](https://github.com/stashed/vault/releases/tag/1.10.3-v9) + +- [613e95d1](https://github.com/stashed/vault/commit/613e95d1) Prepare for release 1.10.3-v9 (#31) +- [1a5f95d0](https://github.com/stashed/vault/commit/1a5f95d0) [cherry-pick] Update deps (#29) (#30) +- [a706d835](https://github.com/stashed/vault/commit/a706d835) [cherry-pick] Use k8s 1.29 client libs (#27) (#28) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2024.4.8.md b/content/docs/v2024.8.27/CHANGELOG-v2024.4.8.md new file mode 100644 index 0000000000..cb097e29eb --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2024.4.8.md @@ -0,0 +1,499 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2024.4.8 + name: Changelog-v2024.4.8 + parent: welcome + weight: 20240408 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2024.4.8/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2024.4.8/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2024.4.8 (2024-04-09) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.34.0](https://github.com/stashed/apimachinery/releases/tag/v0.34.0) + +- [be710277](https://github.com/stashed/apimachinery/commit/be710277) Use Go 1.22 (#221) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.34.0](https://github.com/stashed/cli/releases/tag/v0.34.0) + +- [3a2104b6](https://github.com/stashed/cli/commit/3a2104b6) Prepare for release v0.34.0 (#200) +- [97c3c9dc](https://github.com/stashed/cli/commit/97c3c9dc) Use Go 1.22 (#199) +- [57359de6](https://github.com/stashed/cli/commit/57359de6) Use Go 1.22 (#198) +- [cc9996a7](https://github.com/stashed/cli/commit/cc9996a7) Update external snapshotter deps v4 to v7 (#197) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v31](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v31) + +- [9b4eb820](https://github.com/stashed/elasticsearch/commit/9b4eb820) Prepare for release 5.6.4-v31 (#1532) +- [64d18cf3](https://github.com/stashed/elasticsearch/commit/64d18cf3) [cherry-pick] Use Go 1.22 (#1521) (#1522) +- [d1ea4dc7](https://github.com/stashed/elasticsearch/commit/d1ea4dc7) [cherry-pick] Use Go 1.22 (#1510) (#1511) + + +### [6.2.4-v31](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v31) + +- [7c84bbc1](https://github.com/stashed/elasticsearch/commit/7c84bbc1) Prepare for release 6.2.4-v31 (#1533) +- [fed5d9e2](https://github.com/stashed/elasticsearch/commit/fed5d9e2) [cherry-pick] Use Go 1.22 (#1521) (#1523) +- [1f63d8ec](https://github.com/stashed/elasticsearch/commit/1f63d8ec) [cherry-pick] Use Go 1.22 (#1510) (#1512) + + +### [6.3.0-v31](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v31) + +- [c9cdfcd6](https://github.com/stashed/elasticsearch/commit/c9cdfcd6) Prepare for release 6.3.0-v31 (#1534) +- [735faaf2](https://github.com/stashed/elasticsearch/commit/735faaf2) [cherry-pick] Use Go 1.22 (#1521) (#1524) +- [1f3097e6](https://github.com/stashed/elasticsearch/commit/1f3097e6) [cherry-pick] Use Go 1.22 (#1510) (#1513) + + +### [6.4.0-v31](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v31) + +- [6fdc0ea7](https://github.com/stashed/elasticsearch/commit/6fdc0ea7) Prepare for release 6.4.0-v31 (#1535) +- [d4c96d76](https://github.com/stashed/elasticsearch/commit/d4c96d76) [cherry-pick] Use Go 1.22 (#1521) (#1525) +- [2314563b](https://github.com/stashed/elasticsearch/commit/2314563b) [cherry-pick] Use Go 1.22 (#1510) (#1514) + + +### [6.5.3-v31](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v31) + +- [0dc8cd3d](https://github.com/stashed/elasticsearch/commit/0dc8cd3d) Prepare for release 6.5.3-v31 (#1536) +- [9dd6338f](https://github.com/stashed/elasticsearch/commit/9dd6338f) [cherry-pick] Use Go 1.22 (#1521) (#1526) +- [3f9bce22](https://github.com/stashed/elasticsearch/commit/3f9bce22) [cherry-pick] Use Go 1.22 (#1510) (#1515) + + +### [6.8.0-v31](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v31) + +- [1f7abda9](https://github.com/stashed/elasticsearch/commit/1f7abda9) Prepare for release 6.8.0-v31 (#1537) +- [237ace67](https://github.com/stashed/elasticsearch/commit/237ace67) [cherry-pick] Use Go 1.22 (#1521) (#1527) +- [670a073a](https://github.com/stashed/elasticsearch/commit/670a073a) [cherry-pick] Use Go 1.22 (#1510) (#1516) + + +### [7.2.0-v31](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v31) + +- [7a4aeeaa](https://github.com/stashed/elasticsearch/commit/7a4aeeaa) Prepare for release 7.2.0-v31 (#1539) +- [2bcea750](https://github.com/stashed/elasticsearch/commit/2bcea750) [cherry-pick] Use Go 1.22 (#1521) (#1529) +- [ad6db703](https://github.com/stashed/elasticsearch/commit/ad6db703) [cherry-pick] Use Go 1.22 (#1510) (#1518) + + +### [7.3.2-v31](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v31) + +- [e79d7c36](https://github.com/stashed/elasticsearch/commit/e79d7c36) Prepare for release 7.3.2-v31 (#1540) +- [19a2baee](https://github.com/stashed/elasticsearch/commit/19a2baee) Use Go 1.22 (#1510) (#1519) +- [fccdd7ae](https://github.com/stashed/elasticsearch/commit/fccdd7ae) Use Go 1.22 (#1521) (#1530) + + +### [7.14.0-v17](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v17) + +- [07732198](https://github.com/stashed/elasticsearch/commit/07732198) Prepare for release 7.14.0-v17 (#1538) +- [84560940](https://github.com/stashed/elasticsearch/commit/84560940) Use Go 1.22 (#1510) (#1517) +- [a7e835e0](https://github.com/stashed/elasticsearch/commit/a7e835e0) Use Go 1.22 (#1521) (#1528) + + +### [8.2.0-v14](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v14) + +- [5c652e9b](https://github.com/stashed/elasticsearch/commit/5c652e9b) Prepare for release 8.2.0-v14 (#1541) +- [5816087b](https://github.com/stashed/elasticsearch/commit/5816087b) Use Go 1.22 (#1510) (#1520) +- [6fda5520](https://github.com/stashed/elasticsearch/commit/6fda5520) Use Go 1.22 (#1521) (#1531) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.34.0](https://github.com/stashed/enterprise/releases/tag/v0.34.0) + +- [abdda99c](https://github.com/stashed/enterprise/commit/abdda99c1) Prepare for release v0.34.0 (#252) +- [ac0a94b1](https://github.com/stashed/enterprise/commit/ac0a94b12) Use Go 1.22 (#251) +- [21941602](https://github.com/stashed/enterprise/commit/219416023) Use Go 1.22 (#250) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v18](https://github.com/stashed/etcd/releases/tag/3.5.0-v18) + +- [7831686](https://github.com/stashed/etcd/commit/7831686) Prepare for release 3.5.0-v18 (#95) +- [1615a10](https://github.com/stashed/etcd/commit/1615a10) [cherry-pick] Use Go 1.22 (#93) (#94) +- [4a6c248](https://github.com/stashed/etcd/commit/4a6c248) [cherry-pick] Use Go 1.22 (#91) (#92) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2024.4.8](https://github.com/stashed/installer/releases/tag/v2024.4.8) + +- [a5779c26](https://github.com/stashed/installer/commit/a5779c26) Prepare for release v2024.4.8 (#336) +- [85724696](https://github.com/stashed/installer/commit/85724696) Use Go 1.22 (#335) +- [78d05dfa](https://github.com/stashed/installer/commit/78d05dfa) Use Go 1.22 (#334) +- [462dae9e](https://github.com/stashed/installer/commit/462dae9e) Add pg version 16 support (#331) +- [14ca5b0a](https://github.com/stashed/installer/commit/14ca5b0a) Add node selector, toleration and affinity rules for jobs (#333) +- [6675e10f](https://github.com/stashed/installer/commit/6675e10f) Add `--ignore-groupkinds` flag in kubedump function (#332) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v14](https://github.com/stashed/kubedump/releases/tag/0.1.0-v14) + +- [6774b71](https://github.com/stashed/kubedump/commit/6774b71) Prepare for release 0.1.0-v14 (#64) +- [756520f](https://github.com/stashed/kubedump/commit/756520f) Use Go 1.22 (#60) (#61) +- [30bb01b](https://github.com/stashed/kubedump/commit/30bb01b) Use Go 1.22 (#62) (#63) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v25](https://github.com/stashed/mariadb/releases/tag/10.5.8-v25) + +- [77c27b4d](https://github.com/stashed/mariadb/commit/77c27b4d) Prepare for release 10.5.8-v25 (#246) +- [b8cfb2c2](https://github.com/stashed/mariadb/commit/b8cfb2c2) [cherry-pick] Use Go 1.22 (#244) (#245) +- [9c86fee6](https://github.com/stashed/mariadb/commit/9c86fee6) [cherry-pick] Use Go 1.22 (#242) (#243) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v31](https://github.com/stashed/mongodb/releases/tag/3.4.17-v31) + +- [58b55d55](https://github.com/stashed/mongodb/commit/58b55d55) Prepare for release 3.4.17-v31 (#2119) +- [15f8513c](https://github.com/stashed/mongodb/commit/15f8513c) Use Go 1.22 (#2098) (#2104) + + +### [3.4.22-v31](https://github.com/stashed/mongodb/releases/tag/3.4.22-v31) + +- [15bc4a8e](https://github.com/stashed/mongodb/commit/15bc4a8e) Prepare for release 3.4.22-v31 (#2120) +- [a70cbdfc](https://github.com/stashed/mongodb/commit/a70cbdfc) Use Go 1.22 (#2098) (#2105) + + +### [3.6.8-v31](https://github.com/stashed/mongodb/releases/tag/3.6.8-v31) + +- [1d63b61c](https://github.com/stashed/mongodb/commit/1d63b61c) Prepare for release 3.6.8-v31 (#2122) +- [27c70e3e](https://github.com/stashed/mongodb/commit/27c70e3e) Use Go 1.22 (#2098) (#2107) + + +### [3.6.13-v31](https://github.com/stashed/mongodb/releases/tag/3.6.13-v31) + +- [f5a988bd](https://github.com/stashed/mongodb/commit/f5a988bd) Prepare for release 3.6.13-v31 (#2121) +- [e4fbdca1](https://github.com/stashed/mongodb/commit/e4fbdca1) Use Go 1.22 (#2098) (#2106) + + +### [4.0.3-v31](https://github.com/stashed/mongodb/releases/tag/4.0.3-v31) + +- [c8a40f84](https://github.com/stashed/mongodb/commit/c8a40f84) Prepare for release 4.0.3-v31 (#2124) +- [c320e2e3](https://github.com/stashed/mongodb/commit/c320e2e3) Use Go 1.22 (#2098) (#2109) + + +### [4.0.5-v31](https://github.com/stashed/mongodb/releases/tag/4.0.5-v31) + +- [4f1dd2ea](https://github.com/stashed/mongodb/commit/4f1dd2ea) Prepare for release 4.0.5-v31 (#2125) +- [8dbf0b26](https://github.com/stashed/mongodb/commit/8dbf0b26) Use Go 1.22 (#2098) (#2110) + + +### [4.0.11-v31](https://github.com/stashed/mongodb/releases/tag/4.0.11-v31) + +- [4a1ca435](https://github.com/stashed/mongodb/commit/4a1ca435) Prepare for release 4.0.11-v31 (#2123) +- [71013236](https://github.com/stashed/mongodb/commit/71013236) Use Go 1.22 (#2098) (#2108) + + +### [4.1.4-v31](https://github.com/stashed/mongodb/releases/tag/4.1.4-v31) + +- [0987370a](https://github.com/stashed/mongodb/commit/0987370a) Prepare for release 4.1.4-v31 (#2127) +- [d611f612](https://github.com/stashed/mongodb/commit/d611f612) Use Go 1.22 (#2098) (#2112) + + +### [4.1.7-v31](https://github.com/stashed/mongodb/releases/tag/4.1.7-v31) + +- [4bc37444](https://github.com/stashed/mongodb/commit/4bc37444) Prepare for release 4.1.7-v31 (#2128) +- [f1b8cbbb](https://github.com/stashed/mongodb/commit/f1b8cbbb) Use Go 1.22 (#2098) (#2113) + + +### [4.1.13-v31](https://github.com/stashed/mongodb/releases/tag/4.1.13-v31) + +- [0a3b3fcd](https://github.com/stashed/mongodb/commit/0a3b3fcd) Prepare for release 4.1.13-v31 (#2126) +- [114ffe42](https://github.com/stashed/mongodb/commit/114ffe42) Use Go 1.22 (#2098) (#2111) + + +### [4.2.3-v31](https://github.com/stashed/mongodb/releases/tag/4.2.3-v31) + +- [a4399e27](https://github.com/stashed/mongodb/commit/a4399e27) Prepare for release 4.2.3-v31 (#2129) +- [0d7bc575](https://github.com/stashed/mongodb/commit/0d7bc575) Use Go 1.22 (#2098) (#2114) + + +### [4.4.6-v22](https://github.com/stashed/mongodb/releases/tag/4.4.6-v22) + +- [c0a13d5a](https://github.com/stashed/mongodb/commit/c0a13d5a) Prepare for release 4.4.6-v22 (#2130) +- [e89fb707](https://github.com/stashed/mongodb/commit/e89fb707) Use Go 1.22 (#2098) (#2115) + + +### [5.0.3-v19](https://github.com/stashed/mongodb/releases/tag/5.0.3-v19) + +- [e3f0395d](https://github.com/stashed/mongodb/commit/e3f0395d) Prepare for release 5.0.3-v19 (#2132) +- [af619bb9](https://github.com/stashed/mongodb/commit/af619bb9) Use Go 1.22 (#2098) (#2117) + + +### [5.0.15-v4](https://github.com/stashed/mongodb/releases/tag/5.0.15-v4) + +- [cd1774de](https://github.com/stashed/mongodb/commit/cd1774de) Prepare for release 5.0.15-v4 (#2131) +- [b97c1fd6](https://github.com/stashed/mongodb/commit/b97c1fd6) Use Go 1.22 (#2098) (#2116) + + +### [6.0.5-v7](https://github.com/stashed/mongodb/releases/tag/6.0.5-v7) + +- [f54a09de](https://github.com/stashed/mongodb/commit/f54a09de) Prepare for release 6.0.5-v7 (#2133) +- [65963e0b](https://github.com/stashed/mongodb/commit/65963e0b) Use Go 1.22 (#2098) (#2118) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v31](https://github.com/stashed/mysql/releases/tag/5.7.25-v31) + +- [b05bf372](https://github.com/stashed/mysql/commit/b05bf372) Prepare for release 5.7.25-v31 (#772) +- [9bc2d64b](https://github.com/stashed/mysql/commit/9bc2d64b) [cherry-pick] Use Go 1.22 (#767) (#768) +- [d12b9957](https://github.com/stashed/mysql/commit/d12b9957) [cherry-pick] Use Go 1.22 (#762) (#763) + + +### [8.0.3-v31](https://github.com/stashed/mysql/releases/tag/8.0.3-v31) + +- [12351196](https://github.com/stashed/mysql/commit/12351196) Prepare for release 8.0.3-v31 (#775) +- [572d4433](https://github.com/stashed/mysql/commit/572d4433) [cherry-pick] Use Go 1.22 (#767) (#771) +- [003dd782](https://github.com/stashed/mysql/commit/003dd782) [cherry-pick] Use Go 1.22 (#762) (#766) + + +### [8.0.14-v31](https://github.com/stashed/mysql/releases/tag/8.0.14-v31) + +- [bddcbc5e](https://github.com/stashed/mysql/commit/bddcbc5e) Prepare for release 8.0.14-v31 (#773) +- [fb6655db](https://github.com/stashed/mysql/commit/fb6655db) [cherry-pick] Use Go 1.22 (#767) (#769) +- [9168a96f](https://github.com/stashed/mysql/commit/9168a96f) [cherry-pick] Use Go 1.22 (#762) (#764) + + +### [8.0.21-v25](https://github.com/stashed/mysql/releases/tag/8.0.21-v25) + +- [7ccbafa0](https://github.com/stashed/mysql/commit/7ccbafa0) Prepare for release 8.0.21-v25 (#774) +- [65d51861](https://github.com/stashed/mysql/commit/65d51861) [cherry-pick] Use Go 1.22 (#767) (#770) +- [fa68ec10](https://github.com/stashed/mysql/commit/fa68ec10) [cherry-pick] Use Go 1.22 (#762) (#765) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v19](https://github.com/stashed/nats/releases/tag/2.6.1-v19) + +- [3b03387](https://github.com/stashed/nats/commit/3b03387) Prepare for release 2.6.1-v19 (#141) +- [b82f62f](https://github.com/stashed/nats/commit/b82f62f) [cherry-pick] Use Go 1.22 (#138) (#139) +- [a1daf1a](https://github.com/stashed/nats/commit/a1daf1a) [cherry-pick] Use Go 1.22 (#135) (#136) + + +### [2.8.2-v14](https://github.com/stashed/nats/releases/tag/2.8.2-v14) + +- [dd6c32c](https://github.com/stashed/nats/commit/dd6c32c) Prepare for release 2.8.2-v14 (#142) +- [f3f64d8](https://github.com/stashed/nats/commit/f3f64d8) [cherry-pick] Use Go 1.22 (#138) (#140) +- [4bf6909](https://github.com/stashed/nats/commit/4bf6909) [cherry-pick] Use Go 1.22 (#135) (#137) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v26](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v26) + +- [3e476cf1](https://github.com/stashed/percona-xtradb/commit/3e476cf1) Prepare for release 5.7-v26 (#319) +- [4792bc77](https://github.com/stashed/percona-xtradb/commit/4792bc77) [cherry-pick] Use Go 1.22 (#317) (#318) +- [4092d00f](https://github.com/stashed/percona-xtradb/commit/4092d00f) [cherry-pick] Use Go 1.22 (#315) (#316) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v30](https://github.com/stashed/postgres/releases/tag/9.6.19-v30) + +- [fbd16044](https://github.com/stashed/postgres/commit/fbd16044) Prepare for release 9.6.19-v30 (#1310) +- [ccc209f2](https://github.com/stashed/postgres/commit/ccc209f2) [cherry-pick] Use Go 1.22 (#1294) (#1302) +- [6e158932](https://github.com/stashed/postgres/commit/6e158932) [cherry-pick] Use Go 1.22 (#1285) (#1293) +- [8ad02897](https://github.com/stashed/postgres/commit/8ad02897) TLS fix for Postgres (#1276) (#1284) + + +### [10.14-v30](https://github.com/stashed/postgres/releases/tag/10.14-v30) + +- [96117cdb](https://github.com/stashed/postgres/commit/96117cdb) Prepare for release 10.14-v30 (#1303) +- [14485d33](https://github.com/stashed/postgres/commit/14485d33) [cherry-pick] Use Go 1.22 (#1294) (#1295) +- [50933257](https://github.com/stashed/postgres/commit/50933257) [cherry-pick] Use Go 1.22 (#1285) (#1286) +- [6a572310](https://github.com/stashed/postgres/commit/6a572310) TLS fix for Postgres (#1276) (#1277) + + +### [11.9-v30](https://github.com/stashed/postgres/releases/tag/11.9-v30) + +- [f0dce3ab](https://github.com/stashed/postgres/commit/f0dce3ab) Prepare for release 11.9-v30 (#1304) +- [ae71d48f](https://github.com/stashed/postgres/commit/ae71d48f) [cherry-pick] Use Go 1.22 (#1294) (#1296) +- [42d88fa3](https://github.com/stashed/postgres/commit/42d88fa3) [cherry-pick] Use Go 1.22 (#1285) (#1287) +- [71b29f42](https://github.com/stashed/postgres/commit/71b29f42) TLS fix for Postgres (#1276) (#1278) + + +### [12.4-v30](https://github.com/stashed/postgres/releases/tag/12.4-v30) + +- [0fbdd5ca](https://github.com/stashed/postgres/commit/0fbdd5ca) Prepare for release 12.4-v30 (#1305) +- [60928e72](https://github.com/stashed/postgres/commit/60928e72) [cherry-pick] Use Go 1.22 (#1294) (#1297) +- [bba3655d](https://github.com/stashed/postgres/commit/bba3655d) [cherry-pick] Use Go 1.22 (#1285) (#1288) +- [29abe734](https://github.com/stashed/postgres/commit/29abe734) TLS fix for Postgres (#1276) (#1279) + + +### [13.1-v27](https://github.com/stashed/postgres/releases/tag/13.1-v27) + +- [5a0180f3](https://github.com/stashed/postgres/commit/5a0180f3) Prepare for release 13.1-v27 (#1306) +- [9bd70f79](https://github.com/stashed/postgres/commit/9bd70f79) [cherry-pick] Use Go 1.22 (#1294) (#1298) +- [c5f3f4e7](https://github.com/stashed/postgres/commit/c5f3f4e7) [cherry-pick] Use Go 1.22 (#1285) (#1289) +- [574e5101](https://github.com/stashed/postgres/commit/574e5101) TLS fix for Postgres (#1276) (#1280) + + +### [14.0-v19](https://github.com/stashed/postgres/releases/tag/14.0-v19) + +- [fb410c7d](https://github.com/stashed/postgres/commit/fb410c7d) Prepare for release 14.0-v19 (#1307) +- [f0ec4a9b](https://github.com/stashed/postgres/commit/f0ec4a9b) [cherry-pick] Use Go 1.22 (#1294) (#1299) +- [a0d2cb4e](https://github.com/stashed/postgres/commit/a0d2cb4e) [cherry-pick] Use Go 1.22 (#1285) (#1290) +- [a713b5ce](https://github.com/stashed/postgres/commit/a713b5ce) TLS fix for Postgres (#1276) (#1281) + + +### [15.1-v11](https://github.com/stashed/postgres/releases/tag/15.1-v11) + +- [d1f558b5](https://github.com/stashed/postgres/commit/d1f558b5) Prepare for release 15.1-v11 (#1308) +- [5e31b5e3](https://github.com/stashed/postgres/commit/5e31b5e3) [cherry-pick] Use Go 1.22 (#1294) (#1300) +- [1ef33931](https://github.com/stashed/postgres/commit/1ef33931) [cherry-pick] Use Go 1.22 (#1285) (#1291) +- [38de64a2](https://github.com/stashed/postgres/commit/38de64a2) TLS fix for Postgres (#1276) (#1282) + + +### [16.1](https://github.com/stashed/postgres/releases/tag/16.1) + + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v19](https://github.com/stashed/redis/releases/tag/5.0.13-v19) + +- [454812a](https://github.com/stashed/redis/commit/454812a) Prepare for release 5.0.13-v19 (#224) +- [b0d2bc8](https://github.com/stashed/redis/commit/b0d2bc8) [cherry-pick] Use Go 1.22 (#220) (#221) +- [91e6c34](https://github.com/stashed/redis/commit/91e6c34) [cherry-pick] Use Go 1.22 (#216) (#217) + + +### [6.2.5-v19](https://github.com/stashed/redis/releases/tag/6.2.5-v19) + +- [82df5aa](https://github.com/stashed/redis/commit/82df5aa) Prepare for release 6.2.5-v19 (#225) +- [c92bc97](https://github.com/stashed/redis/commit/c92bc97) [cherry-pick] Use Go 1.22 (#220) (#222) +- [7132972](https://github.com/stashed/redis/commit/7132972) [cherry-pick] Use Go 1.22 (#216) (#218) + + +### [7.0.5-v12](https://github.com/stashed/redis/releases/tag/7.0.5-v12) + +- [c3d5394](https://github.com/stashed/redis/commit/c3d5394) Prepare for release 7.0.5-v12 (#226) +- [2a9d78d](https://github.com/stashed/redis/commit/2a9d78d) [cherry-pick] Use Go 1.22 (#220) (#223) +- [ca351a1](https://github.com/stashed/redis/commit/ca351a1) [cherry-pick] Use Go 1.22 (#216) (#219) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.34.0](https://github.com/stashed/stash/releases/tag/v0.34.0) + +- [c0166b9a](https://github.com/stashed/stash/commit/c0166b9ab) Prepare for release v0.34.0 (#1567) +- [99e49802](https://github.com/stashed/stash/commit/99e49802f) Use Go 1.22 (#1566) +- [a3177914](https://github.com/stashed/stash/commit/a31779145) Use Go 1.22 (#1564) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.15.0](https://github.com/stashed/ui-server/releases/tag/v0.15.0) + +- [53dadbe9](https://github.com/stashed/ui-server/commit/53dadbe9) Prepare for release v0.15.0 (#39) +- [c708bdd2](https://github.com/stashed/ui-server/commit/c708bdd2) Use Go 1.22 (#38) +- [e0c26d2a](https://github.com/stashed/ui-server/commit/e0c26d2a) Use Go 1.22 (#37) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v11](https://github.com/stashed/vault/releases/tag/1.10.3-v11) + +- [cc9393ba](https://github.com/stashed/vault/commit/cc9393ba) Prepare for release 1.10.3-v11 (#39) +- [7f427970](https://github.com/stashed/vault/commit/7f427970) [cherry-pick] Use Go 1.22 (#37) (#38) +- [bb505746](https://github.com/stashed/vault/commit/bb505746) [cherry-pick] Use Go 1.22 (#35) (#36) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG-v2024.8.27.md b/content/docs/v2024.8.27/CHANGELOG-v2024.8.27.md new file mode 100644 index 0000000000..574cc7956c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG-v2024.8.27.md @@ -0,0 +1,456 @@ +--- +title: Changelog | Stash +description: Changelog +menu: + docs_v2024.8.27: + identifier: changelog-stash-v2024.8.27 + name: Changelog-v2024.8.27 + parent: welcome + weight: 20240827 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog-v2024.8.27/ +aliases: +- /docs/v2024.8.27/CHANGELOG-v2024.8.27/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash v2024.8.27 (2024-08-28) + + +## [stashed/apimachinery](https://github.com/stashed/apimachinery) + +### [v0.35.0](https://github.com/stashed/apimachinery/releases/tag/v0.35.0) + +- [865b404c](https://github.com/stashed/apimachinery/commit/865b404c) Update deps +- [9f543113](https://github.com/stashed/apimachinery/commit/9f543113) Add condition for backup disruption (#223) +- [36516c28](https://github.com/stashed/apimachinery/commit/36516c28) Use Go 1.23 (#222) + + + +## [stashed/cli](https://github.com/stashed/cli) + +### [v0.35.0](https://github.com/stashed/cli/releases/tag/v0.35.0) + +- [a4dd874e](https://github.com/stashed/cli/commit/a4dd874e) Prepare for release v0.35.0 (#204) +- [7fac7e02](https://github.com/stashed/cli/commit/7fac7e02) Add restic `check` and `rebuild-index` cmd for better repository debugging (#203) +- [6b48bb80](https://github.com/stashed/cli/commit/6b48bb80) Print output for download cmd (#201) +- [cf294209](https://github.com/stashed/cli/commit/cf294209) Use Go 1.23 (#202) + + + +## [stashed/elasticsearch](https://github.com/stashed/elasticsearch) + +### [5.6.4-v32](https://github.com/stashed/elasticsearch/releases/tag/5.6.4-v32) + +- [022bfe28](https://github.com/stashed/elasticsearch/commit/022bfe28) Prepare for release 5.6.4-v32 (#1547) + + +### [6.2.4-v32](https://github.com/stashed/elasticsearch/releases/tag/6.2.4-v32) + +- [a1e71bca](https://github.com/stashed/elasticsearch/commit/a1e71bca) Prepare for release 6.2.4-v32 (#1548) + + +### [6.3.0-v32](https://github.com/stashed/elasticsearch/releases/tag/6.3.0-v32) + +- [590c4411](https://github.com/stashed/elasticsearch/commit/590c4411) Prepare for release 6.3.0-v32 (#1549) + + +### [6.4.0-v32](https://github.com/stashed/elasticsearch/releases/tag/6.4.0-v32) + +- [7da7110e](https://github.com/stashed/elasticsearch/commit/7da7110e) Prepare for release 6.4.0-v32 (#1550) + + +### [6.5.3-v32](https://github.com/stashed/elasticsearch/releases/tag/6.5.3-v32) + +- [0e879140](https://github.com/stashed/elasticsearch/commit/0e879140) Prepare for release 6.5.3-v32 (#1551) + + +### [6.8.0-v32](https://github.com/stashed/elasticsearch/releases/tag/6.8.0-v32) + +- [65c68556](https://github.com/stashed/elasticsearch/commit/65c68556) Prepare for release 6.8.0-v32 (#1552) + + +### [7.2.0-v32](https://github.com/stashed/elasticsearch/releases/tag/7.2.0-v32) + +- [83fbb80a](https://github.com/stashed/elasticsearch/commit/83fbb80a) Prepare for release 7.2.0-v32 (#1554) + + +### [7.3.2-v32](https://github.com/stashed/elasticsearch/releases/tag/7.3.2-v32) + +- [5659abd7](https://github.com/stashed/elasticsearch/commit/5659abd7) Prepare for release 7.3.2-v32 (#1555) +- [ac4829c5](https://github.com/stashed/elasticsearch/commit/ac4829c5) Add support for creating space during dashboard restore (#1544) + + +### [7.14.0-v18](https://github.com/stashed/elasticsearch/releases/tag/7.14.0-v18) + +- [43d959e5](https://github.com/stashed/elasticsearch/commit/43d959e5) Prepare for release 7.14.0-v18 (#1553) +- [45964df8](https://github.com/stashed/elasticsearch/commit/45964df8) Add support for creating space during dashboard restore (#1545) + + +### [8.2.0-v15](https://github.com/stashed/elasticsearch/releases/tag/8.2.0-v15) + +- [def1a44b](https://github.com/stashed/elasticsearch/commit/def1a44b) Prepare for release 8.2.0-v15 (#1556) +- [f565882f](https://github.com/stashed/elasticsearch/commit/f565882f) Add support for creating space during dashboard restore (#1543) + + + +## [stashed/enterprise](https://github.com/stashed/enterprise) + +### [v0.35.0](https://github.com/stashed/enterprise/releases/tag/v0.35.0) + +- [4f64305b](https://github.com/stashed/enterprise/commit/4f64305b6) Prepare for release v0.35.0 (#255) +- [52835160](https://github.com/stashed/enterprise/commit/52835160d) Fix backupsession running issue after deadline exceed (#253) +- [fa5833a7](https://github.com/stashed/enterprise/commit/fa5833a75) Use Go 1.23 (#254) + + + +## [stashed/etcd](https://github.com/stashed/etcd) + +### [3.5.0-v19](https://github.com/stashed/etcd/releases/tag/3.5.0-v19) + +- [901d0a4](https://github.com/stashed/etcd/commit/901d0a4) Prepare for release 3.5.0-v19 (#98) + + + +## [stashed/installer](https://github.com/stashed/installer) + +### [v2024.8.27](https://github.com/stashed/installer/releases/tag/v2024.8.27) + +- [7f7b18f1](https://github.com/stashed/installer/commit/7f7b18f1) Prepare for release v2024.8.27 (#343) +- [ae2d4f99](https://github.com/stashed/installer/commit/ae2d4f99) Use Go 1.23 (#342) +- [604ef4f3](https://github.com/stashed/installer/commit/604ef4f3) Test against k8s 1.31 (#341) + + + +## [stashed/kubedump](https://github.com/stashed/kubedump) + +### [0.1.0-v15](https://github.com/stashed/kubedump/releases/tag/0.1.0-v15) + +- [f2c07a3](https://github.com/stashed/kubedump/commit/f2c07a3) Prepare for release 0.1.0-v15 (#67) +- [92e5c91](https://github.com/stashed/kubedump/commit/92e5c91) Use Go 1.23 (#66) (#69) + + + +## [stashed/mariadb](https://github.com/stashed/mariadb) + +### [10.5.8-v26](https://github.com/stashed/mariadb/releases/tag/10.5.8-v26) + +- [b674f8ec](https://github.com/stashed/mariadb/commit/b674f8ec) Prepare for release 10.5.8-v26 (#249) +- [a020b223](https://github.com/stashed/mariadb/commit/a020b223) Use Go 1.23 (#248) (#251) + + + +## [stashed/mongodb](https://github.com/stashed/mongodb) + +### [3.4.17-v32](https://github.com/stashed/mongodb/releases/tag/3.4.17-v32) + +- [855e9eb6](https://github.com/stashed/mongodb/commit/855e9eb6) Prepare for release 3.4.17-v32 (#2154) +- [671e6536](https://github.com/stashed/mongodb/commit/671e6536) [cherry-pick] Fix MongoDB url connection str for external databases (#2138) (#2139) + + +### [3.4.22-v32](https://github.com/stashed/mongodb/releases/tag/3.4.22-v32) + +- [852d1338](https://github.com/stashed/mongodb/commit/852d1338) Prepare for release 3.4.22-v32 (#2155) +- [e3a34ce3](https://github.com/stashed/mongodb/commit/e3a34ce3) Fix MongoDB url connection str for external databases (#2138) (#2140) + + +### [3.6.8-v32](https://github.com/stashed/mongodb/releases/tag/3.6.8-v32) + +- [de6e934e](https://github.com/stashed/mongodb/commit/de6e934e) Prepare for release 3.6.8-v32 (#2157) +- [d440be0d](https://github.com/stashed/mongodb/commit/d440be0d) Fix MongoDB url connection str for external databases (#2138) (#2142) + + +### [3.6.13-v32](https://github.com/stashed/mongodb/releases/tag/3.6.13-v32) + +- [8098d72f](https://github.com/stashed/mongodb/commit/8098d72f) Prepare for release 3.6.13-v32 (#2156) +- [90b99bb7](https://github.com/stashed/mongodb/commit/90b99bb7) Fix MongoDB url connection str for external databases (#2138) (#2141) + + +### [4.0.3-v32](https://github.com/stashed/mongodb/releases/tag/4.0.3-v32) + +- [864e0893](https://github.com/stashed/mongodb/commit/864e0893) Prepare for release 4.0.3-v32 (#2159) +- [25de1602](https://github.com/stashed/mongodb/commit/25de1602) Fix MongoDB url connection str for external databases (#2138) (#2144) + + +### [4.0.5-v32](https://github.com/stashed/mongodb/releases/tag/4.0.5-v32) + +- [ca4a260f](https://github.com/stashed/mongodb/commit/ca4a260f) Prepare for release 4.0.5-v32 (#2160) +- [f056b393](https://github.com/stashed/mongodb/commit/f056b393) Fix MongoDB url connection str for external databases (#2138) (#2145) + + +### [4.0.11-v32](https://github.com/stashed/mongodb/releases/tag/4.0.11-v32) + +- [cefa6f1f](https://github.com/stashed/mongodb/commit/cefa6f1f) Prepare for release 4.0.11-v32 (#2158) +- [71014a6a](https://github.com/stashed/mongodb/commit/71014a6a) Fix MongoDB url connection str for external databases (#2138) (#2143) + + +### [4.1.4-v32](https://github.com/stashed/mongodb/releases/tag/4.1.4-v32) + +- [02f6b9fe](https://github.com/stashed/mongodb/commit/02f6b9fe) Prepare for release 4.1.4-v32 (#2162) +- [03dc6c0b](https://github.com/stashed/mongodb/commit/03dc6c0b) Fix MongoDB url connection str for external databases (#2138) (#2147) + + +### [4.1.7-v32](https://github.com/stashed/mongodb/releases/tag/4.1.7-v32) + +- [04b231f7](https://github.com/stashed/mongodb/commit/04b231f7) Prepare for release 4.1.7-v32 (#2163) +- [4fba2286](https://github.com/stashed/mongodb/commit/4fba2286) Fix MongoDB url connection str for external databases (#2138) (#2148) + + +### [4.1.13-v32](https://github.com/stashed/mongodb/releases/tag/4.1.13-v32) + +- [e872ccab](https://github.com/stashed/mongodb/commit/e872ccab) Prepare for release 4.1.13-v32 (#2161) +- [db585560](https://github.com/stashed/mongodb/commit/db585560) Fix MongoDB url connection str for external databases (#2138) (#2146) + + +### [4.2.3-v32](https://github.com/stashed/mongodb/releases/tag/4.2.3-v32) + +- [5ce8589a](https://github.com/stashed/mongodb/commit/5ce8589a) Prepare for release 4.2.3-v32 (#2164) +- [b1cba825](https://github.com/stashed/mongodb/commit/b1cba825) Fix MongoDB url connection str for external databases (#2138) (#2149) + + +### [4.4.6-v23](https://github.com/stashed/mongodb/releases/tag/4.4.6-v23) + +- [4e0a833c](https://github.com/stashed/mongodb/commit/4e0a833c) Prepare for release 4.4.6-v23 (#2165) +- [58665885](https://github.com/stashed/mongodb/commit/58665885) [cherry-pick] Fix MongoDB url connection str for external databases (#2138) (#2150) + + +### [5.0.3-v20](https://github.com/stashed/mongodb/releases/tag/5.0.3-v20) + +- [d3add779](https://github.com/stashed/mongodb/commit/d3add779) Prepare for release 5.0.3-v20 (#2167) +- [1cd5902d](https://github.com/stashed/mongodb/commit/1cd5902d) [cherry-pick] Fix MongoDB url connection str for external databases (#2138) (#2152) + + +### [5.0.15-v5](https://github.com/stashed/mongodb/releases/tag/5.0.15-v5) + +- [e075d41a](https://github.com/stashed/mongodb/commit/e075d41a) Prepare for release 5.0.15-v5 (#2166) +- [f604ef85](https://github.com/stashed/mongodb/commit/f604ef85) [cherry-pick] Fix MongoDB url connection str for external databases (#2138) (#2151) + + +### [6.0.5-v8](https://github.com/stashed/mongodb/releases/tag/6.0.5-v8) + +- [c5810d8d](https://github.com/stashed/mongodb/commit/c5810d8d) Prepare for release 6.0.5-v8 (#2168) +- [10476599](https://github.com/stashed/mongodb/commit/10476599) [cherry-pick] Fix MongoDB url connection str for external databases (#2138) (#2153) + + + +## [stashed/mysql](https://github.com/stashed/mysql) + +### [5.7.25-v32](https://github.com/stashed/mysql/releases/tag/5.7.25-v32) + +- [dc20d8fa](https://github.com/stashed/mysql/commit/dc20d8fa) Prepare for release 5.7.25-v32 (#783) +- [bb4b75c0](https://github.com/stashed/mysql/commit/bb4b75c0) Use Go 1.23 (#782) (#791) + + +### [8.0.3-v32](https://github.com/stashed/mysql/releases/tag/8.0.3-v32) + +- [3e2f7a10](https://github.com/stashed/mysql/commit/3e2f7a10) Prepare for release 8.0.3-v32 (#786) +- [f5b4e4ad](https://github.com/stashed/mysql/commit/f5b4e4ad) Use Go 1.23 (#782) (#788) + + +### [8.0.14-v32](https://github.com/stashed/mysql/releases/tag/8.0.14-v32) + +- [9af04bf3](https://github.com/stashed/mysql/commit/9af04bf3) Prepare for release 8.0.14-v32 (#784) +- [a669d830](https://github.com/stashed/mysql/commit/a669d830) Use Go 1.23 (#782) (#790) + + +### [8.0.21-v26](https://github.com/stashed/mysql/releases/tag/8.0.21-v26) + +- [05d3f4a3](https://github.com/stashed/mysql/commit/05d3f4a3) Prepare for release 8.0.21-v26 (#785) +- [47d1209f](https://github.com/stashed/mysql/commit/47d1209f) Use Go 1.23 (#782) (#789) + + + +## [stashed/nats](https://github.com/stashed/nats) + +### [2.6.1-v20](https://github.com/stashed/nats/releases/tag/2.6.1-v20) + +- [58b60c8](https://github.com/stashed/nats/commit/58b60c8) Prepare for release 2.6.1-v20 (#145) +- [2dcb9d1](https://github.com/stashed/nats/commit/2dcb9d1) Remove docker registry support (#150) +- [94005b3](https://github.com/stashed/nats/commit/94005b3) Use Go 1.23 (#144) (#149) + + +### [2.8.2-v15](https://github.com/stashed/nats/releases/tag/2.8.2-v15) + +- [a903d63](https://github.com/stashed/nats/commit/a903d63) Prepare for release 2.8.2-v15 (#146) +- [d6444b9](https://github.com/stashed/nats/commit/d6444b9) Remove docker registry support (#151) +- [5742b06](https://github.com/stashed/nats/commit/5742b06) Use Go 1.23 (#144) (#148) + + + +## [stashed/percona-xtradb](https://github.com/stashed/percona-xtradb) + +### [5.7-v27](https://github.com/stashed/percona-xtradb/releases/tag/5.7-v27) + +- [fd5e2104](https://github.com/stashed/percona-xtradb/commit/fd5e2104) Prepare for release 5.7-v27 (#322) +- [4dedfa78](https://github.com/stashed/percona-xtradb/commit/4dedfa78) Use Go 1.23 (#321) (#324) + + + +## [stashed/postgres](https://github.com/stashed/postgres) + +### [9.6.19-v31](https://github.com/stashed/postgres/releases/tag/9.6.19-v31) + +- [8ef9f3d5](https://github.com/stashed/postgres/commit/8ef9f3d5) Prepare for release 9.6.19-v31 (#1338) +- [c4ace0d3](https://github.com/stashed/postgres/commit/c4ace0d3) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1330) + + +### [10.14-v31](https://github.com/stashed/postgres/releases/tag/10.14-v31) + +- [48a9b619](https://github.com/stashed/postgres/commit/48a9b619) Prepare for release 10.14-v31 (#1331) +- [55607a3e](https://github.com/stashed/postgres/commit/55607a3e) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1323) + + +### [11.9-v31](https://github.com/stashed/postgres/releases/tag/11.9-v31) + +- [61302a08](https://github.com/stashed/postgres/commit/61302a08) Prepare for release 11.9-v31 (#1332) +- [1ffec1f8](https://github.com/stashed/postgres/commit/1ffec1f8) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1324) + + +### [12.4-v31](https://github.com/stashed/postgres/releases/tag/12.4-v31) + +- [e159aa8e](https://github.com/stashed/postgres/commit/e159aa8e) Prepare for release 12.4-v31 (#1333) +- [3af46c2d](https://github.com/stashed/postgres/commit/3af46c2d) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1325) + + +### [13.1-v28](https://github.com/stashed/postgres/releases/tag/13.1-v28) + +- [468a1f45](https://github.com/stashed/postgres/commit/468a1f45) Prepare for release 13.1-v28 (#1334) +- [87232642](https://github.com/stashed/postgres/commit/87232642) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1326) + + +### [14.0-v20](https://github.com/stashed/postgres/releases/tag/14.0-v20) + +- [f6202ce4](https://github.com/stashed/postgres/commit/f6202ce4) Prepare for release 14.0-v20 (#1335) +- [1d419325](https://github.com/stashed/postgres/commit/1d419325) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1327) + + +### [15.1-v12](https://github.com/stashed/postgres/releases/tag/15.1-v12) + +- [0937f528](https://github.com/stashed/postgres/commit/0937f528) Prepare for release 15.1-v12 (#1336) +- [00d54c52](https://github.com/stashed/postgres/commit/00d54c52) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1328) + + +### [16.1-v1](https://github.com/stashed/postgres/releases/tag/16.1-v1) + +- [b936987e](https://github.com/stashed/postgres/commit/b936987e) Prepare for release 16.1-v1 (#1337) +- [7a9f6f98](https://github.com/stashed/postgres/commit/7a9f6f98) Get postgresw sslmode from appbinding clientconfig url (#1322) (#1329) + + + +## [stashed/redis](https://github.com/stashed/redis) + +### [5.0.13-v20](https://github.com/stashed/redis/releases/tag/5.0.13-v20) + +- [8a1d962](https://github.com/stashed/redis/commit/8a1d962) Prepare for release 5.0.13-v20 (#229) +- [2af01a1](https://github.com/stashed/redis/commit/2af01a1) Use Go 1.23 (#228) (#235) + + +### [6.2.5-v20](https://github.com/stashed/redis/releases/tag/6.2.5-v20) + +- [5b9b074](https://github.com/stashed/redis/commit/5b9b074) Prepare for release 6.2.5-v20 (#230) +- [00a261f](https://github.com/stashed/redis/commit/00a261f) Use Go 1.23 (#228) (#234) + + +### [7.0.5-v13](https://github.com/stashed/redis/releases/tag/7.0.5-v13) + +- [e690a70](https://github.com/stashed/redis/commit/e690a70) Prepare for release 7.0.5-v13 (#231) +- [10f53a9](https://github.com/stashed/redis/commit/10f53a9) Use Go 1.23 (#228) (#233) + + + +## [stashed/stash](https://github.com/stashed/stash) + +### [v0.35.0](https://github.com/stashed/stash/releases/tag/v0.35.0) + +- [74a2c770](https://github.com/stashed/stash/commit/74a2c770d) Prepare for release v0.35.0 (#1577) +- [c1f2acfd](https://github.com/stashed/stash/commit/c1f2acfd9) Use Go 1.23 (#1574) +- [6747863e](https://github.com/stashed/stash/commit/6747863e8) Test against k8s 1.31 (#1573) + + + +## [stashed/ui-server](https://github.com/stashed/ui-server) + +### [v0.16.0](https://github.com/stashed/ui-server/releases/tag/v0.16.0) + +- [12b8cc87](https://github.com/stashed/ui-server/commit/12b8cc87) Prepare for release v0.16.0 (#41) +- [a3c2e27b](https://github.com/stashed/ui-server/commit/a3c2e27b) Use Go 1.23 (#40) + + + +## [stashed/vault](https://github.com/stashed/vault) + +### [1.10.3-v12](https://github.com/stashed/vault/releases/tag/1.10.3-v12) + +- [21d5420a](https://github.com/stashed/vault/commit/21d5420a) Prepare for release 1.10.3-v12 (#42) +- [f16ae4a0](https://github.com/stashed/vault/commit/f16ae4a0) Use Go 1.23 (#41) (#46) +- [9247d6bb](https://github.com/stashed/vault/commit/9247d6bb) Remove docker registry support (#44) + + + + diff --git a/content/docs/v2024.8.27/CHANGELOG.md b/content/docs/v2024.8.27/CHANGELOG.md new file mode 100644 index 0000000000..d1e78b2f1c --- /dev/null +++ b/content/docs/v2024.8.27/CHANGELOG.md @@ -0,0 +1,96 @@ +--- +title: Changelog | Stash +description: Release History +menu: + docs_v2024.8.27: + identifier: release-history + name: Changelog + parent: welcome + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/changelog/ +aliases: +- /docs/v2024.8.27/CHANGELOG/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## Current Release + +- [CHANGELOG-0.9.md](/docs/v2024.8.27/CHANGELOG-0.9) + +## Older Releases + +- [CHANGELOG-0.8.md](/docs/v2024.8.27/CHANGELOG-0.8) +- [CHANGELOG-0.7.md](/docs/v2024.8.27/CHANGELOG-0.7) +- [CHANGELOG-0.6.md](/docs/v2024.8.27/CHANGELOG-0.6) +- [CHANGELOG-0.5.md](/docs/v2024.8.27/CHANGELOG-0.5) +- [CHANGELOG-0.4.md](/docs/v2024.8.27/CHANGELOG-0.4) +- [CHANGELOG-0.3.md](/docs/v2024.8.27/CHANGELOG-0.3) +- [CHANGELOG-0.2.md](/docs/v2024.8.27/CHANGELOG-0.2) +- [CHANGELOG-0.1.md](/docs/v2024.8.27/CHANGELOG-0.1) diff --git a/content/docs/v2024.8.27/CONTRIBUTING.md b/content/docs/v2024.8.27/CONTRIBUTING.md new file mode 100644 index 0000000000..e972e806df --- /dev/null +++ b/content/docs/v2024.8.27/CONTRIBUTING.md @@ -0,0 +1,97 @@ +--- +title: Contributing | Stash +description: Contributing +menu: + docs_v2024.8.27: + identifier: contributing-stash + name: Contributing + parent: welcome + weight: 1000 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/contributing/ +aliases: +- /docs/v2024.8.27/CONTRIBUTING/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Contribution Guidelines + +Want to contribute to Stash? + +## Getting Help + +To speak with us, please leave a message on [our website](https://appscode.com/contact/). To receive product announcements, follow us on [Twitter](https://twitter.com/KubeStash). + +## Bugs/Feature request + +If you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/project/issues/new). + +## Spread the word + +If you have written blog post or tutorial on Stash, please share it with us on [Twitter](https://twitter.com/KubeStash). diff --git a/content/docs/v2024.8.27/FAQ/README.md b/content/docs/v2024.8.27/FAQ/README.md new file mode 100644 index 0000000000..dfeb714f0a --- /dev/null +++ b/content/docs/v2024.8.27/FAQ/README.md @@ -0,0 +1,124 @@ +--- +title: FAQ | Stash +menu: + docs_v2024.8.27: + identifier: faq-readme + name: README + parent: faq + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: faq +url: /docs/v2024.8.27/faq/ +aliases: +- /docs/v2024.8.27/faq/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Frequently Asked Questions + +## How to temporarily pause a backup? + +### Pause Backup + +Run the following commands to pasue a backup temporarily, + +```bash +# pause backup by patching BackupConfiguration +❯ kubectl patch backupconfiguration -n --type="merge" --patch='{"spec": {"paused": true}}' + +# pause backup using Stash `kubectl` plugin +❯ kubectl stash pause backup -n demo --backupconfig= +``` + +### Resume Backup + +Similarly you can also resume a paused backup. Run the following commands to resume a backup, + +```bash +# resume backup by patching BackupConfiguration +kubectl patch backupconfiguration -n --type="merge" --patch='{"spec": {"paused": false}}' + +# resume backup using Stash `kubectl` plugin +❯ kubectl stash resume backup -n demo --backupconfig= +``` + +## When `retentionPolicy` is applied? + +`retentionPolicy` specifies the policy to follow for cleaning old snapshots. Stash removes any snapshot from backend that falls outside the scope of the policy. When a `BackupSession` is completed, Stash checks for outdated snapshots according to the `retentionPolicy` and remove them. If you use the policy `keep-last-5`, Stash will remove any snapshot that is older than the most recent 5 snapshots. + +## Do I need to delete the init containers after recovery? + +You don't need to delete the init containers after recovery. If your workload restarts with the `stash-init` init-container for any reason, the init-container will skip running restore process if there is no pending RestoreSession for this workload. If you delete the RestoreSession, Stash will remove the `init-container` automatically. Beware that it will cause your workload to restart. + +## I am experiencing problem X. How do I fix this? + +Please check our troubleshooting guide [here](/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/). + +## Need More Help? + +To speak with us, please leave a message on [our website](https://appscode.com/contact/). To receive product announcements, follow us on [Twitter](https://twitter.com/KubeStash). diff --git a/content/docs/v2024.8.27/FAQ/_index.md b/content/docs/v2024.8.27/FAQ/_index.md new file mode 100644 index 0000000000..c086bbd1ca --- /dev/null +++ b/content/docs/v2024.8.27/FAQ/_index.md @@ -0,0 +1,76 @@ +--- +title: FAQ +description: FAQ | Stash +menu: + docs_v2024.8.27: + identifier: faq + name: FAQ + weight: 1250 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/README.md b/content/docs/v2024.8.27/README.md new file mode 100644 index 0000000000..37ca43c427 --- /dev/null +++ b/content/docs/v2024.8.27/README.md @@ -0,0 +1,145 @@ +--- +title: Welcome | Stash +description: Welcome to Stash +menu: + docs_v2024.8.27: + identifier: readme-stash + name: Readme + parent: welcome + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/ +aliases: +- /docs/v2024.8.27/ +- /docs/v2024.8.27/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash + +[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 set up 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. Users may even extend Stash via [addons](https://stash.run/docs/{{< param "info.version" >}}/guides/addons/overview/) for any custom workload. + +Here, we are going to give you an overview of Stash documentation structure. + +## [Concepts](/docs/v2024.8.27/concepts/) + +Concept explains some significant aspect of Stash. This is where you can learn about what Stash does and how it does it. + +- [Stash Overview](/docs/v2024.8.27/concepts/what-is-stash/overview/) Provides an introduction to Stash and gives an overview of the features it provides. +- [Stash Architecture](/docs/v2024.8.27/concepts/what-is-stash/architecture/) Provides an overview of Stash architecture and it's core components. +- [Stash API](/docs/v2024.8.27/concepts/crds/repository/) Introduces Stash CRDs. + +## [Setup](/docs/v2024.8.27/setup/) + +Setup contains instruction for installing, uninstalling, and upgrading Stash. + +- **Install Stash:** Provides installation instructions for Stash and its various components. + - [Stash](/docs/v2024.8.27/setup/install/stash/): Provides installation instructions for Stash. + - [Stash kubectl Plugin](/docs/v2024.8.27/setup/install/kubectl-plugin/): Provides installation instructions for Stash `kubectl` plugin. + - [Troubleshooting](/docs/v2024.8.27/setup/install/troubleshooting/): Provides troubleshooting guide for various installation problems. +- **Uninstall Stash:** Provides uninstallation instructions for Stash and its various components. + - [Stash](/docs/v2024.8.27/setup/uninstall/stash/): Provides uninstallation instructions for Stash. + - [Stash kubectl Plugin](/docs/v2024.8.27/setup/uninstall/kubectl-plugin/): Provides uninstallation instructions for Stash `kubectl` plugin. +- [Upgrade Stash](/docs/v2024.8.27/setup/upgrade/): Provides instruction for updating Stash license and upgrading between various Stash versions. + +## [Guides](/docs/v2024.8.27/guides/) + +Guides show how to perform different operations with Stash. + +- [Supported Backends](/docs/v2024.8.27/guides/backends/overview/): Describes how to configure different storage for storing backed up data. +- [Workload Volume Backup](/docs/v2024.8.27/guides/workloads/overview/): Shows how to use Stash to backup and restore volumes of a workload (i.e. `Deployment`, `StatefulSet`, `DaemonSet`, etc). +- [Stand-alone Volume Backup](/docs/v2024.8.27/guides/volumes/overview/): Shows how to use Stash to backup and restore stand-alone volumes(i.e. `PersistentVolumeClaim`). +- [Batch Backup](/docs/v2024.8.27/guides/batch-backup/overview/): Shows how to backup multiple co-related components using a single configuration known as `BackupBatch`. +- [Auto Backup](/docs/v2024.8.27/guides/auto-backup/overview/): Shows how to configure automatic backup of any stateful workload in your cluster. +- [Volume Snapshot](/docs/v2024.8.27/guides/volumesnapshot/overview/): Shows how Stash takes snapshot of `PersistentVolumeClaim`s and restore them from snapshot using Kubernetes `VolumeSnapshot` API. + +- **Different Use Cases:** +Shows different uses cases of Stash like instant backup, pause backup, cross-namespace backup and restore etc. + + - [Instant Backup](/docs/v2024.8.27/guides/use-cases/instant-backup/): Shows you how to take an instant backup in Stash. + - [Exclude/Include Files](/docs/v2024.8.27/guides/use-cases/exclude-include-files/): Shows how to exclude/include subset of files during backup/restore process. + - [Pause Backup](/docs/v2024.8.27/guides/use-cases/pause-backup/): Shows how to pause a backup temporarily. + - [Clone Data Volumes](/docs/v2024.8.27/guides/use-cases/clone-pvc/): Shows how to clone data volumes of a workload into a different namespace in a cluster using Stash. + - [File Ownership](/docs/v2024.8.27/guides/use-cases/ownership/): Explains when and how ownership of the restored files can be changed. + - [Cross-Cluster Backup and Restore](/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/): Shows how to take backup and restore across clusters using Stash. + - [Customize Backup and Restore](/docs/v2024.8.27/guides/use-cases/customize-backup-restore/): Shows how to customize backup and restore processes in Stash according to your needs. + +- **Managed Backup** +Shows how backup and restore can be managed in some specific scenerios. + - [Dedicated Backup Namespace](/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/): Shows you how to manage backup and restore from a dedicated namespace for targets of different namespaces using Stash. + - [Dedicated Storage Namespace](/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/): Shows you how to take backup and restore by keeping the storage resources (Repository and backend Secret) in a dedicated namespace using Stash. + +- [Platforms](/docs/v2024.8.27/guides/platforms/eks-irsa/): Shows how to use Stash to backup and restore volumes of a Kubernetes workload running in different platforms. +- [Monitoring](/docs/v2024.8.27/guides/monitoring/overview/): Shows how Prometheus monitoring works with Stash, what metrics Stash exports, and how to enable monitoring. +- [Hooks](/docs/v2024.8.27/guides/hooks/overview/): Shows how to execute different actions before/after the backup/restore process. +- [CLI](/docs/v2024.8.27/guides/cli/kubectl-plugin/): Shows how to manage Stash objects quickly and easily using Stash `kubectl` plugin. +- [Troubleshooting](/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/): Gives an overview of how you can gather the necessary information to identify the issue that causes the backup/restore failure. +- [Security](/docs/v2024.8.27/guides/security/rbac/): Describes different built-in cluster security support by Stash. + +We're always looking for help improving our documentation, so please don't hesitate to [file an issue](https://github.com/stashed/project/issues/new) if you see some problem. diff --git a/content/docs/v2024.8.27/_index.md b/content/docs/v2024.8.27/_index.md new file mode 100644 index 0000000000..fb89dc1ab0 --- /dev/null +++ b/content/docs/v2024.8.27/_index.md @@ -0,0 +1,76 @@ +--- +title: Docs | Stash +description: Stash Docs +menu: + docs_v2024.8.27: + identifier: welcome + name: Welcome + weight: 10 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/acknowledgement.md b/content/docs/v2024.8.27/acknowledgement.md new file mode 100644 index 0000000000..26e97a3727 --- /dev/null +++ b/content/docs/v2024.8.27/acknowledgement.md @@ -0,0 +1,84 @@ +--- +title: Acknowledgement | Stash +description: Acknowledgement +menu: + docs_v2024.8.27: + identifier: acknowledgement-stash + name: Acknowledgement + parent: welcome + weight: 1010 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/acknowledgement/ +aliases: +- /docs/v2024.8.27/acknowledgement/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Acknowledgement + - Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project. diff --git a/content/docs/v2024.8.27/addons/_index.md b/content/docs/v2024.8.27/addons/_index.md new file mode 100644 index 0000000000..f5a4d15846 --- /dev/null +++ b/content/docs/v2024.8.27/addons/_index.md @@ -0,0 +1,76 @@ +--- +title: Addons | Stash +menu: + docs_v2024.8.27: + identifier: stash-addons + name: Addons + weight: 60 + pre: dropdown +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/elasticsearch/README.md b/content/docs/v2024.8.27/addons/elasticsearch/README.md new file mode 100644 index 0000000000..a24d1f784c --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/README.md @@ -0,0 +1,108 @@ +--- +title: Elasticsearch Addon Overview | Stash +description: Elasticsearch Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch-readme + name: Readme + parent: stash-elasticsearch + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/elasticsearch/ +aliases: +- /docs/v2024.8.27/addons/elasticsearch/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Elasticsearch Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash Elasticsearch addon enables Stash to backup and restore Elasticsearch databases. + +This guide will give you an overview of which Elasticsearch versions are supported and how the docs are organized. + +## Available Elasticsearch Addon Versions + +Stash has the following addon versions for Elasticsearch: + +{{< versionlist "elasticsearch">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, Elasticsearch addon with version `7.x.x` should be able take backup of any Elasticsearch of `7.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash Elasticsearch documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/elasticsearch/overview/) gives an overview of how backup and restore process for Elasticsearch database works in Stash. +- [KubeDB managed Elasticsearch](/docs/v2024.8.27/addons/elasticsearch/kubedb/) shows how to backup and restore a KubeDB managed Elasticsearch database. +- [Auto-Backup](/docs/v2024.8.27/addons/elasticsearch/auto-backup/) shows how to configure a generic backup template for all the Elasticsearch databases of a cluster. +- [Customizing Backup & Restore Process](/docs/v2024.8.27/addons/elasticsearch/customization/) shows how to customize the backup & restore process. diff --git a/content/docs/v2024.8.27/addons/elasticsearch/_index.md b/content/docs/v2024.8.27/addons/elasticsearch/_index.md new file mode 100644 index 0000000000..4e56e376c1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash Elasticsearch Addon +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch + name: Elasticsearch + parent: stash-addons + weight: 20 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/backupblueprint.yaml b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/backupblueprint.yaml new file mode 100644 index 0000000000..9877ccb0bf --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/backupblueprint.yaml @@ -0,0 +1,28 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: elasticsearch-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: elasticsearch-backup-7.3.2 + schedule: "*/5 * * * *" + interimVolumeTemplate: + metadata: + name: ${TARGET_APP_RESOURCE}-${TARGET_NAME} # To ensure that the PVC names are unique for different database + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-2.yaml b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-2.yaml new file mode 100644 index 0000000000..f7a7a0668d --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-2.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-3.yaml b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-3.yaml new file mode 100644 index 0000000000..4779725642 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo-3.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template + params.stash.appscode.com/args: --ignoreType=settings,template +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo.yaml b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo.yaml new file mode 100644 index 0000000000..61bc84d5b6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/examples/es-demo.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-2.png b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-2.png new file mode 100644 index 0000000000..b4d3b419a6 Binary files /dev/null and b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-2.png differ diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-3.png b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-3.png new file mode 100644 index 0000000000..53b7200d5d Binary files /dev/null and b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo-3.png differ diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo.png b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo.png new file mode 100644 index 0000000000..86d770d37c Binary files /dev/null and b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/images/es-demo.png differ diff --git a/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/index.md b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/index.md new file mode 100644 index 0000000000..56d608a7ba --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/auto-backup/index.md @@ -0,0 +1,759 @@ +--- +title: Elasticsearch Auto-Backup | Stash +description: Backup Elasticsearch using Stash Auto-Backup +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch-auto-backup + name: Auto-Backup + parent: stash-elasticsearch + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup Elasticsearch using Stash Auto-Backup + +Stash can be configured to automatically backup any Elasticsearch database in your cluster. Stash enables cluster administrators to deploy backup blueprints ahead of time so that the database owners can easily backup their database with just a few annotations. + +In this tutorial, we are going to show how you can configure a backup blueprint for Elasticsearch databases in your cluster and backup them with few annotations. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. +- If you are not familiar with how Stash backup and restore Elasticsearch databases, please check the following guide [here](/docs/v2024.8.27/addons/elasticsearch/overview/). +- If you are not familiar with how auto-backup works in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/overview/). +- If you are not familiar with the available auto-backup options for databases in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/database/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) + +In this tutorial, we are going to show backup of three different Elasticsearch databases on three different namespaces named `demo`, `demo-2`, and `demo-3`. Create the namespaces as below if you haven't done it already. + +```bash +❯ kubectl create ns demo +namespace/demo created + +❯ kubectl create ns demo-2 +namespace/demo-2 created + +❯ kubectl create ns demo-3 +namespace/demo-3 created +``` + +When you install Stash, it will automatically install the necessary addon to backup databases. Make sure you have installed the Elasticsearch addon for Stash. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep elasticsearch +elasticsearch-backup-5.6.4 4d4h +elasticsearch-backup-6.2.4 4d4h +elasticsearch-backup-6.3.0 4d4h +elasticsearch-backup-6.4.0 4d4h +elasticsearch-backup-6.5.3 4d4h +elasticsearch-backup-6.8.0 4d4h +elasticsearch-backup-7.2.0 4d4h +elasticsearch-backup-7.3.2 4d4h +elasticsearch-restore-5.6.4 4d4h +elasticsearch-restore-6.2.4 4d4h +elasticsearch-restore-6.3.0 4d4h +elasticsearch-restore-6.4.0 4d4h +elasticsearch-restore-6.5.3 4d4h +elasticsearch-restore-6.8.0 4d4h +elasticsearch-restore-7.2.0 4d4h +elasticsearch-restore-7.3.2 4d4h +``` + +## Prepare Backup Blueprint + +To backup an Elasticsearch database using Stash, you have to create a `Secret` containing the backend credentials, a `Repository` containing the backend information, and a `BackupConfiguration` containing the schedule and target information. A `BackupBlueprint` allows you to specify a template for the `Repository` and the `BackupConfiguration`. + +The `BackupBlueprint` is a non-namespaced CRD. So, once you have created a `BackupBlueprint`, you can use it to backup any Elasticsearch database of any namespace just by creating the storage `Secret` in that namespace and adding few annotations to your Elasticsearch CRO. Then, Stash will automatically create a `Repository` and a `BackupConfiguration` according to the template to backup the database. + +Below is the `BackupBlueprint` object that we are going to use in this tutorial, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: elasticsearch-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: elasticsearch-backup-7.3.2 + schedule: "*/5 * * * *" + interimVolumeTemplate: + metadata: + name: ${TARGET_APP_RESOURCE}-${TARGET_NAME} # To ensure that the PVC names are unique for different database + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we are using a GCS bucket as our backend. We are providing `gcs-secret` at the `storageSecretName` field. Hence, we have to create a secret named `gcs-secret` with the access credentials of our bucket in every namespace where we want to enable backup through this blueprint. + +Notice the `prefix` field of `backend` section. We have used some variables in form of `${VARIABLE_NAME}`. Stash will automatically resolve those variables from the database information to make the backend prefix unique for each database instance. + +We have also used some variables in `name` field of the `interimVolumeTemplate` section. This is to ensure that the generated PVC name becomes unique for the database instances. + +Let's create the `BackupBlueprint` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/auto-backup/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/elasticsearch-backup-template created +``` + +Now, we are ready to backup our Elasticsearch databases using few annotations. You can check available auto-backup annotations for a databases from [here](/docs/v2024.8.27/guides/auto-backup/database/#available-auto-backup-annotations-for-database). + +## Auto-backup with default configurations + +In this section, we are going to backup an Elasticsearch database of `demo` namespace. We are going to use the default configurations specified in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo` namespace with the access credentials to our GCS bucket. + +```bash +❯ echo -n 'changeit' > RESTIC_PASSWORD +❯ echo -n '' > GOOGLE_PROJECT_ID +❯ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +❯ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an Elasticsearch CRO in `demo` namespace. Below is the YAML of the Elasticsearch object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut +``` + +Notice the `annotations` section. We are pointing to the `BackupBlueprint` that we have created earlier though `stash.appscode.com/backup-blueprint` annotation. Stash will watch this annotation and create a `Repository` and a `BackupConfiguration` according to the `BackupBlueprint`. + +Let's create the above Elasticsearch CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/auto-backup/examples/es-demo.yaml +elasticsearch.kubedb.com/sample-elasticsearch created +``` + +### Verify Auto-backup configured + +In this section, we are going to verify whether Stash has created the respective `Repository` and `BackupConfiguration` for our Elasticsearch database we have just deployed or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Elasticsearch or not. + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-es-demo 5s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo app-es-demo -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: +... + name: app-es-demo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo/elasticsearch/es-demo + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our ElasticSearch in `demo` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +app-es-demo elasticsearch-backup-7.3.2 */5 * * * * Ready 12s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo app-es-demo -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-es-demo + namespace: demo + ... +spec: + driver: Restic + interimVolumeTemplate: + metadata: + name: elasticsearch-es-demo + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: standard + status: {} + repository: + name: app-es-demo + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: es-demo + task: + name: elasticsearch-backup-7.3.2 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-12T11:46:53Z" + message: Repository demo/app-es-demo exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-12T11:46:53Z" + message: Backend Secret demo/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-12T11:46:53Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/es-demo found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-12T11:46:53Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `interimVolumeTemplate` section. The variables of `name` field have been substituted by the equivalent information from the database. + +Also, notice the `target` section. Stash has automatically added the Elasticsearch as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-es-demo-1613130605 BackupConfiguration app-es-demo 0s +app-es-demo-1613130605 BackupConfiguration app-es-demo Running 10s +app-es-demo-1613130605 BackupConfiguration app-es-demo Succeeded 46s +``` + +Once the backup has been completed successfully, you should see the backed up data has been stored in the bucket at the directory pointed by the `prefix` field of the `Repository`. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with a custom schedule + +In this section, we are going to backup an Elasticsearch database of `demo-2` namespace. This time, we are going to overwrite the default schedule used in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-2` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-2 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an Elasticsearch CRO in `demo-2` namespace. Below is the YAML of the Elasticsearch object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut +``` + +Notice the `annotations` section. This time, we have passed a schedule via `stash.appscode.com/schedule` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above Elasticsearch CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/auto-backup/examples/es-demo-2.yaml +elasticsearch.kubedb.com/es-demo-2 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup has been configured properly or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Elasticsearch or not. + +```bash +❯ kubectl get repository -n demo-2 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-es-demo-2 25s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-2 app-es-demo-2 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-es-demo-2 + namespace: demo-2 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo-2/elasticsearch/es-demo-2 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our ElasticSearch in `demo-2` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + + +```bash +❯ kubectl get backupconfiguration -n demo-2 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-es-demo-2 elasticsearch-backup-7.3.2 */3 * * * * Ready 77s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-2 app-es-demo-2 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-es-demo-2 + namespace: demo-2 + ... +spec: + driver: Restic + interimVolumeTemplate: + metadata: + name: elasticsearch-es-demo-2 + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: standard + status: {} + repository: + name: app-es-demo-2 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/3 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: es-demo-2 + task: + name: elasticsearch-backup-7.3.2 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-12T12:24:07Z" + message: Repository demo-2/app-es-demo-2 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-12T12:24:07Z" + message: Backend Secret demo-2/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-12T12:24:07Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/es-demo-2 found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-12T12:24:07Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `schedule` section. This time the `BackupConfiguration` has been created with the schedule we have provided via annotation. + +Also, notice the `target` section. Stash has automatically added the new Elasticsearch as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-2 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-es-demo-2-1613132831 BackupConfiguration app-es-demo-2 0s +app-es-demo-2-1613132831 BackupConfiguration app-es-demo-2 Running 17s +app-es-demo-2-1613132831 BackupConfiguration app-es-demo-2 Succeeded 41s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with custom parameters + +In this section, we are going to backup an Elasticsearch database of `demo-3` namespace. This time, we are going to pass some parameters for the Task through the annotations. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-3` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-3 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an Elasticsearch CRO in `demo-3` namespace. Below is the YAML of the Elasticsearch object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: es-demo-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: elasticsearch-backup-template + params.stash.appscode.com/args: --ignoreType=settings,template +spec: + version: xpack-7.9.1-v1 + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut +``` + +Notice the `annotations` section. This time, we have passed an argument via `params.stash.appscode.com/args` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above Elasticsearch CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/auto-backup/examples/es-demo-3.yaml +elasticsearch.kubedb.com/es-demo-3 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup resources has been created or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Elasticsearch or not. + +```bash +❯ kubectl get repository -n demo-3 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-es-demo-3 23s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-3 app-es-demo-3 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-es-demo-3 + namespace: demo-3 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo-3/elasticsearch/es-demo-3 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our ElasticSearch in `demo-3` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-3 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-es-demo-3 elasticsearch-backup-7.3.2 */5 * * * * Ready 84s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-3 app-es-demo-3 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-es-demo-3 + namespace: demo-3 + ... +spec: + driver: Restic + interimVolumeTemplate: + metadata: + name: elasticsearch-es-demo-3 + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: standard + status: {} + repository: + name: app-es-demo-3 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: es-demo-3 + task: + name: elasticsearch-backup-7.3.2 + params: + - name: args + value: --ignoreType=settings,template + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-12T12:39:14Z" + message: Repository demo-3/app-es-demo-3 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-12T12:39:14Z" + message: Backend Secret demo-3/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-12T12:39:14Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/es-demo-3 found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-12T12:39:14Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `task` section. The `args` parameter that we had passed via annotations has been added to the `params` section. + +Also, notice the `target` section. Stash has automatically added the new Elasticsearch as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-3 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-es-demo-3-1613133604 BackupConfiguration app-es-demo-3 0s +app-es-demo-3-1613133604 BackupConfiguration app-es-demo-3 Running 5s +app-es-demo-3-1613133604 BackupConfiguration app-es-demo-3 Succeeded 48s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Cleanup + +To cleanup the resources crated by this tutorial, run the following commands, + +```bash +❯ kubectl delete -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/auto-backup/examples/ +backupblueprint.stash.appscode.com "elasticsearch-backup-template" deleted +elasticsearch.kubedb.com "es-demo-2" deleted +elasticsearch.kubedb.com "es-demo-3" deleted +elasticsearch.kubedb.com "es-demo" deleted + +❯ kubectl delete repository -n demo --all +repository.stash.appscode.com "app-es-demo" deleted +❯ kubectl delete repository -n demo-2 --all +repository.stash.appscode.com "app-es-demo-2" deleted +❯ kubectl delete repository -n demo-3 --all +repository.stash.appscode.com "app-es-demo-3" deleted +``` diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/ignore-sg-index.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/ignore-sg-index.yaml new file mode 100644 index 0000000000..3bba4547e5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/ignore-sg-index.yaml @@ -0,0 +1,32 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + params: + - name: args + value: --match=^(?![.])(?!searchguard).+ --ignoreType=template + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/multi-retention-policy.yaml new file mode 100644 index 0000000000..77b2a958f6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/multi-retention-policy.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: sample-es-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/passing-args.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/passing-args.yaml new file mode 100644 index 0000000000..f20f381afc --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/passing-args.yaml @@ -0,0 +1,32 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + params: + - name: args + value: --ignoreType=template,settings + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/resource-limit.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/resource-limit.yaml new file mode 100644 index 0000000000..897917ee1c --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/resource-limit.yaml @@ -0,0 +1,38 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/specific-user.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/specific-user.yaml new file mode 100644 index 0000000000..3591c744c3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/backup/specific-user.yaml @@ -0,0 +1,34 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/passing-args.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/passing-args.yaml new file mode 100644 index 0000000000..412599ccfb --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/passing-args.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo # this label is mandatory if you are using KubeDB to deploy the database. Otherwise, Elasticsearch crd will be stuck in `Provisioning` phase. +spec: + task: + name: elasticsearch-restore-7.3.2 + params: + - name: args + value: --ignoreType=template,settings + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/resource-limit.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/resource-limit.yaml new file mode 100644 index 0000000000..4361a9c942 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/resource-limit.yaml @@ -0,0 +1,35 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-snapshot.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-snapshot.yaml new file mode 100644 index 0000000000..9557382c35 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-snapshot.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [4bc21d6f] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-user.yaml b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-user.yaml new file mode 100644 index 0000000000..8e30318117 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/examples/restore/specific-user.yaml @@ -0,0 +1,31 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/customization/index.md b/content/docs/v2024.8.27/addons/elasticsearch/customization/index.md new file mode 100644 index 0000000000..a520ad67c0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/customization/index.md @@ -0,0 +1,464 @@ +--- +title: Elasticsearch Backup Customization | Stash +description: Customizing Elasticsearch Backup and Restore process with Stash +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch-customization + name: Customizing Backup & Restore Process + parent: stash-elasticsearch + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup and Restore Process + +Stash provides rich customization supports for the backup and restore process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, ignoring some indexes during the backup process, etc. + +### Passing arguments to the backup process + +Stash Elasticsearch addon uses [multielasticdump](https://github.com/elasticsearch-dump/elasticsearch-dump#multielasticdump) for backup. You can pass arguments to the `multielasticdump` through `args` param under `task.params` section. + +The below example shows how you can pass the `--ignoreType` argument to ignore `template` and `settings` during backup. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + params: + - name: args + value: --ignoreType=template,settings + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Ignoring Search Guard Indexes + +If you are using the Search Guard variant for your Elasticsearch, you can pass a regex through the `--match` argument to ignore the Search Guard specific indexes during backup. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + params: + - name: args + value: --match=^(?![.])(?!searchguard).+ --ignoreType=template + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: sample-es-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +Stash also uses `multielasticdump` during the restore process. In this section, we are going to show how you can pass arguments to the restore process, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process + +Similar to the backup process, you can pass arguments to the restore process through the `args` params under `task.params` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + params: + - name: args + value: --ignoreType=template,settings + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore job as a specific user + +You can provide `securityContext` under `runtimeSettings.pod` section to run the restore job as a specific user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore job + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore job. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-elasticsearch-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-restore-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/backupconfiguration.yaml new file mode 100644 index 0000000000..e98bd012df --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/backupconfiguration.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-es-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-es + interimVolumeTemplate: + metadata: + name: sample-es-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/repository.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/repository.yaml new file mode 100644 index 0000000000..73bc3914a8 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/backup/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/sample-es + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/init_sample.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/init_sample.yaml new file mode 100644 index 0000000000..1337e9b099 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/init_sample.yaml @@ -0,0 +1,41 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: init-sample + namespace: restored +spec: + version: opendistro-1.9.0-v1 + storageType: Durable + init: + waitForInitialRestore: true + topology: + master: + suffix: master + replicas: 1 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + data: + suffix: data + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + ingest: + suffix: client + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/sample_es.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/sample_es.yaml new file mode 100644 index 0000000000..253bafcec9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/elasticsearch/sample_es.yaml @@ -0,0 +1,39 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: sample-es + namespace: demo +spec: + version: xpack-7.9.1-v1 + storageType: Durable + topology: + master: + suffix: master + replicas: 1 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + data: + suffix: data + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + ingest: + suffix: client + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/init_sample_restore.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/init_sample_restore.yaml new file mode 100644 index 0000000000..7ec161d19e --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/init_sample_restore.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: init-sample-restore + namespace: restored +spec: + task: + name: elasticsearch-restore-7.3.2 + params: + - name: args + value: --ignoreType=settings,template + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: init-sample + interimVolumeTemplate: + metadata: + name: init-sample-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/restoresession.yaml b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/restoresession.yaml new file mode 100644 index 0000000000..66f783f215 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/examples/restore/restoresession.yaml @@ -0,0 +1,30 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-es-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-es + interimVolumeTemplate: + metadata: + name: sample-es-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/images/sample-es-backup.png b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/images/sample-es-backup.png new file mode 100644 index 0000000000..f902c53009 Binary files /dev/null and b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/images/sample-es-backup.png differ diff --git a/content/docs/v2024.8.27/addons/elasticsearch/kubedb/index.md b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/index.md new file mode 100644 index 0000000000..6f5c7b2749 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/kubedb/index.md @@ -0,0 +1,1235 @@ +--- +title: Elasticsearch | Stash +description: Backup and restore Elasticsearch deployed with KubeDB +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch-kubedb + name: KubeDB managed Elasticsearch + parent: stash-elasticsearch + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and restore Elasticsearch database deployed with KubeDB + +Stash 0.9.0+ supports backup and restoration of Elasticsearch clusters. This guide will show you how you can backup and restore your KubeDB deployed Elasticsearch database using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). +- If you are not familiar with how Stash backup and restore Elasticsearch databases, please check the following guide [here](/docs/v2024.8.27/addons/elasticsearch/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created it yet. + +```console +$ kubectl create ns demo +namespace/demo created +``` + +>Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples). + +## Prepare Elasticsearch + +In this section, we are going to deploy an Elasticsearch database using KubeDB. Then, we are going to insert some sample data into it. + +### Deploy Elasticsearch + +At first, let's deploy a sample Elasticsearch database. Below is the YAML of a sample Elasticsearch crd that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: sample-es + namespace: demo +spec: + version: xpack-7.9.1-v1 + storageType: Durable + topology: + master: + suffix: master + replicas: 1 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + data: + suffix: data + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + ingest: + suffix: client + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +Let's create the above `Elasticsearch` object, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/elasticsearch/sample_es.yaml +elasticsearch.kubedb.com/sample-es created +``` + +KubeDB will create the necessary resources to deploy the Elasticsearch database according to the above specification. Let's wait until the database to be ready to use, + +```console +❯ kubectl get elasticsearch -n demo -w +NAME VERSION STATUS AGE +sample-es xpack-7.9.1-v1 Provisioning 89s +sample-es xpack-7.9.1-v1 Ready 5m26s +``` + +The database is in `Ready` state. It means the database is ready to accept connections. + +### Insert Sample Data + +In this section, we are going to create few indexes in the deployed Elasticsearch. At first, we are going to port-forward the respective Service so that we can connect with the database from our local machine. Then, we are going to insert some data into the Elasticsearch. + +#### Port-forward the Service + +KubeDB will create few Services to connect with the database. Let's see the Services created by KubeDB for our Elasticsearch, + +```bash +❯ kubectl get service -n demo +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-es ClusterIP 10.108.129.195 9200/TCP 10m +sample-es-master ClusterIP None 9300/TCP 10m +sample-es-pods ClusterIP None 9200/TCP 10m +``` + +Here, we are going to use the `sample-es` Service to connect with the database. Now, let's port-forward the `sample-es` Service. Run the following command into a separate terminal. + +```bash +❯ kubectl port-forward -n demo service/sample-es 9200 +Forwarding from 127.0.0.1:9200 -> 9200 +Forwarding from [::1]:9200 -> 9200 +``` + +#### Export the Credentials + +KubeDB will create some Secrets for the database. Let's check which Secrets have been created by KubeDB for our `sample-es` Elasticsearch. + +```bash +❯ kubectl get secret -n demo | grep sample-es +sample-es-ca-cert kubernetes.io/tls 2 21m +sample-es-config Opaque 1 21m +sample-es-elastic-cred kubernetes.io/basic-auth 2 21m +sample-es-token-ctzn5 kubernetes.io/service-account-token 3 21m +sample-es-transport-cert kubernetes.io/tls 3 21m +``` + +Here, `sample-es-elastic-cred` contains the credentials require to connect with the database. Let's export the credentials as environment variable to our current shell so that we can easily environment variables to connect with the database. + +```bash +❯ export USER=$(kubectl get secrets -n demo sample-es-elastic-cred -o jsonpath='{.data.\username}' | base64 -d) +❯ export PASSWORD=$(kubectl get secrets -n demo sample-es-elastic-cred -o jsonpath='{.data.\password}' | base64 -d) +``` + +#### Insert data + +Now, let's create an index called `products` and insert some data into it. + +```bash +# Elasticsearch will automatically create the index if it does not exist already. +❯ curl -XPOST --user "$USER:$PASSWORD" "http://localhost:9200/products/_doc?pretty" -H 'Content-Type: application/json' -d' +{ + "name": "KubeDB", + "vendor": "AppsCode Inc.", + "description": "Database Operator for Kubernetes" +} +' + +# Let's insert another data into the "products" index. +❯ curl -XPOST --user "$USER:$PASSWORD" "http://localhost:9200/products/_doc?pretty" -H 'Content-Type: application/json' -d' +{ + "name": "Stash", + "vendor": "AppsCode Inc.", + "description": "Backup tool for Kubernetes workloads" +} +' +``` + +Let's create another index called `companies` and insert some data into it. + +```bash +❯ curl -XPOST --user "$USER:$PASSWORD" "http://localhost:9200/companies/_doc?pretty" -H 'Content-Type: application/json' -d' +{ + "name": "AppsCode Inc.", + "mission": "Accelerate the transition to Containers by building a Kubernetes-native Data Platform", + "products": ["KubeDB", "Stash", "KubeVault", "Kubeform", "ByteBuilders"] +} +' +``` + +Now, let's verify that the indexes have been created successfully. + +```bash +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/_cat/indices?v&s=index&pretty" +health status index uuid pri rep docs.count docs.deleted store.size pri.store.size +green open companies qs52L4xrShay14NPUExDNw 1 1 1 0 11.5kb 5.7kb +green open products 6aCd7y_kQf26sYG3QdY0ow 1 1 2 0 20.7kb 10.3kb +``` + +Also, let's verify the data in the indexes: + +```bash +# Verify the data in the "product" index. +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/products/_search?pretty" +{ + "took" : 354, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 2, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "products", + "_type" : "_doc", + "_id" : "3GyXa3cB55U52E6TvL8f", + "_score" : 1.0, + "_source" : { + "name" : "KubeDB", + "vendor" : "AppsCode Inc.", + "description" : "Database Operator for Kubernetes" + } + }, + { + "_index" : "products", + "_type" : "_doc", + "_id" : "3WyYa3cB55U52E6Tc7_G", + "_score" : 1.0, + "_source" : { + "name" : "Stash", + "vendor" : "AppsCode Inc.", + "description" : "Backup tool for Kubernetes workloads" + } + } + ] + } +} + +# Verify data in the "companies" index. +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/companies/_search?pretty" +{ + "took" : 172, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 1, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "companies", + "_type" : "_doc", + "_id" : "3myya3cB55U52E6TE78a", + "_score" : 1.0, + "_source" : { + "name" : "AppsCode Inc.", + "mission" : "Accelerate the transition to Containers by building a Kubernetes-native Data Platform", + "products" : [ + "KubeDB", + "Stash", + "KubeVault", + "Kubeform", + "ByteBuilders" + ] + } + } + ] + } +} +``` + +We now have sample data in our database. In the next section, we are going to prepare the necessary resources to backup these sample data. + +## Prepare for Backup + +In this section, we are going to prepare our cluster for backup. + +### Ensure Elasticsearch Addons + +When you install Stash, it will automatically install the pre-build database addons. Make sure the addons for Elasticsearch has been installed using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep elasticsearch +elasticsearch-backup-5.6.4 3d2h +elasticsearch-backup-6.2.4 3d2h +elasticsearch-backup-6.3.0 3d2h +elasticsearch-backup-6.4.0 3d2h +elasticsearch-backup-6.5.3 3d2h +elasticsearch-backup-6.8.0 3d2h +elasticsearch-backup-7.2.0 3d2h +elasticsearch-backup-7.3.2 3d2h +elasticsearch-restore-5.6.4 3d2h +elasticsearch-restore-6.2.4 3d2h +elasticsearch-restore-6.3.0 3d2h +elasticsearch-restore-6.4.0 3d2h +elasticsearch-restore-6.5.3 3d2h +elasticsearch-restore-6.8.0 3d2h +elasticsearch-restore-7.2.0 3d2h +elasticsearch-restore-7.3.2 3d2h +``` + +Any of these addon versions should be able to take backup of the databases with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/elasticsearch/README#addon-version-compatibility). + +### Verify AppBinding + +KubeDB will create an `AppBinding` object with the same name as the database object which contains the necessary information requires to connect with the database. + +Let's verify that the `AppBinding` object has been created for our `sample-es` Elasticsearch, + +```bash +❯ kubectl get appbindings.appcatalog.appscode.com -n demo sample-es +NAME TYPE VERSION AGE +sample-es kubedb.com/elasticsearch 7.9.1 2d +``` + +Now, if you check the YAML of the `AppBinding`, you will see that it contains the service and secret information that are necessary to connect with the database. + +```yaml +❯ kubectl get appbindings.appcatalog.appscode.com -n demo sample-es -o yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-es + namespace: demo + ... +spec: + clientConfig: + service: + name: sample-es + port: 9200 + scheme: http + secret: + name: sample-es-elastic-cred + type: kubedb.com/elasticsearch + version: 7.9.1 +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a `Secret` with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +#### Create Storage Secret + +At first, let's create a `Secret` called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +#### Create Repository + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/sample-es + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/backup/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database into our desired backend. + +## Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our desired database. Then, Stash will create a CronJob to periodically trigger a backup of the database. + +### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the `sample-es` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-es-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: elasticsearch-backup-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-es + interimVolumeTemplate: + metadata: + name: sample-es-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the database every 5th minutes. +- `.spec.task.name` specifies the name of the `Task` object that specifies the necessary `Functions` and their execution order to backup an Elasticsearch database. +- `.spec.target.ref` refers to the `AppBinding` object that holds the connection information of our targeted database. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `spec.runtimeSettings.pod` specifies the runtime environment for the backup job at the pod level. + +> Note: When running a backup with Stash, it defaults to using the `nobody` user, which can cause permission issues when trying to access the interim volume directory. To avoid this problem, you can include the `fsGroup` of the Stash default user (which is `65534`) in the `runtimeSettings.pod.securityContext` section. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/backup/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-es-backup created +``` + +### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-es-backup elasticsearch-backup-7.3.2 */5 * * * * Ready 11s +``` + +### Verify CronJob + +Stash will create a CronJob with the schedule specified in the `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-es-backup */5 * * * * False 0 9s +``` + +### Wait for BackupSession + +The `stash-backup-sample-es-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsessions.stash.appscode.com -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-es-backup-1612440003 BackupConfiguration sample-es-backup 0s +sample-es-backup-1612440003 BackupConfiguration sample-es-backup Running 0s +sample-es-backup-1612440003 BackupConfiguration sample-es-backup Succeeded 54s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 3.801 KiB 1 64s 3m46s +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/sample-es` directory as specified by the `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your Elasticsearch database. Now, we are going to show how you can restore the database from the backed up data. + +### Restore into the same Elasticsearch + +You can restore your data into the same database you have backed up from or into a different database in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +#### Temporarily pause backup + + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-es-backup` BackupConfiguration, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-es-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-es-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-es-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-es-backup elasticsearch-backup-7.3.2 */5 * * * * true Ready 12m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-es-backup */5 * * * * True 0 5m19s 12m +``` + +#### Simulate Disaster + +Now, let's simulate an accidental deletion scenario. Here, we are going to delete the `products` and `companies` indexes that we had created earlier. + +```bash +# Delete "products" index +❯ curl -XDELETE --user "$USER:$PASSWORD" "http://localhost:9200/products?pretty" +{ + "acknowledged" : true +} + +# Delete "companies" index +❯ curl -XDELETE --user "$USER:$PASSWORD" "http://localhost:9200/companies?pretty" +{ + "acknowledged" : true +} +``` + +Now, let's verify that the indexes have been deleted from the database, + +```bash +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/_cat/indices?v&s=index&pretty" +health status index uuid pri rep docs.count docs.deleted store.size pri.store.size +``` + +So, we can see our `sample-es` database does not have any indexes. In the next section, we are going to restore the deleted indexes from backed up data. + +#### Create RestoreSession + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our `sample-es` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-es-restore + namespace: demo +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-es + interimVolumeTemplate: + metadata: + name: sample-es-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the `Task` object that specifies the necessary `Functions` and their execution order to restore an Elasticsearch database. +- `.spec.repository.name` specifies the `Repository` object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective `AppBinding` of the `sample-es` database. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting it into the database. +- `.spec.runtimeSettings.pod` specifies the runtime environment for the restore job at the pod level. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +> Note: When running a restore with Stash, it defaults to using the `nobody` user, which can cause permission issues when trying to access the interim volume directory. To avoid this problem, you can include the `fsGroup` of the Stash default user (which is `65534`) in the `runtimeSettings.pod.securityContext` section. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/restore/restoresession.yaml +restoresession.stash.appscode.com/sample-es-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-es-restore gcs-repo Running 8s +sample-es-restore gcs-repo Running 24s +sample-es-restore gcs-repo Succeeded 24s +sample-es-restore gcs-repo Succeeded 25s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, it's time to verify whether the actual data has been restored or not. At first, let's verify that whether the indexes have been restored or not: + +```bash +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/_cat/indices?v&s=index&pretty" +health status index uuid pri rep docs.count docs.deleted store.size pri.store.size +green open companies 7UgxlL4wST6ZIAImxRVvzw 1 1 1 0 11.4kb 5.7kb +green open products vb19PIneSL2zMTPvNEgm-w 1 1 2 0 10.8kb 5.4kb +``` + +So, we can see the indexes have been restored. Now, let's verify the data of these indexes, + +```bash +# Verify the data of the "products" index +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/products/_search?pretty" +{ + "took" : 3, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 2, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "products", + "_type" : "_doc", + "_id" : "vKDVgXcBa1PZYKwIDBjy", + "_score" : 1.0, + "_source" : { + "name" : "Stash", + "vendor" : "AppsCode Inc.", + "description" : "Backup tool for Kubernetes workloads" + } + }, + { + "_index" : "products", + "_type" : "_doc", + "_id" : "u6DUgXcBa1PZYKwI5xic", + "_score" : 1.0, + "_source" : { + "name" : "KubeDB", + "vendor" : "AppsCode Inc.", + "description" : "Database Operator for Kubernetes" + } + } + ] + } +} + +# Verify the data of "companies" index +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/companies/_search?pretty" +{ + "took" : 2, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 1, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "companies", + "_type" : "_doc", + "_id" : "vaDVgXcBa1PZYKwIMxhm", + "_score" : 1.0, + "_source" : { + "name" : "AppsCode Inc.", + "mission" : "Accelerate the transition to Containers by building a Kubernetes-native Data Platform", + "products" : [ + "KubeDB", + "Stash", + "KubeVault", + "Kubeform", + "ByteBuilders" + ] + } + } + ] + } +} +``` + +So, we can see that the data has been restored as well. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-es-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-es-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, + +```bash +❯ kubectl get backupconfiguration -n demo sample-es-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-es-backup elasticsearch-backup-7.3.2 */5 * * * * false Ready 30m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-es-backup */5 * * * * False 0 2m50s 30m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore into a different Elasticsearch + +Now, we are going to restore the backed up data into a different Elasticsearch of a different namespace. This time, we are going to use `opendistro` variant for Elasticsearch to demonstrate migration between the variants. You can use the same variant of Elasticsearch if you are not considering to migrate from your current variant. + +We are going to restore the data into an Elasticsearch in `restored` namespace. If you already don't have the namespace, let's create it first. + +```bash +❯ kubectl create ns restored +namespace/restored created +``` + +#### Install `stash` kubectl plugin + +Now, we are going to use `stash` kubectl plugin to help us copying the `Repository` and backend `Secret` from our `demo` namespace into `restored` namespace. If you haven't already installed the `stash` kubectl-plugin, please install it by following the guide from [here](https://stash.run/docs/{{< param "info.version" >}}/setup/install/kubectl-plugin/). + +Verify that the `stash` kubectl plugin has been installed properly, + +```bash +❯ kubectl stash version +Version = v0.11.9 +VersionStrategy = tag +GitTag = v0.11.9 +GitBranch = HEAD +CommitHash = 05511503bab90e48514aed24457458456876dfcf +CommitTimestamp = 2021-01-21T22:12:04 +GoVersion = go1.15.6 +Compiler = gcc +Platform = linux/amd64 +``` + +#### Copy Repository and backend Secret into the new namespace + +Now, let's copy the `gcs-repo` Repository into our new namespace using the `stash` kubectl plugin, + +```bash +❯ kubectl stash cp repository gcs-repo -n demo --to-namespace=restored +I0208 19:51:43.950560 666626 copy_repository.go:58] Repository demo/gcs-repo uses Storage Secret demo/gcs-secret. +I0208 19:51:43.952899 666626 copy_secret.go:60] Copying Storage Secret demo to restored namespace +I0208 19:51:43.957204 666626 copy_secret.go:73] Secret demo/gcs-secret has been copied to restored namespace successfully. +I0208 19:51:43.967768 666626 copy_repository.go:75] Repository demo/gcs-repo has been copied to restored namespace successfully. +``` + +The above command will copy the `gcs-repo` Repository as well as the respective backend secret `gcs-secret`. + +Let's verify that the `Repository` has been copied into `restored` namespace, + +```bash +❯ kubectl get repository -n restored +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo 2m9s +``` + +>The command does not copy the status of the `Repository`. As a result, you will see the `INTEGRITY`, `SIZE`, `SNAPSHOT-COUNT`, and `LAST-SUCCESSFUL-BACKUP` fields are empty. Nothing to panic about here. Your actual data exist safely in the cloud bucket. The `Repository` just contains the connection information to that bucket. + +Now, let's verify that the backend secret has been copied as well, + +```bash +❯ kubectl get secret -n restored +NAME TYPE DATA AGE +default-token-rd2v5 kubernetes.io/service-account-token 3 15m +gcs-secret Opaque 3 8m36s +``` + +As you can see, the backend secret `gcs-secret` also has been copied to `restored` namespace. + +#### Deploy new Elasticsearch + +Now, we are going to deploy an Elasticsearch into `restored` namespace. We are going to initialize this database from the backed up data of first Elasticsearch. + +Here, is the YAML of the Elasticsearch object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Elasticsearch +metadata: + name: init-sample + namespace: restored +spec: + version: opendistro-1.9.0-v1 + storageType: Durable + init: + waitForInitialRestore: true + topology: + master: + suffix: master + replicas: 1 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + data: + suffix: data + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + ingest: + suffix: client + replicas: 2 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +Notice that this time, we are using `opendistro-1.9.0-v1` variant for Elasticsearch. Also, notice that we have added an `init` section in the `spec`. Here, `waitForInitialRestore: true` tells KubeDB to wait for the first restore to complete before marking this database as ready to use. + +Let's deploy the above Elasticsearch, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/elasticsearch/init_sample.yaml +elasticsearch.kubedb.com/init-sample created +``` + +Now, wait for the KubeDB to create all the nodes for this Elasticsearch. This time, Elasticsearch will get stuck in the `Provisioning` state because we haven't completed the first restore yet. + +You can check the condition of the Elasticsearch to verify whether we are ready to restore the database. + +```bash +❯ kubectl get elasticsearch -n restored init-sample -o jsonpath='{.status.conditions}' | jq +[ + { + "lastTransitionTime": "2021-02-08T14:13:22Z", + "message": "The KubeDB operator has started the provisioning of Elasticsearch: restored/init-sample", + "reason": "DatabaseProvisioningStartedSuccessfully", + "status": "True", + "type": "ProvisioningStarted" + }, + { + "lastTransitionTime": "2021-02-08T14:18:15Z", + "message": "All desired replicas are ready.", + "reason": "AllReplicasReady", + "status": "True", + "type": "ReplicaReady" + }, + { + "lastTransitionTime": "2021-02-08T14:19:22Z", + "message": "The Elasticsearch: restored/init-sample is accepting client requests.", + "observedGeneration": 3, + "reason": "DatabaseAcceptingConnectionRequest", + "status": "True", + "type": "AcceptingConnection" + }, + { + "lastTransitionTime": "2021-02-08T14:19:33Z", + "message": "The Elasticsearch: restored/init-sample is ready.", + "observedGeneration": 3, + "reason": "ReadinessCheckSucceeded", + "status": "True", + "type": "Ready" + } +] +``` + +Here, check the last two conditions. We can see that the database has passed the readiness check from `Ready` conditions and it is accepting connections from `AcceptingConnection` condition. So, we are good to start restoring into this database. + +KubeDB has created an AppBinding for this database. Let's verify that the AppBinding has been created, + +```bash +❯ kubectl get appbindings.appcatalog.appscode.com -n restored +NAME TYPE VERSION AGE +init-sample kubedb.com/elasticsearch 7.8.0 21m +``` + +We are going to create a `RestoreSession` targeting this AppBinding to restore into this database. + +#### Create RestoreSession for new Elasticsearch + +Now, we have to create a `RestoreSession` object targeting the `AppBinding` of our `init-sample` database. Here, is the YAML of the RestoreSession that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: init-sample-restore + namespace: restored +spec: + task: + name: elasticsearch-restore-7.3.2 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: init-sample + interimVolumeTemplate: + metadata: + name: init-sample-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Let's create the above RestoreSession, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/elasticsearch/kubedb/examples/restore/init_sample_restore.yaml +restoresession.stash.appscode.com/init-sample-restore created +``` + +Now, wait for the restore process to complete, + +```bash +❯ kubectl get restoresession -n restored -w +NAME REPOSITORY PHASE AGE +init-sample-restore gcs-repo Running 4s +init-sample-restore gcs-repo Running 21s +init-sample-restore gcs-repo Succeeded 21s +init-sample-restore gcs-repo Succeeded 21s +``` + +#### Verify Restored Data in new Elasticsearch + +Now, we are going to verify whether the data has been restored or not. At first let's port-forward the respective Service for this Elasticsearch, + +```bash +❯ kubectl get service -n restored +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +init-sample ClusterIP 10.109.51.219 9200/TCP 54m +init-sample-master ClusterIP None 9300/TCP 54m +init-sample-pods ClusterIP None 9200/TCP 54m +``` + +```bash +❯ kubectl port-forward -n restored service/init-sample 9200 +Forwarding from 127.0.0.1:9200 -> 9200 +Forwarding from [::1]:9200 -> 9200 +``` + +Now, let's export the credentials of this Elasticsearch, + +```bash +❯ kubectl get secret -n restored | grep init-sample +init-sample-admin-cred kubernetes.io/basic-auth 2 55m +init-sample-ca-cert kubernetes.io/tls 2 55m +init-sample-config Opaque 3 55m +init-sample-kibanaro-cred kubernetes.io/basic-auth 2 55m +init-sample-kibanaserver-cred kubernetes.io/basic-auth 2 55m +init-sample-logstash-cred kubernetes.io/basic-auth 2 55m +init-sample-readall-cred kubernetes.io/basic-auth 2 55m +init-sample-snapshotrestore-cred kubernetes.io/basic-auth 2 55m +init-sample-token-xgnrx kubernetes.io/service-account-token 3 55m +init-sample-transport-cert kubernetes.io/tls 3 55m +stash-restore-init-sample-restore-0-token-vscdt kubernetes.io/service-account-token 3 4m40s +``` + +Here, we are going to use the `init-sample-admin-cred` for connecting with the database. Let's export the `username` and `password` keys. + +```bash +❯ export USER=$(kubectl get secrets -n restored init-sample-admin-cred -o jsonpath='{.data.\username}' | base64 -d) +❯ export PASSWORD=$(kubectl get secrets -n restored init-sample-admin-cred -o jsonpath='{.data.\password}' | base64 -d) +``` + +Now, let's verify whether the indexes have been restored or not. + +```bash +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/_cat/indices?v&s=index&pretty" +health status index uuid pri rep docs.count docs.deleted store.size pri.store.size +green open .opendistro_security _v-_YiJUReylNbUaIEXN8A 1 1 7 0 57.1kb 37.1kb +green open companies XfSvxePuS7-lNq-gcd-bxg 1 1 1 0 11.1kb 5.5kb +green open products pZYHzOp_TWK9bLaEU-uj8Q 1 1 2 0 10.5kb 5.2kb +``` + +So, we can see that our indexes have been restored successfully. Now, let's verify the data of these indexes. + +```bash +# Verify data of "products" index +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/products/_search?pretty" +{ + "took" : 634, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 2, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "products", + "_type" : "_doc", + "_id" : "u6DUgXcBa1PZYKwI5xic", + "_score" : 1.0, + "_source" : { + "name" : "KubeDB", + "vendor" : "AppsCode Inc.", + "description" : "Database Operator for Kubernetes" + } + }, + { + "_index" : "products", + "_type" : "_doc", + "_id" : "vKDVgXcBa1PZYKwIDBjy", + "_score" : 1.0, + "_source" : { + "name" : "Stash", + "vendor" : "AppsCode Inc.", + "description" : "Backup tool for Kubernetes workloads" + } + } + ] + } +} + +# Verify data of "companies" index +❯ curl -XGET --user "$USER:$PASSWORD" "http://localhost:9200/companies/_search?pretty" +{ + "took" : 5, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "skipped" : 0, + "failed" : 0 + }, + "hits" : { + "total" : { + "value" : 1, + "relation" : "eq" + }, + "max_score" : 1.0, + "hits" : [ + { + "_index" : "companies", + "_type" : "_doc", + "_id" : "vaDVgXcBa1PZYKwIMxhm", + "_score" : 1.0, + "_source" : { + "name" : "AppsCode Inc.", + "mission" : "Accelerate the transition to Containers by building a Kubernetes-native Data Platform", + "products" : [ + "KubeDB", + "Stash", + "KubeVault", + "Kubeform", + "ByteBuilders" + ] + } + } + ] + } +} +``` + +So, we can see that the data of these indexes data has been restored too. + +### Restore into a different cluster + +If you want to restore into a different cluster, you have to install KubeDB and Stash in the desired cluster. Then, you have to install Stash Elasticsearch addon in that cluster too. Then, you have to deploy the target database there. Once, the database is ready to accept connections, create the Repository, backend Secret, in the same namespace as the database of your desired cluster. Finally, create the `RestoreSession` object in the desired cluster pointing to the AppBinding of the targeted database of that cluster. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +# delete all reasources from "demo" namespace +kubectl delete -n demo backupconfiguration sample-es-backup +kubectl delete -n demo restoresession sample-es-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo secret gcs-repo +kubectl delete -n demo secret gcs-secret +kubectl delete -n demo elasticsearch sample-es + +# delete all reasources from "restored" namespace +kubectl delete -n restored restoresession init-sample-restore +kubectl delete -n restored repository gcs-repo +kubectl delete -n restored secret gcs-secret +kubectl delete -n restored elasticsearch init-sample +``` diff --git a/content/docs/v2024.8.27/addons/elasticsearch/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/elasticsearch/overview/images/backup_overview.svg new file mode 100644 index 0000000000..5d043fc483 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/overview/images/backup_overview.svg @@ -0,0 +1,1033 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/elasticsearch/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/elasticsearch/overview/images/restore_overview.svg new file mode 100644 index 0000000000..d1285c8820 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/overview/images/restore_overview.svg @@ -0,0 +1,892 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/elasticsearch/overview/index.md b/content/docs/v2024.8.27/addons/elasticsearch/overview/index.md new file mode 100644 index 0000000000..f7e5ecc1f4 --- /dev/null +++ b/content/docs/v2024.8.27/addons/elasticsearch/overview/index.md @@ -0,0 +1,146 @@ +--- +title: Elasticsearch Backup Overview | Stash +description: How Elasticsearch Backup Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-elasticsearch-overview + name: How does it work? + parent: stash-elasticsearch + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backup & Restore Elasticsearch Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how Elasticsearch database backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes a backup of an Elasticsearch database. Open the image in a new tab to see the enlarged version. + +
+ Elasticsearch Backup Overview +
Fig: Elasticsearch Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database 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. + +12. 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. + +## How Restore Process Works + +The following diagram shows how Stash restores backed up data into an Elasticsearch database. Open the image in a new tab to see the enlarged version. + +
+ Database Restore Overview +
Fig: Elasticsearch Restore Process
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and insert into the desired database. Stash stores the downloaded files temporarily before inserting into the targeted database. Hence, you should provide a PVC template using `spec.interimVolumeTemplate` field of `RestoreSession` crd to use to store those restored files temporarily. + +7. Finally, when the restore process is completed, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup your Elasticsearch databases using Stash by following the guide from [here](/docs/v2024.8.27/addons/elasticsearch/kubedb/). diff --git a/content/docs/v2024.8.27/addons/etcd/README.md b/content/docs/v2024.8.27/addons/etcd/README.md new file mode 100644 index 0000000000..597d2171e0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/README.md @@ -0,0 +1,108 @@ +--- +title: Etcd Addon Overview | Stash +description: Etcd Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-etcd-readme + name: Readme + parent: stash-etcd + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/etcd/ +aliases: +- /docs/v2024.8.27/addons/etcd/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Etcd Addon + +Stash `{{< param "info.version" >}}` supports extending its functionality through its addons. Stash Etcd addon enables Stash to backup and restore Etcd databases. + +This guide will give you an overview of which Etcd versions are supported and how the docs are organized. + +## Supported Etcd Versions + +Stash has the following addon versions for Etcd: + +{{< versionlist "etcd">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, Etcd addon with version `3.x.x` should be able to take backup of any Etcd of `3.x.x` series. However, this might not be true for some versions. In that case, we will have a separate addon for that version. + +## Documentation Overview + +Stash Etcd documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/etcd/overview/) gives an overview of how backup and restore process for Etcd database works in Stash. +- [Etcd Cluster with Basic Auth](/docs/v2024.8.27/addons/etcd/basic-auth/) shows how to backup and restore an Etcd cluster with basic authentication enabled. +- [Etcd Cluster with TLS](/docs/v2024.8.27/addons/etcd/tls/) shows how to configure backup and restore process for TLS secured Etcd cluster. +- [Customizing Backup & Restore Process](/docs/v2024.8.27/addons/etcd/customization/) shows how to customize the backup & restore process. diff --git a/content/docs/v2024.8.27/addons/etcd/_index.md b/content/docs/v2024.8.27/addons/etcd/_index.md new file mode 100644 index 0000000000..36bc2ae4c6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash Etcd Addon +menu: + docs_v2024.8.27: + identifier: stash-etcd + name: Etcd + parent: stash-addons + weight: 100 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/appbinding.yaml new file mode 100644 index 0000000000..87be153f2c --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/appbinding.yaml @@ -0,0 +1,15 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: etcd-appbinding + namespace: demo +spec: + clientConfig: + service: + name: etcd + port: 2379 + scheme: http + secret: + name: etcd-basic-auth + type: etcd + version: 3.5.0 \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..cb37a1f2f5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd-secret.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd-secret.yaml new file mode 100644 index 0000000000..71ffde91b5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd-secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: etcd-basic-auth + namespace: demo +type: Opaque +stringData: + username: root + password: not@secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd.yaml new file mode 100644 index 0000000000..13b4201c9b --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/etcd.yaml @@ -0,0 +1,68 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: demo + name: etcd +spec: + clusterIP: None + ports: + - port: 2379 + name: client + - port: 2380 + name: peer + selector: + app: etcd +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd + namespace: demo + labels: + app: etcd +spec: + serviceName: etcd + replicas: 3 + selector: + matchLabels: + app: etcd + template: + metadata: + name: etcd + labels: + app: etcd + spec: + containers: + - name: etcd + image: gcr.io/etcd-development/etcd:v3.5.0 + ports: + - containerPort: 2379 + name: client + - containerPort: 2380 + name: peer + volumeMounts: + - name: data + mountPath: /var/run/etcd + command: + - /bin/sh + - -c + - | + PEERS="etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + exec etcd --name ${HOSTNAME} \ + --listen-peer-urls http://0.0.0.0:2380 \ + --listen-client-urls http://0.0.0.0:2379 \ + --initial-cluster etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380 \ + --initial-cluster-token etcd-cluster-1 \ + --advertise-client-urls http://${HOSTNAME}.etcd:2379 \ + --initial-advertise-peer-urls http://${HOSTNAME}.etcd:2380 \ + --data-dir /var/run/etcd + volumeClaimTemplates: + - metadata: + name: data + namespace: demo + spec: + storageClassName: standard + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/repository.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/repository.yaml new file mode 100644 index 0000000000..7a565d9b29 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/etcd/sample-etcd + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/restoresession.yaml new file mode 100644 index 0000000000..e7377caef2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/examples/restoresession.yaml @@ -0,0 +1,34 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/images/etcd-backup.jpg b/content/docs/v2024.8.27/addons/etcd/basic-auth/images/etcd-backup.jpg new file mode 100644 index 0000000000..1502bd6929 Binary files /dev/null and b/content/docs/v2024.8.27/addons/etcd/basic-auth/images/etcd-backup.jpg differ diff --git a/content/docs/v2024.8.27/addons/etcd/basic-auth/index.md b/content/docs/v2024.8.27/addons/etcd/basic-auth/index.md new file mode 100644 index 0000000000..b2deb3dabe --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/basic-auth/index.md @@ -0,0 +1,704 @@ +--- +title: Backup & Restore Etcd | Stash +description: Take backup of Etcd cluster using Stash +menu: + docs_v2024.8.27: + identifier: stash-etcd-basic-auth + name: Etcd Cluster with Basic Auth + parent: stash-etcd + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup & Restore an Etcd Cluster with Basic Auth Enabled + +Stash `{{< param "info.version" >}}` supports backup and restoration of Etcd database. This guide will show you how you can take backup & restore your Etcd database using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore Etcd database, please check the following guide [here](/docs/v2024.8.27/addons/etcd/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created that already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples). + +## Prepare Etcd + +In this section, we are going to deploy an Etcd cluster. Then, we will insert some sample data into it. + +### Deploy Etcd + +At first, let's deploy an Etcd cluster. Here, we will use a StatefulSet and a Service to deploy an Etcd cluster consisting of three members. The Service is used for handling peer communications and client requests. + +Here, is the sample YAMLs that we are going to use to deploy the Etcd cluster, + +```yaml +apiVersion: v1 +kind: Service +metadata: + namespace: demo + name: etcd +spec: + clusterIP: None + ports: + - port: 2379 + name: client + - port: 2380 + name: peer + selector: + app: etcd +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd + namespace: demo + labels: + app: etcd +spec: + serviceName: etcd + replicas: 3 + selector: + matchLabels: + app: etcd + template: + metadata: + name: etcd + labels: + app: etcd + spec: + containers: + - name: etcd + image: gcr.io/etcd-development/etcd:v3.5.0 + ports: + - containerPort: 2379 + name: client + - containerPort: 2380 + name: peer + volumeMounts: + - name: data + mountPath: /var/run/etcd + command: + - /bin/sh + - -c + - | + PEERS="etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + exec etcd --name ${HOSTNAME} \ + --listen-peer-urls http://0.0.0.0:2380 \ + --listen-client-urls http://0.0.0.0:2379 \ + --initial-cluster etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380 \ + --initial-cluster-token etcd-cluster-1 \ + --advertise-client-urls http://${HOSTNAME}.etcd:2379 \ + --initial-advertise-peer-urls http://${HOSTNAME}.etcd:2380 \ + --data-dir /var/run/etcd + volumeClaimTemplates: + - metadata: + name: data + namespace: demo + spec: + storageClassName: standard + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi +``` + +Let's deploy the Etcd cluster we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/etcd.yaml +service/etcd created +statefulset.apps/etcd created +``` + +Now, let's wait for the database pods `etcd-0`, `etcd-1`, and `etcd-2` to go into `Running` state, + +```bash +❯ kubectl get pods -n demo --selector=app=etcd + +NAME READY STATUS RESTARTS AGE +etcd-0 1/1 Running 0 11s +etcd-1 1/1 Running 0 10s +etcd-2 1/1 Running 0 9s +``` + +Once the database pods are in `Running` state, verify that the Etcd cluster is ready to accept connections. Let's exec into the `etcd-0` pod and check cluster's health. + +```bash +❯ kubectl exec -it -n demo etcd-0 -- /bin/sh +127.0.0.1:2379> etcdctl endpoint health +127.0.0.1:2379 is healthy: successfully committed proposal: took = 1.258639ms +``` +We can see from the above output that our Etcd cluster is ready to accept connections. + +### Enabling basic authentication +To use basic authentication in Etcd cluster, we need to create a user using `etcdctl`. We will add one special user, `root` and grant this user `root` role. The `root` role has global read-write access and permission accross an Etcd database by default. + +Let's exec into `etcd-0` pod and enable basic authentication, + +```bash +❯ kubectl exec -it -n demo etcd-0 -- /bin/sh + +127.0.0.1:2379> etcdctl user add root +Password of root: +Type password of root again for confirmation: +User root created + +127.0.0.1:2379> etcdctl user grant-role root root +Role root is granted to user root + +127.0.0.1:2379> etcdctl auth enable +Authentication Enabled +127.0.0.1:2379> exit +``` +Here, we have used `not@secret` as password for the user we have created above. + +### Insert Sample Data + +Now, we are going to exec into any of the database pods and insert some sample data. + +Let's exec into the `etcd-0` pod for inserting sample data. We are going to export the username and password as an environment variable. + +```bash +❯ kubectl exec -it -n demo etcd-0 -- /bin/sh + +127.0.0.1:2379> export USER=root +127.0.0.1:2379> export PASSWORD=not@secret + +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD put foo bar +OK +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD put foo2 bar2 +OK +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD put foo3 bar3 +OK + +# Verify that the data has been inserted successfully +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD get --prefix foo +foo +bar +foo2 +bar2 +foo3 +bar3 +127.0.0.1:2379> exit +``` + +We have successfully deployed an Etcd cluster and inserted some sample data into it. In the subsequent sections, we are going to backup these data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (e.g., database connection information, backend information, etc.) before backup. + +### Ensure Etcd Addon + +When you install Stash, it will automatically install all the official addons. Make sure that Etcd addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep etcd +etcd-backup-3.5.0 18m +etcd-restore-3.5.0 18m +``` + +This addon should be able to take backup of the databases with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/etcd/README#addon-version-compatibility). + +### Create Secret + +>You can skip this section if you don't have basic authentication enabled in your Etcd cluster. + +Now, we have to create a Secret with the access credentials to our Etcd database. Here, is the YAML of the Secret we are going to create, + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: etcd-basic-auth + namespace: demo +type: Opaque +stringData: + username: root + password: not@secret +``` + +Let's create the `etcd-basic-auth` Secret we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/etcd-secret.yaml +secret/etcd-basic-auth created +``` + +### Create AppBinding + +Stash needs to know how to connect with the Etcd cluster. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the Etcd cluster. You have to point to the respective `AppBinding` as a target of backup instead of the Etcd cluster itself. + +Here is the YAML of the `AppBinding` that we are going to create for the Etcd cluster we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: etcd-appbinding + namespace: demo +spec: + clientConfig: + service: + name: etcd + port: 2379 + scheme: http + secret: + name: etcd-basic-auth + type: etcd + version: 3.5.0 +``` + +Here, + +- `.spec.clientConfig.Service` specifies the Service information to use to connects with the database client. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the database. If your Etcd database is not using authentication, then don't provide this field. +- `.spec.type` specifies the type of the database. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/etcd-appbinding created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/etcd/basic-auth-backup + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our data into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our Etcd cluster. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below, is the YAML for `BackupConfiguration` object we are going to use to backup the Etcd cluster we have deployed earlier. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the database at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup an Etcd database. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted database. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/etcd-backup created +``` + +### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-backup etcd-backup-3.5.0 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `stash-trigger-etcd-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +etcd-backup-1634538902 BackupConfiguration etcd-backup 0s +etcd-backup-1634538902 BackupConfiguration etcd-backup Running 0s +etcd-backup-1634538902 BackupConfiguration etcd-backup Succeeded 39s 39s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 93 B 1 2m1s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `/demo/etcd/basic-auth-backup` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore Etcd + +If you have followed the previous sections properly, you should have a successful backup of your Etcd cluster. Now, we are going to show how you can restore the database from the backed up data. + +### Restore Into the Same Etcd Cluster + +You can restore your data into the same Etcd cluster you have taken backup from or into a different Etcd cluster. In this section, we are going to show you how to restore data in the same Etcd cluster which maybe necessary when you have accidentally deleted any data from the running cluster. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the Etcd cluster so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `etcd-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo etcd-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/etcd-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo etcd-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-backup etcd-backup-3.5.0 */5 * * * * true Ready 22m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-backup */5 * * * * True 0 6m15s 23m +``` + +#### Simulate Disaster + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the `etcd-0` database pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -it -n demo etcd-0 -- /bin/sh +127.0.0.1:2379> export USER=root +127.0.0.1:2379> export PASSWORD=not@secret + +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD del foo +1 +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD del foo2 +1 +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD del foo3 +1 +# verify that the sample data has been deleted +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD get --prefix foo +(nil) +127.0.0.1:2379> exit +``` + +#### Create RestoreSession + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our Etcd database cluster. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore an Etcd database. +- `.spec.task.params` refers to the names and values of the Params objects specifying necessary parameters and their values for restoring backup data into an Etcd cluster. We need to specify the folowing parameters, + - `initialcluster` parameter refers to the initial cluster configuration of the Etcd cluster and it must be the same as the initial cluster configuration of the deployed Etcd cluster. + - `dataDir` parameter refers to the datadir of the deployed Etcd cluster where the backed up data will get restored. + - `workloadKind` parameter refers to the workload e.g. Pod/StatefulSet we have used to deploy the Etcd cluster. + - `workloadName` parameter refers to the workload name we have used to deploy the Etcd cluster. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective AppBinding of the Etcd database. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. +- The restore Job need access to the respective volume of the Etcd database. As a result, we have to run the restore Job as the same user as the Etcd database or as root user. Here, we are running the restore Job as root user using `spec.runtimeSettings.Container.securityContext` section. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/restoresession.yaml +restoresession.stash.appscode.com/etcd-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +etcd-restore gcs-repo Running 9s +etcd-restore gcs-repo Running 13s +etcd-restore gcs-repo Running 72s +etcd-restore gcs-repo Succeeded 72s +etcd-restore gcs-repo Succeeded 1m13s 72s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the `etcd-0` database pod and verify whether the actual data has been restored or not, + +```bash +❯ kubectl exec -it -n demo etcd-0 -- /bin/sh + +127.0.0.1:2379> export USER=root +127.0.0.1:2379> export PASSWORD=not@secret + +127.0.0.1:2379> etcdctl --user $USER:$PASSWORD get --prefix foo +foo +bar +foo2 +bar2 +foo3 +bar3 +127.0.0.1:2379> exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo etcd-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/etcd-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo etcd-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-backup etcd-backup-3.5.0 */5 * * * * false Ready 4h54m +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore Into Different Database of the Same Namespace + +If you want to restore the backed up data into a different Etcd cluster of the same namespace, you have to create another `AppBinding` pointing to the desired Etcd database. Then, you have to create the `RestoreSession` pointing to the new `AppBinding`. + +### Restore Into Different Namespace + +If you want to restore into a different namespace of the same cluster, you have to create the Repository, backend Secret, AppBinding, in the desired namespace. You can use [Stash kubectl plugin](https://stash.run/docs/{{< param "info.version" >}}/guides/cli/cli/) to easily copy the resources into a new namespace. Then, you have to create the `RestoreSession` object in the desired namespace pointing to the Repository, AppBinding of that namespace. + +### Restore Into Different Cluster + +If you want to restore into a different cluster, you have to install Stash in the desired cluster. Then, you have to create the Repository, backend Secret, AppBinding, in the desired cluster. Finally, you have to create the `RestoreSession` object in the desired cluster pointing to the Repository, AppBinding of that cluster. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration etcd-backup +kubectl delete -n demo restoresession etcd-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo appbinding etcd-appbinding +kubectl delete -n demo Secret etcd-basic-auth +kubectl delete -n demo Secret gcs-secret +# delete the Etcd cluster, Service, and PVCs +kubectl delete -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/basic-auth/examples/etcd.yaml +kubectl delete pvc -n demo data-etcd-0 data-etcd-1 data-etcd-2 +``` diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/multi-retention-policy.yaml new file mode 100644 index 0000000000..3c9aed63b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/multi-retention-policy.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: sample-etcd-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/passing-args.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/passing-args.yaml new file mode 100644 index 0000000000..e8e5bba7f1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/passing-args.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + params: + - name: args + value: --insecure-skip-tls-verify=true + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/resource-limit.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/resource-limit.yaml new file mode 100644 index 0000000000..a26e4fdb8a --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/resource-limit.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/specific-user.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/specific-user.yaml new file mode 100644 index 0000000000..54c1d5e7dd --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/backup/specific-user.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/passing-args.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/passing-args.yaml new file mode 100644 index 0000000000..65c1f10e23 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/passing-args.yaml @@ -0,0 +1,35 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + - name: args + value: --insecure-skip-tls-verify=true + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/resource-limit.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/resource-limit.yaml new file mode 100644 index 0000000000..494ae7f11e --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/resource-limit.yaml @@ -0,0 +1,40 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-snapshot.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-snapshot.yaml new file mode 100644 index 0000000000..ad10d24f3f --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-snapshot.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [4bc21d6f] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-user.yaml b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-user.yaml new file mode 100644 index 0000000000..5687b3c19f --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/examples/restore/specific-user.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/customization/index.md b/content/docs/v2024.8.27/addons/etcd/customization/index.md new file mode 100644 index 0000000000..b7f470b0d3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/customization/index.md @@ -0,0 +1,409 @@ +--- +title: Etcd Backup Customization | Stash +description: Customizing Backup and Restore process with Stash +menu: + docs_v2024.8.27: + identifier: stash-etcd-customization + name: Customizing Backup & Restore Process + parent: stash-etcd + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup and Restore Process + +Stash provides rich customization supports for the backup and restore process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/customization/examples). + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, ignoring some indexes during the backup process, etc. + +### Passing arguments to the backup process +Stash Etcd addon uses [etcdctl](https://github.com/etcd-io/etcd/tree/main/etcdctl) for backup. You can pass arguments to the `etcdctl` through `args` param under `task.params` section. + +The below example shows how you can pass the `--insecure-skip-tls-verify` to skip server certificate verification (`CAUTION`: this option should be enabled only for testing purposes) +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + params: + - name: args + value: --insecure-skip-tls-verify=true + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: sample-etcd-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +Stash uses `etcdctl` during the restore process as well. In this section, we are going to show how you can pass arguments to the restore process, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process + +Similar to the backup process, you can pass additional arguments to the restore process alongside with the reqiored arguements through the `args` params under `task.params` section. Here, we have passed `--insecure-skip-tls-verify` argument to the `etcdctl` to skip server certificate verification (CAUTION: this option should be enabled only for testing purposes). + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + - name: args + value: --insecure-skip-tls-verify=true + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore job as a specific user + +You can provide `securityContext` under `runtimeSettings.pod` section to run the restore job as a specific user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore job + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore job. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-backup.svg b/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-backup.svg new file mode 100644 index 0000000000..c8ec415493 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-restore.svg b/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-restore.svg new file mode 100644 index 0000000000..4078ec2b63 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/overview/images/etcd-restore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/overview/index.md b/content/docs/v2024.8.27/addons/etcd/overview/index.md new file mode 100644 index 0000000000..23dfc13527 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/overview/index.md @@ -0,0 +1,150 @@ +--- +title: Etcd Backup & Restore Overview | Stash +description: How Etcd Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-etcd-overview + name: How does it work? + parent: stash-etcd + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backups & Restores Etcd Database + +Stash `{{< param "info.version" >}}` supports backup and restore operation of many databases. This guide will give you an overview of how Etcd database backup and restore process works in Stash. + +## Backup + +Stash supports taking backup of Etcd database using [etcdctl](https://github.com/etcd-io/etcd/tree/main/etcdctl). It is the most flexible way to perform backup and restore of Etcd database. + +### How Backup Works + +The following diagram shows how Stash takes backup of a Etcd database. Open the image in a new tab to see the enlarged version. + +
+  Etcd Backup Overview +
Fig: Etcd Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads the necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job takes snapshot of the targeted database using `etcdctl` and uploads the snapshot to the backend. Stash stores the snapshot temporarily in a directory before uploading that into the backend. You can limit the temporary directory size using `spec.TempDir` field of `BackupConfiguration` crd. + +12. Finally, when the backup is complete, 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 completion. + +### How Restore from Backup Works + +The following diagram shows how Stash restores an Etcd database from a backup. Open the image in a new tab to see the enlarged version. + +
+  Etcd Database Restore Overview +
Fig: Etcd Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up snapshot from the backend and restore that snapshot into the `Etcd` database. Stash stores the downloaded files temporarily before inserting into the targeted database. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup your Etcd database using Stash following the guide from [here](/docs/v2024.8.27/addons/etcd/basic-auth/). diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/appbinding.yaml new file mode 100644 index 0000000000..cde2f40b65 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/appbinding.yaml @@ -0,0 +1,16 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: etcd-appbinding + namespace: demo +spec: + clientConfig: + caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2akNDQWRLZ0F3SUJBZ0lVZEJYNnU0RHRyNDA3WkZDTWN6Nzg4Y1YyWHVJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0RURUxNQWtHQTFVRUF4TUNRMEV3SGhjTk1qRXhNREU1TVRBeE56QXdXaGNOTWpZeE1ERTRNVEF4TnpBdwpXakFOTVFzd0NRWURWUVFERXdKRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCCkFMZmp6OEJhbDhpWTdjSTd2OHNFdndpSmJnQXBqTDIvNnVZbXBaQVZvcW50cjJCcmFMbTlCb1czdkMydm5tbWYKWDhRUFBsWnFIeUxzY1gxZUlpazJyWHJEYUdQaU45VHhLQXVrbWJjZXFsUXZScGNZZkVaVTBQMzhNc0xsQUlHaQpZamZxRjR5Z1UyMjA0L3FucVVPbFFjLzh2MmJpRFNSQXNUM1NUT2FVemdMd05KT20wOUlqT1dUQW15Q2xXWmxnClJmV2tETzVTQ0xZd1pmQ1Z1MTdBalJRMTNsZTdocW9GcW9SUW96dUZQMFp0dlVFdWVPSXlSa3ZlYTFRYVNyTjgKcm1aN1BaL0lIb3dyNjFtMFd0bVE3ckw1eTMyOTgxb3hRNGg2UHdLMGNGNVNyOG9WRUR0TGZVeE1OWHpoMXpRUAorY2FhZWlUWklyc1dqRGNxSm9VWk1wVUNBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkCkV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQ1FzZmsvcHJxWGwxKzhIODk1WUFmZzR2THQxTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQmpOOHlxalhEaUdqaDFuUGdKVFpZa1FCa1E4SFZHeThIdlFWWG0zdFhHM3RLcApTaVdDQTlPbittR0xZZTlCMi9lOEFJNkIyMFB1Z0NZWHljMHVOb1RiSFdiZ01pNURiNEVZYXdDdVpkN3M4MXlUClRXY1N0VWZFeUdKNW1ycWZ6OFFPaUt0Sk1UeWFYbHllWllURnhnWUsyOThTcDhubFBRQlgzNVBDakZTbXZwa1UKY0N5TllYMDF1RnFhWE9FZTdkTnpBUmhIaU1xVFM0dkNUUnFrbFpMWHB6a3ViZER3WTVKK3gzYmptcDk1RUtmVwpJbkhERTJ2ckxsU0crZDVWNnBuUG54bXc3aGg2L0NMUTNVMXM3V1d0clVlSU9NUDdCcFJxRG05TjJhajJXUHNLCmpEYXdRcFpGdGhmbEdJR1ZqUUNCNFMwTkQzWWliSkVqdHZHMnBuTlkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== + service: + name: etcd + port: 2379 + scheme: https + secret: + name: etcd-client-certs + type: etcd + version: 3.5.0 \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..40b8ee2f8e --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-tls-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-secret.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-secret.yaml new file mode 100644 index 0000000000..0323bb8cb5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: etcd-stash-auth + namespace: demo +type: Opaque +data: + client-key.pem: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBc1ZVeUQ3L25QanBnOWlrYlpIdk5pN2ZUZFUyM3NXLzZjT2p6cWdXYm9HRDJLbTdFCk9GeVFXb2FacWxWNHM5V3F3cy9vaGxjb0JHUzMrVUVNbkJjNi9QU0tTUmxVUUUxS3ZqeXhFUkwzU0Yxc3h4UnMKMExVZVFnWno2T1dubkhORTBjNXZObjlSUVo5VENOeHl0WjBqVi94MG9wd0c3KzBzNSs0R05GbmZQMjB5ZXFLNQpDM1JEbEJSWVFKRWZMYTR5dHh6TjI1TENUQ2dsaTlkdWZoaC9ieXVLdHUxVzVaTmowVVh0bXRNRkd5N2JhZ1J2CmlLQ0NqVDQvc0RqWXpTWlZ2VitESlFFemhLZmdqc2NrNXBhaTJsWFhpaXJQVzE4N3JUSkxoc1pacWt3NUlCWEEKSUpqWjFBSSttYytSUE1mVitxV0h0ZG5XOHM1TDZxd2VvVUdwUlFJREFRQUJBb0lCQUFMMGJIVWV1WGVyK1ZtZwpyYmdxNSszZ0RrSHlIWkZ6VURUNWJMWDBpZmRPSmt2bXRKWkwxSXZ0bWpuZ1dyYUVaT2dDRnRuR01nQ0F2U0FHCkdYT3dYMmMvbTk1RDhjZHdna0pST0pJVVF0S04yL1lsUFBydFNhZkgrNzV4dFMxQ0xtOWdoVEhmUlRkV3RFZDkKaE52SjFvRHN6L1Mxck5mcWw4ajFpbHpzOG05WUYxWEtoRlozQmpSWHBFRFdCWUIzeTE2dGV6RlU0NlJaMSs1UwpaR3pTakxhOTNuK0JEeGc2ejdMVjhON0xyYXVQY3lCbkFnUC9KMlR0MTQ3bHM2cHhUWlh2UFd0ZXdvRHV1aHF1CndWQ1FkUWZ3bmlPTmJmbUxDNUp6OWNrNzJvWUg2ditjbEtFc05GT2xZWjdjRGkzaTZ6K2RuK1JOYTUvc295Mm0KV0RsQ1ZURUNnWUVBNHlUSGlXYk5FMEk1N2NnNDNlWkJ6eTBSMGtvTktJRGlJMWZkQmRBWUcraU1vZzZUSEdBSApvYkRFSnI0YkZ3aUM1QmlYeHVxZ2RQSVhqcXNNTGtYM2Zra3ErNkh0VS9XRS9pSmJyRnN6clUreFdoYmxEc0ZPCkRCUWw3SjlkaitRaGcyeXBOcEtjUWVYS0E5WVdvV1VqTkp0Z1dVMG81MmFVcUF3NnRKWW8wMzhDZ1lFQXg5eDAKZVg1YkUyWU02ZU9tZWVXWWdBZC93cVV4NmlYaWl4S2M3Z1Z6WG9qVUVaaUQwVEdrSi9RTW9TNHNHV01OekRlYQorbTdXNzVSTUZoOGlzQjdlTUxlSE0zRTRBV08yVlc4SUVuM1h6U0JLNngvcWIwS2VoWVNIS0R4YnQ0UDBGSVdTCjdYc0pYc09mRlRMclZLbHYyZnE2ZzBwZ1R1Ri9QZzdaRUIxQWxUc0NnWUJ4VDJhdTEzYVVGZVI2QnZpL1VWOGcKNzdYRk5xV3J2K2VQaEFSQkl4Ynp6U1Zpcm15YXFoa0VndjdHNk96d3A1Rk1JaXlNMFh5citoemdVZG1vdDhTSAozZzR3S3c0T1pSc3IvNDNGeEZWYUxyZ2xYZWgwWE9BSFRJSENzWmxsNzRMOFlkZGozdTFPUGtoeGMzb2tseVJoCjJPVE9oNXhSR3k0clNyWjZZYklLRndLQmdDUEg1eDVkTGNjQ1RTdU9jeDU5cVZpNmZ2Z0ZCVE9yUnF5cFQya1oKbHJjRS9ocU1XSVVhUXc1WUZlN0JTbW5kSHZwQnRrQkJtYjlZcUdxSmRuZGJmMkh2YVlnZksreXJ3bGYzUWRXMQpxKzN3YXhrL0pJUjR3OUtaa0d6MnFXRG9nY2t1eE1nNWI4c0VjTFdsNFJYT0k5VTlteWlvSnlmWUhTU3FHZGhWCnRGdERBb0dCQUlEZ1RVOHZNL2VkTml3TVZSMmRnZjRXNEVhcE9zWXhmdFZnOU5YUFNOOEdVNHFtWURCNGtIWnMKQjg5dzFEajB0WU0xQnNseXRYN3llSTUxNi8rUDVuYnQ4eHRtS3RUWVlrWmlvOGFEM2FaZXh0ZTIySXRjTE1xTwpMMERWZ0s3bzRxMVdUVWVCZWkxbDB4b3JXWUR0a0tIYkUvWGJDeHFtOGgzWDdpMlVWOWZFCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t + client.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURnekNDQW11Z0F3SUJBZ0lVT1VLSTFzY2pVaEROTEJPazdma3J4dFFlNU9Fd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0RURUxNQWtHQTFVRUF4TUNRMEV3SGhjTk1qRXhNREU1TVRFMU56QXdXaGNOTWpZeE1ERTRNVEUxTnpBdwpXakFSTVE4d0RRWURWUVFERXdaamJHbGxiblF3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUN4VlRJUHYrYytPbUQyS1J0a2U4Mkx0OU4xVGJleGIvcHc2UE9xQlp1Z1lQWXFic1E0WEpCYWhwbXEKVlhpejFhckN6K2lHVnlnRVpMZjVRUXljRnpyODlJcEpHVlJBVFVxK1BMRVJFdmRJWFd6SEZHelF0UjVDQm5Qbwo1YWVjYzBUUnptODJmMUZCbjFNSTNISzFuU05YL0hTaW5BYnY3U3puN2dZMFdkOC9iVEo2b3JrTGRFT1VGRmhBCmtSOHRyakszSE0zYmtzSk1LQ1dMMTI1K0dIOXZLNHEyN1ZibGsyUFJSZTJhMHdVYkx0dHFCRytJb0lLTlBqK3cKT05qTkpsVzlYNE1sQVRPRXArQ094eVRtbHFMYVZkZUtLczliWHp1dE1rdUd4bG1xVERrZ0ZjQWdtTm5VQWo2Wgp6NUU4eDlYNnBZZTEyZGJ5emt2cXJCNmhRYWxGQWdNQkFBR2pnZFl3Z2RNd0RnWURWUjBQQVFIL0JBUURBZ1dnCk1DTUdBMVVkSlFRY01Cb0dDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBZ1lFVlIwbEFEQU1CZ05WSFJNQkFmOEUKQWpBQU1CMEdBMVVkRGdRV0JCU3dUcWpsZWlxVCsyU1pHM1lndzBTY3RDeEkxekFmQmdOVkhTTUVHREFXZ0JRawpMSDVQNmE2bDVkZnZCL1BlV0FINE9MeTdkVEJPQmdOVkhSRUVSekJGZ2c5bGRHTmtMWFJzY3kwd0xtVjBZMlNDCkQyVjBZMlF0ZEd4ekxURXVaWFJqWklJUFpYUmpaQzEwYkhNdE1pNWxkR05rZ2dSbGRHTmtod1IvQUFBQmh3UUEKQUFBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXJlNHd2b2hGK094dHpONGgvM0RjUHd1dk5hU3BoMnpEWQp4SUwzVDY1U2kxcmNYL3NPdmVVZ0hBZ0RIeGRqeWoyRXB0ckpDWFBsaElQSGt4NWYydHVzV1hxRWVUNHhVdmo3CnlGaXZTSFR3OEtBSWlWL0FjWi96Z2JXYXFqaXo4dTFzd2JZVXFGWERkbDR2ZktVOFc2dVh2elU5U2k2RDRMTWwKbEtHMzY0VStCVzcxS2lBNnR3MmZ1ZitOd3E0TkFNUHZhRlhZaU5JOHVWUDV5eFNFZnBFcldicjBFZ2JwU3JWcwo4SVJPTEJ4cFo5b09qWGloNHBMWTFXV29xVXR4bVR6SWZhMjgxRi85ZzAyMUVrMmErb1lKbnZhMjQvMGEwNHlKCkYyYTM1VDZ0eVhsU0oxMGhkTFpDbi9QMnVNTkNJajBVZk5LZ1M3RVVMQ0x0UnpzbzhMWGkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-tls.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-tls.yaml new file mode 100644 index 0000000000..5b827b1f2c --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/etcd-tls.yaml @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: Service +metadata: + name: etcd + namespace: demo +spec: + clusterIP: None + ports: + - port: 2379 + name: client + - port: 2380 + name: peer + selector: + app: etcd-tls +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd-tls + namespace: demo + labels: + app: etcd-tls +spec: + serviceName: etcd + replicas: 3 + selector: + matchLabels: + app: etcd-tls + template: + metadata: + name: etcd-tls + namespace: demo + labels: + app: etcd-tls + spec: + containers: + - name: etcd + image: gcr.io/etcd-development/etcd:v3.5.0 + ports: + - containerPort: 2379 + name: client + - containerPort: 2380 + name: peer + volumeMounts: + - name: data + mountPath: /var/run/etcd + - name: etcd-secret + mountPath: /etc/etcd-secret + command: + - /bin/sh + - -c + - | + PEERS="etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380" ;\ + exec etcd --name ${HOSTNAME} \ + --listen-peer-urls https://0.0.0.0:2380 \ + --listen-client-urls https://0.0.0.0:2379 \ + --advertise-client-urls https://${HOSTNAME}.etcd:2379 \ + --initial-advertise-peer-urls https://${HOSTNAME}.etcd:2380 \ + --initial-cluster etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380 \ + --initial-cluster-token etcd-cluster-1 \ + --data-dir /var/run/etcd \ + --client-cert-auth \ + --cert-file "/etc/etcd-secret/server.pem" \ + --key-file "/etc/etcd-secret/server-key.pem" \ + --trusted-ca-file "/etc/etcd-secret/ca.pem" \ + --peer-auto-tls + volumes: + - name: etcd-secret + secret: + secretName: etcd-server-certs + volumeClaimTemplates: + - metadata: + name: data + namespace: demo + spec: + storageClassName: standard + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/repository.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/repository.yaml new file mode 100644 index 0000000000..3ce106877d --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/etcd/etcd-tls + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/tls/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/etcd/tls/examples/restoresession.yaml new file mode 100644 index 0000000000..27dea9f89b --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/examples/restoresession.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-tls-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd-tls" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/etcd/tls/images/etcd-tls-backup.jpg b/content/docs/v2024.8.27/addons/etcd/tls/images/etcd-tls-backup.jpg new file mode 100644 index 0000000000..e94ec1fb49 Binary files /dev/null and b/content/docs/v2024.8.27/addons/etcd/tls/images/etcd-tls-backup.jpg differ diff --git a/content/docs/v2024.8.27/addons/etcd/tls/index.md b/content/docs/v2024.8.27/addons/etcd/tls/index.md new file mode 100644 index 0000000000..2116b686e6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/etcd/tls/index.md @@ -0,0 +1,731 @@ +--- +title: TLS Secured Etcd Backup | Stash +description: Backup TLS Secured Etcd using Stash +menu: + docs_v2024.8.27: + identifier: etcd-backup-tls + name: Etcd Cluster with TLS + parent: stash-etcd + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup & Restore an Etcd Cluster with TLS + +Stash `{{< param "info.version" >}}` supports backup and restoration of Etcd database. This guide will show you how you can backup & restore a TLS secured Etcd cluster using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore Etcd databases, please check the following guide [here](/docs/v2024.8.27/addons/etcd/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/tls/examples). + +## Prepare Etcd + +In this section, we are going to deploy a TLS secured Etcd cluster. Then, we will insert some sample data into the cluster. + + +### Create Certificates +Let's create certificates that our Etcd cluster will use for authenticating client requests and peer communications. We will be using Etcd recommended [cfssl](https://github.com/cloudflare/cfssl) tool for creating our necessary certificates. + +If you have `go` installed on your machine, you can run the following commands to install `cfssl`, +```bash +$ go get github.com/cloudflare/cfssl/cmd/cfssl +$ go get github.com/cloudflare/cfssl/cmd/cfssljson +```` + +To create the necessary certificates using `cfssl` you can follow the commands below. + +```bash +$ echo '{"CN":"CA","key":{"algo":"rsa","size":2048}}' | cfssl gencert -initca - | cfssljson -bare ca - + + +$ echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","server auth","client auth", "any"]}}}' > ca-config.json + + +$ export ADDRESS='127.0.0.1,0.0.0.0,etcd-tls-0.etcd,etcd-tls-1.etcd,etcd-tls-2.etcd,etcd' + +$ export NAME=server + +$ echo '{"CN":"'$NAME'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.pem -ca-key=ca-key.pem -hostname="$ADDRESS" - | cfssljson -bare $NAME + + +$ export NAME=client + +$ echo '{"CN":"'$NAME'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.pem -ca-key=ca-key.pem -hostname="$ADDRESS" - | cfssljson -bare $NAME +```` + +We have stored our SANs in the `ADDRESS` variable here. The above commands should create 5 certificates named `ca.pem`, `server.pem`, `server-key.pem`, `client.pem`, and `client-key.pem`. The `ca.pem` is a self-signed CA certificate. Rest of the certificates are signed by this CA. + +### Create Secret +Let's create a generic Secret with the certificates created above. +```bash +$ kubectl create secret generic -n demo etcd-server-certs\ + --from-file=./ca.pem\ + --from-file=./server.pem\ + --from-file=./server-key.pem\ + --from-file=./client.pem\ + --from-file=./client-key.pem + +secret/etcd-server-certs created +```` + +### Deploy Etcd + +At first, let's deploy an Etcd cluster. Here, we will use a StatefulSet and a Service to deploy an Etcd cluster consisting of three members. The Service is used for handling peer communications and client requests. + +Here, are the sample YAMLs that we are going to use to deploy the Etcd cluster, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: etcd + namespace: demo +spec: + clusterIP: None + ports: + - port: 2379 + name: client + - port: 2380 + name: peer + selector: + app: etcd-tls +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd-tls + namespace: demo + labels: + app: etcd-tls +spec: + serviceName: etcd + replicas: 3 + selector: + matchLabels: + app: etcd-tls + template: + metadata: + name: etcd-tls + namespace: demo + labels: + app: etcd-tls + spec: + containers: + - name: etcd + image: gcr.io/etcd-development/etcd:v3.5.0 + ports: + - containerPort: 2379 + name: client + - containerPort: 2380 + name: peer + volumeMounts: + - name: data + mountPath: /var/run/etcd + - name: etcd-secret + mountPath: /etc/etcd-secret + command: + - /bin/sh + - -c + - | + PEERS="etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380" ;\ + exec etcd --name ${HOSTNAME} \ + --listen-peer-urls https://0.0.0.0:2380 \ + --listen-client-urls https://0.0.0.0:2379 \ + --advertise-client-urls https://${HOSTNAME}.etcd:2379 \ + --initial-advertise-peer-urls https://${HOSTNAME}.etcd:2380 \ + --initial-cluster etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380 \ + --initial-cluster-token etcd-cluster-1 \ + --data-dir /var/run/etcd \ + --client-cert-auth \ + --cert-file "/etc/etcd-secret/server.pem" \ + --key-file "/etc/etcd-secret/server-key.pem" \ + --trusted-ca-file "/etc/etcd-secret/ca.pem" \ + --peer-auto-tls + volumes: + - name: etcd-secret + secret: + secretName: etcd-server-certs + volumeClaimTemplates: + - metadata: + name: data + namespace: demo + spec: + storageClassName: standard + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi +``` + +Let's deploy the Etcd cluster we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/etcd.yaml +service/etcd created +statefulset.apps/etcd-tls created +``` + +Now, let's wait for the database pods `etcd-tls-0`, `etcd-tls-1`, and `etcd-tls-2` to go into `Running` state, + +```bash +❯ kubectl get pods -n demo --selector=app=etcd-tls + +NAME READY STATUS RESTARTS AGE +etcd-tls-0 1/1 Running 0 6m +etcd-tls-1 1/1 Running 0 6m +etcd-tls-2 1/1 Running 0 6m +``` + +Once the database pods are in `Running` state, verify that the Etcd cluster is ready to accept connections. Let's exec into the `etcd-tls-0` database pod and check cluster's health. + +```bash +❯ kubectl exec -it -n demo etcd-tls-0 -- /bin/sh + +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem endpoint health +127.0.0.1:2379 is healthy: successfully committed proposal: took = 8.497131ms +``` +We can see from the above output that our Etcd cluster is ready to accept connections. + +### Insert Sample Data +Now, we are going to exec into any of the database pods and insert some sample data. + +Let's exec into the `etcd-tls-0` pod for inserting sample data. + +```bash +❯ kubectl exec -it -n demo etcd-tls-0 -- /bin/sh +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem put foo bar +OK +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem put foo2 bar2 +OK +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem put foo3 bar3 +OK +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem put foo4 bar4 +OK + +# Verify that the data has been inserted successfully +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem get --prefix foo +foo +bar +foo2 +bar2 +foo3 +bar3 +foo4 +bar4 +127.0.0.1:2379> exit +``` + +We have successfully deployed an Etcd cluster and inserted some sample data into it. In the subsequent sections, we are going to backup these data using Stash. + + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (e.g., connection information, backend information, etc.) before backup. + +### Ensure Etcd Addon + +When you install Stash, it will automatically install all the official addons. Make sure that Etcd addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep etcd +etcd-backup-3.5.0 18m +etcd-restore-3.5.0 18m +``` + +This addon should be able to take backup of the databases with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/etcd/README#addon-version-compatibility). + +### Create Secret +To access TLS secured Etcd cluster from Stash, we need to create a Secret. Let's create the Secret containing `client-key,pem` and `client.pem` from the certificates we have created earlier. + +```bash +kc create secret generic -n demo etcd-client-certs\ + --from-file=./client.pem\ + --from-file=./client-key.pem +secret/etcd-client-certs created +``` + +### Create AppBinding + +Stash needs to know how to connect with the Etcd cluster. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the Etcd cluster. You have to point to the respective `AppBinding` as a target of backup instead of the Etcd cluster itself. + +Here is the YAML of the `AppBinding` that we are going to create for the Etcd cluster we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: etcd-appbinding + namespace: demo +spec: + clientConfig: + caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2akNDQWRLZ0F3SUJBZ0lVZEJYNnU0RHRyNDA3WkZDTWN6Nzg4Y1YyWHVJd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0RURUxNQWtHQTFVRUF4TUNRMEV3SGhjTk1qRXhNREU1TVRBeE56QXdXaGNOTWpZeE1ERTRNVEF4TnpBdwpXakFOTVFzd0NRWURWUVFERXdKRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCCkFMZmp6OEJhbDhpWTdjSTd2OHNFdndpSmJnQXBqTDIvNnVZbXBaQVZvcW50cjJCcmFMbTlCb1czdkMydm5tbWYKWDhRUFBsWnFIeUxzY1gxZUlpazJyWHJEYUdQaU45VHhLQXVrbWJjZXFsUXZScGNZZkVaVTBQMzhNc0xsQUlHaQpZamZxRjR5Z1UyMjA0L3FucVVPbFFjLzh2MmJpRFNSQXNUM1NUT2FVemdMd05KT20wOUlqT1dUQW15Q2xXWmxnClJmV2tETzVTQ0xZd1pmQ1Z1MTdBalJRMTNsZTdocW9GcW9SUW96dUZQMFp0dlVFdWVPSXlSa3ZlYTFRYVNyTjgKcm1aN1BaL0lIb3dyNjFtMFd0bVE3ckw1eTMyOTgxb3hRNGg2UHdLMGNGNVNyOG9WRUR0TGZVeE1OWHpoMXpRUAorY2FhZWlUWklyc1dqRGNxSm9VWk1wVUNBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkCkV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQ1FzZmsvcHJxWGwxKzhIODk1WUFmZzR2THQxTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQmpOOHlxalhEaUdqaDFuUGdKVFpZa1FCa1E4SFZHeThIdlFWWG0zdFhHM3RLcApTaVdDQTlPbittR0xZZTlCMi9lOEFJNkIyMFB1Z0NZWHljMHVOb1RiSFdiZ01pNURiNEVZYXdDdVpkN3M4MXlUClRXY1N0VWZFeUdKNW1ycWZ6OFFPaUt0Sk1UeWFYbHllWllURnhnWUsyOThTcDhubFBRQlgzNVBDakZTbXZwa1UKY0N5TllYMDF1RnFhWE9FZTdkTnpBUmhIaU1xVFM0dkNUUnFrbFpMWHB6a3ViZER3WTVKK3gzYmptcDk1RUtmVwpJbkhERTJ2ckxsU0crZDVWNnBuUG54bXc3aGg2L0NMUTNVMXM3V1d0clVlSU9NUDdCcFJxRG05TjJhajJXUHNLCmpEYXdRcFpGdGhmbEdJR1ZqUUNCNFMwTkQzWWliSkVqdHZHMnBuTlkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== + service: + name: etcd + port: 2379 + scheme: https + secret: + name: etcd-client-certs + type: etcd + version: 3.5.0 +``` + +Here, + +- `.spec.clientConfig.caBundle` specifies the base64 encoded CA certificate. Here, we have used the base64 encoded version of our previously generated `ca.pem` certificate. +- `.spec.clientConfig.Service` specifies the Service information to use to connect with the Etcd cluster. +- `.spec.secret` specifies the name of the Secret that holds the necessary client certificates. +- `.spec.type` specifies the type of the database. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/etcd-appbinding created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/etcd/etcd-tls + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our data into our desired backend. + +### Backup + +To schedule a backup, we need to create a `BackupConfiguration` object targeting the respective `AppBinding` of our Etcd cluster. Then, Stash will create a CronJob to periodically backup the cluster. + +#### Create BackupConfiguration + +Below, is the YAML for `BackupConfiguration` object that we are going to use to backup the TLS enabled Etcd cluster we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: etcd-tls-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: etcd-backup-3.5.0 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup our Etcd cluster. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted Etcd cluster. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/etcd-tls-backup created +``` + +### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-tls-backup etcd-backup-3.5.0 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-tls-backup */5 * * * * False 0 65s +``` + +#### Wait for BackupSession + +The `stash-trigger-etcd-tls-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +etcd-tls-backup-q2dk6 BackupConfiguration etcd-tls-backup Succeeded 41s 60s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 42.105 KiB 2 2m10s 47m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats-tls` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore Etcd + +If you have followed the previous sections properly, you should have a successful backup of your TLS enabled Etcd cluster. Now, we are going to show how you can restore the Etcd cluster from the backup. + +### Restore Into the Same Etcd Cluster + +You can restore your data into the same Etcd cluster you have taken backup from or into a different Etcd cluster. In this section, we are going to show you how to restore data in the same Etcd cluster which maybe necessary when you have accidentally deleted any data from the running cluster. + + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the Etcd cluster so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `etcd-tls-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo etcd-tls-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/etcd-tls-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo etcd-tls-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-tls-backup etcd-backup-3.5.0 */5 * * * * true Ready 25m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-tls-backup */5 * * * * True 0 6m25s 95m +``` + +#### Simulate Disaster + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the `etcd-tls-0` database pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -it -n demo etcd-tls-0 -- /bin/sh +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem del foo +1 +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem del foo2 +1 +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem del foo3 +1 +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem del foo4 +1 + +# Verify that the data has been deleted successfully +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem get --prefix foo +(nil) +127.0.0.1:2379> exit +``` + +#### Create RestoreSession + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our Etcd database cluster. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: etcd-tls-restore + namespace: demo +spec: + task: + name: etcd-restore-3.5.0 + params: + - name: initialCluster + value: "etcd-tls-0=https://etcd-tls-0.etcd:2380,etcd-tls-1=https://etcd-tls-1.etcd:2380,etcd-tls-2=https://etcd-tls-2.etcd:2380" + - name: initialClusterToken + value: "etcd-cluster-1" + - name: dataDir + value: "/var/run/etcd" + - name: workloadKind + value: "StatefulSet" + - name: workloadName + value: "etcd-tls" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: etcd-appbinding + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore an Etcd database. +- `.spec.task.params` refers to the names and values of the Params objects specifying necessary parameters and their values for restoring backup data into an Etcd cluster. We need to specify the folowing parameters, + - `initialcluster` parameter refers to the initial cluster configuration of the Etcd cluster and it must be the same as the initial cluster configuration of the deployed Etcd cluster. + - `dataDir` parameter refers to the datadir of the deployed Etcd cluster where the backed up data will get restored. + - `workloadKind` parameter refers to the workload e.g. Pod/StatefulSet we have used to deploy the Etcd cluster. + - `workloadName` parameter refers to the workload name we have used to deploy the Etcd cluster. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective AppBinding of the Etcd database. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. +- The restore Job need access to the respective volume of the Etcd database. As a result, we have to run the restore Job as the same user as the Etcd database or as root user. Here, we are running the restore Job as root user using `spec.runtimeSettings.Container.securityContext` section. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/restoresession.yaml +restoresession.stash.appscode.com/etcd-tls-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +etcd-tls-restore gcs-repo Running 5s +etcd-tls-restore gcs-repo Running 60s +etcd-tls-restore gcs-repo Running 2m3s +etcd-tls-restore gcs-repo Succeeded 2m3s +etcd-tls-restore gcs-repo Succeeded 2m3s 2m3s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the `etcd-tls-0` database pod and verify whether the actual data has been restored or not, + +```bash +❯ kubectl exec -it -n demo etcd-tls-0 -- /bin/sh + +127.0.0.1:2379> etcdctl --cacert /etc/etcd-secret/ca.pem --cert /etc/etcd-secret/client.pem --key /etc/etcd-secret/client-key.pem get --prefix foo +foo +bar +foo2 +bar2 +foo3 +bar3 +foo4 +bar4 + +127.0.0.1:2379> exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo etcd-tls-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/etcd-tls-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo etcd-tls-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +etcd-tls-backup etcd-backup-3.5.0 */5 * * * * false Ready 39m +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-etcd-tls-backup */5 * * * * False 0 2m39s 42m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore Into Different Database of the Same Namespace + +If you want to restore the backed up data into a different Etcd cluster of the same namespace, you have to create another `AppBinding` ppointing to the desired Etcd database. Then, you have to create the `RestoreSession` pointing to the new `AppBinding`. + +### Restore Into Different Namespace + +If you want to restore into a different namespace of the same cluster, you have to create the Repository, backend Secret, AppBinding, in the desired namespace. You can use [Stash kubectl plugin](https://stash.run/docs/{{< param "info.version" >}}/guides/cli/cli/) to easily copy the resources into a new namespace. Then, you have to create the `RestoreSession` object in the desired namespace pointing to the Repository, AppBinding of that namespace. + +### Restore Into Different Cluster + +If you want to restore into a different cluster, you have to install Stash in the desired cluster. Then, you have to create the Repository, backend Secret, AppBinding, in the desired cluster. Finally, you have to create the `RestoreSession` object in the desired cluster pointing to the Repository, AppBinding of that cluster. + + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration etcd-tls-backup +kubectl delete -n demo restoresession etcd-tls-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo appbinding etcd-appbinding +kubectl delete -n demo Secret gcs-secret +kubectl delete -n demo Secret etcd-client-certs +kubectl delete -n demo Secret etcd-server-certs +# delete the database, Service, and PVCs +kubectl delete -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/etcd/tls/examples/etcd-tls.yaml +kubectl delete pvc -n demo data-etcd-tls-0 data-etcd-tls-1 data-etcd-tls-2 +``` diff --git a/content/docs/v2024.8.27/addons/kubedump/README.md b/content/docs/v2024.8.27/addons/kubedump/README.md new file mode 100644 index 0000000000..894fd19ebc --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/README.md @@ -0,0 +1,97 @@ +--- +title: KubeDump Backup Addon Overview | Stash +description: KubeDump Backup Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-readme + name: Readme + parent: stash-kubedump + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/kubedump/ +aliases: +- /docs/v2024.8.27/addons/kubedump/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash KubeDump Backup Addon + +Stash `{{< param "info.version" >}}` supports extending its functionality through addons. Stash KubeDump backup addon enables Stash to backup and restore Kubernetes manifests. You can backup the manifest of your entire cluster, a particular namespace, or a particular application. + +This guide will give you an overview of how the docs are organized. + +## Documentation Overview + +Stash KubeDump backup documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/kubedump/overview/) gives an overview of how manifest backup works in Stash. +- [Cluster Backup](/docs/v2024.8.27/addons/kubedump/cluster/) shows how to backup all the cluster manifests. +- [Namespace Backup](/docs/v2024.8.27/addons/kubedump/namespace/) shows how to backup the manifests only for a particular namespace. +- [Application Backup](/docs/v2024.8.27/addons/kubedump/application/) shows how to manifests of a particular application. +- [Customizing Backup](/docs/v2024.8.27/addons/kubedump/customization/) shows how to customize the backup process. diff --git a/content/docs/v2024.8.27/addons/kubedump/_index.md b/content/docs/v2024.8.27/addons/kubedump/_index.md new file mode 100644 index 0000000000..e85f5860c5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash KubeDump Backup Addon +menu: + docs_v2024.8.27: + identifier: stash-kubedump + name: KubeDump + parent: stash-addons + weight: 110 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/kubedump/application/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/kubedump/application/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..8cbc8aaaa7 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/application/examples/backupconfiguration.yaml @@ -0,0 +1,27 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: application-manifest-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: includeDependants + value: "true" + repository: + name: application-resource-storage + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-stash-enterprise + namespace: kube-system + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/application/examples/rbac.yaml b/content/docs/v2024.8.27/addons/kubedump/application/examples/rbac.yaml new file mode 100644 index 0000000000..52ae310646 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/application/examples/rbac.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io diff --git a/content/docs/v2024.8.27/addons/kubedump/application/examples/repository.yaml b/content/docs/v2024.8.27/addons/kubedump/application/examples/repository.yaml new file mode 100644 index 0000000000..c2afa3b3ea --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/application/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: application-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/applications/kube-system/stash-enterprise + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/kubedump/application/images/application_manifest_backup.png b/content/docs/v2024.8.27/addons/kubedump/application/images/application_manifest_backup.png new file mode 100644 index 0000000000..303719e18c Binary files /dev/null and b/content/docs/v2024.8.27/addons/kubedump/application/images/application_manifest_backup.png differ diff --git a/content/docs/v2024.8.27/addons/kubedump/application/index.md b/content/docs/v2024.8.27/addons/kubedump/application/index.md new file mode 100644 index 0000000000..067a99ef95 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/application/index.md @@ -0,0 +1,519 @@ +--- +title: Backup YAMLs of an Application | Stash +description: Backup application manifests along with it's dependant using Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-application + name: Application Manifest Backup + parent: stash-kubedump + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup YAMLs of an Application using Stash + +Stash `{{< param "info.version" >}}` supports taking backup of the resource YAMLs using `kubedump` plugin. This guide will show you how you can take a backup of the YAMLs of an application along with it's dependant using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install Stash `kubectl` plugin in your local machine following the steps [here](/docs/v2024.8.27/setup/install/kubectl-plugin/). +- If you are not familiar with how Stash backup the resource YAMLs, please check the following guide [here](/docs/v2024.8.27/addons/kubedump/overview/). + +You have to be familiar with the following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create the `demo` namespace if you haven't created it already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/kubedump/application/examples). + +### Prepare for Backup + +In this section, we are going to configure a backup for YAML definition of a Deployment along with its ReplicaSet and its Pods. + +#### Ensure `kubedump` Addon + +When you install the Stash, it will automatically install all the official addons. Make sure that `kubedump` addon was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep kubedump +kubedump-backup-0.1.0 23s +``` + +#### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: application-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/applications/kube-system/stash-enterprise + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/application/examples/repository.yaml +repository.stash.appscode.com/application-resource-storage created +``` + +#### Create RBAC + +The `kubedump` plugin requires read permission for the application resources. By default, Stash does not grant such permissions. We have to provide the necessary permissions manually. + +Here, is the YAML of the `ServiceAccount`, `ClusterRole`, and `ClusterRoleBinding` that we are going to use for granting the necessary permissions. + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io +``` + +Here, we have give permission to read all the cluster resources. You can restrict this permission to a particular application resources only. + +Let's create the RBAC resources we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/application/examples/rbac.yaml +serviceaccount/cluster-resource-reader created +clusterrole.rbac.authorization.k8s.io/cluster-resource-reader created +clusterrolebinding.rbac.authorization.k8s.io/cluster-resource-reader created +``` + +Now, we are ready for backup. In the next section, we are going to schedule a backup for our cluster resources. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object. Then Stash will create a CronJob to periodically backup the database. + +At first, lets list available Deployment in `kube-system` namespace. + +```bash +❯ kubectl get deployments -n kube-system +NAME READY UP-TO-DATE AVAILABLE AGE +coredns 2/2 2 2 13d +stash-stash-enterprise 1/1 1 1 30h +``` + +Here, we are going to setup backup YAMLs for `stash-stash-enterprise` Deployment. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the YAMLs of the cluster resources, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: application-manifest-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: includeDependants + value: "true" + repository: + name: application-resource-storage + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-stash-enterprise + namespace: kube-system + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the cluster resources at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup the resource YAMLs. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target` specifies the targeted application that we are going to backup. +- `.spec.runtimeSettings.pod.serviceAccountName` specifies the ServiceAccount name that we have created earlier with cluster-wide resource reading permission. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/application/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/application-manifest-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +application-manifest-backup kubedump-backup-0.1.0 */5 * * * * Ready 2m46s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-demo-application-manifest-backup */5 * * * * False 0 36s +``` + +#### Wait for BackupSession + +The `stash-trigger-application-manifest-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +application-manifest-backup-1652269801 BackupConfiguration application-manifest-backup 0s +application-manifest-backup-1652269801 BackupConfiguration application-manifest-backup Pending 0s +application-manifest-backup-1652269801 BackupConfiguration application-manifest-backup Running 0s +application-manifest-backup-1652269801 BackupConfiguration application-manifest-backup Succeeded 59s 59s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed-up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `application-resource-storage` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +application-resource-storage true 14.902 KiB 1 61s 11m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `/manifest/applications/kube-system/stash-enterprise` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed-up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +Stash does not provide any automatic mechanism to restore the cluster resources from the backed-up YAMLs. Your application might be managed by Helm or by an operator. In such cases, just applying the YAMLs is not enough to restore the application. Furthermore, there might be an order issue. Some resources must be applied before others. It is difficult to generalize and codify various application-specific logic. + +Therefore, it is the user's responsibility to download the backed-up YAMLs and take the necessary steps based on his application to restore it properly. + +### Download the YAMLs + +Stash provides a [kubectl plugin](https://stash.run/docs/v2022.05.12/guides/cli/cli/#download-snapshots) for making it easy to download a snapshot locally. + +Now, let's download the latest Snapshot from our backed-up data into the `$HOME/Downloads/stash/applications/kube-system/stash-enterprise` folder of our local machine. + +```bash +❯ kubectl stash download -n demo application-resource-storage --destination=$HOME/Downloads/stash/applications/kube-system/stash-enterprise --snapshots="latest" +``` + +Now, lets use [tree](https://linux.die.net/man/1/tree) command to inspect downloaded YAMLs files. + +```bash +❯ tree $HOME/Downloads/stash/applications/kube-system/stash-enterprise +/home/emruz/Downloads/stash/applications/kube-system/stash-enterprise +└── latest + └── tmp + └── resources + ├── ReplicaSet + │   └── stash-stash-enterprise-567dd95f5b + │   ├── Pod + │   │   └── stash-stash-enterprise-567dd95f5b-6xtxg + │   │   └── stash-stash-enterprise-567dd95f5b-6xtxg.yaml + │   └── stash-stash-enterprise-567dd95f5b.yaml + └── stash-stash-enterprise.yaml + +7 directories, 3 files +``` + +As you can see that the Deployment has been backed up along with it's ReplicaSet and Pods. + +Let's inspect the YAML of `stash-stash-enterprise.yaml` file, + +```yaml +❯ cat $HOME/Downloads/stash/applications/kube-system/stash-enterprise/latest/tmp/resources/stash-stash-enterprise.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: "1" + meta.helm.sh/release-name: stash + meta.helm.sh/release-namespace: kube-system + labels: + app.kubernetes.io/instance: stash + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: stash-enterprise + app.kubernetes.io/version: v0.20.0 + helm.sh/chart: stash-enterprise-v0.20.0 + name: stash-stash-enterprise + namespace: kube-system +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/instance: stash + app.kubernetes.io/name: stash-enterprise + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + checksum/apiregistration.yaml: ea1443f1d9a807c14104b3e24ca051acb32c215743fde21c682ccb1876deee8d + labels: + app.kubernetes.io/instance: stash + app.kubernetes.io/name: stash-enterprise + spec: + containers: + - args: + - run + - --v=3 + - --docker-registry=stashed + - --image=stash-enterprise + - --image-tag=v0.20.0 + - --secure-port=8443 + - --audit-log-path=- + - --tls-cert-file=/var/serving-cert/tls.crt + - --tls-private-key-file=/var/serving-cert/tls.key + - --pushgateway-url=http://stash-stash-enterprise.kube-system.svc:56789 + - --enable-mutating-webhook=true + - --enable-validating-webhook=true + - --bypass-validating-webhook-xray=false + - --use-kubeapiserver-fqdn-for-aks=true + - --cron-job-psp=baseline + - --backup-job-psp=baseline + - --restore-job-psp=baseline + - --nva-cpu=100m + - --nva-memory=128Mi + - --nva-user=2000 + - --nva-privileged-mode=false + - --nva-psp=baseline + - --license-file=/var/run/secrets/appscode/license/key.txt + - --license-apiservice=v1beta1.admission.stash.appscode.com + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: stashed/stash-enterprise:v0.20.0 + imagePullPolicy: IfNotPresent + name: operator + ports: + - containerPort: 8443 + protocol: TCP + resources: + requests: + cpu: 100m + securityContext: {} + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/serving-cert + name: serving-cert + - mountPath: /var/run/secrets/appscode/license + name: license + - args: + - --web.listen-address=:56789 + - --persistence.file=/var/pv/pushgateway.dat + image: prom/pushgateway:v1.4.2 + imagePullPolicy: IfNotPresent + name: pushgateway + ports: + - containerPort: 56789 + protocol: TCP + resources: {} + securityContext: {} + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/pv + name: data-volume + - mountPath: /tmp + name: stash-scratchdir + nodeSelector: + kubernetes.io/os: linux + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 65535 + serviceAccount: stash-stash-enterprise + serviceAccountName: stash-stash-enterprise + volumes: + - emptyDir: {} + name: data-volume + - emptyDir: {} + name: stash-scratchdir + - name: serving-cert + secret: + defaultMode: 420 + secretName: stash-stash-enterprise-apiserver-cert + - name: license + secret: + defaultMode: 420 + secretName: stash-stash-enterprise-license +``` + +Now, you can use these YAML files to re-create your desired application. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration application-manifest-backup +kubectl delete -n demo repository application-resource-storage +kubectl delete -n demo serviceaccount cluster-resource-reader +kubectl delete -n demo clusterrole cluster-resource-reader +kubectl delete -n demo clusterrolebinding cluster-resource-reader +``` diff --git a/content/docs/v2024.8.27/addons/kubedump/cluster/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..e9ee92b502 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/backupconfiguration.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/cluster/examples/rbac.yaml b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/rbac.yaml new file mode 100644 index 0000000000..52ae310646 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/rbac.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io diff --git a/content/docs/v2024.8.27/addons/kubedump/cluster/examples/repository.yaml b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/repository.yaml new file mode 100644 index 0000000000..fdc38ef16f --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/cluster/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: cluster-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/cluster + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/kubedump/cluster/images/cluster_manifests_backup.png b/content/docs/v2024.8.27/addons/kubedump/cluster/images/cluster_manifests_backup.png new file mode 100644 index 0000000000..2ea0e447c9 Binary files /dev/null and b/content/docs/v2024.8.27/addons/kubedump/cluster/images/cluster_manifests_backup.png differ diff --git a/content/docs/v2024.8.27/addons/kubedump/cluster/index.md b/content/docs/v2024.8.27/addons/kubedump/cluster/index.md new file mode 100644 index 0000000000..4cfd2179ce --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/cluster/index.md @@ -0,0 +1,602 @@ +--- +title: Backup resource YAMLs of entire cluster | Stash +description: Take backup of cluster resources YAMLs using Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-cluster + name: Cluster Backup + parent: stash-kubedump + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup resource YAMLs of entire cluster using Stash + +Stash `{{< param "info.version" >}}` supports taking backup of the resource YAMLs using `kubedump` plugin. This guide will show you how you can take a backup of the resource YAMLs of your entire cluster using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install Stash `kubectl` plugin in your local machine following the steps [here](/docs/v2024.8.27/setup/install/kubectl-plugin/). +- If you are not familiar with how Stash backup the resource YAMLs, please check the following guide [here](/docs/v2024.8.27/addons/kubedump/overview/). + +You have to be familiar with the following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create the `demo` namespace if you haven't created it already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/kubedump/cluster/examples). + +### Prepare for Backup + +In this section, we are going to configure a backup for all the resource YAMLs of our cluster. + +#### Ensure `kubedump` Addon + +When you install the Stash, it will automatically install all the official addons. Make sure that `kubedump` addon was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep kubedump +kubedump-backup-0.1.0 23s +``` + +#### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: cluster-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/cluster + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/cluster/examples/repository.yaml +repository.stash.appscode.com/cluster-resource-storage created +``` + +#### Create RBAC + +The `kubedump` plugin requires read permission for all the cluster resources. By default, Stash does not grant such cluster-wide permissions. We have to provide the necessary permissions manually. + +Here, is the YAML of the `ServiceAccount`, `ClusterRole`, and `ClusterRoleBinding` that we are going to use for granting the necessary permissions. + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io +``` + +Let's create the RBAC resources we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/cluster/examples/rbac.yaml +serviceaccount/cluster-resource-reader created +clusterrole.rbac.authorization.k8s.io/cluster-resource-reader created +clusterrolebinding.rbac.authorization.k8s.io/cluster-resource-reader created +``` + +Now, we are ready for backup. In the next section, we are going to schedule a backup for our cluster resources. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the YAMLs of the cluster resources, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the cluster resources at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup the resource YAMLs. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.runtimeSettings.pod.serviceAccountName` specifies the ServiceAccount name that we have created earlier with cluster-wide resource reading permission. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/cluster/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/cluster-resources-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +cluster-resources-backup kubedump-backup-0.1.0 */5 * * * * Ready 18s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-cluster-resources-backup */5 * * * * False 0 49s +``` + +#### Wait for BackupSession + +The `stash-trigger-cluster-resources-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +cluster-resources-backup-1652164800 BackupConfiguration cluster-resources-backup 0s +cluster-resources-backup-1652164800 BackupConfiguration cluster-resources-backup Pending 0s +cluster-resources-backup-1652164800 BackupConfiguration cluster-resources-backup Running 0s +cluster-resources-backup-1652164800 BackupConfiguration cluster-resources-backup Running 69s +cluster-resources-backup-1652164800 BackupConfiguration cluster-resources-backup Succeeded 1m9s 69s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed-up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `cluster-resource-storage` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +cluster-resource-storage true 2.324 MiB 1 70s 54m + +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `/manifest/cluster` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed-up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +Stash does not provide any automatic mechanism to restore the cluster resources from the backed-up YAMLs. Your application might be managed by Helm or by an operator. In such cases, just applying the YAMLs is not enough to restore the application. Furthermore, there might be an order issue. Some resources must be applied before others. It is difficult to generalize and codify various application-specific logic. + +Therefore, it is the user's responsibility to download the backed-up YAMLs and take the necessary steps based on his application to restore it properly. + +### Download the YAMLs + +Stash provides a [kubectl plugin](https://stash.run/docs/v2022.05.12/guides/cli/cli/#download-snapshots) for making it easy to download a snapshot locally. + +Now, let's download the latest Snapshot from our backed-up data into the `$HOME/Downloads/stash` folder of our local machine. + +```bash +❯ kubectl stash download -n demo cluster-resource-storage --destination=$HOME/Downloads/stash --snapshots="latest" +``` + +Now, lets use [tree](https://linux.die.net/man/1/tree) command to inspect downloaded YAMLs files. + +```bash +❯ tree $HOME/Downloads/stash +/home/emruz/Downloads/stash +└── latest + └── tmp + └── resources + ├── global + │ ├── APIService + │ │ ├── v1.admissionregistration.k8s.io.yaml + │ │ ├── v1alpha1.admission.stash.appscode.com.yaml + │ │ ├── v1alpha1.metrics.appscode.com.yaml + │ │ ├── v1alpha1.repositories.stash.appscode.com.yaml + │ ├── ClusterRole + │ │ ├── admin.yaml + │ │ ├── system:heapster.yaml + │ │ └── view.yaml + │ ├── ClusterRoleBinding + │ │ ├── appscode:license-reader-demo-cluster-resource-reader.yaml + │ │ ├── appscode:stash:garbage-collector.yaml + │ │ ├── cluster-admin.yaml + │ │ ├── cluster-resource-reader.yaml + │ │ ├── kindnet.yaml + │ ├── ComponentStatus + │ │ ├── controller-manager.yaml + │ │ ├── etcd-0.yaml + │ │ └── scheduler.yaml + │ ├── CSINode + │ │ └── kind-control-plane.yaml + │ ├── CustomResourceDefinition + │ │ ├── appbindings.appcatalog.appscode.com.yaml + │ │ ├── backupbatches.stash.appscode.com.yaml + │ │ ├── backupblueprints.stash.appscode.com.yaml + │ │ ├── backupconfigurations.stash.appscode.com.yaml + │ ├── FlowSchema + │ │ ├── catch-all.yaml + │ │ ├── exempt.yaml + │ │ ├── global-default.yaml + │ │ ├── kube-controller-manager.yaml + │ │ ├── kube-scheduler.yaml + │ ├── Function + │ │ ├── elasticsearch-backup-5.6.4.yaml + │ │ ├── mongodb-restore-5.0.3.yaml + │ │ ├── mysql-backup-5.7.25.yaml + │ │ └── update-status.yaml + │ ├── MetricsConfiguration + │ │ ├── stash-appscode-com-backupconfiguration.yaml + │ ├── MutatingWebhookConfiguration + │ │ └── admission.stash.appscode.com.yaml + │ ├── Namespace + │ │ ├── default.yaml + │ │ ├── demo.yaml + │ │ ├── kube-node-lease.yaml + │ │ ├── kube-public.yaml + │ │ ├── kube-system.yaml + │ │ └── local-path-storage.yaml + │ ├── Node + │ │ └── kind-control-plane.yaml + │ ├── StorageClass + │ │ └── standard.yaml + │ ├── Task + │ │ ├── elasticsearch-backup-5.6.4.yaml + │ │ ├── redis-restore-5.0.13.yaml + │ │ └── redis-restore-6.2.5.yaml + │ └── ValidatingWebhookConfiguration + │ └── admission.stash.appscode.com.yaml + └── namespaces + ├── default + │ ├── ConfigMap + │ │ └── kube-root-ca.crt.yaml + │ ├── Endpoints + │ │ └── kubernetes.yaml + │ ├── EndpointSlice + │ │ └── kubernetes.yaml + │ ├── Secret + │ │ └── default-token-7lpm6.yaml + │ ├── Service + │ │ └── kubernetes.yaml + │ └── ServiceAccount + │ └── default.yaml + ├── demo + │ ├── BackupConfiguration + │ │ └── cluster-resources-backup.yaml + │ ├── BackupSession + │ │ ├── cluster-resources-backup-1652176500.yaml + │ │ └── cluster-resources-backup-1652176800.yaml + │ ├── ConfigMap + │ │ └── kube-root-ca.crt.yaml + │ ├── CronJob + │ │ └── stash-trigger-cluster-resources-backup.yaml + │ ├── Event + │ │ ├── cluster-resources-backup-1652173200.16edb2d9e21556ba.yaml + │ ├── Job + │ │ ├── stash-backup-cluster-resources-backup-1652176500-0.yaml + │ │ └── stash-backup-cluster-resources-backup-1652176800-0.yaml + │ ├── Pod + │ │ ├── stash-backup-cluster-resources-backup-1652176500-0-vmx94.yaml + │ │ └── stash-backup-cluster-resources-backup-1652176800-0-5v4k9.yaml + │ ├── Repository + │ │ └── cluster-resource-storage.yaml + │ ├── RoleBinding + │ │ ├── backupconfiguration-cluster-resources-backup-0.yaml + │ │ └── stash-trigger-cluster-resources-backup.yaml + │ ├── Secret + │ │ ├── cluster-resource-reader-token-rqf6n.yaml + │ │ ├── default-token-rbrqt.yaml + │ │ └── gcs-secret.yaml + │ ├── ServiceAccount + │ │ ├── cluster-resource-reader.yaml + │ │ └── default.yaml + │ └── Snapshot + │ ├── cluster-resource-storage-5085e316.yaml + │ ├── cluster-resource-storage-6034bdcf.yaml + │ ├── cluster-resource-storage-706e8f46.yaml + ├── kube-node-lease + │ ├── ConfigMap + │ │ └── kube-root-ca.crt.yaml + │ ├── Lease + │ │ └── kind-control-plane.yaml + │ ├── Secret + │ │ └── default-token-69n9s.yaml + │ └── ServiceAccount + │ └── default.yaml + ├── kube-public + │ ├── ConfigMap + │ │ ├── cluster-info.yaml + │ │ └── kube-root-ca.crt.yaml + │ ├── Role + │ │ ├── kubeadm:bootstrap-signer-clusterinfo.yaml + │ │ └── system:controller:bootstrap-signer.yaml + │ ├── RoleBinding + │ │ ├── kubeadm:bootstrap-signer-clusterinfo.yaml + │ │ └── system:controller:bootstrap-signer.yaml + │ ├── Secret + │ │ └── default-token-jqv4n.yaml + │ └── ServiceAccount + │ └── default.yaml + ├── kube-system + │ ├── ConfigMap + │ │ ├── coredns.yaml + │ │ ├── extension-apiserver-authentication.yaml + │ │ ├── kubeadm-config.yaml + │ │ ├── kubelet-config-1.21.yaml + │ │ ├── kube-proxy.yaml + │ │ └── kube-root-ca.crt.yaml + │ ├── ControllerRevision + │ │ ├── kindnet-5b547684d9.yaml + │ │ └── kube-proxy-6bc6858f58.yaml + │ ├── DaemonSet + │ │ ├── kindnet.yaml + │ │ └── kube-proxy.yaml + │ ├── Deployment + │ │ ├── coredns.yaml + │ │ └── stash-stash-enterprise.yaml + │ ├── Endpoints + │ │ ├── kube-dns.yaml + │ │ └── stash-stash-enterprise.yaml + │ ├── EndpointSlice + │ │ ├── kube-dns-m2s5c.yaml + │ │ └── stash-stash-enterprise-k28h6.yaml + │ ├── Lease + │ │ ├── kube-controller-manager.yaml + │ │ └── kube-scheduler.yaml + │ ├── Pod + │ │ ├── coredns-558bd4d5db-hdsw9.yaml + │ │ ├── coredns-558bd4d5db-wk9tx.yaml + │ │ ├── etcd-kind-control-plane.yaml + │ │ └── stash-stash-enterprise-567dd95f5b-6xtxg.yaml + │ ├── ReplicaSet + │ │ ├── coredns-558bd4d5db.yaml + │ │ └── stash-stash-enterprise-567dd95f5b.yaml + │ ├── Role + │ │ ├── extension-apiserver-authentication-reader.yaml + │ │ ├── kubeadm:kubelet-config-1.21.yaml + │ │ └── system::leader-locking-kube-scheduler.yaml + │ ├── RoleBinding + │ │ ├── kubeadm:kubelet-config-1.21.yaml + │ │ ├── kubeadm:nodes-kubeadm-config.yaml + │ │ ├── kube-proxy.yaml + │ ├── Service + │ │ ├── kube-dns.yaml + │ │ └── stash-stash-enterprise.yaml + │ └── ServiceAccount + │ ├── attachdetach-controller.yaml + │ ├── bootstrap-signer.yaml + └── local-path-storage + ├── ConfigMap + │ ├── kube-root-ca.crt.yaml + │ └── local-path-config.yaml + ├── Deployment + │ └── local-path-provisioner.yaml + ├── Endpoints + │ └── rancher.io-local-path.yaml + ├── Pod + │ └── local-path-provisioner-547f784dff-jb9tq.yaml + ├── ReplicaSet + │ └── local-path-provisioner-547f784dff.yaml + ├── Secret + │ ├── default-token-bnk6x.yaml + │ └── local-path-provisioner-service-account-token-fvkxj.yaml + └── ServiceAccount + ├── default.yaml + └── local-path-provisioner-service-account.yaml + +77 directories, 776 files +``` + +Here, the non-namespaced resources have been grouped under the `global` directory and the namespaced resources have been grouped inside the namespace specific folder under the `namespaces` directory. + +Let's inspect the YAML of `kubeadm-config.yaml` file under `kube-system` namespace. + +```yaml +❯ cat $HOME/Downloads/stash/latest/tmp/resources/namespaces/kube-system/ConfigMap/kubeadm-config.yaml +apiVersion: v1 +data: + ClusterConfiguration: | + apiServer: + certSANs: + - localhost + - 127.0.0.1 + extraArgs: + authorization-mode: Node,RBAC + runtime-config: "" + timeoutForControlPlane: 4m0s + apiVersion: kubeadm.k8s.io/v1beta2 + certificatesDir: /etc/kubernetes/pki + clusterName: kind + controlPlaneEndpoint: kind-control-plane:6443 + controllerManager: + extraArgs: + enable-hostpath-provisioner: "true" + dns: + type: CoreDNS + etcd: + local: + dataDir: /var/lib/etcd + imageRepository: k8s.gcr.io + kind: ClusterConfiguration + kubernetesVersion: v1.21.1 + networking: + dnsDomain: cluster.local + podSubnet: 10.244.0.0/16 + serviceSubnet: 10.96.0.0/16 + scheduler: {} + ClusterStatus: | + apiEndpoints: + kind-control-plane: + advertiseAddress: 172.18.0.2 + bindPort: 6443 + apiVersion: kubeadm.k8s.io/v1beta2 + kind: ClusterStatus +kind: ConfigMap +metadata: + name: kubeadm-config + namespace: kube-system +``` + +Now, you can use these YAML files to re-create your desired application. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration cluster-resources-backup +kubectl delete -n demo repository cluster-resource-storage +kubectl delete -n demo serviceaccount cluster-resource-reader +kubectl delete -n demo clusterrole cluster-resource-reader +kubectl delete -n demo clusterrolebinding cluster-resource-reader +``` diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/examples/filter-resources.yaml b/content/docs/v2024.8.27/addons/kubedump/customization/examples/filter-resources.yaml new file mode 100644 index 0000000000..ba4cf9b016 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/examples/filter-resources.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: labelSelector + value: "k8s-app=kube-dns" + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/examples/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/kubedump/customization/examples/multi-retention-policy.yaml new file mode 100644 index 0000000000..08be02b1cd --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/examples/multi-retention-policy.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: cluster-resource-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/examples/passing-args.yaml b/content/docs/v2024.8.27/addons/kubedump/customization/examples/passing-args.yaml new file mode 100644 index 0000000000..48e35d88e9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/examples/passing-args.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: sanitize + value: "false" + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/examples/resource-limit.yaml b/content/docs/v2024.8.27/addons/kubedump/customization/examples/resource-limit.yaml new file mode 100644 index 0000000000..6984a5e25e --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/examples/resource-limit.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/examples/specific-user.yaml b/content/docs/v2024.8.27/addons/kubedump/customization/examples/specific-user.yaml new file mode 100644 index 0000000000..ed58cb9c41 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/examples/specific-user.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/customization/index.md b/content/docs/v2024.8.27/addons/kubedump/customization/index.md new file mode 100644 index 0000000000..cac101ccff --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/customization/index.md @@ -0,0 +1,263 @@ +--- +title: Backup Customization | Stash +description: Customizing Backup Process with Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-customization + name: Customizing Backup Process + parent: stash-kubedump + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup Process + +Stash provides rich customization supports for the backup and restores process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of filtering resources using a label selector, running the backup process as a specific user, using multiple retention policies, etc. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/kubedump/customization/examples). + +### Filtering resources + +You can use a label selector to backup the YAML for the resources that have particular labels. You just have to pass the `labelSelector` parameter under `task.params` section with your desired label selector. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: labelSelector + value: "k8s-app=kube-dns" + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +The above backup process will backup only the resources that has `k8s-app: kube-dns` label. Here, is a sample of the resources backed up by the above BackupConfiguration. + +```bash +❯ tree $HOME/Downloads/stash +/home/emruz/Downloads/stash +└── latest + └── tmp + └── resources + └── namespaces + └── kube-system + ├── Deployment + │ └── coredns.yaml + ├── Endpoints + │ └── kube-dns.yaml + ├── EndpointSlice + │ └── kube-dns-m2s5c.yaml + ├── Pod + │ ├── coredns-558bd4d5db-hdsw9.yaml + │ └── coredns-558bd4d5db-wk9tx.yaml + ├── ReplicaSet + │ └── coredns-558bd4d5db.yaml + └── Service + └── kube-dns.yaml + +11 directories, 7 files +``` + +### Passing arguments + +You can pass arguments to the backup process using `task.params` section. + +The following example shows how passes `sanitize` argument value to `false` which tells the backup process not to remove decorators (i.e. `status`, `managedFields` etc.) from the YAML files. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + params: + - name: sanitize + value: "false" + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep a few daily snapshots, a few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-resources-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: cluster-resource-storage + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: cluster-resource-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). diff --git a/content/docs/v2024.8.27/addons/kubedump/namespace/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..f60a9d12fd --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: kube-system-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: namespace-resource-storage + target: + ref: + apiVersion: v1 + kind: Namespace + name: kube-system + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/kubedump/namespace/examples/rbac.yaml b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/rbac.yaml new file mode 100644 index 0000000000..52ae310646 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/rbac.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io diff --git a/content/docs/v2024.8.27/addons/kubedump/namespace/examples/repository.yaml b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/repository.yaml new file mode 100644 index 0000000000..3c703b0d36 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/namespace/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: namespace-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/namespace/kube-system + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/kubedump/namespace/images/namespace_manifests_backup.png b/content/docs/v2024.8.27/addons/kubedump/namespace/images/namespace_manifests_backup.png new file mode 100644 index 0000000000..5d2d40502a Binary files /dev/null and b/content/docs/v2024.8.27/addons/kubedump/namespace/images/namespace_manifests_backup.png differ diff --git a/content/docs/v2024.8.27/addons/kubedump/namespace/index.md b/content/docs/v2024.8.27/addons/kubedump/namespace/index.md new file mode 100644 index 0000000000..d4fe276891 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/namespace/index.md @@ -0,0 +1,464 @@ +--- +title: Backup resource YAMLs of a Namespace | Stash +description: Take backup of resources YAMLs of a Namespace using Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-namespace + name: Namespace Backup + parent: stash-kubedump + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup resource YAMLs of a Namespace using Stash + +Stash `{{< param "info.version" >}}` supports taking backup of the resource YAMLs using `kubedump` plugin. This guide will show you how you can take a backup of the resource YAMLs of a particular namespace using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install Stash `kubectl` plugin in your local machine following the steps [here](/docs/v2024.8.27/setup/install/kubectl-plugin/). +- If you are not familiar with how Stash backup the resource YAMLs, please check the following guide [here](/docs/v2024.8.27/addons/kubedump/overview/). + +You have to be familiar with the following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create the `demo` namespace if you haven't created it already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/kubedump/namespace/examples). + +### Prepare for Backup + +In this section, we are going to configure a backup for all the resource YAMLs of `kube-system` namespace. + +#### Ensure `kubedump` Addon + +When you install the Stash, it will automatically install all the official addons. Make sure that `kubedump` addon was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep kubedump +kubedump-backup-0.1.0 23s +``` + +#### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: namespace-resource-storage + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /manifests/namespace/kube-system + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/namespace/examples/repository.yaml +repository.stash.appscode.com/namespace-resource-storage created +``` + +#### Create RBAC + +The `kubedump` plugin requires read permission for all the resources of the desired namespace. By default, Stash does not grant such permissions. We have to provide the necessary permissions manually. + +Here, is the YAML of the `ServiceAccount`, `ClusterRole`, and `ClusterRoleBinding` that we are going to use for granting the necessary permissions. + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cluster-resource-reader + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-resource-reader +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-resource-reader +subjects: +- kind: ServiceAccount + name: cluster-resource-reader + namespace: demo +roleRef: + kind: ClusterRole + name: cluster-resource-reader + apiGroup: rbac.authorization.k8s.io +``` + +Here, we have give permission to read all the cluster resources. You can restrict this permission to a particular namespace only. + +Let's create the RBAC resources we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/namespace/examples/rbac.yaml +serviceaccount/cluster-resource-reader created +clusterrole.rbac.authorization.k8s.io/cluster-resource-reader created +clusterrolebinding.rbac.authorization.k8s.io/cluster-resource-reader created +``` + +Now, we are ready for backup. In the next section, we are going to schedule a backup for our cluster resources. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the YAMLs of the cluster resources, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: kube-system-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: kubedump-backup-0.1.0 + repository: + name: namespace-resource-storage + target: + ref: + apiVersion: v1 + kind: Namespace + name: kube-system + runtimeSettings: + pod: + serviceAccountName: cluster-resource-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the cluster resources at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup the resource YAMLs. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target` specifies the targeted Namespace that we are going to backup. +- `.spec.runtimeSettings.pod.serviceAccountName` specifies the ServiceAccount name that we have created earlier with cluster-wide resource reading permission. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/kubedump/namespace/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/kube-system-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +kube-system-backup kubedump-backup-0.1.0 */5 * * * * Ready 8s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-kube-system-backup */5 * * * * False 0 25s +``` + +#### Wait for BackupSession + +The `stash-trigger-kube-system-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +kube-system-backup-1652247300 BackupConfiguration kube-system-backup 0s +kube-system-backup-1652247300 BackupConfiguration kube-system-backup Pending 0s +kube-system-backup-1652247300 BackupConfiguration kube-system-backup Running 0s +kube-system-backup-1652247300 BackupConfiguration kube-system-backup Running 17s +kube-system-backup-1652247300 BackupConfiguration kube-system-backup Succeeded 1m11s 71s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed-up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `namespace-resource-storage` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +namespace-resource-storage true 407.949 KiB 1 95s 13m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `/manifest/namespace/kube-system` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed-up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +Stash does not provide any automatic mechanism to restore the cluster resources from the backed-up YAMLs. Your application might be managed by Helm or by an operator. In such cases, just applying the YAMLs is not enough to restore the application. Furthermore, there might be an order issue. Some resources must be applied before others. It is difficult to generalize and codify various application-specific logic. + +Therefore, it is the user's responsibility to download the backed-up YAMLs and take the necessary steps based on his application to restore it properly. + +### Download the YAMLs + +Stash provides a [kubectl plugin](https://stash.run/docs/v2022.05.12/guides/cli/cli/#download-snapshots) for making it easy to download a snapshot locally. + +Now, let's download the latest Snapshot from our backed-up data into the `$HOME/Downloads/stash/namespace/kube-system` folder of our local machine. + +```bash +❯ kubectl stash download -n demo namespace-resource-storage --destination=$HOME/Downloads/stash/namespace/kube-system --snapshots="latest" +``` + +Now, lets use [tree](https://linux.die.net/man/1/tree) command to inspect downloaded YAMLs files. + +```bash +❯ tree $HOME/Downloads/stash/namespace/kube-system +/home/emruz/Downloads/stash/namespace/kube-system +└── latest + └── tmp + └── resources + ├── ConfigMap + │   ├── coredns.yaml + │   ├── extension-apiserver-authentication.yaml + │   ├── kubeadm-config.yaml + │   ├── kubelet-config-1.21.yaml + │   ├── kube-proxy.yaml + │   └── kube-root-ca.crt.yaml + ├── ControllerRevision + │   ├── kindnet-5b547684d9.yaml + │   └── kube-proxy-6bc6858f58.yaml + ├── DaemonSet + │   ├── kindnet.yaml + │   └── kube-proxy.yaml + ├── Deployment + │   ├── coredns.yaml + │   └── stash-stash-enterprise.yaml + ├── Endpoints + │   ├── kube-dns.yaml + │   └── stash-stash-enterprise.yaml + ├── EndpointSlice + │   ├── kube-dns-m2s5c.yaml + │   └── stash-stash-enterprise-k28h6.yaml + ├── Lease + │   ├── kube-controller-manager.yaml + │   └── kube-scheduler.yaml + ├── Pod + │   ├── coredns-558bd4d5db-hdsw9.yaml + │   ├── coredns-558bd4d5db-wk9tx.yaml + │   ├── etcd-kind-control-plane.yaml + │   ├── kindnet-69whw.yaml + │   ├── kube-apiserver-kind-control-plane.yaml + │   ├── kube-controller-manager-kind-control-plane.yaml + │   ├── kube-proxy-p7j9f.yaml + │   ├── kube-scheduler-kind-control-plane.yaml + │   └── stash-stash-enterprise-567dd95f5b-6xtxg.yaml + ├── ReplicaSet + │   ├── coredns-558bd4d5db.yaml + │   └── stash-stash-enterprise-567dd95f5b.yaml + ├── Role + │   ├── extension-apiserver-authentication-reader.yaml + │   ├── kubeadm:kubelet-config-1.21.yaml + │   ├── kubeadm:nodes-kubeadm-config.yaml + │   ├── kube-proxy.yaml + ├── RoleBinding + │   ├── kubeadm:kubelet-config-1.21.yaml + │   ├── kubeadm:nodes-kubeadm-config.yaml + │   ├── kube-proxy.yaml + ├── Secret + │   ├── attachdetach-controller-token-w68zv.yaml + │   ├── bootstrap-signer-token-j6q2c.yaml + │   ├── certificate-controller-token-d5dvw.yaml + │   ├── clusterrole-aggregation-controller-token-77x8n.yaml + ├── Service + │   ├── kube-dns.yaml + │   └── stash-stash-enterprise.yaml + └── ServiceAccount + ├── attachdetach-controller.yaml + ├── bootstrap-signer.yaml + ├── certificate-controller.yaml + ├── clusterrole-aggregation-controller.yaml + ├── coredns.yaml + ├── cronjob-controller.yaml + ├── daemon-set-controller.yaml + ├── default.yaml + ├── deployment-controller.yaml + +17 directories, 131 files +``` + +Here, the resources has been grouped under the respective Kind folder. + +Let's inspect the YAML of `coredns.yaml` file under ConfigMap folder, + +```yaml +❯ cat $HOME/Downloads/stash/namespace/kube-system/latest/tmp/resources/ConfigMap/coredns.yaml +apiVersion: v1 +data: + Corefile: | + .:53 { + errors + health { + lameduck 5s + } + ready + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + ttl 30 + } + prometheus :9153 + forward . /etc/resolv.conf { + max_concurrent 1000 + } + cache 30 + loop + reload + loadbalance + } +kind: ConfigMap +metadata: + name: coredns + namespace: kube-system + +``` + +Now, you can use these YAML files to re-create your desired application. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration kube-system-backup +kubectl delete -n demo repository namespace-resource-storage +kubectl delete -n demo serviceaccount cluster-resource-reader +kubectl delete -n demo clusterrole cluster-resource-reader +kubectl delete -n demo clusterrolebinding cluster-resource-reader +``` diff --git a/content/docs/v2024.8.27/addons/kubedump/overview/images/kubedump-backup.svg b/content/docs/v2024.8.27/addons/kubedump/overview/images/kubedump-backup.svg new file mode 100644 index 0000000000..2eac1cebd9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/overview/images/kubedump-backup.svg @@ -0,0 +1,914 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/kubedump/overview/index.md b/content/docs/v2024.8.27/addons/kubedump/overview/index.md new file mode 100644 index 0000000000..cd283277ad --- /dev/null +++ b/content/docs/v2024.8.27/addons/kubedump/overview/index.md @@ -0,0 +1,121 @@ +--- +title: KubeDump Backup Overview | Stash +description: How KubeDump Backup Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-kubedump-overview + name: How does it work? + parent: stash-kubedump + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backups Kubernetes Resources + +Stash `{{< param "info.version" >}}` supports taking backup of Kubernetes resource YAMLs. You can backup the YAML definition of the resources of entire cluster, a particular namespaces, or only an application etc. In this guide, we are going to show you how Kubernetes resource backup works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of the Kubernetes resources. Open the image in a new tab to see the enlarged version. + +
+  KubeDump Backup Overview +
Fig: KubeDump Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd which specifies the `Task` to use to backup the the resources. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the desired resource YAMLs. + +10. Then, the Job dumps the Kubernetes Resource YAML, and store them temporarily in a directory.Then, it upload the content of the directory to the cloud backend. + +11. Finally, when the backup is complete, 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. + +## Next Steps + +- Backup the YAMLs of your entire Kubernetes cluster using Stash following the guide from [here](/docs/v2024.8.27/addons/kubedump/cluster/). +- Backup the YAMLs of an entire Namespace using Stash following the guide from [here](/docs/v2024.8.27/addons/kubedump/namespace/). +- Backup the YAMLs of a particular application using Stash following the guide from [here](/docs/v2024.8.27/addons/kubedump/application/). diff --git a/content/docs/v2024.8.27/addons/mariadb/README.md b/content/docs/v2024.8.27/addons/mariadb/README.md new file mode 100644 index 0000000000..508098b30b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/README.md @@ -0,0 +1,108 @@ +--- +title: MariaDB Addon Overview | Stash +description: MariaDB Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-mariadb-readme + name: Readme + parent: stash-mariadb + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/mariadb/ +aliases: +- /docs/v2024.8.27/addons/mariadb/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash MariaDB Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash MariaDB addon enables Stash to backup and restore MariaDB databases. + +This guide will give you an overview of which MariaDB versions are supported and how the docs are organized. + +## Supported MariaDB Versions + +Stash has the following addon versions for MariaDB: + +{{< versionlist "mariadb">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, MariaDB addon with version `10.x.x` should be able take backup of any MariaDB of `10.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash MariaDB documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/mariadb/overview/) gives an overview of how backup and restore process for MariaDB database works in Stash. +- [Helm managed MariaDB](/docs/v2024.8.27/addons/mariadb/helm/) shows how to backup and restore a Helm managed MariaDB database. +- [Auto-Backup](/docs/v2024.8.27/addons/mariadb/auto-backup/) shows how to configure a generic backup template for all the MariaDB databases of a cluster. +- [Customizing Backup & Restore Process](/docs/v2024.8.27/addons/mariadb/customization/) shows how to customize the backup & restore process. diff --git a/content/docs/v2024.8.27/addons/mariadb/_index.md b/content/docs/v2024.8.27/addons/mariadb/_index.md new file mode 100644 index 0000000000..1a837e8210 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash MariaDB Addon +menu: + docs_v2024.8.27: + identifier: stash-mariadb + name: MariaDB + parent: stash-addons + weight: 30 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/backupblueprint.yaml b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/backupblueprint.yaml new file mode 100644 index 0000000000..967d2e0581 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/backupblueprint.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: mariadb-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: mariadb-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: mariadb-backup-10.5.8 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-2.yaml b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-2.yaml new file mode 100644 index 0000000000..ece057ec9b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-2.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-3.yaml b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-3.yaml new file mode 100644 index 0000000000..6c25e93b3a --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb-3.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template + params.stash.appscode.com/args: --databases mysql +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb.yaml b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb.yaml new file mode 100644 index 0000000000..491738de04 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/auto-backup/examples/sample-mariadb.yaml @@ -0,0 +1,19 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-2.png b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-2.png new file mode 100644 index 0000000000..8806af218d Binary files /dev/null and b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-2.png differ diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-3.png b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-3.png new file mode 100644 index 0000000000..3253bf52f4 Binary files /dev/null and b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb-3.png differ diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb.png b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb.png new file mode 100644 index 0000000000..eb9e1c9691 Binary files /dev/null and b/content/docs/v2024.8.27/addons/mariadb/auto-backup/images/sample-mariadb.png differ diff --git a/content/docs/v2024.8.27/addons/mariadb/auto-backup/index.md b/content/docs/v2024.8.27/addons/mariadb/auto-backup/index.md new file mode 100644 index 0000000000..f8f8884244 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/auto-backup/index.md @@ -0,0 +1,730 @@ +--- +title: MariaDB Auto-Backup | Stash +description: Backup MariaDB using Stash Auto-Backup +menu: + docs_v2024.8.27: + identifier: stash-mariadb-auto-backup + name: Auto-Backup + parent: stash-mariadb + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup MariaDB using Stash Auto-Backup + +Stash can be configured to automatically backup any MariaDB database in your cluster. Stash enables cluster administrators to deploy backup blueprints ahead of time so that the database owners can easily backup their database with just a few annotations. + +In this tutorial, we are going to show how you can configure a backup blueprint for MariaDB databases in your cluster and backup them with few annotations. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. +- If you are not familiar with how Stash backup and restore MariaDB databases, please check the following guide [here](/docs/v2024.8.27/addons/mariadb/overview/). +- If you are not familiar with how auto-backup works in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/overview/). +- If you are not familiar with the available auto-backup options for databases in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/database/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) + +In this tutorial, we are going to show backup of three different MariaDB databases on three different namespaces named `demo`, `demo-2`, and `demo-3`. Create the namespaces as below if you haven't done it already. + +```bash +❯ kubectl create ns demo +namespace/demo created + +❯ kubectl create ns demo-2 +namespace/demo-2 created + +❯ kubectl create ns demo-3 +namespace/demo-3 created +``` + +When you install Stash, it installs the necessary addons to backup MariaDB. Verify that the MariaDB addons were installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep mariadb +mariadb-backup-10.5.8 62m +mariadb-backup-10.5.8 62m +``` + +## Prepare Backup Blueprint + +To backup an MariaDB database using Stash, you have to create a `Secret` containing the backend credentials, a `Repository` containing the backend information, and a `BackupConfiguration` containing the schedule and target information. A `BackupBlueprint` allows you to specify a template for the `Repository` and the `BackupConfiguration`. + +The `BackupBlueprint` is a non-namespaced CRD. So, once you have created a `BackupBlueprint`, you can use it to backup any MariaDB database of any namespace just by creating the storage `Secret` in that namespace and adding few annotations to your MariaDB CRO. Then, Stash will automatically create a `Repository` and a `BackupConfiguration` according to the template to backup the database. + +Below is the `BackupBlueprint` object that we are going to use in this tutorial, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: mariadb-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: mariadb-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: mariadb-backup-10.5.8 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we are using a GCS bucket as our backend. We are providing `gcs-secret` at the `storageSecretName` field. Hence, we have to create a secret named `gcs-secret` with the access credentials of our bucket in every namespace where we want to enable backup through this blueprint. + +Notice the `prefix` field of `backend` section. We have used some variables in form of `${VARIABLE_NAME}`. Stash will automatically resolve those variables from the database information to make the backend prefix unique for each database instance. + +Let's create the `BackupBlueprint` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/auto-backup/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/mariadb-backup-template created +``` + +Now, we are ready to backup our MariaDB databases using few annotations. You can check available auto-backup annotations for a databases from [here](/docs/v2024.8.27/guides/auto-backup/database/#available-auto-backup-annotations-for-database). + +## Auto-backup with default configurations + +In this section, we are going to backup an MariaDB database of `demo` namespace. We are going to use the default configurations specified in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo` namespace with the access credentials to our GCS bucket. + +```bash +❯ echo -n 'changeit' > RESTIC_PASSWORD +❯ echo -n '' > GOOGLE_PROJECT_ID +❯ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +❯ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an MariaDB CRO in `demo` namespace. Below is the YAML of the MariaDB object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Notice the `annotations` section. We are pointing to the `BackupBlueprint` that we have created earlier though `stash.appscode.com/backup-blueprint` annotation. Stash will watch this annotation and create a `Repository` and a `BackupConfiguration` according to the `BackupBlueprint`. + +Let's create the above MariaDB CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/auto-backup/examples/sample-mariadb.yaml +mariadb.kubedb.com/sample-mariadb created +``` + +### Verify Auto-backup configured + +In this section, we are going to verify whether Stash has created the respective `Repository` and `BackupConfiguration` for our MariaDB database we have just deployed or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our MariaDB or not. + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-mariadb 10s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo app-sample-mariadb -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: +... + name: app-sample-mariadb + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: mariadb-backup/demo/mariadb/sample-mariadb + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our MariaDB in `demo` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-mariadb mariadb-backup-10.5.8 */5 * * * * Ready 7m28s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo app-sample-mariadb -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-mariadb + namespace: demo + ... + spec: + driver: Restic + repository: + name: app-sample-mariadb + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + task: + name: mariadb-backup-10.5.8 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-25T05:14:51Z" + message: Repository demo/app-sample-mariadb exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-25T05:14:51Z" + message: Backend Secret demo/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-25T05:14:51Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-mariadb + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-25T05:14:51Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 + +``` + +Notice the `target` section. Stash has automatically added the MariaDB as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-mariadb-1614230401 BackupConfiguration app-sample-mariadb Succeeded 5m40s +app-sample-mariadb-1614230701 BackupConfiguration app-sample-mariadb Running 39s +``` + +Once the backup has been completed successfully, you should see the backed up data has been stored in the bucket at the directory pointed by the `prefix` field of the `Repository`. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with a custom schedule + +In this section, we are going to backup an MariaDB database of `demo-2` namespace. This time, we are going to overwrite the default schedule used in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-2` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-2 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an MariaDB CRO in `demo-2` namespace. Below is the YAML of the MariaDB object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Notice the `annotations` section. This time, we have passed a schedule via `stash.appscode.com/schedule` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above MariaDB CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/auto-backup/examples/sample-mariadb-2.yaml +mariadb.kubedb.com/sample-mariadb-2 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup has been configured properly or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our MariaDB or not. + +```bash +❯ kubectl get repository -n demo-2 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-mariadb-2 4s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-2 app-sample-mariadb-2 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-mariadb-2 + namespace: demo-2 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo-2/mariadb/sample-mariadb-2 + storageSecretName: gcs-secret + +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-mariadb-2 + namespace: demo-2 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: mariadb-backup/demo-2/mariadb/sample-mariadb-2 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our MariaDB in `demo-2` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-2 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-mariadb-2 mariadb-backup-10.5.8 */3 * * * * Ready 3m24s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-2 app-sample-mariadb-2 -o yaml + +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-mariadb-2 + namespace: demo-2 + ... + ownerReferences: + - apiVersion: appcatalog.appscode.com/v1alpha1 + blockOwnerDeletion: true + controller: true + kind: AppBinding + name: sample-mariadb-2 + uid: 7cbdf140-5fd1-487a-b04f-1847def418e8 + resourceVersion: "56888" + selfLink: /apis/stash.appscode.com/v1beta1/namespaces/demo-2/backupconfigurations/app-sample-mariadb-2 + uid: e85dd3db-fa41-48b8-b253-5731ee8cc956 +spec: + driver: Restic + repository: + name: app-sample-mariadb-2 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/3 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb-2 + task: + name: mariadb-backup-10.5.8 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-25T06:10:14Z" + message: Repository demo-2/app-sample-mariadb-2 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-25T06:10:14Z" + message: Backend Secret demo-2/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-25T06:10:14Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-mariadb-2 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-25T06:10:14Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `schedule` section. This time the `BackupConfiguration` has been created with the schedule we have provided via annotation. + +Also, notice the `target` section. Stash has automatically added the new MariaDB as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-2 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-mariadb-2-1614233715 BackupConfiguration app-sample-mariadb-2 Succeeded 3m2s +app-sample-mariadb-2-1614233880 BackupConfiguration app-sample-mariadb-2 Running 17s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with custom parameters + +In this section, we are going to backup an MariaDB database of `demo-3` namespace. This time, we are going to pass some parameters for the Task through the annotations. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-3` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-3 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create an Elasticsearch CRO in `demo-3` namespace. Below is the YAML of the MariaDB object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: mariadb-backup-template + params.stash.appscode.com/args: --databases mysql +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut + +``` + +Notice the `annotations` section. This time, we have passed an argument via `params.stash.appscode.com/args` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above MariaDB CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/auto-backup/examples/sample-mariadb-3.yaml +mariadb.kubedb.com/sample-mariadb-3 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup resources has been created or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our MariaDB or not. + +```bash +❯ kubectl get repository -n demo-3 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-mariadb-3 8s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-3 app-sample-mariadb-3 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-mariadb-3 + namespace: demo-3 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: mariadb-backup/demo-3/mariadb/sample-mariadb-3 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our MariaDB in `demo-3` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-3 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-mariadb-3 mariadb-backup-10.5.8 */5 * * * * Ready 106s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-3 app-sample-mariadb-3 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-mariadb-3 + namespace: demo-3 + ... +spec: + driver: Restic + repository: + name: app-sample-mariadb-3 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb-3 + task: + name: mariadb-backup-10.5.8 + params: + - name: args + value: --databases mysql + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-25T11:58:12Z" + message: Repository demo-3/app-sample-mariadb-3 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-25T11:58:12Z" + message: Backend Secret demo-3/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-25T11:58:12Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-mariadb-3 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-25T11:58:12Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `task` section. The `args` parameter that we had passed via annotations has been added to the `params` section. + +Also, notice the `target` section. Stash has automatically added the new MariaDB as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-3 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-mariadb-3-1614254408 BackupConfiguration app-sample-mariadb-3 Succeeded 5m23s +app-sample-mariadb-3-1614254708 BackupConfiguration app-sample-mariadb-3 Running 23s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Cleanup + +To cleanup the resources crated by this tutorial, run the following commands, + +```bash +❯ kubectl delete -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/auto-backup/examples/ +backupblueprint.stash.appscode.com "mariadb-backup-template" deleted +mariadb.kubedb.com "sample-mariadb-2" deleted +mariadb.kubedb.com "sample-mariadb-3" deleted +mariadb.kubedb.com "sample-mariadb" deleted + +❯ kubectl delete repository -n demo --all +repository.stash.appscode.com "app-sample-mariadb" deleted +❯ kubectl delete repository -n demo-2 --all +repository.stash.appscode.com "app-sample-mariadb-2" deleted +❯ kubectl delete repository -n demo-3 --all +repository.stash.appscode.com "app-sample-mariadb-3" deleted +``` diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/multi-retention-policy.yaml new file mode 100644 index 0000000000..aab328dee2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/multi-retention-policy.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: sample-mariadb-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/passing-args.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/passing-args.yaml new file mode 100644 index 0000000000..398df8ef27 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/passing-args.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: mariadb-backup-10.5.8 + params: + - name: args + value: --databases testdb + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/resource-limit.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/resource-limit.yaml new file mode 100644 index 0000000000..696cf0a4ed --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/resource-limit.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/specific-user.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/specific-user.yaml new file mode 100644 index 0000000000..709123aab9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/backup/specific-user.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/repository.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/repository.yaml new file mode 100644 index 0000000000..3bfd4ef2f4 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/customizing + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/passing-args.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/passing-args.yaml new file mode 100644 index 0000000000..4c75636182 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/passing-args.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + params: + - name: args + value: --one-database testdb + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/resource-limit.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/resource-limit.yaml new file mode 100644 index 0000000000..2cd84f793b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/resource-limit.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadbes.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] + diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-snapshot.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-snapshot.yaml new file mode 100644 index 0000000000..fe64cce841 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-snapshot.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [4bc21d6f] \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-user.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-user.yaml new file mode 100644 index 0000000000..899617a777 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/restore/specific-user.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/examples/sample-mariadb.yaml b/content/docs/v2024.8.27/addons/mariadb/customization/examples/sample-mariadb.yaml new file mode 100644 index 0000000000..a0821f0f22 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/examples/sample-mariadb.yaml @@ -0,0 +1,15 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: Delete \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mariadb/customization/index.md b/content/docs/v2024.8.27/addons/mariadb/customization/index.md new file mode 100644 index 0000000000..42f479f5c1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/customization/index.md @@ -0,0 +1,365 @@ +--- +title: MariaDB Backup Customization | Stash +description: Customizing MariaDB Backup and Restore process with Stash +menu: + docs_v2024.8.27: + identifier: stash-mariadb-customization + name: Customizing Backup & Restore Process + parent: stash-mariadb + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup and Restore Process + +Stash provides rich customization supports for the backup and restore process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mariadb/customization/examples). + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, ignoring some indexes during the backup process, etc. + +### Passing arguments to the backup process + +Stash MariaDB addon uses [mysqldump](https://mariadb.com/kb/en/mysqldump) for backup. You can pass arguments to the `mysqldump` through `args` param under `task.params` section. + +The below example shows how you can pass the `--databases testdb` to take backup for a specific mariadb databases named `testdb`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mariadb-backup-10.5.8 + params: + - name: args + value: --databases testdb + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +> **WARNING**: Make sure that you have the specific database created before taking backup. In this case, Database `testdb` should exist before the backup job starts. + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: sample-mariadb-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +Stash also uses `mysql` during the restore process. In this section, we are going to show how you can pass arguments to the restore process, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process + +Similar to the backup process, you can pass arguments to the restore process through the `args` params under `task.params` section. This example will restore data from database `testdb` only. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + params: + - name: args + value: --one-database testdb + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore job as a specific user + +You can provide `securityContext` under `runtimeSettings.pod` section to run the restore job as a specific user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore job + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore job. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo + labels: + app.kubernetes.io/name: mariadb.kubedb.com +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/mariadb/helm/examples/appbinding.yaml new file mode 100644 index 0000000000..8c883b67c8 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/helm/examples/appbinding.yaml @@ -0,0 +1,23 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mariadb + namespace: demo +spec: + clientConfig: + service: + name: sample-mariadb + path: / + port: 3306 + scheme: mysql + secret: + name: sample-mariadb + secretTransforms: + - addKey: + key: username + stringValue: root + - renameKey: + from: mariadb-root-password + to: password + type: mariadb + version: 10.5.8 diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/mariadb/helm/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..154aabafdc --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/helm/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/examples/repository.yaml b/content/docs/v2024.8.27/addons/mariadb/helm/examples/repository.yaml new file mode 100644 index 0000000000..2c6ed55b1b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/helm/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/mariadb/sample-mariadb + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/mariadb/helm/examples/restoresession.yaml new file mode 100644 index 0000000000..ad150d1774 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/helm/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + task: + name: mariadb-restore-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/images/sample-mariadb-backup.png b/content/docs/v2024.8.27/addons/mariadb/helm/images/sample-mariadb-backup.png new file mode 100644 index 0000000000..8ec12b62b6 Binary files /dev/null and b/content/docs/v2024.8.27/addons/mariadb/helm/images/sample-mariadb-backup.png differ diff --git a/content/docs/v2024.8.27/addons/mariadb/helm/index.md b/content/docs/v2024.8.27/addons/mariadb/helm/index.md new file mode 100644 index 0000000000..b4e5f4e7b0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/helm/index.md @@ -0,0 +1,705 @@ +--- +title: Logical Backup & Restore MariaDB | Stash +description: Take logical backup of MariaDB database using Stash +menu: + docs_v2024.8.27: + identifier: stash-mariadb-helm + name: Helm managed MariaDB + parent: stash-mariadb + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Take a logical backup of the MariaDB database using Stash + +Stash `v0.11.8+` supports backup and restoration of MariaDB databases. This guide will show you how you can take a logical backup of your MariaDB databases and restore them using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore MariaDB databases, please check the following guide [here](/docs/v2024.8.27/addons/mariadb/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created it yet. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mariadb/helm/examples). + +## Prepare MariaDB + +In this section, we are going to deploy a MariaDB database. Then, we are going to insert some sample data into it. + +### Deploy MariaDB + +At first, let's deploy a MariaDB database. Here, we are going to use [bitnami/mariadb](https://artifacthub.io/packages/helm/bitnami/mariadb) chart from [ArtifactHub](https://artifacthub.io/). + +Let's deploy a MariaDB database named `sample-mariadb` using Helm as below, + +```bash +# Add bitnami chart registry +$ helm repo add bitnami https://charts.bitnami.com/bitnami +# Update helm registries +$ helm repo update +# Install bitnami/mariadb chart into demo namespace +$ helm install sample-mariadb bitnami/mariadb -n demo +``` + +This chart will create the necessary StatefulSet, Secret, Service etc. for the database. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +$ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-mariadb +NAME NAMESPACE AGE +configmap/sample-mariadb demo 5m59s +endpoints/sample-mariadb demo 5m59s +persistentvolumeclaim/data-sample-mariadb-0 demo 5m59s +pod/sample-mariadb-0 demo 5m59s +secret/sample-mariadb demo 5m59s +serviceaccount/sample-mariadb demo 5m59s +service/sample-mariadb demo 5m59s +controllerrevision.apps/sample-mariadb-bb8d8865b demo 5m59s +statefulset.apps/sample-mariadb demo 5m59s +``` + +Now, wait for the database pod `sample-mariadb-0` to go into `Running` state, + +```bash +$ kubectl get pod -n demo sample-mariadb-0 +NAME READY STATUS RESTARTS AGE +sample-mariadb-0 1/1 Running 0 11m +``` + +Once the database pod is in `Running` state, verify that the database is ready to accept the connections. + +```bash +$ kubectl logs -n demo sample-mariadb-0 +mariadb 10:44:37.29 +mariadb 10:44:37.29 Welcome to the Bitnami mariadb container +... +2020-12-03 10:44:46 0 [Note] /opt/bitnami/mariadb/sbin/mysqld: ready for connections. +Version: '10.5.8-MariaDB' socket: '/opt/bitnami/mariadb/tmp/mysql.sock' port: 3306 Source distribution +``` + +From the above log, we can see the database is ready to accept connections. + +### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. The helm chart has created a secret with access credentials. Let's find out the credentials from the Secret, + +```yaml +$ kubectl get secret -n demo sample-mariadb -o yaml +apiVersion: v1 +data: + mariadb-password: ZlFSdzA1ZXRvbg== + mariadb-root-password: Y1ZrUXA0TXdENQ== +kind: Secret +metadata: + annotations: + meta.helm.sh/release-name: sample-mariadb + meta.helm.sh/release-namespace: demo + creationTimestamp: "2020-12-03T10:43:43Z" + labels: + app.kubernetes.io/instance: sample-mariadb + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-9.0.1 + .... + name: sample-mariadb + namespace: demo +type: Opaque +``` + +Here, we are going to use the root user credential `mariadb-root-password` to insert the sample data. + +At first, let's export the username and password as environment variables to make further commands re-usable. + +```bash +export USER_NAME=root +export PASSWORD=$(kubectl get secrets -n demo sample-mariadb -o jsonpath='{.data.\mariadb-root-password}' | base64 -d) +``` + +Now, let's exec into the database pod and insert some sample data, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- mariadb --user=$USER_NAME --password=$PASSWORD +... +# Let's create a database named "company" +MariaDB [(none)]> create database company; +Query OK, 1 row affected (0.001 sec) + +# Verify that the database has been created successfully +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| my_database | +| mysql | +| performance_schema | +| test | ++--------------------+ +6 rows in set (0.001 sec) + +# Now, let create a table called "employee" in the "company" table +MariaDB [(none)]> create table company.employees ( name varchar(50), salary int); +Query OK, 0 rows affected (0.018 sec) + +# Verify that the table has been created successfully +MariaDB [(none)]> show tables in company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.001 sec) + +# Now, let's insert a sample row in the table +MariaDB [(none)]> insert into company.employees values ('John Doe', 5000); +Query OK, 1 row affected (0.003 sec) + +# Insert another sample row +MariaDB [(none)]> insert into company.employees values ('James William', 7000); +Query OK, 1 row affected (0.002 sec) + +# Verify that the rows have been inserted into the table successfully +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.001 sec) + +MariaDB [(none)]> exit +Bye +``` + +We have successfully deployed a MariaDB database and inserted some sample data into it. In the subsequent sections, we are going to backup these data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. database connection information, backend information, etc.) before backup. + +### Ensure MariaDB Addon + +When you install Stash, it will automatically install all the official database addons. Make sure that MariaDB addon was installed properly using the following command. + +```bash +$ kubectl get tasks.stash.appscode.com | grep mariadb +mariadb-backup-10.5.8 35s +mariadb-backup-10.5.8 35s +``` + +This addon should be able to take backup of the databases with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/mariadb/README#addon-version-compatibility). + +### Create AppBinding + +Stash needs to know how to connect with the database. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the database. You have to point to the respective `AppBinding` as a target of backup instead of the database itself. + +Stash expect your database Secret to have `username` and `password` keys. If your database secret does not have them, the `AppBinding` can also help here. You can specify a `secretTransforms` section with the mapping between the current keys and the desired keys. + +Here, is the YAML of the `AppBinding` that we are going to create for the MariaDB database we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mariadb + namespace: demo +spec: + clientConfig: + service: + name: sample-mariadb + path: / + port: 3306 + scheme: mysql + secret: + name: sample-mariadb + secretTransforms: + - addKey: + key: username + stringValue: root + - renameKey: + from: mariadb-root-password + to: password + type: mariadb + version: 10.5.8 +``` + +Here, + +- **.spec.clientConfig.service** specifies the Service information to use to connects with the database. +- **.spec.secret** specifies the name of the Secret that holds necessary credentials to access the database. +- **.spec.secretTransforms** specifies the transformations required to achieve the desired keys from the current Secret. You can apply the following transformations here: + - **addKey**: If your database Secret does not have an equivalent key expected by Stash, you can add the key using `addKey` transformation. Here, our deployed MariaDB Secret didn't have any key equivalent to `username`. Hence, we are adding the key using `addKey` transformation. + - **renameKey**: If your database Secret does not have a key expected by Stash but it has an equivalent key that is used for the same purpose, you can use `renameKey` transformation to specify the mapping between the keys. For example, our MariaDB Secret didn't have `password` key but it has an equivalent `mariadb-root-password` key that contains password for the root user. Hence, we are telling Stash using `renameKey` transformation that the `mariadb-root-password` should be used as `password` key. + - **addKeysFrom**: You can also merge keys from another Secret using `addKeysFrom` transformation. You have to specify the respective Secret name and namespace as below: + ```yaml + addKeysFrom: + name: + namespace: + ``` +- `spec.type` specifies the type of the database. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of database. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mariadb/helm/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-mariadb created +``` + +>The `secretTransforms` does not modify your original database Secret. Stash just uses those transformations to obtain the desired keys from the original Secret. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/mariadb/sample-mariadb + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/helm/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our desired database. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the `sample-mariadb` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the database at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup a MariaDB database. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted database. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/helm/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mariadb-backup created +``` + +### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 15s 17s +``` + +#### Wait for BackupSession + +The `sample-mariadb-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 24s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 75s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Succeeded 103s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.327 MiB 1 60s 8m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/mariadb/sample-mariadb` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore MariaDB + +If you have followed the previous sections properly, you should have a successful logical backup of your MariaDB database. Now, we are going to show how you can restore the database from the backed up data. + +### Restore Into the Same Database + +You can restore your data into the same database you have backed up from or into a different database in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-mariadb-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mariadb-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * True 0 2m59s 20m +``` + +#### Simulate Disaster + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the database pod and delete the `company` database we had created earlier. + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- mariadb --user=$USER_NAME --password=$PASSWORD + +# View current databases +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| my_database | +| mysql | +| performance_schema | +| test | ++--------------------+ +6 rows in set (0.001 sec) + +# Let's delete the "company" database +MariaDB [(none)]> drop database company; +Query OK, 1 row affected (0.268 sec) + +# Verify that the "company" database has been deleted +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| my_database | +| mysql | +| performance_schema | +| test | ++--------------------+ +5 rows in set (0.001 sec) + +MariaDB [(none)]> exit +Bye +``` + +#### Create RestoreSession + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our `sample-mariadb` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + task: + name: mariadb-backup-10.5.8 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore a MariaDB database. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective AppBinding of the `sample-mariadb` database. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mariadb/helm/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mariadb-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-mariadb-restore gcs-repo Running 15s +sample-mariadb-restore gcs-repo Succeeded 18s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the database pod and verify whether data actual data was restored or not, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- mariadb --user=$USER_NAME --password=$PASSWORD + +# Verify that the "company" database has been restored +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| my_database | +| mysql | +| performance_schema | +| test | ++--------------------+ +6 rows in set (0.000 sec) + +# Verify that the tables of the "company" database have been restored +MariaDB [(none)]> show tables from company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.000 sec) + +# Verify that the sample data of the "employees" table has been restored +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-mariadb-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * false Ready 29m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 2m59s 29m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore Into Different Database of the Same Namespace + +If you want to restore the backed up data into a different database of the same namespace, you have to create another `AppBinding` pointing to the desired database. Then, you have to create the `RestoreSession` pointing to the new `AppBinding`. + +### Restore Into Different Namespace + +If you want to restore into a different namespace of the same cluster, you have to create the Repository, backend Secret, AppBinding, in the desired namespace. You can use [Stash kubectl plugin](https://stash.run/docs/{{< param "info.version" >}}/guides/cli/cli/) to easily copy the resources into a new namespace. Then, you have to create the `RestoreSession` object in the desired namespace pointing to the Repository, AppBinding of that namespace. + +### Restore Into Different Cluster + +If you want to restore into a different cluster, you have to install Stash in the desired cluster. Then, you have to install Stash MariaDB addon in that cluster too. Then, you have to create the Repository, backend Secret, AppBinding, in the desired cluster. Finally, you have to create the `RestoreSession` object in the desired cluster pointing to the Repository, AppBinding of that cluster. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-mariadb-backup +kubectl delete -n demo restoresession sample-mariadb-restore +kubectl delete -n demo repository gcs-repo +# delete the database chart +helm delete sample-mariadb -n demo +``` diff --git a/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-backup.svg b/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-backup.svg new file mode 100644 index 0000000000..04faf0ae92 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-backup.svg @@ -0,0 +1,987 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-restore.svg b/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-restore.svg new file mode 100644 index 0000000000..c930c8641b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/overview/images/mariadb-logical-restore.svg @@ -0,0 +1,857 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mariadb/overview/index.md b/content/docs/v2024.8.27/addons/mariadb/overview/index.md new file mode 100644 index 0000000000..9fbbf87797 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mariadb/overview/index.md @@ -0,0 +1,150 @@ +--- +title: MariaDB Backup & Restore Overview | Stash +description: How MariaDB Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-mariadb-overview + name: How does it work? + parent: stash-mariadb + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backups & Restores MariaDB Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how MariaDB database backup and restore process works in Stash. + +## Logical Backup + +Stash supports taking [logical backup](https://mariadb.com/kb/en/backup-and-restore-overview/#logical-vs-physical-backups) of MariaDB databases using [mysqldump](https://mariadb.com/kb/en/mysqldump/). It is the most flexible way to perform a backup and restore, and a good choice when the data size is relatively small. + +### How Logical Backup Works + +The following diagram shows how Stash takes logical backup of a MariaDB database. Open the image in a new tab to see the enlarged version. + +
+  MariaDB Backup Overview +
Fig: MariaDB Logical Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +### How Restore from Logical Backup Works + +The following diagram shows how Stash restores a MariaDB database from a logical backup. Open the image in a new tab to see the enlarged version. + +
+  Database Restore Overview +
Fig: MariaDB Logical Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup your MariaDB database using Stash following the guide from [here](/docs/v2024.8.27/addons/mariadb/helm/). diff --git a/content/docs/v2024.8.27/addons/mongodb/README.md b/content/docs/v2024.8.27/addons/mongodb/README.md new file mode 100644 index 0000000000..928ce0fa81 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/README.md @@ -0,0 +1,108 @@ +--- +title: MongoDB Addon Overview | Stash +description: MongoDB Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-mongodb-readme + name: Readme + parent: stash-mongodb + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/mongodb/ +aliases: +- /docs/v2024.8.27/addons/mongodb/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash MongoDB Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash MongoDB addon enables Stash to backup and restore MongoDB databases. + +This guide will give you an overview of which MongoDB versions are supported and how the docs are organized. + +## Supported MongoDB Versions + +Stash has the following addon versions for MongoDB: + +{{< versionlist "mongodb">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, MongoDB addon with version `4.x.x` should be able take backup of any MongoDB of `4.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash MongoDB documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/mongodb/overview/) gives an overview of how backup and restore process for MongoDB database works in Stash. +- [Standalone MongoDB](/docs/v2024.8.27/addons/mongodb/standalone/) shows how to backup and restore a standalone MongoDB database. +- [MongoDB ReplicaSet](/docs/v2024.8.27/addons/mongodb/replicaset/) shows how to backup & restore a MongoDB ReplicaSet. +- [Sharded MongoDB Cluster](/docs/v2024.8.27/addons/mongodb/sharding/) shows how to backup & restore a sharded MongoDB cluster. diff --git a/content/docs/v2024.8.27/addons/mongodb/_index.md b/content/docs/v2024.8.27/addons/mongodb/_index.md new file mode 100644 index 0000000000..e47722aba6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash MongoDB Addon +menu: + docs_v2024.8.27: + identifier: stash-mongodb + name: MongoDB + parent: stash-addons + weight: 40 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/backup_overview.svg new file mode 100644 index 0000000000..1c9ec7308d --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/backup_overview.svg @@ -0,0 +1,997 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_backup.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_backup.svg new file mode 100644 index 0000000000..206eb76648 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_backup.svg @@ -0,0 +1,673 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_restore.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_restore.svg new file mode 100644 index 0000000000..ad6cd40659 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/replicaset_restore.svg @@ -0,0 +1,673 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/restore_overview.svg new file mode 100644 index 0000000000..09dff9b37c --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/restore_overview.svg @@ -0,0 +1,867 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_backup.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_backup.svg new file mode 100644 index 0000000000..5f3b4c5436 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_backup.svg @@ -0,0 +1,2107 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_restore.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_restore.svg new file mode 100644 index 0000000000..03884e256f --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/sharded_restore.svg @@ -0,0 +1,2107 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_backup.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_backup.svg new file mode 100644 index 0000000000..080787412d --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_backup.svg @@ -0,0 +1,673 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_restore.svg b/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_restore.svg new file mode 100644 index 0000000000..3306a4d28c --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/images/standalone_restore.svg @@ -0,0 +1,673 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mongodb/overview/index.md b/content/docs/v2024.8.27/addons/mongodb/overview/index.md new file mode 100644 index 0000000000..439792cbb5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/overview/index.md @@ -0,0 +1,224 @@ +--- +title: MongoDB Backup Overview | Stash +description: How MongoDB Backup Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-mongodb-overview + name: How does it work? + parent: stash-mongodb + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backup & Restore MongoDB Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how MongoDB database backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of a MongoDB database. Open the image in a new tab to see the enlarged version. + +
+ MongoDB Backup Overview +
Fig: MongoDB Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +### Backup Different MongoDB Configurations + +This section will show you how backup works for different MongoDB configurations. + +#### Standalone MongoDB + +For a standalone MongoDB database, the backup job directly dumps the database using `mongodump` and pipe the output to the backup process. + +
+ Standalone MongoDB Backup Overview +
Fig: Standalone MongoDB Backup
+
+ +#### MongoDB ReplicaSet Cluster + +For MongoDB ReplicaSet cluster, Stash takes backup from one of the secondary replicas. The backup process consists of the following steps: + +1. Identify a secondary replica. +2. Lock the secondary replica. +3. Backup the secondary replica. +4. Unlock the secondary replica. + +
+ MongoDB ReplicaSet Cluster Backup Overview +
Fig: MongoDB ReplicaSet Cluster Backup
+
+ +#### MongoDB Sharded Cluster + +For MongoDB sharded cluster, Stash takes backup of the individual shards as well as the config server. Stash takes backup from a secondary replica of the shards and the config server. If there is no secondary replica then Stash will take backup from the primary replica. The backup process consists of the following steps: + +1. Disable balancer. +2. Lock config server. +3. Identify a secondary replica for each shard. +4. Lock the secondary replica. +5. Run backup on the secondary replica. +6. Unlock the secondary replica. +7. Unlock config server. +8. Enable balancer. + +
+ MongoDB Sharded Cluster Backup Overview +
Fig: MongoDB Sharded Cluster Backup
+
+ +## How Restore Process Works + +The following diagram shows how Stash restores backed up data into a MongoDB database. Open the image in a new tab to see the enlarged version. + +
+ Database Restore Overview +
Fig: MongoDB Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +### Restoring Different MongoDB Configurations + +This section will show you restore process works for different MongoDB configurations. + +#### Standalone MongoDB + +For a standalone MongoDB database, the restore job downloads the backed up data from the backend and pipe the downloaded data to `mongorestore` command which inserts the data into the desired MongoDB database. + +
+ Standalone MongoDB Restore Overview +
Fig: Standalone MongoDB Restore
+
+ +#### MongoDB ReplicaSet Cluster + +For MongoDB ReplicaSet cluster, Stash identifies the primary replica and restore into it. + +
+ MongoDB ReplicaSet Cluster Restore Overview +
Fig: MongoDB ReplicaSet Cluster Restore
+
+ +#### MongoDB Sharded Cluster + +For MongoDB sharded cluster, Stash identifies the primary replica of each shard as well as the config server and restore respective backed up data into them. + +
+ MongoDB Sharded Cluster Restore +
Fig: MongoDB Sharded Cluster Restore
+
+ +## Next Steps + +- Backup your standalone MongoDB database using Stash following the guide from [here](/docs/v2024.8.27/addons/mongodb/standalone/). +- Backup your MongoDB Replicaset using Stash following the guide from [here](/docs/v2024.8.27/addons/mongodb/replicaset/). +- Backup your sharded MongoDB cluster using Stash following the guide from [here](/docs/v2024.8.27/addons/mongodb/sharding/). diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/backupconfiguration-replicaset.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/backupconfiguration-replicaset.yaml new file mode 100644 index 0000000000..e9be3b3a1c --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/backupconfiguration-replicaset.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-rs-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-replicaset + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-rs + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/mongodb-replicaset.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/mongodb-replicaset.yaml new file mode 100644 index 0000000000..b6cad02ed7 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/mongodb-replicaset.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mgo-rs + namespace: demo +spec: + version: "4.2.3" + replicas: 3 + replicaSet: + name: rs0 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/repository-replicaset.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/repository-replicaset.yaml new file mode 100644 index 0000000000..02c7d4b469 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/repository-replicaset.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-replicaset + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-rs + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-mongodb-replicaset.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-mongodb-replicaset.yaml new file mode 100644 index 0000000000..724871121c --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-mongodb-replicaset.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mgo-rs + namespace: demo +spec: + version: "4.2.3" + replicas: 3 + replicaSet: + name: rs0 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut + init: + waitForInitialRestore: true diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-standalone.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-standalone.yaml new file mode 100644 index 0000000000..ba49736fd5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restored-standalone.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-replicaset.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-replicaset.yaml new file mode 100644 index 0000000000..3ec9f81f0a --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-replicaset.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mgo-rs-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-replicaset + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mgo-rs + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-standalone.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-standalone.yaml new file mode 100644 index 0000000000..f64157d2d4 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/restoresession-standalone.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/standalone-backup.yaml b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/standalone-backup.yaml new file mode 100644 index 0000000000..1fed8f4eb0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/examples/standalone-backup.yaml @@ -0,0 +1,47 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mgo-rs-custom + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-rs + port: 27017 + scheme: mongodb + secret: + name: sample-mgo-rs-auth + type: kubedb.com/mongodb +--- +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-custom + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-rs/standalone + storageSecretName: gcs-secret +--- +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-rs-backup2 + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-rs-custom + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mongodb/replicaset/index.md b/content/docs/v2024.8.27/addons/mongodb/replicaset/index.md new file mode 100644 index 0000000000..6c5599006f --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/replicaset/index.md @@ -0,0 +1,826 @@ +--- +title: Backup & Restore MongoDB ReplicaSet Cluster | Stash +description: Backup and restore MongoDB ReplicaSet cluster using Stash +menu: + docs_v2024.8.27: + identifier: stash-mongodb-replicaset + name: MongoDB ReplicaSet Cluster + parent: stash-mongodb + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore MongoDB ReplicaSet Clusters using Stash + +Stash supports taking [backup and restores MongoDB ReplicaSet clusters in "idiomatic" way](https://docs.mongodb.com/manual/tutorial/restore-replica-set-from-backup/). This guide will show you how you can backup and restore your MongoDB ReplicaSet clusters with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running a production grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MongoDB databases, please check the following guide [here](/docs/v2024.8.27/addons/mongodb/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```console +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples). + +## Backup MongoDB ReplicaSet using Stash + +This section will demonstrate how to backup MongoDB ReplicaSet cluster. Here, we are going to deploy a MongoDB ReplicaSet using KubeDB. Then, we are going to backup this database into a GCS bucket. Finally, we are going to restore the backed up data into another MongoDB ReplicaSet. + +### Deploy Sample MongoDB ReplicaSet + +Let's deploy a sample MongoDB ReplicaSet database and insert some data into it. + +**Create MongoDB CRD:** + +Below is the YAML of a sample MongoDB crd that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mgo-rs + namespace: demo +spec: + version: "4.2.3" + replicas: 3 + replicaSet: + name: rs0 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Create the above `MongoDB` crd, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/mongodb-replicaset.yaml +mongodb.kubedb.com/sample-mgo-rs created +``` + +KubeDB will deploy a MongoDB database according to the above specification. It will also create the necessary secrets and services to access the database. + +Let's check if the database is ready to use, + +```console +$ kubectl get mg -n demo sample-mgo-rs +NAME VERSION STATUS AGE +sample-mgo-rs 4.2.3 Ready 1m +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```console +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-mgo-rs +NAME TYPE DATA AGE +sample-mgo-rs-auth Opaque 2 117s +sample-mgo-rs-cert Opaque 4 116s + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-mgo-rs +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-mgo-rs ClusterIP 10.107.13.16 27017/TCP 2m14s +sample-mgo-rs-gvr ClusterIP None 27017/TCP 2m14s +``` + +KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd that holds the necessary information to connect with the database. + +**Verify AppBinding:** + +Verify that the `AppBinding` has been created successfully using the following command, + +```console +$ kubectl get appbindings -n demo +NAME AGE +sample-mgo-rs 58s +``` + +Let's check the YAML of the above `AppBinding`, + +```console +$ kubectl get appbindings -n demo sample-mgo-rs -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-mgo-rs + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mongodbs.kubedb.com + app.kubernetes.io/instance: sample-mgo-rs + name: sample-mgo-rs + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-rs + port: 27017 + scheme: mongodb + parameters: + apiVersion: config.kubedb.com/v1alpha1 + kind: MongoConfiguration + replicaSets: + host-0: rs0/sample-mgo-rs-0.sample-mgo-rs-gvr.demo.svc,sample-mgo-rs-1.sample-mgo-rs-gvr.demo.svc,sample-mgo-rs-2.sample-mgo-rs-gvr.demo.svc + secret: + name: sample-mgo-rs-auth + type: kubedb.com/mongodb + version: "4.2.3" +``` + +Stash uses the `AppBinding` crd to connect with the target database. It requires the following two fields to set in AppBinding's `Spec` section. + +- `spec.clientConfig.service.name` specifies the name of the service that connects to the database. +- `spec.secret` specifies the name of the secret that holds necessary credentials to access the database. +- `spec.parameters.replicaSets` contains the dsn of replicaset. The DSNs are in key-value pair. If there is only one replicaset (replicaset can be multiple, because of sharding), then ReplicaSets field contains only one key-value pair where the key is host-0 and the value is dsn of that replicaset. +- `spec.type` specifies the types of the app that this AppBinding is pointing to. KubeDB generated AppBinding follows the following format: `/`. + +**Creating AppBinding Manually:** + +If you deploy MongoDB database without KubeDB, you have to create the AppBinding crd manually in the same namespace as the service and secret of the database. + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pod using the following command, + +```console +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-mgo-rs" +NAME READY STATUS RESTARTS AGE +sample-mgo-rs-0 1/1 Running 0 16m +sample-mgo-rs-1 1/1 Running 0 15m +sample-mgo-rs-2 1/1 Running 0 15m +``` + +Now, let's exec into the pod and create a table, + +```console +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\password}' | base64 -d +CRz6EuxvKdFjopfP + +$ kubectl exec -it -n demo sample-mgo-rs-0 bash + +mongodb@sample-mgo-rs-0:/$ mongo admin -u root -p CRz6EuxvKdFjopfP + +rs0:PRIMARY> rs.isMaster().primary +sample-mgo-rs-0.sample-mgo-rs-gvr.demo.svc.cluster.local:27017 + +rs0:PRIMARY> show dbs +admin 0.000GB +config 0.000GB +local 0.000GB + +rs0:PRIMARY> show users +{ + "_id" : "admin.root", + "userId" : UUID("0e9345cc-27ea-4175-acc4-295c987ac06b"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +rs0:PRIMARY> use newdb +switched to db newdb + +rs0:PRIMARY> db.movie.insert({"name":"batman"}); +WriteResult({ "nInserted" : 1 }) + +rs0:PRIMARY> db.movie.find().pretty() +{ "_id" : ObjectId("5d31b9d44db670db130d7a5c"), "name" : "batman" } + +rs0:PRIMARY> exit +bye +``` + +Now, we are ready to backup this sample database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` crd. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```console +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` using this secret. Below is the YAML of Repository crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-replicaset + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-rs + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/repository-replicaset.yaml +repository.stash.appscode.com/gcs-repo-replicaset created +``` + +Now, we are ready to backup our database to our desired backend. + +### Backup MongoDB ReplicaSet + +We have to create a `BackupConfiguration` targeting respective AppBinding crd of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the YAML for `BackupConfiguration` crd to backup the `sample-mgo-rs` database we have deployed earlier., + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-rs-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-replicaset + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-rs + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` specifies that we want to backup the database at 5 minutes interval. +- `spec.task.name` specifies the name of the task crd that specifies the necessary Function and their execution order to backup a MongoDB database. +- `spec.target.ref` refers to the `AppBinding` crd that was created for `sample-mgo-rs` database. + +Let's create the `BackupConfiguration` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/backupconfiguration-replicaset.yaml +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```console +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mgo-rs-backup mongodb-backup-4.2.3 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the CronJob has been created using the following command, + +```console +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +sample-mgo-rs-backup */5 * * * * False 0 62s +``` + +**Wait for BackupSession:** + +The `sample-mgo-rs-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. + +Wait for the next schedule. Run the following command to watch `BackupSession` crd, + +```console +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mgo-rs-backup-1563540308 BackupConfiguration sample-mgo-rs-backup Running 5m19s +sample-mgo-rs-backup-1563540308 BackupConfiguration sample-mgo-rs-backup Succeeded 5m45s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo-replicaset` has been updated by the following command, + +```console +$ kubectl get repository -n demo gcs-repo-replicaset +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-replicaset true 3.844 KiB 2 14s 10m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `demo/mongodb/sample-mgo-rs` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore MongoDB ReplicaSet + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new replicaset database and initialize it from the backup. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during restore process. We are going to pause the `BackupConfiguration` crd that we had created to backup the `sample-mgo-rs` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-mgo-rs-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-mgo-rs-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```console +$ kubectl get backupconfiguration -n demo sample-mgo-rs-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mgo-rs-backup mongodb-backup-4.2.3 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Restored Database:** + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-psotgres` database. However, this time there will be the following differences: + +- We are going to specify `spec.init.waitForInitialRestore: true` which will tell KubeDB to wait until the first restore to complete before marking this database as ready to use. + +Below is the YAML for `MongoDB` crd we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mgo-rs + namespace: demo +spec: + version: "4.2.3" + replicas: 3 + replicaSet: + name: rs0 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut + init: + waitForInitialRestore: true +``` + +Let's create the above database, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/restored-mongodb-replicaset.yaml +mongodb.kubedb.com/restored-mgo-rs created +``` + +If you check the database status, you will see it is stuck in `Provisioning` state. + +```console +$ kubectl get mg -n demo restored-mgo-rs +NAME VERSION STATUS AGE +restored-mgo-rs 4.2.3 Provisioning 2m +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd pointing to the AppBinding for this restored database. + +Check AppBinding has been created for the `restored-mgo-rs` database using the following command, + +```console +$ kubectl get appbindings -n demo restored-mgo-rs +NAME AGE +restored-mgo-rs 29s +``` + +NB. The appbinding `restored-mgo-rs` also contains `spec.parametrs` field. the number of hosts in `spec.parameters.replicaSets` needs to be similar to the old appbinding. Otherwise, the replicaset recover may not be accurate. + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +Below is the YAML for the `RestoreSession` crd that we are going to create to restore backed up data into `restored-mgo-rs` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mgo-rs-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-replicaset + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mgo-rs + rules: + - snapshots: [latest] +``` + +Here, + +- `spec.task.name` specifies the name of the `Task` crd that specifies the Functions and their execution order to restore a MongoDB database. +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the AppBinding crd for the `restored-mgo-rs` database. +- `spec.rules` specifies that we are restoring from the latest backup snapshot of the database. + +Let's create the `RestoreSession` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/restoresession-replicaset.yaml +restoresession.stash.appscode.com/sample-mgo-rs-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process is succeeded or not. + +Run the following command to watch `RestoreSession` phase, + +```console +$ kubectl get restoresession -n demo sample-mgo-rs-restore -w +NAME REPOSITORY-NAME PHASE AGE +sample-mgo-rs-restore gcs-repo-replicaset Running 5s +sample-mgo-rs-restore gcs-repo-replicaset Succeeded 43s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. We are going to connect to `mongos` and check whether the table we had created in the original database is restored or not. + +At first, check if the database has gone into `Ready` state by the following command, + +```console +$ kubectl get mg -n demo restored-mgo-rs +NAME VERSION STATUS AGE +restored-mgo-rs 4.2.3 Ready 3m +``` + +Now, exec into the database pod and list available tables, + +```console +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\password}' | base64 -d +CRz6EuxvKdFjopfP + +$ kubectl exec -it -n demo restored-mgo-rs-0 bash + +mongodb@restored-mgo-rs-0:/$ mongo admin -u root -p CRz6EuxvKdFjopfP + +rs0:PRIMARY> rs.isMaster().primary +restored-mgo-rs-0.restored-mgo-rs-gvr.demo.svc.cluster.local:27017 + +rs0:PRIMARY> show dbs +admin 0.000GB +config 0.000GB +local 0.000GB +newdb 0.000GB + +rs0:PRIMARY> show users +{ + "_id" : "admin.root", + "userId" : UUID("00f521b5-2b43-4712-ba80-efaa6b382813"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +rs0:PRIMARY> use newdb +switched to db newdb + +rs0:PRIMARY> db.movie.find().pretty() +{ "_id" : ObjectId("5d31b9d44db670db130d7a5c"), "name" : "batman" } + +rs0:PRIMARY> exit +bye +``` + +So, from the above output, we can see the database `newdb` that we had created in the original database `sample-mgo-rs` is restored in the restored database `restored-mgo-rs`. + +## Backup MongoDB ReplicaSet Cluster and Restore into a Standalone database + +It is possible to take backup of a MongoDB ReplicaSet Cluster and restore it into a standalone database, but user need to create the appbinding for this process. + +### Backup a replicaset cluster + +Keep all the fields of appbinding that is explained earlier in this guide, except `spec.parameter`. Do not set `spec.parameter.configServer` and `spec.parameter.replicaSet`. By doing this, the job will use `spec.clientConfig.service.name` as host, which is replicaset DSN. So, the backup will treat this cluster as a standalone and will skip the [`idiomatic way` of taking backups of a replicaset cluster](https://docs.mongodb.com/manual/tutorial/restore-replica-set-from-backup/). Then follow the rest of the procedure as described above. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mgo-rs-custom + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-rs + port: 27017 + scheme: mongodb + secret: + name: sample-mgo-rs-auth + type: kubedb.com/mongodb + +--- +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-custom + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-rs/standalone + storageSecretName: gcs-secret + +--- +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-rs-backup2 + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-rs-custom + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +```console +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/standalone-backup.yaml +appbinding.appcatalog.appscode.com/sample-mgo-rs-custom created +repository.stash.appscode.com/gcs-repo-custom created +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup2 created + + +$ kubectl get backupsession -n demo +NAME BACKUPCONFIGURATION PHASE AGE +sample-mgo-rs-backup2-1563541509 sample-mgo-rs-backup Succeeded 35s + + +$ kubectl get repository -n demo gcs-repo-custom +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-custom true 1.640 KiB 1 1m 5m +``` + +### Restore to a standalone database + +No additional configuration is needed to restore the replicaset cluster to a standalone database. Follow the normal procedure of restoring a MongoDB Database. + +Standalone MongoDB, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +RestoreSession crd object, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] +``` + +```console +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/restored-standalone.yaml +mongodb.kubedb.com/restored-mongodb created + +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Provisioning 56s + +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/replicaset/examples/restoresession-standalone.yaml +restoresession.stash.appscode.com/sample-mongodb-restore created + +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Ready 2m +``` + +Now, exec into the database pod and list available tables, + +```console +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-rs-auth -o jsonpath='{.data.\password}' | base64 -d +CRz6EuxvKdFjopfP + +$ kubectl exec -it -n demo restored-mongodb-0 bash + +mongodb@restored-mongodb-0:/$ mongo admin -u root -p CRz6EuxvKdFjopfP + +> show dbs +admin 0.000GB +config 0.000GB +local 0.000GB +newdb 0.000GB + +> show users +{ + "_id" : "admin.root", + "userId" : UUID("11e00a38-7b08-4864-b452-ae356350e50f"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +> use newdb +switched to db newdb + +> db.movie.find().pretty() +{ "_id" : ObjectId("5d31b9d44db670db130d7a5c"), "name" : "batman" } + +> exit +bye +``` + +So, from the above output, we can see the database `newdb` that we had created in the original database `sample-mgo-rs` is restored in the restored database `restored-mongodb`. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```console +kubectl delete -n demo restoresession sample-mgo-rs-restore sample-mongodb-restore +kubectl delete -n demo backupconfiguration sample-mgo-rs-backup sample-mgo-rs-backup2 +kubectl delete -n demo mg sample-mgo-rs sample-mgo-rs-ssl restored-mgo-rs restored-mgo-rs restored-mongodb +kubectl delete -n demo repository gcs-repo-replicaset gcs-repo-custom +kubectl delete -n demo appbinding sample-mgo-rs-custom +``` diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/backupconfiguration-sharding.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/backupconfiguration-sharding.yaml new file mode 100644 index 0000000000..8252a27e85 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/backupconfiguration-sharding.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-sh-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-sharding + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-sh + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/mongodb-sharding.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/mongodb-sharding.yaml new file mode 100644 index 0000000000..401ac10901 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/mongodb-sharding.yaml @@ -0,0 +1,26 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mgo-sh + namespace: demo +spec: + version: 4.2.3 + shardTopology: + configServer: + replicas: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + mongos: + replicas: 2 + shard: + replicas: 3 + shards: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/repository-sharding.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/repository-sharding.yaml new file mode 100644 index 0000000000..fb69d936e9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/repository-sharding.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-sharding + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-sh + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-mongodb-sharding.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-mongodb-sharding.yaml new file mode 100644 index 0000000000..b5e9d1c3f3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-mongodb-sharding.yaml @@ -0,0 +1,30 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mgo-sh + namespace: demo +spec: + authSecret: + name: sample-mgo-sh-auth + version: 4.2.3 + shardTopology: + configServer: + replicas: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + mongos: + replicas: 2 + shard: + replicas: 3 + shards: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + init: + waitForInitialRestore: true + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-standalone.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-standalone.yaml new file mode 100644 index 0000000000..3c8c2dc929 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restored-standalone.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + authSecret: + name: sample-mgo-sh-auth + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-sharding.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-sharding.yaml new file mode 100644 index 0000000000..ced0ce7152 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-sharding.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mgo-sh-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-sharding + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mgo-sh + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-standalone.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-standalone.yaml new file mode 100644 index 0000000000..f64157d2d4 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/restoresession-standalone.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/examples/standalone-backup.yaml b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/standalone-backup.yaml new file mode 100644 index 0000000000..6683daaf68 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/examples/standalone-backup.yaml @@ -0,0 +1,47 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mgo-sh-custom + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-sh + port: 27017 + scheme: mongodb + secret: + name: sample-mgo-sh-auth + type: kubedb.com/mongodb +--- +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-custom + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-sh/standalone + storageSecretName: gcs-secret +--- +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-sh-backup2 + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-sh-custom + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mongodb/sharding/index.md b/content/docs/v2024.8.27/addons/mongodb/sharding/index.md new file mode 100644 index 0000000000..9d6ecbd80e --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/sharding/index.md @@ -0,0 +1,855 @@ +--- +title: Backup & Restore Sharded MongoDB Cluster| Stash +description: Backup and restore sharded MongoDB cluster using Stash +menu: + docs_v2024.8.27: + identifier: stash-mongodb-sharding + name: MongoDB Sharded Cluster + parent: stash-mongodb + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore MongoDB Sharded Clusters using Stash + +Stash 0.9.0+ supports taking [backup](https://docs.mongodb.com/manual/tutorial/backup-sharded-cluster-with-database-dumps/) and [restores](https://docs.mongodb.com/manual/tutorial/restore-sharded-cluster/) MongoDB Sharded clusters in ["idiomatic" way](https://docs.mongodb.com/manual/administration/backup-sharded-clusters/). This guide will show you how you can backup and restore your MongoDB Sharded clusters with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running a production grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MongoDB databases, please check the following guide [here](/docs/v2024.8.27/addons/mongodb/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```console +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples). + +## Backup Sharded MongoDB Cluster + +This section will demonstrate how to backup MongoDB cluster. We are going to use [KubeDB](https://kubedb.com) to deploy a sample database. Then, we are going to backup this database into a GCS bucket. Finally, we are going to restore the backed up data into another MongoDB cluster. + +### Deploy Sample MongoDB Sharding + +Let's deploy a sample MongoDB Sharding database and insert some data into it. + +**Create MongoDB CRD:** + +Below is the YAML of a sample MongoDB crd that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mgo-sh + namespace: demo +spec: + version: 4.2.3 + shardTopology: + configServer: + replicas: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + mongos: + replicas: 2 + shard: + replicas: 3 + shards: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + terminationPolicy: WipeOut +``` + +Create the above `MongoDB` crd, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/mongodb-sharding.yaml +mongodb.kubedb.com/sample-mgo-sh created +``` + +MongoDB [recommends](https://www.mongodb.com/docs/manual/core/replica-set-members/#replica-set-members) that there should be at least 3 replicas for a replicaSet configuration. For a sharded MongoDB setup, a secondary configserver is locked while running `mongodump` utility for backup. This can result in various issues like sharding commands get stucked, primary-secondary syncing issue etc. So, ensure at least 3 configServer replicas by specifying >= 3 replicas in `.spec.shardTopology.configServer.replicas` field. + +KubeDB will deploy a MongoDB database according to the above specification. It will also create the necessary secrets and services to access the database. + +Let's check if the database is ready to use, + +```console +$ kubectl get mg -n demo sample-mgo-sh +NAME VERSION STATUS AGE +sample-mgo-sh 4.2.3 Ready 35m +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```console +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-mgo-sh +NAME TYPE DATA AGE +sample-mgo-sh-auth Opaque 2 36m +sample-mgo-sh-cert Opaque 4 36m + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-mgo-sh +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-mgo-sh ClusterIP 10.107.11.117 27017/TCP 36m +sample-mgo-sh-configsvr-gvr ClusterIP None 27017/TCP 36m +sample-mgo-sh-shard0-gvr ClusterIP None 27017/TCP 36m +sample-mgo-sh-shard1-gvr ClusterIP None 27017/TCP 36m +sample-mgo-sh-shard2-gvr ClusterIP None 27017/TCP 36m +``` + +KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd that holds the necessary information to connect with the database. + +**Verify AppBinding:** + +Verify that the `AppBinding` has been created successfully using the following command, + +```console +$ kubectl get appbindings -n demo +NAME AGE +sample-mgo-sh 30m +``` + +Let's check the YAML of the above `AppBinding`, + +```console +$ kubectl get appbindings -n demo sample-mgo-sh -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/component: database + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mongodbs.kubedb.com + app.kubernetes.io/instance: sample-mgo-sh + name: sample-mgo-sh + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-sh + port: 27017 + scheme: mongodb + parameters: + apiVersion: config.kubedb.com/v1alpha1 + kind: MongoConfiguration + configServer: cnfRepSet/sample-mgo-sh-configsvr-0.sample-mgo-sh-configsvr-gvr.demo.svc:27017,sample-mgo-sh-configsvr-1.sample-mgo-sh-configsvr-gvr.demo.svc:27017,sample-mgo-sh-configsvr-2.sample-mgo-sh-configsvr-gvr.demo.svc:27017 + replicaSets: + host-0: shard0/sample-mgo-sh-shard0-0.sample-mgo-sh-shard0-gvr.demo.svc:27017,sample-mgo-sh-shard0-1.sample-mgo-sh-shard0-gvr.demo.svc:27017,sample-mgo-sh-shard0-2.sample-mgo-sh-shard0-gvr.demo.svc:27017 + host-1: shard1/sample-mgo-sh-shard1-0.sample-mgo-sh-shard1-gvr.demo.svc:27017,sample-mgo-sh-shard1-1.sample-mgo-sh-shard1-gvr.demo.svc:27017,sample-mgo-sh-shard1-2.sample-mgo-sh-shard1-gvr.demo.svc:27017 + host-2: shard2/sample-mgo-sh-shard2-0.sample-mgo-sh-shard2-gvr.demo.svc:27017,sample-mgo-sh-shard2-1.sample-mgo-sh-shard2-gvr.demo.svc:27017,sample-mgo-sh-shard2-2.sample-mgo-sh-shard2-gvr.demo.svc:27017 + secret: + name: sample-mgo-sh-auth + type: kubedb.com/mongodb + version: 4.2.3 +``` + +Stash uses the `AppBinding` crd to connect with the target database. It requires the following two fields to set in AppBinding's `Spec` section. + +- `spec.clientConfig.service.name` specifies the name of the service that connects to the database. +- `spec.secret` specifies the name of the secret that holds necessary credentials to access the database. +- `spec.parameters.configServer` specifies the dsn of config server of mongodb sharding. The dsn includes the port no too. +- `spec.parameters.replicaSets` contains the dsn of each replicaset of sharding. The DSNs are in key-value pair, where the keys are host-0, host-1 etc, and the values are DSN of each replicaset. If there is no sharding but only one replicaset, then ReplicaSets field contains only one key-value pair where the key is host-0 and the value is dsn of that replicaset. +- `spec.type` specifies the types of the app that this AppBinding is pointing to. KubeDB generated AppBinding follows the following format: `/`. + +**Creating AppBinding Manually:** + +If you deploy MongoDB database without KubeDB, you have to create the AppBinding crd manually in the same namespace as the service and secret of the database. + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pod using the following command, + +```console +$ kubectl get pods -n demo --selector="mongodb.kubedb.com/node.mongos=sample-mgo-sh-mongos" +NAME READY STATUS RESTARTS AGE +sample-mgo-sh-mongos-9459cfc44-4jthd 1/1 Running 0 60m +sample-mgo-sh-mongos-9459cfc44-6d2st 1/1 Running 0 60m +``` + +Now, let's exec into the pod and create a table, + +```console +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\password}' | base64 -d +JJPcMxNKJev0SzgX + +$ kubectl exec -it -n demo sample-mgo-sh-mongos-9459cfc44-4jthd bash + +mongodb@sample-mgo-sh-0:/$ mongo admin -u root -p JJPcMxNKJev0SzgX + +mongos> show dbs +admin 0.000GB +config 0.001GB + + +mongos> show users +{ + "_id" : "admin.root", + "userId" : UUID("b9a1551b-83cf-4ebb-852b-dd23c890f301"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +mongos> use newdb +switched to db newdb + +mongos> db.movie.insert({"name":"batman"}); +WriteResult({ "nInserted" : 1 }) + +mongos> db.movie.find().pretty() +{ "_id" : ObjectId("5d3064bf144a1b8fda04cd4f"), "name" : "batman" } + +mongos> exit +bye +``` + +Now, we are ready to backup this sample database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` crd. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```console +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of Repository crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-sharding + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-sh + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/repository-sharding.yaml +repository.stash.appscode.com/gcs-repo-sharding created +``` + +Now, we are ready to backup our database to our desired backend. + +### Backup MongoDB Sharding + +We have to create a `BackupConfiguration` targeting respective AppBinding crd of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the YAML for `BackupConfiguration` crd to backup the `sample-mgo-sh` database we have deployed earlier., + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-sh-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-sharding + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-sh + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` specifies that we want to backup the database at 5 minutes interval. +- `spec.task.name` specifies the name of the task crd that specifies the necessary Function and their execution order to backup a MongoDB database. +- `spec.target.ref` refers to the `AppBinding` crd that was created for `sample-mgo-sh` database. + +Let's create the `BackupConfiguration` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/backupconfiguration-sharding.yaml +backupconfiguration.stash.appscode.com/sample-mgo-sh-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```console +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mgo-sh-backup mongodb-backup-4.2.3 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the CronJob has been created using the following command, + +```console +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +sample-mgo-sh-backup */5 * * * * False 0 13s +``` + +**Wait for BackupSession:** + +The `sample-mgo-sh-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. + +Wait for the next schedule. Run the following command to watch `BackupSession` crd, + +```console +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mgo-sh-backup-1563512707 BackupConfiguration sample-mgo-sh-backup Running 5m19s +sample-mgo-sh-backup-1563512707 BackupConfiguration sample-mgo-sh-backup Succeeded 5m45s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo-sharding` has been updated by the following command, + +```console +$ kubectl get repository -n demo gcs-repo-sharding +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-sharding true 66.453 KiB 12 1m 20m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `demo/mongodb/sample-mgo-sh` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore MongoDB Sharding + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new sharded database and initialize it from the backup. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during restore process. We are going to pause the `BackupConfiguration` crd that we had created to backup the `sample-mgo-sh` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-mgo-sh-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-mgo-sh-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mgo-sh-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```console +$ kubectl get backupconfiguration -n demo sample-mgo-sh-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mgo-sh-backup mongodb-backup-4.2.3 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Restored Database:** + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-mgo-sh` database. However, this time there will be the following differences: + +- We are going to specify `spec.init.waitForInitialRestore: true` which will tell KubeDB to wait until the first restore to complete before marking this database as ready to use. + +Below is the YAML for `MongoDB` crd we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mgo-sh + namespace: demo +spec: + authSecret: + name: sample-mgo-sh-auth + version: 4.2.3 + shardTopology: + configServer: + replicas: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + mongos: + replicas: 2 + shard: + replicas: 3 + shards: 3 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/restored-mongodb-sharding.yaml +mongodb.kubedb.com/restored-mgo-sh created +``` + +If you check the database status, you will see it is stuck in `Provisioning` state. + +```console +$ kubectl get mg -n demo restored-mgo-sh +NAME VERSION STATUS AGE +restored-mgo-sh 4.2.3 Provisioning 48m +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd pointing to the AppBinding for this restored database. + +Check AppBinding has been created for the `restored-mgo-sh` database using the following command, + +```console +$ kubectl get appbindings -n demo restored-mgo-sh +NAME AGE +restored-mgo-sh 29s +``` + +NB. The appbinding `restored-mgo-sh` also contains `spec.parametrs` field. the number of hosts in `spec.parameters.replicaSets` needs to be similar to the old appbinding. Otherwise, the sharding recover may not be accurate. + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +Below is the YAML for the `RestoreSession` crd that we are going to create to restore backed up data into `restored-mgo-sh` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mgo-sh-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-sharding + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mgo-sh + rules: + - snapshots: [latest] +``` + +Here, + +- `spec.task.name` specifies the name of the `Task` crd that specifies the Functions and their execution order to restore a MongoDB database. +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the AppBinding crd for the `restored-mgo-sh` database. +- `spec.rules` specifies that we are restoring from the latest backup snapshot of the database. + +Let's create the `RestoreSession` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/restoresession-sharding.yaml +restoresession.stash.appscode.com/sample-mgo-sh-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process is succeeded or not. + +Run the following command to watch `RestoreSession` phase, + +```console +$ kubectl get restoresession -n demo sample-mgo-sh-restore -w +NAME REPOSITORY-NAME PHASE AGE +sample-mgo-sh-restore gcs-repo-sharding Running 5s +sample-mgo-sh-restore gcs-repo-sharding Succeeded 43s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. We are going to connect to `mongos` and check whether the table we had created in the original database is restored or not. + +At first, check if the database has gone into `Running` state by the following command, + +```console +$ kubectl get mg -n demo restored-mgo-sh +NAME VERSION STATUS AGE +restored-mgo-sh 4.2.3 Running 2h +``` + +Now, find out the `mongos` pod, + +```console +$ kubectl get pods -n demo --selector="mongodb.kubedb.com/node.mongos=restored-mgo-sh-mongos" +NAME READY STATUS RESTARTS AGE +restored-mgo-sh-mongos-7bccd5d684-2z5xs 1/1 Running 0 169m +restored-mgo-sh-mongos-7bccd5d684-vvdxb 1/1 Running 0 169m +``` + +Now, exec into the database pod and list available tables, + +```console +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\password}' | base64 -d +JJPcMxNKJev0SzgX + +$ kubectl exec -it -n demo restored-mgo-sh-mongos-7bccd5d684-2z5xs bash + +mongodb@restored-mgo-sh-0:/$ mongo admin -u root -p JJPcMxNKJev0SzgX + +mongos> show dbs +admin 0.000GB +config 0.001GB +newdb 0.000GB + + +mongos> show users +{ + "_id" : "admin.root", + "userId" : UUID("a57cb466-ec66-453b-b795-654169a0f035"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +mongos> use newdb +switched to db newdb + +mongos> db.movie.find().pretty() +{ "_id" : ObjectId("5d3064bf144a1b8fda04cd4f"), "name" : "batman" } + +mongos> exit +bye +``` + +So, from the above output, we can see the database `newdb` that we had created in the original database `sample-mgo-sh` is restored in the restored database `restored-mgo-sh`. + +## Backup MongoDB Sharded Cluster and Restore into a Standalone database + +It is possible to take backup of a MongoDB Sharded Cluster and restore it into a standalone database, but user need to create the appbinding for this process. + +### Backup a sharded cluster + +Keep all the fields of appbinding that is explained earlier in this guide, except `spec.parameter`. Do not set `spec.parameter.configServer` and `spec.parameter.replicaSet`. By doing this, the job will use `spec.clientConfig.service.name` as host, which is `mongos` router DSN. So, the backup will treat this cluster as a standalone and will skip the [`idiomatic way` of taking backups of a sharded cluster](https://docs.mongodb.com/manual/tutorial/backup-sharded-cluster-with-database-dumps/). Then follow the rest of the procedure as described above. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-mgo-sh-custom + namespace: demo +spec: + clientConfig: + service: + name: sample-mgo-sh + port: 27017 + scheme: mongodb + secret: + name: sample-mgo-sh-auth + type: kubedb.com/mongodb + +--- +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-custom + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mgo-sh/standalone + storageSecretName: gcs-secret + +--- +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mgo-sh-backup2 + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mgo-sh-custom + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +```console +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/standalone-backup.yaml +appbinding.appcatalog.appscode.com/sample-mgo-sh-custom created +repository.stash.appscode.com/gcs-repo-custom created +backupconfiguration.stash.appscode.com/sample-mgo-sh-backup2 created + + +$ kubectl get backupsession -n demo +NAME BACKUPCONFIGURATION PHASE AGE +sample-mgo-sh-backup-1563528902 sample-mgo-sh-backup Succeeded 35s + + +$ kubectl get repository -n demo gcs-repo-custom +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-custom true 22.160 KiB 4 1m 2m +``` + +### Restore to a standalone database + +No additional configuration is needed to restore the sharded cluster to a standalone database. Follow the normal procedure of restoring a MongoDB Database. + +Standalone MongoDB, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + authSecret: + name: sample-mgo-sh-auth + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +RestoreSession crd object, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo-custom + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] +``` + +```console +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/restored-standalone.yaml +mongodb.kubedb.com/restored-mongodb created + +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Provisioning 56s + +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/sharding/examples/restoresession-standalone.yaml +restoresession.stash.appscode.com/sample-mongodb-restore created + +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Running 56s +``` + +Now, exec into the database pod and list available tables, + +```console +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mgo-sh-auth -o jsonpath='{.data.\password}' | base64 -d +JJPcMxNKJev0SzgX + +$ kubectl exec -it -n demo restored-mongodb-0 bash + +mongodb@restored-mongodb-0:/$ mongo admin -u root -p JJPcMxNKJev0SzgX + +> show dbs +admin 0.000GB +config 0.000GB +local 0.000GB +newdb 0.000GB + +> show users +{ + "_id" : "admin.root", + "userId" : UUID("98fa7511-2ae0-4466-bb2a-f9a7e17631ad"), + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +> use newdb +switched to db newdb + +> db.movie.find().pretty() +{ "_id" : ObjectId("5d3064bf144a1b8fda04cd4f"), "name" : "batman" } + +> exit +bye +``` + +So, from the above output, we can see the database `newdb` that we had created in the original database `sample-mgo-sh` is restored in the restored database `restored-mongodb`. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```console +kubectl delete -n demo restoresession sample-mgo-sh-restore sample-mongodb-restore +kubectl delete -n demo backupconfiguration sample-mgo-sh-backup sample-mgo-sh-backup2 +kubectl delete -n demo mg sample-mgo-sh sample-mgo-sh-ssl restored-mgo-sh restored-mgo-sh restored-mongodb +kubectl delete -n demo repository gcs-repo-sharding gcs-repo-custom +``` diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..e4947637bc --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mongodb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mongodb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/examples/mongodb.yaml b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/mongodb.yaml new file mode 100644 index 0000000000..bc205087e1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/mongodb.yaml @@ -0,0 +1,16 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/examples/repository.yaml b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/repository.yaml new file mode 100644 index 0000000000..9b224913a8 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: demo/mongodb/sample-mongodb + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restored-mongodb.yaml b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restored-mongodb.yaml new file mode 100644 index 0000000000..2269cfa289 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restored-mongodb.yaml @@ -0,0 +1,19 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut + diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restoresession.yaml new file mode 100644 index 0000000000..231b31c68b --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mongodb/standalone/index.md b/content/docs/v2024.8.27/addons/mongodb/standalone/index.md new file mode 100644 index 0000000000..a7ae6691db --- /dev/null +++ b/content/docs/v2024.8.27/addons/mongodb/standalone/index.md @@ -0,0 +1,644 @@ +--- +title: Backup & Restore Standalone MongoDB | Stash +description: Backup and restore standalone MongoDB database using Stash +menu: + docs_v2024.8.27: + identifier: stash-mongodb-standalone + name: Standalone MongoDB + parent: stash-mongodb + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore MongoDB database using Stash + +Stash 0.9.0+ supports backup and restoration of MongoDB databases. This guide will show you how you can backup and restore your MongoDB database with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running a production grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MongoDB databases, please check the following guide [here](/docs/v2024.8.27/addons/mongodb/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```console +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples). + +## Backup MongoDB + +This section will demonstrate how to backup MongoDB database. Here, we are going to deploy a MongoDB database using KubeDB. Then, we are going to backup this database into a GCS bucket. Finally, we are going to restore the backed up data into another MongoDB database. + +### Deploy Sample MongoDB Database + +Let's deploy a sample MongoDB database and insert some data into it. + +**Create MongoDB CRD:** + +Below is the YAML of a sample MongoDB crd that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: sample-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Create the above `MongoDB` crd, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples/mongodb.yaml +mongodb.kubedb.com/sample-mongodb created +``` + +KubeDB will deploy a MongoDB database according to the above specification. It will also create the necessary secrets and services to access the database. + +Let's check if the database is ready to use, + +```console +$ kubectl get mg -n demo sample-mongodb +NAME VERSION STATUS AGE +sample-mongodb 4.2.3 Ready 2m9s +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```console +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-mongodb +NAME TYPE DATA AGE +sample-mongodb-auth Opaque 2 2m28s + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-mongodb +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-mongodb ClusterIP 10.107.58.222 27017/TCP 2m48s +sample-mongodb-gvr ClusterIP None 27017/TCP 2m48s +``` + +Here, we have to use service `sample-mongodb` and secret `sample-mongodb-auth` to connect with the database. KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd that holds the necessary information to connect with the database. + +**Verify AppBinding:** + +Verify that the `AppBinding` has been created successfully using the following command, + +```console +$ kubectl get appbindings -n demo +NAME AGE +sample-mongodb 20m +``` + +Let's check the YAML of the above `AppBinding`, + +```console +$ kubectl get appbindings -n demo sample-mongodb -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-mongodb + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mongodbs.kubedb.com + name: sample-mongodb + namespace: demo +spec: + clientConfig: + service: + name: sample-mongodb + port: 27017 + scheme: mongodb + secret: + name: sample-mongodb-auth + type: kubedb.com/mongodb + version: "4.2.3" +``` + +Stash uses the `AppBinding` crd to connect with the target database. It requires the following two fields to set in AppBinding's `Spec` section. + +- `spec.clientConfig.service.name` specifies the name of the service that connects to the database. +- `spec.secret` specifies the name of the secret that holds necessary credentials to access the database. +- `spec.type` specifies the types of the app that this AppBinding is pointing to. KubeDB generated AppBinding follows the following format: `/`. + +**Creating AppBinding Manually:** + +If you deploy MongoDB database without KubeDB, you have to create the AppBinding crd manually in the same namespace as the service and secret of the database. + +The following YAML shows a minimal AppBinding specification that you have to create if you deploy MongoDB database without KubeDB. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service + port: 27017 + scheme: mongodb + secret: + name: my-database-credentials-secret + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: mongodb +``` + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pod using the following command, + +```console +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-mongodb" +NAME READY STATUS RESTARTS AGE +sample-mongodb-0 1/1 Running 0 12m +``` + +Now, let's exec into the pod and create a table, + +```console +$ kubectl get secrets -n demo sample-mongodb-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mongodb-auth -o jsonpath='{.data.\password}' | base64 -d +Tv1pSiLjGqZ9W4jE + +$ kubectl exec -it -n demo sample-mongodb-0 bash + +mongodb@sample-mongodb-0:/$ mongo admin -u root -p Tv1pSiLjGqZ9W4jE + +> show dbs +admin 0.000GB +local 0.000GB +mydb 0.000GB + +> show users +{ + "_id" : "admin.root", + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +> use newdb +switched to db newdb + +> db.movie.insert({"name":"batman"}); +WriteResult({ "nInserted" : 1 }) + +> db.movie.find().pretty() +{ "_id" : ObjectId("5d19d1cdc93d828f44e37735"), "name" : "batman" } + +> exit +bye +``` + +Now, we are ready to backup this sample database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` crd. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```console +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` using this secret. Below is the YAML of Repository crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/mongodb/sample-mongodb + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database to our desired backend. + +### Backup + +We have to create a `BackupConfiguration` targeting respective AppBinding crd of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the YAML for `BackupConfiguration` crd to backup the `sample-mongodb` database we have deployed earlier., + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mongodb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mongodb-backup-4.2.3 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mongodb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` specifies that we want to backup the database at 5 minutes interval. +- `spec.task.name` specifies the name of the task crd that specifies the necessary Function and their execution order to backup a MongoDB database. +- `spec.target.ref` refers to the `AppBinding` crd that was created for `sample-mongodb` database. + +Let's create the `BackupConfiguration` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mongodb-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```console +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mongodb-backup mongodb-backup-4.2.3 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the CronJob has been created using the following command, + +```console +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +sample-mongodb-backup */5 * * * * False 0 61s +``` + +**Wait for BackupSession:** + +The `sample-mongodb-backup` CronJob will trigger a backup on each schedule by creating a `BackpSession` crd. + +Wait for the next schedule. Run the following command to watch `BackupSession` crd, + +```console +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mongodb-backup-1561974001 BackupConfiguration sample-mongodb-backup Running 5m19s +sample-mongodb-backup-1561974001 BackupConfiguration sample-mongodb-backup Succeeded 5m45s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo` has been updated by the following command, + +```console +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.611 KiB 1 33s 33m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `demo/mongodb/sample-mongodb` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore MongoDB + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new database and initialize it from the backup. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during restore process. We are going to pause the `BackupConfiguration` crd that we had created to backup the `sample-mongodb` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-mongodb-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-mongodb-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mongodb-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```console +$ kubectl get backupconfiguration -n demo sample-mongodb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mongodb-backup mongodb-backup-4.2.3 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Restored Database:** + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-psotgres` database. However, this time there will be the following differences: + +- We are going to specify `spec.init.waitForInitialRestore: true` which will tell KubeDB to wait until the first restore to complete before marking this database as ready to use. + +Below is the YAML for `MongoDB` crd we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: restored-mongodb + namespace: demo +spec: + version: "4.2.3" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples/restore/standalone/restored-mongodb.yaml +mongodb.kubedb.com/restored-mongodb created +``` + +If you check the database status, you will see it is stuck in `Provisioning` state. + +```console +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Provisioning 17s +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd pointing to the AppBinding for this restored database. + +Check AppBinding has been created for the `restored-mongodb` database using the following command, + +```console +$ kubectl get appbindings -n demo restored-mongodb +NAME AGE +restored-mongodb 29s +``` + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +Below is the YAML for the `RestoreSession` crd that we are going to create to restore backed up data into `restored-mongodb` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: demo +spec: + task: + name: mongodb-restore-4.2.3 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + rules: + - snapshots: [latest] +``` + +Here, + +- `spec.task.name` specifies the name of the `Task` crd that specifies the Functions and their execution order to restore a MongoDB database. +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the AppBinding crd for the `restored-mongodb` database. +- `spec.rules` specifies that we are restoring from the latest backup snapshot of the database. + +Let's create the `RestoreSession` crd we have shown above, + +```console +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mongodb/standalone/examples/restore/standalone/restoresession.yaml +restoresession.stash.appscode.com/sample-mongodb-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process is succeeded or not. + +Run the following command to watch `RestoreSession` phase, + +```console +$ kubectl get restoresession -n demo sample-mongodb-restore -w +NAME REPOSITORY-NAME PHASE AGE +sample-mongodb-restore gcs-repo Running 5s +sample-mongodb-restore gcs-repo Succeeded 43s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. We are going to connect to the database and check whether the table we had created in the original database is restored or not. + +At first, check if the database has gone into `Running` state by the following command, + +```console +$ kubectl get mg -n demo restored-mongodb +NAME VERSION STATUS AGE +restored-mongodb 4.2.3 Running 105m +``` + +Now, find out the database pod by the following command, + +```console +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=restored-mongodb" +NAME READY STATUS RESTARTS AGE +restored-mongodb-0 1/1 Running 0 106m +``` + +Now, exec into the database pod and list available tables, + +```console +$ kubectl get secrets -n demo sample-mongodb-auth -o jsonpath='{.data.\username}' | base64 -d +root + +$ kubectl get secrets -n demo sample-mongodb-auth -o jsonpath='{.data.\password}' | base64 -d +Tv1pSiLjGqZ9W4jE + +$ kubectl exec -it -n demo restored-mongodb-0 bash + +mongodb@restored-mongodb-0:/$ mongo admin -u root -p Tv1pSiLjGqZ9W4jE + +> show dbs +admin 0.000GB +config 0.000GB +local 0.000GB +newdb 0.000GB + +> show users +{ + "_id" : "admin.root", + "user" : "root", + "db" : "admin", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ] +} + +> use newdb +switched to db newdb + +> db.movie.find().pretty() +{ "_id" : ObjectId("5d19d1cdc93d828f44e37735"), "name" : "batman" } + +> exit +bye +``` + +So, from the above output, we can see the database `newdb` that we had created in the original database `sample-mongodb` is restored in the restored database `restored-mongodb`. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```console +kubectl delete -n demo restoresession sample-mongodb-restore sample-mongo +kubectl delete -n demo backupconfiguration sample-mongodb-backup +kubectl delete -n demo mg sample-mongodb sample-mongodb-ssl restored-mongodb +kubectl delete -n demo repository gcs-repo +``` diff --git a/content/docs/v2024.8.27/addons/mysql/README.md b/content/docs/v2024.8.27/addons/mysql/README.md new file mode 100644 index 0000000000..2b08dc68ee --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/README.md @@ -0,0 +1,106 @@ +--- +title: MySQL Addon Overview | Stash +description: MySQL Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-mysql-readme + name: Readme + parent: stash-mysql + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/mysql/ +aliases: +- /docs/v2024.8.27/addons/mysql/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash MySQL Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash MySQL addon enables Stash to backup and restore MySQL databases. + +This guide will give you an overview of which MySQL versions are supported and how the docs are organized. + +## Supported MySQL Versions + +Stash has the following addon versions for MySQL: + +{{< versionlist "mysql">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, MySQL addon with version `8.x.x` should be able take backup of any MySQL of `8.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash MySQL documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/mysql/overview/) gives an overview of how backup and restore process for MySQL database works in Stash. +- [Standalone MySQL Database](/docs/v2024.8.27/addons/mysql/standalone/) shows how to backup and restore a standalone MySQL database. diff --git a/content/docs/v2024.8.27/addons/mysql/_index.md b/content/docs/v2024.8.27/addons/mysql/_index.md new file mode 100644 index 0000000000..f3e56999ae --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash MySQL Addon +menu: + docs_v2024.8.27: + identifier: stash-mysql + name: MySQL + parent: stash-addons + weight: 50 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/mysql/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/mysql/overview/images/backup_overview.svg new file mode 100644 index 0000000000..dc71cd59e5 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/overview/images/backup_overview.svg @@ -0,0 +1,997 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mysql/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/mysql/overview/images/restore_overview.svg new file mode 100644 index 0000000000..de6898c060 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/overview/images/restore_overview.svg @@ -0,0 +1,867 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/mysql/overview/index.md b/content/docs/v2024.8.27/addons/mysql/overview/index.md new file mode 100644 index 0000000000..c3edf42bb6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/overview/index.md @@ -0,0 +1,146 @@ +--- +title: MySQL Backup & Restore Overview | Stash +description: How MySQL Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-mysql-overview + name: How does it work? + parent: stash-mysql + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backup & Restore MySQL Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how MySQL database backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of a MySQL database. Open the image in a new tab to see the enlarged version. + +
+  MySQL Backup Overview +
Fig: MySQL Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +## How Restore Process Works + +The following diagram shows how Stash restores backed up data into a MySQL database. Open the image in a new tab to see the enlarged version. + +
+  Database Restore Overview +
Fig: MySQL Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup MySQL database using Stash following the guide from [here](/docs/v2024.8.27/addons/mysql/standalone/). diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/mysql/standalone/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..84b6ad066e --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mysql-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/examples/repository.yaml b/content/docs/v2024.8.27/addons/mysql/standalone/examples/repository.yaml new file mode 100644 index 0000000000..f08f305706 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/mysql/sample-mysql + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/examples/restored-mysql.yaml b/content/docs/v2024.8.27/addons/mysql/standalone/examples/restored-mysql.yaml new file mode 100644 index 0000000000..e4dafcb165 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/examples/restored-mysql.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: restored-mysql + namespace: demo +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/mysql/standalone/examples/restoresession.yaml new file mode 100644 index 0000000000..6f1acfe7c3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-sample-mysql + namespace: demo +spec: + task: + name: mysql-restore-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mysql + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/examples/sample-mysql.yaml b/content/docs/v2024.8.27/addons/mysql/standalone/examples/sample-mysql.yaml new file mode 100644 index 0000000000..52904385da --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/examples/sample-mysql.yaml @@ -0,0 +1,16 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: demo +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/images/sample-mysql-backup.png b/content/docs/v2024.8.27/addons/mysql/standalone/images/sample-mysql-backup.png new file mode 100644 index 0000000000..242b9dc718 Binary files /dev/null and b/content/docs/v2024.8.27/addons/mysql/standalone/images/sample-mysql-backup.png differ diff --git a/content/docs/v2024.8.27/addons/mysql/standalone/index.md b/content/docs/v2024.8.27/addons/mysql/standalone/index.md new file mode 100644 index 0000000000..bb03184e88 --- /dev/null +++ b/content/docs/v2024.8.27/addons/mysql/standalone/index.md @@ -0,0 +1,704 @@ +--- +title: Backup & Restore MySQL | Stash +description: Backup a standalone MySQL database using Stash +menu: + docs_v2024.8.27: + identifier: stash-mysql-standalone + name: Standalone MySQL Database + parent: stash-mysql + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore MySQL database using Stash + +Stash 0.9.0+ supports backup and restoration of MySQL databases. This guide will show you how you can backup and restore your MySQL database with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running a production grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MySQL databases, please check the following guide [here](/docs/v2024.8.27/addons/mysql/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples). + +## Backup MySQL + +This section will demonstrate how to backup MySQL database. Here, we are going to deploy a MySQL database using KubeDB. Then, we are going to backup this database into a GCS bucket. Finally, we are going to restore the backed up data into another MySQL database. + +### Deploy Sample MySQL Database + +Let's deploy a sample MySQL database and insert some data into it. + +**Create MySQL CRD:** + +Below is the YAML of a sample MySQL CRD that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: demo +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut +``` + +Create the above `MySQL` CRD, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples/sample-mysql.yaml +mysql.kubedb.com/sample-mysql created +``` + +KubeDB will deploy a MySQL database according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Let's check if the database is ready to use, + +```bash +$ kubectl get my -n demo sample-mysql +NAME VERSION STATUS AGE +sample-mysql 8.0.14 Ready 4m22s +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```bash +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-mysql +NAME TYPE DATA AGE +sample-mysql-auth Opaque 2 4m58s + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-mysql +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-mysql ClusterIP 10.101.2.138 3306/TCP 5m33s +sample-mysql-gvr ClusterIP None 3306/TCP 5m33s +``` + +Here, we have to use service `sample-mysql` and secret `sample-mysql-auth` to connect with the database. KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) CRD that holds the necessary information to connect with the database. + +**Verify AppBinding:** + +Verify that the AppBinding has been created successfully using the following command, + +```bash +$ kubectl get appbindings -n demo +NAME AGE +sample-mysql 9m24s +``` + +Let's check the YAML of the above AppBinding, + +```bash +$ kubectl get appbindings -n demo sample-mysql -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + creationTimestamp: "2019-09-27T05:07:34Z" + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-mysql + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mysqls.kubedb.com + name: sample-mysql + namespace: demo +spec: + clientConfig: + service: + name: sample-mysql + path: / + port: 3306 + scheme: mysql + url: tcp(sample-mysql:3306)/ + secret: + name: sample-mysql-auth + type: kubedb.com/mysql + version: "8.0.21" +``` + +Stash uses the AppBinding CRD to connect with the target database. It requires the following two fields to set in AppBinding's `.spec` section. + +- `.spec.clientConfig.service.name` specifies the name of the Service that connects to the database. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the database. +- `spec.type` specifies the types of the app that this AppBinding is pointing to. KubeDB generated AppBinding follows the following format: `/`. + +**Creating AppBinding Manually:** + +If you deploy MySQL database without KubeDB, you have to create the AppBinding CRD manually in the same namespace as the service and secret of the database. + +The following YAML shows a minimal AppBinding specification that you have to create if you deploy MySQL database without KubeDB. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding-name + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service-name + port: 3306 # my_database_port_number + scheme: mysql + secret: + name: my-database-credentials-secret-name + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: mysql +``` + +You have to replace the `<...>` quoted part with proper values in the above YAML. + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database Pod using the following command, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-mysql" +NAME READY STATUS RESTARTS AGE +sample-mysql-0 1/1 Running 0 33m +``` + +And copy the user name and password of the `root` user to access into `mysql` shell. + +```bash +$ kubectl get secret -n demo sample-mysql-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo sample-mysql-auth -o jsonpath='{.data.password}'| base64 -d +5HEqoozyjgaMO97N⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=root --password=5HEqoozyjgaMO97N +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 10 +Server version: 8.0.14 MySQL Community Server - GPL + +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> CREATE DATABASE playground; +Query OK, 1 row affected (0.01 sec) + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id)); +Query OK, 0 rows affected (0.01 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.01 sec) + +mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue"); +Query OK, 1 row affected (0.01 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +Now, we are ready to backup the database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CRD. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` using this secret. Below is the YAML of Repository CRD we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/mysql/sample-mysql + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database to our desired backend. + +### Backup + +We have to create a `BackupConfiguration` targeting respective AppBinding CRD of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the YAML for `BackupConfiguration` CRD to backup the `sample-mysql` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mysql-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the database at 5 minutes interval. +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to backup a MySQL database. +- `.spec.target.ref` refers to the AppBinding CRD that was created for `sample-mysql` database. + +Let's create the `BackupConfiguration` CRD we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mysql-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mysql-backup mysql-backup-8.0.21 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` CRD. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +sample-mysql-backup */5 * * * * False 0 27s +``` + +**Wait for BackupSession:** + +The `sample-mysql-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` CRD. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` CRD, + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=sample-mysql-backup + +Every 1.0s: kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=sample-mysql-backup workstation: Fri Sep 27 11:14:43 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mysql-backup-1569561245 BackupConfiguration sample-mysql-backup Succeeded 38s +``` + +Here, the phase **`Succeeded`** means that the backupsession has been succeeded. + +>Note: Backup CronJob creates `BackupSession` crds with the following label `stash.appscode.com/backup-configuration=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +**Verify Backup:** + +Now, we are going to verify whether the backed up data is in the backend. Once a backup is completed, Stash will update the respective `Repository` CRD to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 6.815 MiB 1 3m39s 30m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/mysql/sample-mysql` directory as specified by `.spec.backend.gcs.prefix` field of Repository CRD. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore MySQL + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new database and initialize it from the backup. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during restore process. We are going to pause the `BackupConfiguration` crd that we had created to backup the `sample-mysql` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-mysql-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-mysql-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mysql-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```console +$ kubectl get backupconfiguration -n demo sample-mysql-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mysql-backup mysql-backup-8.0.21 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Restored Database:** + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-mysql` database. However, this time there will be the following differences: + +- We are going to specify `spec.init.waitForInitialRestore: true` which will tell KubeDB to wait until the first restore to complete before marking this database as ready to use. + +Below is the YAML for `MySQL` CRD we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: restored-mysql + namespace: demo +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples/restored-mysql.yaml +mysql.kubedb.com/restored-mysql created +``` + +If you check the database status, you will see it is stuck in **`Provisioning`** state. + +```bash +$ kubectl get my -n demo restored-mysql +NAME VERSION STATUS AGE +restored-mysql 8.0.14 Provisioning 61s +``` + +**Create RestoreSession:** + +Now, we need to create a RestoreSession CRD pointing to the AppBinding for this restored database. + +Using the following command, check that another AppBinding object has been created for the `restored-mysql` object, + +```bash +$ kubectl get appbindings -n demo restored-mysql +NAME AGE +restored-mysql 6m6s +``` + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +Below is the contents of YAML file of the RestoreSession CRD that we are going to create to restore backed up data into the newly created database provisioned by MySQL CRD named `restored-mysql`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mysql-restore + namespace: demo +spec: + task: + name: mysql-restore-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mysql + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to restore a MySQL database. +- `.spec.repository.name` specifies the Repository CRD that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the newly created AppBinding object for the `restored-mysql` MySQL object. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the RestoreSession CRD object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/mysql/standalone/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mysql-restore created +``` + +Once, you have created the RestoreSession object, Stash will create a restore Job. We can watch the phase of the RestoreSession object to check whether the restore process has succeeded or not. + +Run the following command to watch the phase of the RestoreSession object, + +```bash +$ watch -n 1 kubectl get restoresession -n demo restore-sample-mysql + +Every 1.0s: kubectl get restoresession -n demo restore-sample-mysql workstation: Fri Sep 27 11:18:51 2019 +NAMESPACE NAME REPOSITORY-NAME PHASE AGE +demo restore-sample-mysql gcs-repo Succeeded 59s +``` + +Here, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify whether the desired data has been restored successfully. We are going to connect to the database server and check whether the database and the table we created earlier in the original database are restored. + +At first, check if the database has gone into **`Running`** state by the following command, + +```bash +$ kubectl get my -n demo restored-mysql +NAME VERSION STATUS AGE +restored-mysql 8.0.14 Ready 34m +``` + +Now, find out the database Pod by the following command, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=restored-mysql" +NAME READY STATUS RESTARTS AGE +restored-mysql-0 1/1 Running 0 39m +``` + +And then copy the user name and password of the `root` user to access into `mysql` shell. + +> Notice: We used the same Secret for the `restored-mysql` object. So, we will use the same commands as before. + +```bash +$ kubectl get secret -n demo restored-mysql-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo restored-mysql-auth -o jsonpath='{.data.password}'| base64 -d +x*Tw66CEDZ_kj16y⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n demo restored-mysql-0 -- mysql --user=root --password=5HEqoozyjgaMO97N +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 9 +Server version: 8.0.14 MySQL Community Server - GPL + +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.00 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +So, from the above output, we can see that the `playground` database and the `equipment` table we created earlier in the original database and now, they are restored successfully. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete backupconfiguration -n demo sample-mysql-backup +kubectl delete restoresession -n demo restore-sample-mysql +kubectl delete repository -n demo gcs-repo +kubectl delete my -n demo restored-mysql +kubectl delete my -n demo sample-mysql +``` diff --git a/content/docs/v2024.8.27/addons/nats/README.md b/content/docs/v2024.8.27/addons/nats/README.md new file mode 100644 index 0000000000..de1bda219b --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/README.md @@ -0,0 +1,113 @@ +--- +title: NATS Addon Overview | Stash +description: NATS Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-readme + name: Readme + parent: stash-nats + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/nats/ +aliases: +- /docs/v2024.8.27/addons/nats/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash NATS Addon + +Stash `{{< param "info.version" >}}` supports extending its functionality through addons. Stash NATS addon enables Stash to backup and restore NATS streams. + +This guide will give you an overview of which NATS versions are supported and how the docs are organized. + +## Supported NATS Versions + +Stash has the following addon versions for NATS: + +{{< versionlist "nats">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective NATS version. + +## Addon Version Compatibility + +This addon with matching major version with the NATS version should be able to take backup of that NATS streams. For example, NATS addon with version `2.x.x` should be able take backup of any NATS of `2.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash NATS documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/nats/overview/) gives an overview of how backup and restore process for NATS works in Stash. +- [Helm managed NATS](/docs/v2024.8.27/addons/nats/helm/) shows how to backup and restore a Helm managed NATS. +- **Different authentications:** shows how to backup and restore NATS using different authentication methods. + - [Basic Authentication](/docs/v2024.8.27/addons/nats/authentications/basic-auth/) + - [Token Authentication](/docs/v2024.8.27/addons/nats/authentications/token-auth/) + - [Nkey Authentication](/docs/v2024.8.27/addons/nats/authentications/nkey-auth/) + - [JWT Authentication](/docs/v2024.8.27/addons/nats/authentications/jwt-auth/) +- [TLS secured NATS](/docs/v2024.8.27/addons/nats/tls/) shows how to backup and restore TLS secured NATS. +- [Customizing Backup & Restore Process](/docs/v2024.8.27/addons/nats/customization/) shows how to customize the backup & restore process. diff --git a/content/docs/v2024.8.27/addons/nats/_index.md b/content/docs/v2024.8.27/addons/nats/_index.md new file mode 100644 index 0000000000..c15f6c3e11 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash NATS Addon +menu: + docs_v2024.8.27: + identifier: stash-nats + name: NATS + parent: stash-addons + weight: 90 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/nats/authentications/_index.md b/content/docs/v2024.8.27/addons/nats/authentications/_index.md new file mode 100644 index 0000000000..7aa0c41670 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/_index.md @@ -0,0 +1,79 @@ +--- +title: NATS with authentication +description: Backup and restore NATS streams using different authentication methods with Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-auth + name: Authentication + parent: stash-nats + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/appbinding.yaml new file mode 100644 index 0000000000..7e4a9e8c29 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/appbinding.yaml @@ -0,0 +1,17 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..3e1fe9fabd --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/repository.yaml new file mode 100644 index 0000000000..dae91419b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/restoresession.yaml new file mode 100644 index 0000000000..9c5f52422a --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/secret.yaml b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/secret.yaml new file mode 100644 index 0000000000..d83d02ad6e --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/examples/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + password: MjIy + username: dTI= diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/images/sample-nats-backup.png new file mode 100644 index 0000000000..b3f603de78 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/index.md b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/index.md new file mode 100644 index 0000000000..6aa162d36e --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/basic-auth/index.md @@ -0,0 +1,723 @@ +--- +title: NATS with Basic authentication +description: Backup NATS with Basic authentication using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-basic-auth + name: Basic Authentication + parent: stash-nats-auth + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup NATS with Basic Authentication using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a NATS server with basic authentication using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples). + +## Prepare NATS + +In this section, we are going to deploy a NATS cluster with basic authentication enabled. Then, we are going to create a stream and publish some messages into it. + +### Deploy NATS Cluster + +At first, let's deploy a NATS cluster. Here, we are going to use [NATS](https://github.com/nats-io/k8s/tree/main/helm/charts/nats ) chart from [nats.io](https://nats.io/). + +Let's deploy a NATS cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 \ +--set auth.enabled=true \ +--set-string auth.basic.users[0].user="sample-user",auth.basic.users[0].password="changeit" +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats +NAME NAMESPACE AGE +configmap/sample-nats-config demo 11m +endpoints/sample-nats demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-0 demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-1 demo 10m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-2 demo 10m +pod/sample-nats-0 demo 11m +pod/sample-nats-1 demo 10m +pod/sample-nats-2 demo 10m +service/sample-nats demo 11m +controllerrevision.apps/sample-nats-775468b94f demo 11m +statefulset.apps/sample-nats demo 11m +endpointslice.discovery.k8s.io/sample-nats-7n7v6 demo 11m +``` + +Now, wait for the NATS server pods `sample-nats-0`, `sample-nats-1`, `sample-nats-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-0 3/3 Running 0 9m58s +sample-nats-1 3/3 Running 0 9m35s +sample-nats-2 3/3 Running 0 9m12s +``` + +Once the pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data + +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-box +NAME READY STATUS RESTARTS AGE +sample-nats-box-785f8458d7-wtnfx 1/1 Running 0 7m20s +``` + +Let's exec into the nats-box pod, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the username and password as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=sample-user +sample-nats-box-785f8458d7-wtnfx:~# export NATS_PASSWORD=changeit + +# Let's create a stream named "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + + +# Verify that the stream has been created successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch hello +08:55:39 Published 5 bytes to "ORDERS.scratch" + +# Add another message +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch world +08:56:11 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + +### Create Secret + + Lets create a secret with basic auth credentials. Below is the YAML of `Secret` object we are going to create. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + password: Y2hhbmdlaXQ= + username: c2FtcGxlLXVzZXI= +``` + +Let's create the `Secret` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples/secret.yaml +secret/sample-nats-auth created +``` + + + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- `.spec.clientConfig.service` specifies the Service information to use to connects with the NATS server. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the server. +- `spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * Ready 11s +``` +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-8x8fp BackupConfiguration sample-nats-backup Succeeded 42s 8m28s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.382 KiB 1 9m4s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your NATS streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same nats cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same nats cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * true Ready 2d18h +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * True 0 56s 2d18h +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the username and password as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=sample-user +sample-nats-box-785f8458d7-wtnfx:~# export NATS_PASSWORD=changeit + +# delete the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +No Streams defined +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/basic-auth/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the username and password as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=sample-user +sample-nats-box-785f8458d7-wtnfx:~# export NATS_PASSWORD=changeit + +# Verify that the stream has been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * false Ready 2d19h +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup +kubectl delete -n demo restoresession sample-nats-restore +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats -n demo +``` diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/appbinding.yaml new file mode 100644 index 0000000000..7e4a9e8c29 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/appbinding.yaml @@ -0,0 +1,17 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..70b58a6647 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/repository.yaml new file mode 100644 index 0000000000..dae91419b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/restoresession.yaml new file mode 100644 index 0000000000..9c5f52422a --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/secret.yaml b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/secret.yaml new file mode 100644 index 0000000000..7e92b7e6c2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/examples/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + creds: LS0tLS1CRUdJTiBOQVRTIFVTRVIgSldULS0tLS0KZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKbFpESTFOVEU1TFc1clpYa2lmUS5leUpxZEdraU9pSklRVXBLVDFJeVQwZFBXRVphVUZOQ1VVUk5OVTlaVnpKYVNVVlRURXcxTjFNMVJGVkZWVmhSVGxRMlNUVkZUMWxFVnpaQklpd2lhV0YwSWpveE5qSTVPRGt6TWpReExDSnBjM01pT2lKQlJFWkRNMWxNUVZVMU5rNHlOa2hIVGpkVVIxQlhSRmhSVGxwVFFsRkZXa3RSV0ZCUVVsQXlORWhMTkRaV1NsbFJXRFExVXpKVlNDSXNJbTVoYldVaU9pSjRJaXdpYzNWaUlqb2lWVUZZVEVnMFdUVlNOazVNUmxwT1RsaENVVTh5V1VaWk56SlNRbE5ETms4MFZFNUpRa0pOUzBOVlRGcExNell6TjFGQ05GTldNa1lpTENKdVlYUnpJanA3SW5CMVlpSTZlMzBzSW5OMVlpSTZlMzBzSW5OMVluTWlPaTB4TENKa1lYUmhJam90TVN3aWNHRjViRzloWkNJNkxURXNJblI1Y0dVaU9pSjFjMlZ5SWl3aWRtVnljMmx2YmlJNk1uMTkuMFFyeW11Mi1HdUVYV3hOaU5MNGRxc1JMdlJ4VGNXQ24zRHN6UTJIbUhHOElEbXhwUG9oeGRGMFU3aUQ5WGdQU2xSMVBOakJ6bXFxMHhFME1lWmRTRHcKLS0tLS0tRU5EIE5BVFMgVVNFUiBKV1QtLS0tLS0KCi0tLS0tQkVHSU4gVVNFUiBOS0VZIFNFRUQtLS0tLQpTVUFCUlc0Sjc2RlpCTjVTMlZOR0MzWVdLRlRXR1FVNTI3TzVSQkdPTVRQNkRYRUpDSUZSS0NKSUtVCi0tLS0tLUVORCBVU0VSIE5LRVkgU0VFRC0tLS0tLQo= diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/images/sample-nats-backup.png new file mode 100644 index 0000000000..b3f603de78 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/index.md b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/index.md new file mode 100644 index 0000000000..3a8d99fa7d --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/jwt-auth/index.md @@ -0,0 +1,727 @@ +--- +title: NATS with JWT authentication +description: Backup NATS with JWT authentication using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-jwt-auth + name: JWT Authentication + parent: stash-nats-auth + weight: 25 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup NATS with JWT Authentication using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a NATS server with JWT authentication using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples). + +## Prepare NATS + +In this section, we are going to deploy a NATS cluster with JWT authentication enabled. Then, we are going to create a stream and publish some messages into it. + +### Deploy NATS Cluster + +At first, let's deploy a NATS cluster. Here, we are going to use [NATS](https://github.com/nats-io/k8s/tree/main/helm/charts/nats ) chart from [nats.io](https://nats.io/). + +Let's deploy a NATS cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 \ +--set auth.enabled=true \ +--set auth.resolver.type=full \ +--set auth.resolver.operator=eyJ0eXAiOiJKV1QiLCJhbGciOiJlZDI1NTE5LW5rZXkifQ.eyJhdWQiOiJPQU5US0NDTkFQTUdCNE9YRE1YT1ZON01DQUVKNVZGV1ZXVEFVVlVXQllBUFhMWlpHU1NZVTRLVCIsImV4cCI6MTk0NTQyNjA0MSwianRpIjoiWktRTllaTlNRTUhNQzNHREdVRVpDUFlDT0RNSjIyMzRPM0pGTjUzWlZYWEZBUFU3Qlg2QSIsImlhdCI6MTYyOTg5MzI0MSwiaXNzIjoiT0FOVEtDQ05BUE1HQjRPWERNWE9WTjdNQ0FFSjVWRldWV1RBVVZVV0JZQVBYTFpaR1NTWVU0S1QiLCJuYW1lIjoiS08iLCJuYmYiOjE2Mjk4OTMyNDEsInN1YiI6Ik9BTlRLQ0NOQVBNR0I0T1hETVhPVk43TUNBRUo1VkZXVldUQVVWVVdCWUFQWExaWkdTU1lVNEtUIiwibmF0cyI6eyJzaWduaW5nX2tleXMiOlsiT0FOVEtDQ05BUE1HQjRPWERNWE9WTjdNQ0FFSjVWRldWV1RBVVZVV0JZQVBYTFpaR1NTWVU0S1QiXSwidHlwZSI6Im9wZXJhdG9yIiwidmVyc2lvbiI6Mn19.jxs4znpE50PzRFfKOjENlFQTfsRHH5VqIplnTgAziUJuYBSNmBQeYsBDJTOgLJyADgtqIWkAQF_G5K7xuVXpCg \ +--set auth.resolver.systemAccount=ABQBM7PTUNWRWQRWFFQGRCVRQ7ULYSZQLCMGDK62WYRHRO3NUN3SUONF \ +--set auth.resolver.resolverPreload.ABQBM7PTUNWRWQRWFFQGRCVRQ7ULYSZQLCMGDK62WYRHRO3NUN3SUONF=eyJ0eXAiOiJKV1QiLCJhbGciOiJlZDI1NTE5LW5rZXkifQ.eyJqdGkiOiJDRTZHVUdISEYzVzRGUU5VMjdVWks2SUtNSkpQWEEzUlEyNDVYTE5LWEVIS0xaQ1ZaT1FBIiwiaWF0IjoxNjI5ODkzMjQxLCJpc3MiOiJPQU5US0NDTkFQTUdCNE9YRE1YT1ZON01DQUVKNVZGV1ZXVEFVVlVXQllBUFhMWlpHU1NZVTRLVCIsIm5hbWUiOiJTWVMiLCJzdWIiOiJBQlFCTTdQVFVOV1JXUVJXRkZRR1JDVlJRN1VMWVNaUUxDTUdESzYyV1lSSFJPM05VTjNTVU9ORiIsIm5hdHMiOnsibGltaXRzIjp7InN1YnMiOi0xLCJkYXRhIjotMSwicGF5bG9hZCI6LTEsImltcG9ydHMiOi0xLCJleHBvcnRzIjotMSwid2lsZGNhcmRzIjp0cnVlLCJjb25uIjotMSwibGVhZiI6LTF9LCJkZWZhdWx0X3Blcm1pc3Npb25zIjp7InB1YiI6e30sInN1YiI6e319LCJ0eXBlIjoiYWNjb3VudCIsInZlcnNpb24iOjJ9fQ.DM8U4Ld4OWmd-hk9fobMI3fWMDZdLr-Q33Uq7h5eoM-RMVKN-5nuUlmaxPffYRwE1egVIn9mQuu7YYmwX31wDQ \ +--set auth.resolver.resolverPreload.ADFC3YLAU56N26HGN7TGPWDXQNZSBQEZKQXPPRP24HK46VJYQX45S2UH=eyJ0eXAiOiJKV1QiLCJhbGciOiJlZDI1NTE5LW5rZXkifQ.eyJqdGkiOiJEMlYzVE9NUTQ1WjRGUFNTM0hCMk5TR1dLV0xITDVNSUpVWENNSTRGVEtYNTIzNjdWRUhRIiwiaWF0IjoxNjI5ODkzMjQxLCJpc3MiOiJPQU5US0NDTkFQTUdCNE9YRE1YT1ZON01DQUVKNVZGV1ZXVEFVVlVXQllBUFhMWlpHU1NZVTRLVCIsIm5hbWUiOiJYIiwic3ViIjoiQURGQzNZTEFVNTZOMjZIR043VEdQV0RYUU5aU0JRRVpLUVhQUFJQMjRISzQ2VkpZUVg0NVMyVUgiLCJuYXRzIjp7ImV4cG9ydHMiOlt7Im5hbWUiOiJ4LkV2ZW50cyIsInN1YmplY3QiOiJ4LkV2ZW50cyIsInR5cGUiOiJzdHJlYW0ifSx7Im5hbWUiOiJ4Lk5vdGlmaWNhdGlvbnMiLCJzdWJqZWN0IjoieC5Ob3RpZmljYXRpb25zIiwidHlwZSI6InNlcnZpY2UiLCJyZXNwb25zZV90eXBlIjoiU3RyZWFtIn1dLCJsaW1pdHMiOnsic3VicyI6LTEsImRhdGEiOi0xLCJwYXlsb2FkIjotMSwiaW1wb3J0cyI6LTEsImV4cG9ydHMiOi0xLCJ3aWxkY2FyZHMiOnRydWUsImNvbm4iOi0xLCJsZWFmIjotMSwibWVtX3N0b3JhZ2UiOi0xLCJkaXNrX3N0b3JhZ2UiOi0xLCJzdHJlYW1zIjotMSwiY29uc3VtZXIiOi0xfSwiZGVmYXVsdF9wZXJtaXNzaW9ucyI6eyJwdWIiOnt9LCJzdWIiOnt9fSwidHlwZSI6ImFjY291bnQiLCJ2ZXJzaW9uIjoyfX0.oXatnt7Tqt1iHDpUAKGroac9Sv6G4kbAPIt75BrBRh6B9MOFa_y8QLsUnIffI4-aG31cVYjECs7QlsNTPJ-oCg +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats +NAME NAMESPACE AGE +configmap/sample-nats-config demo 11m +endpoints/sample-nats demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-0 demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-1 demo 10m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-2 demo 10m +pod/sample-nats-0 demo 11m +pod/sample-nats-1 demo 10m +pod/sample-nats-2 demo 10m +service/sample-nats demo 11m +controllerrevision.apps/sample-nats-775468b94f demo 11m +statefulset.apps/sample-nats demo 11m +endpointslice.discovery.k8s.io/sample-nats-7n7v6 demo 11m +``` + +Now, wait for the NATS server pods `sample-nats-0`, `sample-nats-1`, `sample-nats-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-0 3/3 Running 0 9m58s +sample-nats-1 3/3 Running 0 9m35s +sample-nats-2 3/3 Running 0 9m12s +``` + +Once the pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-box +NAME READY STATUS RESTARTS AGE +sample-nats-box-785f8458d7-wtnfx 1/1 Running 0 7m20s +``` + +Let's exec into the nats-box pod, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's create the creds file for our user +sample-nats-box-785f8458d7-wtnfx:~# echo LS0tLS1CRUdJTiBOQVRTIFVTRVIgSldULS0tLS0KZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKbFpESTFOVEU1TFc1clpYa2lmUS5leUpxZEdraU9pSklRVXBLVDFJeVQwZFBXRVphVUZOQ1VVUk5OVTlaVnpKYVNVVlRURXcxTjFNMVJGVkZWVmhSVGxRMlNUVkZUMWxFVnpaQklpd2lhV0YwSWpveE5qSTVPRGt6TWpReExDSnBjM01pT2lKQlJFWkRNMWxNUVZVMU5rNHlOa2hIVGpkVVIxQlhSRmhSVGxwVFFsRkZXa3RSV0ZCUVVsQXlORWhMTkRaV1NsbFJXRFExVXpKVlNDSXNJbTVoYldVaU9pSjRJaXdpYzNWaUlqb2lWVUZZVEVnMFdUVlNOazVNUmxwT1RsaENVVTh5V1VaWk56SlNRbE5ETms4MFZFNUpRa0pOUzBOVlRGcExNell6TjFGQ05GTldNa1lpTENKdVlYUnpJanA3SW5CMVlpSTZlMzBzSW5OMVlpSTZlMzBzSW5OMVluTWlPaTB4TENKa1lYUmhJam90TVN3aWNHRjViRzloWkNJNkxURXNJblI1Y0dVaU9pSjFjMlZ5SWl3aWRtVnljMmx2YmlJNk1uMTkuMFFyeW11Mi1HdUVYV3hOaU5MNGRxc1JMdlJ4VGNXQ24zRHN6UTJIbUhHOElEbXhwUG9oeGRGMFU3aUQ5WGdQU2xSMVBOakJ6bXFxMHhFME1lWmRTRHcKLS0tLS0tRU5EIE5BVFMgVVNFUiBKV1QtLS0tLS0KCi0tLS0tQkVHSU4gVVNFUiBOS0VZIFNFRUQtLS0tLQpTVUFCUlc0Sjc2RlpCTjVTMlZOR0MzWVdLRlRXR1FVNTI3TzVSQkdPTVRQNkRYRUpDSUZSS0NKSUtVCi0tLS0tLUVORCBVU0VSIE5LRVkgU0VFRC0tLS0tLQo= | base64 -d > user.creds + +# Let's export the file path as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_CREDS=/tmp/user.creds + +# Let's create a stream named "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + + +# Verify that the stream has been created successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch hello +08:55:39 Published 5 bytes to "ORDERS.scratch" + +# Add another message +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch world +08:56:11 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + +### Create Secret + + Lets create a secret with JWT auth credentials. Below is the YAML of `Secret` object we are going to create. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + creds: LS0tLS1CRUdJTiBOQVRTIFVTRVIgSldULS0tLS0KZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKbFpESTFOVEU1TFc1clpYa2lmUS5leUpxZEdraU9pSklRVXBLVDFJeVQwZFBXRVphVUZOQ1VVUk5OVTlaVnpKYVNVVlRURXcxTjFNMVJGVkZWVmhSVGxRMlNUVkZUMWxFVnpaQklpd2lhV0YwSWpveE5qSTVPRGt6TWpReExDSnBjM01pT2lKQlJFWkRNMWxNUVZVMU5rNHlOa2hIVGpkVVIxQlhSRmhSVGxwVFFsRkZXa3RSV0ZCUVVsQXlORWhMTkRaV1NsbFJXRFExVXpKVlNDSXNJbTVoYldVaU9pSjRJaXdpYzNWaUlqb2lWVUZZVEVnMFdUVlNOazVNUmxwT1RsaENVVTh5V1VaWk56SlNRbE5ETms4MFZFNUpRa0pOUzBOVlRGcExNell6TjFGQ05GTldNa1lpTENKdVlYUnpJanA3SW5CMVlpSTZlMzBzSW5OMVlpSTZlMzBzSW5OMVluTWlPaTB4TENKa1lYUmhJam90TVN3aWNHRjViRzloWkNJNkxURXNJblI1Y0dVaU9pSjFjMlZ5SWl3aWRtVnljMmx2YmlJNk1uMTkuMFFyeW11Mi1HdUVYV3hOaU5MNGRxc1JMdlJ4VGNXQ24zRHN6UTJIbUhHOElEbXhwUG9oeGRGMFU3aUQ5WGdQU2xSMVBOakJ6bXFxMHhFME1lWmRTRHcKLS0tLS0tRU5EIE5BVFMgVVNFUiBKV1QtLS0tLS0KCi0tLS0tQkVHSU4gVVNFUiBOS0VZIFNFRUQtLS0tLQpTVUFCUlc0Sjc2RlpCTjVTMlZOR0MzWVdLRlRXR1FVNTI3TzVSQkdPTVRQNkRYRUpDSUZSS0NKSUtVCi0tLS0tLUVORCBVU0VSIE5LRVkgU0VFRC0tLS0tLQo= +``` + +Let's create the `Secret` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples/secret.yaml +secret/sample-nats-auth created +``` + + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- `.spec.clientConfig.service` specifies the Service information to use to connects with the NATS server. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the server. +- `.spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup created +``` +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * Ready 11s +``` + + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-8x8fp BackupConfiguration sample-nats-backup Succeeded 42s 8m28s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.382 KiB 1 9m4s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + + + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your nats streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same NATS cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same NATS cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * true Redy 2d18h +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * True 0 56s 2d18h +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the file path of user.creds file as environment variable to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_CREDS=/tmp/user.creds + +# delete the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +No Streams defined +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/jwt-auth/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the file path of user.creds file as environment variable to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_CREDS=/tmp/user.creds + +# Verify that the stream has been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * false Ready 2d19h +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup +kubectl delete -n demo restoresession sample-nats-restore +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats -n demo +``` diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/appbinding.yaml new file mode 100644 index 0000000000..7e4a9e8c29 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/appbinding.yaml @@ -0,0 +1,17 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..70b58a6647 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/repository.yaml new file mode 100644 index 0000000000..dae91419b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/restoresession.yaml new file mode 100644 index 0000000000..9c5f52422a --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/secret.yaml b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/secret.yaml new file mode 100644 index 0000000000..71bd6e0936 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/examples/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + nkey: U1VBRDJRWlBJQU9aRTdTQlZHUjJQS09YVkEyTDYzVUQ1UEVWNkVVUTZPTEdUS0ZJV0o0VTNaQ1NDQQpVQVdHR1ZFSFhJRU9XWVZCTjdSTzdJSUtJWEhJT0s2SldXVURKT1dJVVo2TDNYTUlXTTVJRkdQRAo= diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/images/sample-nats-backup.png new file mode 100644 index 0000000000..b3f603de78 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/index.md b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/index.md new file mode 100644 index 0000000000..ef23f7d4d6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/nkey-auth/index.md @@ -0,0 +1,724 @@ +--- +title: NKey authentication +description: Backup NATS with Nkey authentication using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-nkey-auth + name: Nkey Authentication + parent: stash-nats-auth + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup NATS with Nkey Authentication using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a NATS server with nkey authentication using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples). + +## Prepare NATS + +In this section, we are going to deploy a NATS cluster with nkey authentication enabled. Then, we are going to create a stream and publish some messages into it. + +### Deploy NATS Cluster + +At first, let's deploy a NATS cluster. Here, we are going to use [NATS]( https://github.com/nats-io/k8s/tree/main/helm/charts/nats) chart from [nats.io](https://nats.io/). + +Let's deploy a NATS cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 \ +--set auth.enabled=true \ +--set auth.nkeys.users[0].nkey="UAWGGVEHXIEOWYVBN7RO7IIKIXHIOK6JWWUDJOWIUZ6L3XMIWM5IFGPD" + +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats +NAME NAMESPACE AGE +configmap/sample-nats-config demo 11m +endpoints/sample-nats demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-0 demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-1 demo 10m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-2 demo 10m +pod/sample-nats-0 demo 11m +pod/sample-nats-1 demo 10m +pod/sample-nats-2 demo 10m +service/sample-nats demo 11m +controllerrevision.apps/sample-nats-775468b94f demo 11m +statefulset.apps/sample-nats demo 11m +endpointslice.discovery.k8s.io/sample-nats-7n7v6 demo 11m +``` + +Now, wait for the NATS server pods `sample-nats-0`, `sample-nats-1`, `sample-nats-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-0 3/3 Running 0 9m58s +sample-nats-1 3/3 Running 0 9m35s +sample-nats-2 3/3 Running 0 9m12s +``` + +Once the pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-box +NAME READY STATUS RESTARTS AGE +sample-nats-box-785f8458d7-wtnfx 1/1 Running 0 7m20s +``` + +Let's exec into the nats-box pod, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's create the nkey file for our user +sample-nats-box-785f8458d7-wtnfx:~# echo U1VBRDJRWlBJQU9aRTdTQlZHUjJQS09YVkEyTDYzVUQ1UEVWNkVVUTZPTEdUS0ZJV0o0VTNaQ1NDQQpVQVdHR1ZFSFhJRU9XWVZCTjdSTzdJSUtJWEhJT0s2SldXVURKT1dJVVo2TDNYTUlXTTVJRkdQRA== | base64 -d > user.nk + +# Let's export the file path as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_NKEY=/tmp/user.nk + +# Let's create a stream named "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + + +# Verify that the stream has been created successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch hello +08:55:39 Published 5 bytes to "ORDERS.scratch" + +# Add another message +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch world +08:56:11 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + +### Create Secret + + Lets create a secret with nkey credentials. Below is the YAML of `Secret` object we are going to create. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + nkey: U1VBRDJRWlBJQU9aRTdTQlZHUjJQS09YVkEyTDYzVUQ1UEVWNkVVUTZPTEdUS0ZJV0o0VTNaQ1NDQQpVQVdHR1ZFSFhJRU9XWVZCTjdSTzdJSUtJWEhJT0s2SldXVURKT1dJVVo2TDNYTUlXTTVJRkdQRAo= +``` + +Let's create the `Secret` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples/secret.yaml +secret/sample-nats-auth created +``` + + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- `.spec.clientConfig.service` specifies the Service information to use to connects with the NATS server. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the server. +- `.spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-8x8fp BackupConfiguration sample-nats-backup Succeeded 42s 8m28s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.382 KiB 1 9m4s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + + + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your nats streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same NATS cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same NATS cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * true Ready 2d18h +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * True 0 56s 2d18h +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the file path of user.nk file as environment variable to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_NKEY=/tmp/user.nk + +# delete the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +No Streams defined +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/nkey-auth/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the file path of user.nk file as environment variable to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_NKEY=/tmp/user.nk + +# Verify that the stream has been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * false Ready 2d19h +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup +kubectl delete -n demo restoresession sample-nats-restore +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats -n demo +``` diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/appbinding.yaml new file mode 100644 index 0000000000..7e4a9e8c29 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/appbinding.yaml @@ -0,0 +1,17 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..70b58a6647 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/repository.yaml new file mode 100644 index 0000000000..dae91419b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/restoresession.yaml new file mode 100644 index 0000000000..9c5f52422a --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/secret.yaml b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/secret.yaml new file mode 100644 index 0000000000..372666137b --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/examples/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + token: c2VjcmV0 diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/images/sample-nats-backup.png new file mode 100644 index 0000000000..b3f603de78 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/authentications/token-auth/index.md b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/index.md new file mode 100644 index 0000000000..708f74a7e9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/authentications/token-auth/index.md @@ -0,0 +1,720 @@ +--- +title: NATS with Token authentication +description: Backup NATS with Token authetication using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-token-auth + name: Token Authentication + parent: stash-nats-auth + weight: 15 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup NATS with Token Authentication using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a NATS server with token authentication using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples). + +## Prepare NATS + +In this section, we are going to deploy a NATS cluster with token authentication enabled. Then, we are going to create a stream and publish some messages into it. + +### Deploy NATS Cluster + +At first, let's deploy a NATS cluster. Here, we are going to use [NATS](https://github.com/nats-io/k8s/tree/main/helm/charts/nats ) chart from [nats.io](https://nats.io/). + +Let's deploy a NATS cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 \ +--set auth.enabled=true \ +--set auth.token="secret" +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats +NAME NAMESPACE AGE +configmap/sample-nats-config demo 11m +endpoints/sample-nats demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-0 demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-1 demo 10m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-2 demo 10m +pod/sample-nats-0 demo 11m +pod/sample-nats-1 demo 10m +pod/sample-nats-2 demo 10m +service/sample-nats demo 11m +controllerrevision.apps/sample-nats-775468b94f demo 11m +statefulset.apps/sample-nats demo 11m +endpointslice.discovery.k8s.io/sample-nats-7n7v6 demo 11m +``` + +Now, wait for the NATS server pods `sample-nats-0`, `sample-nats-1`, `sample-nats-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-0 3/3 Running 0 9m58s +sample-nats-1 3/3 Running 0 9m35s +sample-nats-2 3/3 Running 0 9m12s +``` + +Once the pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-box +NAME READY STATUS RESTARTS AGE +sample-nats-box-785f8458d7-wtnfx 1/1 Running 0 7m20s +``` + +Let's exec into the nats-box pod, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the token as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=secret + +# Let's create a stream named "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: truee + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + + +# Verify that the stream has been created successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch hello +08:55:39 Published 5 bytes to "ORDERS.scratch" + +# Add another message +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch world +08:56:11 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + +### Create Secret + + Lets create a secret with token auth credentials. Below is the YAML of `Secret` object we are going to create. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats-auth + namespace: demo +data: + token: c2VjcmV0 +``` + +Let's create the `Secret` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples/secret.yaml +secret/sample-nats-auth created +``` + + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + secret: + name: sample-nats-auth + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- `.spec.clientConfig.service` specifies the Service information to use to connects with the NATS server. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the server. +- `.spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-8x8fp BackupConfiguration sample-nats-backup Succeeded 42s 8m28s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.382 KiB 1 9m4s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + + + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your nats streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same NATS cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same NATS cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * true Ready 2d18h +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * True 0 56s 2d18h +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the token as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=secret + +# delete the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +No Streams defined +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/authentications/token-auth/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's export the token as environment variables to make further commands re-usable. +sample-nats-box-785f8458d7-wtnfx:~# export NATS_USER=secret + +# Verify that the stream has been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * false Ready 2d19h +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup +kubectl delete -n demo restoresession sample-nats-restore +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats -n demo +``` diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/backup/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/multi-retention-policy.yaml new file mode 100644 index 0000000000..0e8dc27263 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/multi-retention-policy.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nat + retentionPolicy: + name: sample-nats-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-args.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-args.yaml new file mode 100644 index 0000000000..549b46287b --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-args.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + params: + - name: args + value: --check + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-streams.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-streams.yaml new file mode 100644 index 0000000000..9057e8a043 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/passing-streams.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + params: + - name: streams + value: "str1,str2" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/backup/resource-limit.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/resource-limit.yaml new file mode 100644 index 0000000000..a9f4fc5126 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/resource-limit.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/backup/specific-user.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/specific-user.yaml new file mode 100644 index 0000000000..4e4774b9d0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/backup/specific-user.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-args.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-args.yaml new file mode 100644 index 0000000000..c637f1b9e0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-args.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + params: + - name: args + value: --no-progress + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-streams.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-streams.yaml new file mode 100644 index 0000000000..3bb16bb0b0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/passing-streams.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + params: + - name: streams + value: "str1,str2" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/restore/resource-limit.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/resource-limit.yaml new file mode 100644 index 0000000000..86a71af7ee --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/resource-limit.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-snapshot.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-snapshot.yaml new file mode 100644 index 0000000000..32ed0fa0cf --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-snapshot.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [4bc21d6f] diff --git a/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-user.yaml b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-user.yaml new file mode 100644 index 0000000000..7ffa61821c --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/examples/restore/specific-user.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/customization/index.md b/content/docs/v2024.8.27/addons/nats/customization/index.md new file mode 100644 index 0000000000..a8a45c8bcc --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/customization/index.md @@ -0,0 +1,445 @@ +--- +title: NATS Backup Customization +description: Customizing NATS Backup and Restore process with Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-customization + name: Customizing Backup & Restore Process + parent: stash-nats + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup and Restore Process + +Stash provides rich customization supports for the backup and restore process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/customization/examples). + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, taking backup of specific streams, etc. + +### Passing arguments to the backup process +Stash NATS addon uses NATS CLI for backup. You can pass arguments to the backup command of the NATS CLI through `args` param under `task.params` section. + +The below example shows how you can pass the `--check` to check a stream for health prior to backup. + + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + params: + - name: args + value: --check + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Backup specific streams + +Stash takes backup of all the streams by default. If you want to take backup of specific streams, you can pass a list of streams through `streams` param under `task.params` section. + +The below example shows how you can pass the `"str1,str2"` to take backup of the streams `str1` and ` str2`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + params: + - name: streams + value: "str1,str2" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nat + retentionPolicy: + name: sample-nats-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +In this section, we are going to show how you can overwrite existing streams, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process +Stash NATS addon uses NATS CLI for restore. You can pass arguments to the restore command of NATS CLI through `args` param under `task.params` section. + +The below example shows how you can pass the `--no-progress` to disable the progress using the terminal bar. It will then issue log lines instead. + + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name:nats-backup-2.6.1 + params: + - name: args + value: --no-progress + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [latest] +``` + +### Restore specific streams + +Stash restores all the streams by default. If you want to restore specific streams, you can pass a list of streams through `streams` param under `task.params` section. + +The below example shows how you can pass the `"str1,str2"` to restore the streams `str1` and ` str2`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + params: + - name: streams + value: "str1,str2" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [latest] +``` + +### Overwrite existing streams + +Stash doesn't overwrite any existing stream by default during the restore process. If you want to overwrite the existing streams, you can pass `true` to the `overwrite` params under `task.params` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name:nats-backup-2.6.1 + params: + - name: overwrite + value: "true" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [latest] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore job as a specific user + +You can provide `securityContext` under `runtimeSettings.pod` section to run the restore job as a specific user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore job + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore job. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/addons/nats/helm/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/helm/examples/appbinding.yaml new file mode 100644 index 0000000000..0c41842455 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/helm/examples/appbinding.yaml @@ -0,0 +1,15 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/helm/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/helm/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..3e1fe9fabd --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/helm/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/helm/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/helm/examples/repository.yaml new file mode 100644 index 0000000000..dae91419b2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/helm/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/helm/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/helm/examples/restoresession.yaml new file mode 100644 index 0000000000..9c5f52422a --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/helm/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/helm/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/helm/images/sample-nats-backup.png new file mode 100644 index 0000000000..b3f603de78 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/helm/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/helm/index.md b/content/docs/v2024.8.27/addons/nats/helm/index.md new file mode 100644 index 0000000000..400b011926 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/helm/index.md @@ -0,0 +1,696 @@ +--- +title: Helm managed NATS +description: Backup Helm managed NATS using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-helm + name: Helm managed NATS + parent: stash-nats + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup Helm managed NATS using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a Helm managed NATS server using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/helm/examples). + +## Prepare NATS + +In this section, we are going to deploy a NATS cluster. Then, we are going to insert some sample data into it. + +### Deploy NATS Cluster + +At first, let's deploy a NATS cluster. Here, we are going to use [NATS]( https://github.com/nats-io/k8s/tree/main/helm/charts/nats) chart from [nats.io](https://nats.io/). + +Let's deploy a nats cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats +NAME NAMESPACE AGE +configmap/sample-nats-config demo 11m +endpoints/sample-nats demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-0 demo 11m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-1 demo 10m +persistentvolumeclaim/sample-nats-js-pvc-sample-nats-2 demo 10m +pod/sample-nats-0 demo 11m +pod/sample-nats-1 demo 10m +pod/sample-nats-2 demo 10m +service/sample-nats demo 11m +controllerrevision.apps/sample-nats-775468b94f demo 11m +statefulset.apps/sample-nats demo 11m +endpointslice.discovery.k8s.io/sample-nats-7n7v6 demo 11m +``` + +Now, wait for the NATS server pods `sample-nats-0`, `sample-nats-1`, `sample-nats-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-0 3/3 Running 0 9m58s +sample-nats-1 3/3 Running 0 9m35s +sample-nats-2 3/3 Running 0 9m12s +``` + +Once the nats server pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data + +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-box +NAME READY STATUS RESTARTS AGE +sample-nats-box-785f8458d7-wtnfx 1/1 Running 0 7m20s +``` + +Now, let's exec into the nats-box pod and insert some sample data, + +``` +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Let's create a stream named "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + + +# Verify that the stream has been created successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch hello +08:55:39 Published 5 bytes to "ORDERS.scratch" + +# Add another message +sample-nats-box-785f8458d7-wtnfx:~# nats pub ORDERS.scratch world +08:56:11 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon has been installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats + name: sample-nats + namespace: demo +spec: + clientConfig: + service: + name: sample-nats + port: 4222 + scheme: nats + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- **.spec.clientConfig.service** specifies the Service information to use to connects with the NATS server. +- `spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/helm/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/helm/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: sample-nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/helm/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * Ready 11s +``` + + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-8x8fp BackupConfiguration sample-nats-backup Succeeded 42s 8m28s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.382 KiB 1 9m4s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your NATS streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same NATS cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same NATS cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * true Ready 2d18h +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * True 0 56s 2d18h +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# delete the stream "ORDERS" +sample-nats-box-785f8458d7-wtnfx:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +No Streams defined + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective AppBinding of the `sample-nats` cluster. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/helm/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo -it sample-nats-box-785f8458d7-wtnfx -- sh -l +... +# Verify that the stream has been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-box-785f8458d7-wtnfx:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-03T07:12:07Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: nats-0 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-03T08:55:39 UTC + LastSeq: 2 @ 2021-09-03T08:56:11 UTC + Active Consumers: 0 + +sample-nats-box-785f8458d7-wtnfx:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup nats-backup-2.6.1 */5 * * * * false Ready 2d19h +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore Into Different NATS Cluster of the Same Namespace + +If you want to restore the backed up data into a different NATS cluster of the same namespace, you have to create another `AppBinding` pointing to the desired NATS cluster. Then, you have to create the `RestoreSession` pointing to the new `AppBinding`. + +### Restore Into Different Namespace + +If you want to restore into a different namespace of the same cluster, you have to create the Repository, backend Secret, AppBinding, in the desired namespace. You can use [Stash kubectl plugin](https://stash.run/docs/{{< param "info.version" >}}/guides/cli/cli/) to easily copy the resources into a new namespace. Then, you have to create the `RestoreSession` object in the desired namespace pointing to the Repository, AppBinding of that namespace. + +### Restore Into Different Cluster + +If you want to restore into a different cluster, you have to install Stash in the desired cluster. Then, you have to create the Repository, backend Secret, AppBinding, in the desired cluster. Finally, you have to create the `RestoreSession` object in the desired cluster pointing to the Repository, AppBinding of that cluster. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup +kubectl delete -n demo restoresession sample-nats-restore +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats -n demo +``` diff --git a/content/docs/v2024.8.27/addons/nats/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/nats/overview/images/backup_overview.svg new file mode 100644 index 0000000000..6d54b9c313 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/overview/images/backup_overview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/nats/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/nats/overview/images/restore_overview.svg new file mode 100644 index 0000000000..e76fdc8c1c --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/overview/images/restore_overview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/nats/overview/index.md b/content/docs/v2024.8.27/addons/nats/overview/index.md new file mode 100644 index 0000000000..f720f53170 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/overview/index.md @@ -0,0 +1,146 @@ +--- +title: NATS Backup & Restore Overview | Stash +description: How NATS Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-overview + name: How does it work? + parent: stash-nats + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backups & Restores NATS Streams + +Stash `{{< param "info.version" >}}` 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. + +## How Backup Works + +The following diagram shows how Stash takes a backup of NATS streams. Open the image in a new tab to see the enlarged version. + +
+ NATS Backup Overview +
Fig: NATS Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the respective NATS server. The `BackupConfiguration` object also specifies the `Task` to use to backup the NATS streams. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted NATS server. + +10. 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. + +11. 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. + +12. 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. + +## How Restore Process Works + +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. + +
+ NATS Restore Overview +
Fig: NATS Restore Process
+
+ +The restore process consists of the following steps: + +1. 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. 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. + +6. 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. + +7. Finally, when the restore process is completed, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup your NATS using Stash following the guide from [here](/docs/v2024.8.27/addons/nats/helm/). diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/appbinding.yaml new file mode 100644 index 0000000000..71b54b3058 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/appbinding.yaml @@ -0,0 +1,18 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats-tls + name: sample-nats-tls + namespace: demo +spec: + clientConfig: + caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4RENDQWRpZ0F3SUJBZ0lRUDZ1UXIxQVlFWnJzREF6ZHBRR09HekFOQmdrcWhraUc5dzBCQVFzRkFEQVMKTVJBd0RnWURWUVFERXdkdVlYUnpMV05oTUI0WERUSXhNRGt5TnpBMU5EWTBOVm9YRFRJeU1Ea3lOakExTkRZMApOVm93RWpFUU1BNEdBMVVFQXhNSGJtRjBjeTFqWVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDCkFRb0NnZ0VCQUovelJtSE1CUVdGMTNXZlJubzFsV0ZJajZmNmhyRGRVR0RTMXBrY0hmMDlqNS90bEpYSHpCbVMKZSs2YS9Qb1MrdkMyWEtyeVp3UVB0NW5BaUxXR1NxM3VBRnJ3TUJncVBBQktOa1hHL1hjamNvbU5lVTFaQlNYYgo1WmlJa2F6TUZPOGFqRWxYb3RmYnQ2cVc5MGNCTVduRW9pcnUyWkFyam50WjJpMmpPeGRodUJpRTkxamRsZWMyCkdZWGFKVlJ5RkF1eVdXanVEV3o0NjFKdXBMdXcxVWJyVHpmMExUenQxdk9ONnZNU1RQT0Z0S0tnd0RGenB5ZkgKVjFFQlZ5aG1KSk42QW13SkErZGEvMmsxMUJCeHFEWldsOEZMWE1TWUcvU0hKak5sQ3VsQTFvVVJWbFI3MVF6KwpTanB2bkxKVm9nL01sYVcvTzB5N0lRcTVQNUZGeDBNQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZNcm5ZN0Izek5VY1AvN3hHTzhkTFIwZVcxUnIKTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDQVZPQUZhTjRVOUQ0U1cxcWJUTDhkcWhFbklXTFd3YVBJdXJGSAo1MVVRMEUxenFTOWcvQ1gwUElOUmJ1bFpseHVKRGFBZEwweVYwYmZYZExLQnJacDNwS001eGRyaEoxQ3luNjV5CkRML0RTd3hTOHlxT3NwTXF2SkoyUTBhQ0JQTXhDRFZoOGVFZ2krOG9ISmdobkZzaTkvanNoZ0dUS09QbVVWdHcKTyszS1B0MFBiNVRDSVpJdlA1cXBybkU0U2hDWnRRZ0UyY0dJTEJPZEt5VEl6QlpuM3ZNZjc2Zjd4NU4rWEtINgpQN3Q4Yks0SUFSbzR1WUN0cDQ0K0dkY2FlcjlDL2RVNlpaMSs1Nm4xcUo3a3FTV3cwNFZqbi9CVWt5WnhIdFZPCkFLcUNCRWtnK3NBQytYUmNiOFdxTHkreEEzdmU0TmxqalE3T2MrVXVzanNrSndOVQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + name: sample-nats-tls + port: 4222 + scheme: nats + secret: + name: nats-client-tls + type: nats.io/nats + version: 2.6.1 diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..ab6e7a7064 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/backupconfiguration.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup-tls + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats-tls + interimVolumeTemplate: + metadata: + name: nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/ca.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/ca.yaml new file mode 100644 index 0000000000..3ec8c1ef9b --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/ca.yaml @@ -0,0 +1,14 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-ca + namespace: demo +spec: + secretName: nats-ca + duration: 8736h # 1 year + renewBefore: 240h # 10 days + issuerRef: + name: selfsigning + kind: ClusterIssuer + commonName: nats-ca + isCA: true diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/cert.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/cert.yaml new file mode 100644 index 0000000000..45639bbc26 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/cert.yaml @@ -0,0 +1,29 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-server-tls + namespace: demo +spec: + secretName: nats-server-tls + duration: 2160h # 90 days + renewBefore: 240h # 10 days + issuerRef: + name: nats-ca + kind: Issuer + commonName: sample-nats-server + dnsNames: + - sample-nats-tls +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-client-tls + namespace: demo +spec: + secretName: nats-client-tls + duration: 2160h # 90 days + renewBefore: 240h # 10 days + issuerRef: + name: nats-ca + kind: Issuer + commonName: sample-nats-client diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/clusterissuer.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/clusterissuer.yaml new file mode 100644 index 0000000000..220c6578da --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/clusterissuer.yaml @@ -0,0 +1,6 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: selfsigning +spec: + selfSigned: {} diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/issuer.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/issuer.yaml new file mode 100644 index 0000000000..fea695a433 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/issuer.yaml @@ -0,0 +1,8 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: nats-ca + namespace: demo +spec: + ca: + secretName: nats-ca diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/repository.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/repository.yaml new file mode 100644 index 0000000000..c1a9d7d789 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats-tls + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/nats/tls/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/nats/tls/examples/restoresession.yaml new file mode 100644 index 0000000000..243d012dd2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/examples/restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore-tls + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats-tls + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/nats/tls/images/sample-nats-backup.png b/content/docs/v2024.8.27/addons/nats/tls/images/sample-nats-backup.png new file mode 100644 index 0000000000..adc8598059 Binary files /dev/null and b/content/docs/v2024.8.27/addons/nats/tls/images/sample-nats-backup.png differ diff --git a/content/docs/v2024.8.27/addons/nats/tls/index.md b/content/docs/v2024.8.27/addons/nats/tls/index.md new file mode 100644 index 0000000000..fba28a55f6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/nats/tls/index.md @@ -0,0 +1,867 @@ +--- +title: TLS secured NATS +description: Backup TLS secured NATS using Stash +menu: + docs_v2024.8.27: + identifier: stash-nats-tls-auth + name: TLS secured NATS + parent: stash-nats + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup TLS secured NATS using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of NATS streams. This guide will show you how you can backup & restore a TLS secured NATS server using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install cert-manager in your cluster following the instruction [here](https://cert-manager.io/docs/installation/). +- If you are not familiar with how Stash backup and restore NATS streams, please check the following guide [here](/docs/v2024.8.27/addons/nats/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples). + +## Prepare NATS + +In this section, we are going to deploy a TLS secured NATS cluster. Then, we are going to create a stream and publish some messages into it. + + +### Create Certificate +At first, let's create a ` ClusterIssuer` that we will be using to issue our CA certificates. Below is the YAML of `ClusterIssuer` object we are going to create. +```yaml +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: selfsigning +spec: + selfSigned: {} +``` +Let's create the `ClusterIssuer` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples/clusterissuer.yaml +clusterissuer.cert-manager.io/selfsigning created +``` + +Now, let's issue the CA certificate using the `ClusterIssuer` we have created above. Below is the YAML of `Certificate` object we are going to create. +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-ca + namespace: demo +spec: + secretName: nats-ca + duration: 8736h # 1 year + renewBefore: 240h # 10 days + issuerRef: + name: selfsigning + kind: ClusterIssuer + commonName: nats-ca + isCA: true +``` +Let's create the `Certificate` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples/ca.yaml +certificate.cert-manager.io/nats-ca created +``` + +Cert-manager will automatically create a Secret named specified by `spec.secretName` field with the desired CA certificate. Let's verify that the Secret has been created successfully, + +```bash +❯ kubectl get secret -n demo nats-ca +NAME TYPE DATA AGE +nats-ca kubernetes.io/tls 3 24h +``` + +Now, we are going create a `Issuer` with the above CA Secret. We are going to use this `Issuer` to issue server and client certificates for our NATS server. Below is the YAML of `Issuer` object we are going to create. + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: nats-ca + namespace: demo +spec: + ca: + secretName: nats-ca +``` +Let's create the `Issuer` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples/issuer.yaml +issuer.cert-manager.io/nats-ca created +``` + +Now, lets create the server and client certificates. Below is the YAML of `Certificate` objects we are going to create. + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-server-tls + namespace: demo +spec: + secretName: nats-server-tls + duration: 2160h # 90 days + renewBefore: 240h # 10 days + issuerRef: + name: nats-ca + kind: Issuer + commonName: sample-nats-server + dnsNames: + - sample-nats-tls +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: nats-client-tls + namespace: demo +spec: + secretName: nats-client-tls + duration: 2160h # 90 days + renewBefore: 240h # 10 days + issuerRef: + name: nats-ca + kind: Issuer + commonName: sample-nats-client +``` +Let's create the `Certificates` we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples/cert.yaml +certificate.cert-manager.io/nats-server-tls created +certificate.cert-manager.io/nats-client-tls created +``` + +Cert-manager will automatically create `nats-server-tls` and `nats-client-tls` Secrets with the desired certificates. Let's verify the Secrets have been created successfully, + +```bash +❯ kubectl get secrets -n demo nats-client-tls nats-server-tls +NAME TYPE DATA AGE +nats-client-tls kubernetes.io/tls 3 24h +nats-server-tls kubernetes.io/tls 3 24h + +``` + +### Deploy NATS Cluster + +Now, let's deploy a NATS cluster. Here, we are going to use [NATS]( https://nats-io.github.io/k8s/helm/charts/) chart from [nats.io](https://nats.io/). + +Let's deploy a NATS cluster named `sample-nats` using Helm as below, + +```bash +# Add nats chart registry +$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ +# Update helm registries +$ helm repo update +# Install nats/nats chart into demo namespace +$ helm install sample-nats-tls nats/nats -n demo \ +--set nats.jetstream.enabled=true \ +--set nats.jetstream.fileStorage.enabled=true \ +--set nats.tls.secret.name=nats-server-tls \ +--set nats.tls.ca="ca.crt" \ +--set nats.tls.cert="tls.crt" \ +--set nats.tls.key="tls.key" \ +--set nats.tls.verify=true \ +--set cluster.enabled=true \ +--set cluster.replicas=3 + +``` + +This chart will create the necessary StatefulSet, Service, PVCs etc. for the NATS cluster. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-nats-tls +NAME NAMESPACE AGE +configmap/sample-nats-tls-config demo 9m40s +endpoints/sample-nats-tls demo 9m40s +persistentvolumeclaim/sample-nats-tls-js-pvc-sample-nats-tls-0 demo 9m40s +persistentvolumeclaim/sample-nats-tls-js-pvc-sample-nats-tls-1 demo 9m17s +persistentvolumeclaim/sample-nats-tls-js-pvc-sample-nats-tls-2 demo 8m54s +pod/sample-nats-tls-0 demo 9m40s +pod/sample-nats-tls-1 demo 9m17s +pod/sample-nats-tls-2 demo 8m54s +service/sample-nats-tls demo 9m40s +controllerrevision.apps/sample-nats-tls-76dfb9c75 demo 9m40s +statefulset.apps/sample-nats-tls demo 9m40s +endpointslice.discovery.k8s.io/sample-nats-tls-6lxps demo 9m40s + +``` + +Now, wait for the NATS server pods `sample-nats-tls-0`, `sample-nats-tls-1`, `sample-nats-tls-2` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo -l app.kubernetes.io/instance=sample-nats +NAME READY STATUS RESTARTS AGE +sample-nats-tls-0 3/3 Running 0 11m +sample-nats-tls-1 3/3 Running 0 11m +sample-nats-tls-2 3/3 Running 0 11m +``` + +Once the pods are in `Running` state, verify that the NATS server is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-nats-tls-0 -c nats +[7] 2021/09/06 08:33:53.111508 [INF] Starting nats-server +[7] 2021/09/06 08:33:53.111560 [INF] Version: 2.6.1 +... +[7] 2021/09/06 08:33:53.116004 [INF] Server is ready +``` + +From the above log, we can see the NATS server is ready to accept connections. + +### Insert Sample Data +The above Helm chart also deploy a pod with nats-box image which can be used to interact with the NATS server. Let's verify the nats-box pod has been created. + +```bash +❯ kubectl get pod -n demo -l app=sample-nats-tls-box +NAME READY STATUS RESTARTS AGE +sample-nats-tls-box-67fb4fb4f9-gtt9z 1/1 Running 0 13m +``` + +Now, we are going to exec into the nats-box pod and create some sample data, We are going to use the client certificates created in `nats-client-tls` Secret to connect with the NATS server. So, let's create the certificates files inside the nats-box pod. + +At first, let's get the certificates from the `nats-client-tls` Secret, + +```bash +❯ kubectl get secret -n demo nats-client-tls -o yaml +apiVersion: v1 +data: + ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4RENDQWRpZ0F3SUJBZ0lRUDZ1UXIxQVlFWnJzREF6ZHBRR09HekFOQmdrcWhraUc5dzBCQVFzRkFEQVMKTVJBd0RnWURWUVFERXdkdVlYUnpMV05oTUI0WERUSXhNRGt5TnpBMU5EWTBOVm9YRFRJeU1Ea3lOakExTkRZMApOVm93RWpFUU1BNEdBMVVFQXhNSGJtRjBjeTFqWVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDCkFRb0NnZ0VCQUovelJtSE1CUVdGMTNXZlJubzFsV0ZJajZmNmhyRGRVR0RTMXBrY0hmMDlqNS90bEpYSHpCbVMKZSs2YS9Qb1MrdkMyWEtyeVp3UVB0NW5BaUxXR1NxM3VBRnJ3TUJncVBBQktOa1hHL1hjamNvbU5lVTFaQlNYYgo1WmlJa2F6TUZPOGFqRWxYb3RmYnQ2cVc5MGNCTVduRW9pcnUyWkFyam50WjJpMmpPeGRodUJpRTkxamRsZWMyCkdZWGFKVlJ5RkF1eVdXanVEV3o0NjFKdXBMdXcxVWJyVHpmMExUenQxdk9ONnZNU1RQT0Z0S0tnd0RGenB5ZkgKVjFFQlZ5aG1KSk42QW13SkErZGEvMmsxMUJCeHFEWldsOEZMWE1TWUcvU0hKak5sQ3VsQTFvVVJWbFI3MVF6KwpTanB2bkxKVm9nL01sYVcvTzB5N0lRcTVQNUZGeDBNQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZNcm5ZN0Izek5VY1AvN3hHTzhkTFIwZVcxUnIKTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDQVZPQUZhTjRVOUQ0U1cxcWJUTDhkcWhFbklXTFd3YVBJdXJGSAo1MVVRMEUxenFTOWcvQ1gwUElOUmJ1bFpseHVKRGFBZEwweVYwYmZYZExLQnJacDNwS001eGRyaEoxQ3luNjV5CkRML0RTd3hTOHlxT3NwTXF2SkoyUTBhQ0JQTXhDRFZoOGVFZ2krOG9ISmdobkZzaTkvanNoZ0dUS09QbVVWdHcKTyszS1B0MFBiNVRDSVpJdlA1cXBybkU0U2hDWnRRZ0UyY0dJTEJPZEt5VEl6QlpuM3ZNZjc2Zjd4NU4rWEtINgpQN3Q4Yks0SUFSbzR1WUN0cDQ0K0dkY2FlcjlDL2RVNlpaMSs1Nm4xcUo3a3FTV3cwNFZqbi9CVWt5WnhIdFZPCkFLcUNCRWtnK3NBQytYUmNiOFdxTHkreEEzdmU0TmxqalE3T2MrVXVzanNrSndOVQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lSQUlnc1laWkI2RU1MQjR6NGRnZTI2ZUV3RFFZSktvWklodmNOQVFFTEJRQXcKRWpFUU1BNEdBMVVFQXhNSGJtRjBjeTFqWVRBZUZ3MHlNVEE1TWpjd05UUTJORGxhRncweU1URXlNall3TlRRMgpORGxhTUIweEd6QVpCZ05WQkFNVEVuTmhiWEJzWlMxdVlYUnpMV05zYVdWdWREQ0NBU0l3RFFZSktvWklodmNOCkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOZEdselNWRTBGS1cyY1M5V3VqZmk1Wk5oY3I3dXJsUjZZSGR1dkwKQ2ZDRGdEZTNBUVBpWG92YzI4elgxY3d2cVVQU3l2WXpGUFN4dUtVRXpoLzBGZE5kMGk2SkVRQUp4dVgwU2JSdwpjYXZXMVR5MkZFWExtYTNiMnBWVWJ6dUE1VVdGQzFwd3hZVCsvcERHNmI4YnFuQVJiaFNvdUowQUoxTGNGT08zCjg1V1RtWUFDRHY4dmFyRFQvM0xmYWtndXJqYWc4SWdMMURyd2hxNFNjRllveElYbXJJZjhMTVVERkN4Y251aE0KNnIraUl4OXFhWkJjMys2eU4yNXNvc2J6ZDlXbXRlT3J3Z2pKUzRLdU9ZaWl2VzBsSDNzQTlOSG9HU3cwSDVtWgpjcndsMHZxV0JvaWFoMXdWSjM5S1NrWlRvLzhUaGpMQUV5QUZKdzRuNzk1eHFwOENBd0VBQWFOQk1EOHdEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVV5dWRqc0hmTTFSdy8KL3ZFWTd4MHRIUjViVkdzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFGRTE0OTJkdS9HSVpKS3BuMEdRNE1STApHbDI5bXc1Wi9nUWxwTTN3NGdYU1hxbmNGczREcHJFd2g5R25PTkEzcXpta1NIakFwWmwwQzdWZi84Y2RnNS8zCk90UVZSSGkxQVJFcGFHMlVUMnFJSXp1SUVLN0tRZE5maXpVYVVaMFgzb041Kyt4YWU4WSsxa3dZOXZxaXdWRlcKbS96T1JzSmRtcnRqNGZRSTVaVGRzVG1jRkxqUXBOcktOSWFVU2pHOFM1Q3pOMlJBekZHTTBCZWYzSWFzWTF2WQpDTWpOZlBxaUNtZFNlOFFxRE1UMURwRExjaFltQlQ3UjdyR0JBaEFXWEpEZlVMRXlXUk9XdmRrWlhnTk5ZMnlJCkhmbktUTy9TL1FpUUs4N0Y2SWtEM2tKalZPVDhUNVBmYjBwYTJnaDlnSkZmZUJPVW9FUkYrdG4zYWI3Z3BkQT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBMTBhWE5KVVRRVXBiWnhMMWE2TitMbGsyRnl2dTZ1VkhwZ2QyNjhzSjhJT0FON2NCCkErSmVpOXpiek5mVnpDK3BROUxLOWpNVTlMRzRwUVRPSC9RVjAxM1NMb2tSQUFuRzVmUkp0SEJ4cTliVlBMWVUKUmN1WnJkdmFsVlJ2TzREbFJZVUxXbkRGaFA3K2tNYnB2eHVxY0JGdUZLaTRuUUFuVXR3VTQ3ZnpsWk9aZ0FJTwoveTlxc05QL2N0OXFTQzZ1TnFEd2lBdlVPdkNHcmhKd1ZpakVoZWFzaC93c3hRTVVMRnllNkV6cXY2SWpIMnBwCmtGemY3ckkzYm15aXh2TjMxYWExNDZ2Q0NNbExncTQ1aUtLOWJTVWZld0QwMGVnWkxEUWZtWmx5dkNYUytwWUcKaUpxSFhCVW5mMHBLUmxPai94T0dNc0FUSUFVbkRpZnYzbkdxbndJREFRQUJBb0lCQUZWZ0NvRnhDY1RmLzJYZQpiL1J6VDR5RUZ0NlRydG43ZWpIUFRndHZaNDY2S0RSd1lIZXc0L3dsNkFuU0kxa3FJYi9qTGxqN296ano3cDJMClRWQUExbE1RSjFZTFIvR3k3dTJ0dHpsWFNzMXlrdmpUNFRCWThhYXd4WHhwa3YrUE85NFpTSXBpcFFMOHVlcWkKNkhyQk54UGc1YjVOdDRHVVdRUVVnamhaY01JRm9DUUwrRmNkZGs4RkQ1UFkxNnprWDNReUpITlVkZXRoYmJKdQoveVAvMTk3b2l6aVdzbWJSQ3Z6Z3Q2bEtOUk51VjZJRitMdnM4RWxGUlAyeStLcmI2SXRjT3lwRjY5TGE1N1pZCjY0enJWSVJnc2FYZVBTTWpGVkN1ZHFDY2QrL0FEeFU3YVc2TzhFaXJBQ0pqcXFYcnBYamd3MVNUY21WR2ZYK1gKQithRjIza0NnWUVBNXFsYnJGaHhWQlZBVTlMR3JnVGNLZXRGUEJveTQyOWxVTnJXMU5xSUxEaExZVjgxRGZIQQpXQVdYK1l0NGJUTXZqTUd2TDhDM0pXL0NiNDNHSDhmU2lwUTZDUlR2dDBYNXlyNytWL0tVdWdpKzV4ZmVoMlIzCldiRUNBVWNKM0UxVmtvRkN2ZEFtbHZBMlNROGlRVHNkV3JuclJxWFhEVkFGQzlCNEtZQ0JiWk1DZ1lFQTd1eU4KNVVGMkg0dmZmSWtZQUZzS0k0YlM4blQ5UGw4dmNPeUNoTUFLNUlnSHQyQUk0RTRVa20zeHFiblV0cDdjdHoySgplbUxJaTJ3M2pVMXdjWittc0pIYnRyMmxDdGVMNjJjMENLYXVsaDA1YWhLZ0VZUjhlVzcyL1F6Skg1WDhPTkZsCkx4eW9vRUo0Vmo2T1VwcTZKZmJTUW03YUFKMWE1dVBHUzhZWmxrVUNnWUJhcm5oSThGaFZpeWxJQ3hScTg2UXUKb3IwTVhPeG10N09vTHZESXE4VmZSUjUxZ0gyV0p0WE1oUjV6VDk2Zlo4RW80RGhrV0twb0FHRDdoRXhBMEVrNAppLytvOUY4dHVVZno2bFNKOU9kOW45U1ZlNi9Ub0s2L1J6U1hsZnNOYmlYWFBCUW1GWUFtVlBleWowMlRRWTlQCnpNbnZjMkZ4YldVZWVPM1V1eDJuR3dLQmdCQkFreDVuSjR2WnplZ0F3MXN5MWl1NGZoejBERTN6MTV4TTJrd0IKYkR4RGJKTHl1MmZXcDl1V0V2eENvYytTV3QwMEdHZjAxRU4zcHdlN25zeDcyYkRsR3hjQkszcmpVcWMrcS9GeQp0U21NNzF6aHkzV2xsM29ETEZYbVNzQVZTY1RycVlCYzZMT09FZlY3NTk2Q20rcjlNU3hIc2hpY201UmRKaDM5CmFid3BBb0dBQmZKeC91cXk3RGpubnZPLzUxMW1CSEh5bS9pdG9TNzNVL2FOd1pqWmhyWlpzZGVxUUZNcm5xSTQKQU83S05ldE9oa3NmQnVndTg5Q3dXTjRYMkpYWjd1aFFlVWlKQWNhNFc4ZmJLdTNjYytsZUVMTisrVEZ5Um91MgphRlpRYnZSazdYU01nM3d0ekk5SUtoNzIyZXRPVXJPb0FaNWthRlcrRWt2WjBoNmlTTzg9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== +kind: Secret +metadata: + annotations: + cert-manager.io/alt-names: "" + cert-manager.io/certificate-name: nats-client-tls + cert-manager.io/common-name: sample-nats-client + cert-manager.io/ip-sans: "" + cert-manager.io/issuer-group: "" + cert-manager.io/issuer-kind: Issuer + cert-manager.io/issuer-name: nats-ca + cert-manager.io/uri-sans: "" + creationTimestamp: "2021-09-27T05:46:49Z" + name: nats-client-tls + namespace: demo + resourceVersion: "386072" + uid: 89931f0b-aa0d-499c-b7f9-d3b6ada4ab08 +type: kubernetes.io/tls +``` + +Now, let's create `tls.crt` and `tls.key` files in the local machine, + +```bash +❯ echo LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lSQUlnc1laWkI2RU1MQjR6NGRnZTI2ZUV3RFFZSktvWklodmNOQVFFTEJRQXcKRWpFUU1BNEdBMVVFQXhNSGJtRjBjeTFqWVRBZUZ3MHlNVEE1TWpjd05UUTJORGxhRncweU1URXlNall3TlRRMgpORGxhTUIweEd6QVpCZ05WQkFNVEVuTmhiWEJzWlMxdVlYUnpMV05zYVdWdWREQ0NBU0l3RFFZSktvWklodmNOCkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOZEdselNWRTBGS1cyY1M5V3VqZmk1Wk5oY3I3dXJsUjZZSGR1dkwKQ2ZDRGdEZTNBUVBpWG92YzI4elgxY3d2cVVQU3l2WXpGUFN4dUtVRXpoLzBGZE5kMGk2SkVRQUp4dVgwU2JSdwpjYXZXMVR5MkZFWExtYTNiMnBWVWJ6dUE1VVdGQzFwd3hZVCsvcERHNmI4YnFuQVJiaFNvdUowQUoxTGNGT08zCjg1V1RtWUFDRHY4dmFyRFQvM0xmYWtndXJqYWc4SWdMMURyd2hxNFNjRllveElYbXJJZjhMTVVERkN4Y251aE0KNnIraUl4OXFhWkJjMys2eU4yNXNvc2J6ZDlXbXRlT3J3Z2pKUzRLdU9ZaWl2VzBsSDNzQTlOSG9HU3cwSDVtWgpjcndsMHZxV0JvaWFoMXdWSjM5S1NrWlRvLzhUaGpMQUV5QUZKdzRuNzk1eHFwOENBd0VBQWFOQk1EOHdEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVV5dWRqc0hmTTFSdy8KL3ZFWTd4MHRIUjViVkdzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFGRTE0OTJkdS9HSVpKS3BuMEdRNE1STApHbDI5bXc1Wi9nUWxwTTN3NGdYU1hxbmNGczREcHJFd2g5R25PTkEzcXpta1NIakFwWmwwQzdWZi84Y2RnNS8zCk90UVZSSGkxQVJFcGFHMlVUMnFJSXp1SUVLN0tRZE5maXpVYVVaMFgzb041Kyt4YWU4WSsxa3dZOXZxaXdWRlcKbS96T1JzSmRtcnRqNGZRSTVaVGRzVG1jRkxqUXBOcktOSWFVU2pHOFM1Q3pOMlJBekZHTTBCZWYzSWFzWTF2WQpDTWpOZlBxaUNtZFNlOFFxRE1UMURwRExjaFltQlQ3UjdyR0JBaEFXWEpEZlVMRXlXUk9XdmRrWlhnTk5ZMnlJCkhmbktUTy9TL1FpUUs4N0Y2SWtEM2tKalZPVDhUNVBmYjBwYTJnaDlnSkZmZUJPVW9FUkYrdG4zYWI3Z3BkQT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= | base64 -d > /tmp/tls.crt +❯ echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBMTBhWE5KVVRRVXBiWnhMMWE2TitMbGsyRnl2dTZ1VkhwZ2QyNjhzSjhJT0FON2NCCkErSmVpOXpiek5mVnpDK3BROUxLOWpNVTlMRzRwUVRPSC9RVjAxM1NMb2tSQUFuRzVmUkp0SEJ4cTliVlBMWVUKUmN1WnJkdmFsVlJ2TzREbFJZVUxXbkRGaFA3K2tNYnB2eHVxY0JGdUZLaTRuUUFuVXR3VTQ3ZnpsWk9aZ0FJTwoveTlxc05QL2N0OXFTQzZ1TnFEd2lBdlVPdkNHcmhKd1ZpakVoZWFzaC93c3hRTVVMRnllNkV6cXY2SWpIMnBwCmtGemY3ckkzYm15aXh2TjMxYWExNDZ2Q0NNbExncTQ1aUtLOWJTVWZld0QwMGVnWkxEUWZtWmx5dkNYUytwWUcKaUpxSFhCVW5mMHBLUmxPai94T0dNc0FUSUFVbkRpZnYzbkdxbndJREFRQUJBb0lCQUZWZ0NvRnhDY1RmLzJYZQpiL1J6VDR5RUZ0NlRydG43ZWpIUFRndHZaNDY2S0RSd1lIZXc0L3dsNkFuU0kxa3FJYi9qTGxqN296ano3cDJMClRWQUExbE1RSjFZTFIvR3k3dTJ0dHpsWFNzMXlrdmpUNFRCWThhYXd4WHhwa3YrUE85NFpTSXBpcFFMOHVlcWkKNkhyQk54UGc1YjVOdDRHVVdRUVVnamhaY01JRm9DUUwrRmNkZGs4RkQ1UFkxNnprWDNReUpITlVkZXRoYmJKdQoveVAvMTk3b2l6aVdzbWJSQ3Z6Z3Q2bEtOUk51VjZJRitMdnM4RWxGUlAyeStLcmI2SXRjT3lwRjY5TGE1N1pZCjY0enJWSVJnc2FYZVBTTWpGVkN1ZHFDY2QrL0FEeFU3YVc2TzhFaXJBQ0pqcXFYcnBYamd3MVNUY21WR2ZYK1gKQithRjIza0NnWUVBNXFsYnJGaHhWQlZBVTlMR3JnVGNLZXRGUEJveTQyOWxVTnJXMU5xSUxEaExZVjgxRGZIQQpXQVdYK1l0NGJUTXZqTUd2TDhDM0pXL0NiNDNHSDhmU2lwUTZDUlR2dDBYNXlyNytWL0tVdWdpKzV4ZmVoMlIzCldiRUNBVWNKM0UxVmtvRkN2ZEFtbHZBMlNROGlRVHNkV3JuclJxWFhEVkFGQzlCNEtZQ0JiWk1DZ1lFQTd1eU4KNVVGMkg0dmZmSWtZQUZzS0k0YlM4blQ5UGw4dmNPeUNoTUFLNUlnSHQyQUk0RTRVa20zeHFiblV0cDdjdHoySgplbUxJaTJ3M2pVMXdjWittc0pIYnRyMmxDdGVMNjJjMENLYXVsaDA1YWhLZ0VZUjhlVzcyL1F6Skg1WDhPTkZsCkx4eW9vRUo0Vmo2T1VwcTZKZmJTUW03YUFKMWE1dVBHUzhZWmxrVUNnWUJhcm5oSThGaFZpeWxJQ3hScTg2UXUKb3IwTVhPeG10N09vTHZESXE4VmZSUjUxZ0gyV0p0WE1oUjV6VDk2Zlo4RW80RGhrV0twb0FHRDdoRXhBMEVrNAppLytvOUY4dHVVZno2bFNKOU9kOW45U1ZlNi9Ub0s2L1J6U1hsZnNOYmlYWFBCUW1GWUFtVlBleWowMlRRWTlQCnpNbnZjMkZ4YldVZWVPM1V1eDJuR3dLQmdCQkFreDVuSjR2WnplZ0F3MXN5MWl1NGZoejBERTN6MTV4TTJrd0IKYkR4RGJKTHl1MmZXcDl1V0V2eENvYytTV3QwMEdHZjAxRU4zcHdlN25zeDcyYkRsR3hjQkszcmpVcWMrcS9GeQp0U21NNzF6aHkzV2xsM29ETEZYbVNzQVZTY1RycVlCYzZMT09FZlY3NTk2Q20rcjlNU3hIc2hpY201UmRKaDM5CmFid3BBb0dBQmZKeC91cXk3RGpubnZPLzUxMW1CSEh5bS9pdG9TNzNVL2FOd1pqWmhyWlpzZGVxUUZNcm5xSTQKQU83S05ldE9oa3NmQnVndTg5Q3dXTjRYMkpYWjd1aFFlVWlKQWNhNFc4ZmJLdTNjYytsZUVMTisrVEZ5Um91MgphRlpRYnZSazdYU01nM3d0ekk5SUtoNzIyZXRPVXJPb0FaNWthRlcrRWt2WjBoNmlTTzg9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== | base64 -d > /tmp/tls.key +``` + +Then, let's copy these files from local machine to nats-box pod, + +```bash +❯ kubectl cp -n demo /tmp/tls.crt sample-nats-box-785f8458d7-wtnfx:/tmp/tls.crt +❯ kubectl cp -n demo /tmp/tls.key sample-nats-box-785f8458d7-wtnfx:/tmp/tls.key +``` + +Finally, Let's exec into the nats-box pod, + +```bash +❯ kubectl exec -n demo sample-nats-tls-box-67fb4fb4f9-gtt9z -it -- sh -l +... +# Let's export the tls.crt and tls.key file paths as environment variables to make further commands re-usable. +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_CERT=/tmp/tls.crt +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_KEY=/tmp/tls.key + +# Let's create a stream named "ORDERS" +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream add ORDERS --subjects "ORDERS.*" --ack --max-msgs=-1 --max-bytes=-1 --max-age=1y --storage file --retention limits --max-msg-size=-1 --max-msgs-per-subject=-1 --discard old --dupe-window="0s" --replicas 1 +Stream ORDERS was created + +Information for Stream ORDERS created 2021-09-27T06:27:30Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: sample-nats-tls-2 + +State: + + Messages: 0 + Bytes: 0 B + FirstSeq: 0 + LastSeq: 0 + Active Consumers: 0 + +# Verify that the stream has been created successfully +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream ls +Streams: + + ORDERS + +# Lets add some messages to the stream "ORDERS" +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats pub ORDERS.scratch hello +06:29:18 Published 5 bytes to "ORDERS.scratch" + +# Add another message +ample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats pub ORDERS.scratch world +06:29:41 Published 5 bytes to "ORDERS.scratch" + +# Verify that the messages have been published to the stream successfully +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-27T06:27:30Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: sample-nats-tls-2 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-27T06:29:18 UTC + LastSeq: 2 @ 2021-09-27T06:29:41 UTC + Active Consumers: 0 + +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# exit +``` + +We have successfully deployed a NATS cluster, created a stream and publish some messages into the stream. In the subsequent sections, we are going to backup this sample data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. connection information, backend information, etc.) before backup. + +### Ensure NATS Addon + +When you install Stash, it will automatically install all the official addons. Make sure that NATS addon was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep nats +nats-backup-2.6.1 24m +nats-restore-2.6.1 24m +``` + +This addon should be able to take backup of the NATS streams with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/nats/README#addon-version-compatibility). + + +### Create AppBinding + +Stash needs to know how to connect with the NATS server. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the NATS server. You have to point to the respective `AppBinding` as a target of backup instead of the NATS server itself. + +Here, is the YAML of the `AppBinding` that we are going to create for the NATS server we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/instance: sample-nats-tls + name: sample-nats-tls + namespace: demo +spec: + clientConfig: + caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4RENDQWRpZ0F3SUJBZ0lRUDZ1UXIxQVlFWnJzREF6ZHBRR09HekFOQmdrcWhraUc5dzBCQVFzRkFEQVMKTVJBd0RnWURWUVFERXdkdVlYUnpMV05oTUI0WERUSXhNRGt5TnpBMU5EWTBOVm9YRFRJeU1Ea3lOakExTkRZMApOVm93RWpFUU1BNEdBMVVFQXhNSGJtRjBjeTFqWVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDCkFRb0NnZ0VCQUovelJtSE1CUVdGMTNXZlJubzFsV0ZJajZmNmhyRGRVR0RTMXBrY0hmMDlqNS90bEpYSHpCbVMKZSs2YS9Qb1MrdkMyWEtyeVp3UVB0NW5BaUxXR1NxM3VBRnJ3TUJncVBBQktOa1hHL1hjamNvbU5lVTFaQlNYYgo1WmlJa2F6TUZPOGFqRWxYb3RmYnQ2cVc5MGNCTVduRW9pcnUyWkFyam50WjJpMmpPeGRodUJpRTkxamRsZWMyCkdZWGFKVlJ5RkF1eVdXanVEV3o0NjFKdXBMdXcxVWJyVHpmMExUenQxdk9ONnZNU1RQT0Z0S0tnd0RGenB5ZkgKVjFFQlZ5aG1KSk42QW13SkErZGEvMmsxMUJCeHFEWldsOEZMWE1TWUcvU0hKak5sQ3VsQTFvVVJWbFI3MVF6KwpTanB2bkxKVm9nL01sYVcvTzB5N0lRcTVQNUZGeDBNQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZNcm5ZN0Izek5VY1AvN3hHTzhkTFIwZVcxUnIKTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDQVZPQUZhTjRVOUQ0U1cxcWJUTDhkcWhFbklXTFd3YVBJdXJGSAo1MVVRMEUxenFTOWcvQ1gwUElOUmJ1bFpseHVKRGFBZEwweVYwYmZYZExLQnJacDNwS001eGRyaEoxQ3luNjV5CkRML0RTd3hTOHlxT3NwTXF2SkoyUTBhQ0JQTXhDRFZoOGVFZ2krOG9ISmdobkZzaTkvanNoZ0dUS09QbVVWdHcKTyszS1B0MFBiNVRDSVpJdlA1cXBybkU0U2hDWnRRZ0UyY0dJTEJPZEt5VEl6QlpuM3ZNZjc2Zjd4NU4rWEtINgpQN3Q4Yks0SUFSbzR1WUN0cDQ0K0dkY2FlcjlDL2RVNlpaMSs1Nm4xcUo3a3FTV3cwNFZqbi9CVWt5WnhIdFZPCkFLcUNCRWtnK3NBQytYUmNiOFdxTHkreEEzdmU0TmxqalE3T2MrVXVzanNrSndOVQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + name: sample-nats-tls + port: 4222 + scheme: nats + secret: + name: nats-client-tls + type: nats.io/nats + version: 2.6.1 +``` + +Here, + +- `.spec.clientConfig.caBundle` specifies a PEM encoded CA bundle which will be used to validate the serving certificate of the NATS server. +- `.spec.clientConfig.service` specifies the Service information to use to connects with the NATS server. +- `.spec.secret` specifies the name of the Secret that holds necessary credentials to access the server. +- `.spec.type` specifies the type of the target. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of target. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/nats/tls/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-nats-tls created +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/nats/sample-nats-tls + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/tls/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our streams into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our NATS server. Then, Stash will create a CronJob to periodically backup the streams. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object that we are going to use to backup the streams of the NATS server we have created earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-nats-backup-tls + namespace: demo +spec: + task: + name: nats-backup-2.6.1 + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats-tls + interimVolumeTemplate: + metadata: + name: nats-backup-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the streams at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup NATS streams. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the dumped data temporarily before uploading it into the cloud bucket. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/tls/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-nats-backup-tls created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup-tls nats-backup-2.6.1 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup-tls */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `stash-sample-nats-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-nats-backup-tls-prszs BackupConfiguration sample-nats-backup-tls Succeeded 35s 84s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 4.156 KiB 3 2m2s 97m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/nats/sample-nats-tls` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ + + +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +If you have followed the previous sections properly, you should have a successful backup of your nats streams. Now, we are going to show how you can restore the streams from the backed up data. + +### Restore Into the Same NATS Cluster + +You can restore your data into the same NATS cluster you have backed up from or into a different NATS cluster in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same NATS cluster which may be necessary when you have accidentally lost any data. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the NATS streams so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-nats-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-nats-backup-tls --type="merge" --patch='{"spec": {"paused": true}}' +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup-tls +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup-tls nats-backup-2.6.1 */5 * * * * true Ready 4m26s +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup-tls */5 * * * * True 0 2m12s 5m4s +``` + +#### Simulate Disaster + +Now, let's simulate a disaster scenario. Here, we are going to exec into the nats-box pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -n demo sample-nats-tls-box-67fb4fb4f9-gtt9z -it -- sh -l +... +# Let's export the tls.crt and tls.key file paths as environment variables to make further commands re-usable. +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_CERT=/tmp/tls.crt +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_KEY=/tmp/tls.key + +# delete the stream "ORDERS" +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream rm ORDERS -f + +# verify that the stream has been deleted +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream ls +No Streams defined + +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# exit +``` + +#### Create RestoreSession + +To restore the streams, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted NATS server. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring the streams of the NATS server. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-nats-restore-tls + namespace: demo +spec: + task: + name: nats-restore-2.6.1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-nats-tls + interimVolumeTemplate: + metadata: + name: nats-restore-tmp-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore NATS streams. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted NATS server. +- `.spec.interimVolumeTemplate` specifies a PVC template that will be used by Stash to hold the restored data temporarily before injecting into the NATS server. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the streams. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/nats/tls/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-nats-restore-tls created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-nats-restore-tls gcs-repo Succeeded 15s 55s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the nats-box pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -n demo sample-nats-tls-box-67fb4fb4f9-gtt9z -it -- sh -l +... +# Let's export the tls.crt and tls.key file paths as environment variables to make further commands re-usable. +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_CERT=/tmp/tls.crt +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# export NATS_KEY=/tmp/tls.key + +# Verify that the stream has been restored successfully +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats str ls +Streams: + + ORDERS + +# Verify that the messages have been restored successfully +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# nats stream info ORDERS +Information for Stream ORDERS created 2021-09-27T08:23:58Z + +Configuration: + + Subjects: ORDERS.* + Acknowledgements: true + Retention: File - Limits + Replicas: 1 + Discard Policy: Old + Duplicate Window: 2m0s + Maximum Messages: unlimited + Maximum Bytes: unlimited + Maximum Age: 1y0d0h0m0s + Maximum Message Size: unlimited + Maximum Consumers: unlimited + + +Cluster Information: + + Name: nats + Leader: sample-nats-tls-2 + +State: + + Messages: 2 + Bytes: 98 B + FirstSeq: 1 @ 2021-09-27T06:29:18 UTC + LastSeq: 2 @ 2021-09-27T06:29:41 UTC + Active Consumers: 0 + +sample-nats-tls-box-67fb4fb4f9-gtt9z:~# exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-nats-backup-tls --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-nats-backup-tls patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-nats-backup-tls +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-nats-backup-tls nats-backup-2.6.1 */5 * * * * false Ready 16m +``` + +Here, `false` in the `PAUSED` column means the backup has been resumed successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-nats-backup-tls */5 * * * * False 0 23s 17m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-nats-backup-tls +kubectl delete -n demo restoresession sample-nats-restore-tls +kubectl delete -n demo repository gcs-repo +# delete the nats chart +helm delete sample-nats-tls -n demo +``` diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/README.md b/content/docs/v2024.8.27/addons/percona-xtradb/README.md new file mode 100644 index 0000000000..d762e41842 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/README.md @@ -0,0 +1,108 @@ +--- +title: Percona XtraDB Addon Overview | Stash +description: Percona XtraDB Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-percona-xtradb-readme + name: Readme + parent: stash-percona-xtradb + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/percona-xtradb/ +aliases: +- /docs/v2024.8.27/addons/percona-xtradb/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Percona XtraDB Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash Percona XtraDB addon enables Stash to backup and restore Percona XtraDB databases. + +This guide will give you an overview of which Percona XtraDB versions are supported and how the docs are organized. + +## Supported Percona XtraDB Versions + + +Stash has the following addon versions for Percona-XtraDB: + +{{< versionlist "percona-xtradb">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, PerconaXtraDB addon with version `5.x.x` should be able take backup of any PerconaXtraDB of `5.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash Percona XtraDB documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/percona-xtradb/overview/) gives an overview of how backup and restore process for Percona XtraDB database works in Stash. +- [Standalone Percona-XtraDB](/docs/v2024.8.27/addons/percona-xtradb/standalone/) shows how to backup and restore a standalone Percona-XtraDB database. +- [Percona-XtraDB Cluster](/docs/v2024.8.27/addons/percona-xtradb/cluster/) shows how to backup & restore a Percona-XtraDB cluster. diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/_index.md b/content/docs/v2024.8.27/addons/percona-xtradb/_index.md new file mode 100644 index 0000000000..2862272c3d --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash Percona XtraDB Addon +menu: + docs_v2024.8.27: + identifier: stash-percona-xtradb + name: Percona XtraDB + parent: stash-addons + weight: 60 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..4744b210e7 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-xtradb-cluster-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: perconaxtradb-backup-5.7 + repository: + name: gcs-repo-xtradb-cluster + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-xtradb-cluster + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/repository.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/repository.yaml new file mode 100644 index 0000000000..4e237dd58f --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-xtradb-cluster + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/xtradb/sample-xtradb-cluster + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restored-xtradb-cluster.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restored-xtradb-cluster.yaml new file mode 100644 index 0000000000..eb3dfc44be --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restored-xtradb-cluster.yaml @@ -0,0 +1,21 @@ +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: restored-xtradb-cluster + namespace: demo +spec: + version: "5.7-cluster" + replicas: 3 + authSecret: + name: sample-xtradb-cluster-auth + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restoresession.yaml new file mode 100644 index 0000000000..7c70b2529a --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/restoresession.yaml @@ -0,0 +1,32 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restored-xtradb-cluster-restore + namespace: demo +spec: + task: + name: perconaxtradb-restore-5.7 + repository: + name: gcs-repo-xtradb-cluster + target: + replicas: 3 + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-xtradb-cluster + volumeMounts: + - name: data-restored-xtradb-cluster + mountPath: /var/lib/mysql + volumeClaimTemplates: + - metadata: + name: data-restored-xtradb-cluster-${POD_ORDINAL} + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - targetHosts: [] # empty host match all hosts + sourceHost: "host-0" # restore same data on all pvc + snapshots: ["latest"] diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/sample-xtradb-cluster.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/sample-xtradb-cluster.yaml new file mode 100644 index 0000000000..1c1af21c2e --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/examples/sample-xtradb-cluster.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: sample-xtradb-cluster + namespace: demo +spec: + version: "5.7-cluster" + replicas: 3 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/images/sample-xtradb-cluster-backup.png b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/images/sample-xtradb-cluster-backup.png new file mode 100644 index 0000000000..e4fdd3fae3 Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/images/sample-xtradb-cluster-backup.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/cluster/index.md b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/index.md new file mode 100644 index 0000000000..8c6816092f --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/cluster/index.md @@ -0,0 +1,741 @@ +--- +title: Backup & Restore Percona XtraDB Cluster | Stash +description: Backup & Restore a Percona XtraDB Cluster using Stash +menu: + docs_v2024.8.27: + identifier: stash-percona-xtradb-cluster + name: Percona XtraDB Cluster + parent: stash-percona-xtradb + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Percona XtraDB Cluster using Stash + +Stash 0.9.0+ supports backup and restoration of Percona XtraDB cluster databases. This guide will show you how you can backup and restore your Percona XtraDB cluster with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks to run a production-grade database on private and public clouds. +- If you are not familiar with how Stash takes backup and restores Percona XtraDB, please check the following guide [here](/docs/v2024.8.27/addons/percona-xtradb/overview/). + +You have to be familiar with the following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples). + +## Backup Percona XtraDB Cluster + +This section will demonstrate how to backup a Percona XtraDB cluster. Here, we are going to deploy a Percona XtraDB cluster using KubeDB. Then, we are going to back up this database into a GCS bucket. Finally, we are going to restore the backed up data into another Percona XtraDB cluster. + +### Deploy Sample Percona XtraDB Cluster + +Let's deploy a sample Percona XtraDB cluster and insert some data into it. + +#### Create Percona XtraDB CRD + +Below is the YAML of a sample `PerconaXtraDB` CRD that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: sample-xtradb-cluster + namespace: demo +spec: + version: "5.7-cluster" + replicas: 3 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Create the above `PerconaXtraDB` CRD, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples/sample-xtradb-cluster.yaml +perconaxtradb.kubedb.com/sample-xtradb-cluster created +``` + +KubeDB will deploy a Percona XtraDB cluster according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Let's check if the database is ready to use, + +```bash +$ kubectl get px -n demo sample-xtradb-cluster +NAME VERSION STATUS AGE +sample-xtradb-cluster 5.7-cluster Ready 7m46s +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```bash +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-xtradb-cluster +NAME TYPE DATA AGE +sample-xtradb-cluster-auth Opaque 2 9m2s + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-xtradb-cluster +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-xtradb-cluster ClusterIP 10.103.37.141 3306/TCP 11m +sample-xtradb-cluster-gvr ClusterIP None 3306/TCP 11m +``` + +Here, we have to use service `sample-xtradb-cluster` and secret `sample-xtradb-cluster-auth` to connect with the database. KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) CRD that holds the necessary information to connect with the database. + +#### Verify AppBinding + +Verify that the `AppBinding` has been created successfully using the following command, + +```bash +$ kubectl get appbindings -n demo +NAME AGE +sample-xtradb-cluster 14m +``` + +Let's check the YAML of the above AppBinding, + +```bash +$ kubectl get appbindings -n demo sample-xtradb-cluster -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + creationTimestamp: "2019-10-30T11:41:20Z" + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: perconaxtradbs.kubedb.com + app.kubernetes.io/instance: sample-xtradb-cluster + name: sample-xtradb-cluster + namespace: demo + ownerReferences: + - apiVersion: kubedb.com/v1alpha2 + blockOwnerDeletion: false + kind: PerconaXtraDB + name: sample-xtradb-cluster + uid: 79d90fc4-f5e8-4a8c-83d7-3eae7c12f01a + resourceVersion: "12319" + selfLink: /apis/appcatalog.appscode.com/v1alpha1/namespaces/demo/appbindings/sample-xtradb-cluster + uid: 977cb8fd-b5e5-4830-a50f-58de9eb5d82c +spec: + clientConfig: + service: + name: sample-xtradb-cluster + path: / + port: 3306 + scheme: mysql + url: tcp(sample-xtradb-cluster:3306)/ + parameters: + address: gcomm://sample-xtradb-cluster-0.sample-xtradb-cluster-gvr.demo,sample-xtradb-cluster-1.sample-xtradb-cluster-gvr.demo,sample-xtradb-cluster-2.sample-xtradb-cluster-gvr.demo + apiVersion: config.kubedb.com/v1alpha2 + group: sample-xtradb-cluster + kind: GaleraArbitratorConfiguration + sstMethod: xtrabackup-v2 + secret: + name: sample-xtradb-cluster-auth + type: kubedb.com/perconaxtradb + version: "5.7-cluster" +``` + +Stash uses the AppBinding CRD to connect with the target database. It requires the following two fields to be set in the AppBinding's `.spec` section. + +- `.spec.clientConfig.service.name` specifies the name of the Service that connects to the database. +- `.spec.secret` specifies the name of the Secret that holds the necessary credentials to access the database. +- `.spec.type` specifies the type of the app that this AppBinding is pointing to. The format KubeDB generated AppBinding follows to set the value of `.spec.type` is `/`. + +#### Creating AppBinding Manually + +If you deploy the Percona XtraDB cluster without KubeDB, you have to create the AppBinding CRD manually in the same namespace as the service and secret of the database. + +The following YAML shows a minimal AppBinding specification that you have to create if you deploy the Percona XtraDB cluster without KubeDB. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: your-custom-appbinding-name + namespace: your-database-namespace +spec: + clientConfig: + service: + name: your-database-service-name + port: 3306 + scheme: mysql + secret: + name: your-database-auth-secret-name + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: kubedb.com/perconaxtradb +``` + +You have to replace the `<...>` quoted part with proper values in the above YAML. + +#### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pods using the following command, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-xtradb-cluster" +NAME READY STATUS RESTARTS AGE +sample-xtradb-cluster-0 1/1 Running 0 39m +sample-xtradb-cluster-1 1/1 Running 0 38m +sample-xtradb-cluster-2 1/1 Running 0 37m +``` + +And copy the username and password of the `root` user to access into `mysql` shell. + +```bash +$ kubectl get secret -n demo sample-xtradb-cluster-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo sample-xtradb-cluster-auth -o jsonpath='{.data.password}'| base64 -d +CZYWy7MDXiedL2EG⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n demo sample-xtradb-cluster-0 -- mysql --user=root --password=CZYWy7MDXiedL2EG +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 275 +Server version: 5.7.25-28-57 Percona XtraDB Cluster (GPL), Release rel28, Revision a2ef85f, WSREP version 31.35, wsrep_31.35 + +Copyright (c) 2009-2019 Percona LLC and/or its affiliates +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> CREATE DATABASE playground; +Query OK, 1 row affected (0.01 sec) + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id)); +Query OK, 0 rows affected (0.01 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.01 sec) + +mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue"); +Query OK, 1 row affected (0.01 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +Now, we are ready to back up the database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CRD. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +#### Create Storage Secret + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +#### Create Repository + +Now, crete a `Repository` using this secret. Below is the YAML of Repository CRD we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-xtradb-cluster + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/xtradb/sample-xtradb-cluster + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples/repository.yaml +repository.stash.appscode.com/gcs-repo-xtradb-cluster created +``` + +Now, we are ready to back up our database to our desired backend. + +### Backup + +We have to create a `BackupConfiguration` targeting respective AppBinding CRD of our desired database. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` CRD to backup the `sample-xtradb-cluster` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-xtradb-cluster-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: perconaxtradb-backup-5.7 + repository: + name: gcs-repo-xtradb-cluster + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-xtradb-cluster + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to back up the database at 5 minutes interval. +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to backup a Percona XtraDB cluster. +- `.spec.target.ref` refers to the AppBinding CRD that was created for the `sample-xtradb-cluster` database. + +Let's create the `BackupConfiguration` CRD we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-xtradb-cluster-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-xtradb-cluster-backup perconaxtradb-backup-5.7 */5 * * * * Ready 11s +``` + + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `.spec.schedule` field of `BackupConfiguration` CRD. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +sample-xtradb-cluster-backup */5 * * * * False 0 49s 2m22s +``` + +#### Wait for BackupSession + +The `sample-xtradb-cluster-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` CRD. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` CRD, + +```bash +$ kubectl get backupsession -n demo -l=stash.appscode.com/invoker-name=sample-xtradb-cluster-backup --watch +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-xtradb-cluster-backup-1572439801 BackupConfiguration sample-xtradb-cluster-backup Succeeded 4m27s +``` + +Here, the phase **`Succeeded`** means that the backupsession has been succeeded. + +>Note: Backup CronJob creates `BackupSession` CRD the label `stash.appscode.com/invoker-name=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is in the backend. Once a backup is completed, Stash will update the respective `Repository` CRD to reflect the backup completion. Check that the repository `gcs-repo-xtradb-cluster` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo-xtradb-cluster +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-xtradb-cluster true 304.165 MiB 3 97s 13m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/xtradb/sample-xtradb-cluster` directory as specified by `.spec.backend.gcs.prefix` field of Repository CRD. + +
+  Backed up data in GCS Bucket +
Fig: Backed up data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +### Restore Percona XtraDB Cluster + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new database and initialize it from the backup. + +#### Stop Taking Backup of the Old Database + +At first, let's stop taking any further backup of the old database so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` CRD that we had created to backup the `sample-xtradb-cluster` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-xtradb-cluster-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-xtradb-cluster-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-xtradb-cluster-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the operator has paused the BackupConfiguration object, + +```console +$ kubectl get backupconfiguration -n demo sample-xtradb-cluster-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-xtradb-cluster-backup perconaxtradb-backup-5.7 */5 * * * * true Ready 50m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +#### Deploy Restored Database + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-xtradb-cluster` database. However, this time there will be the following differences: + +- We have to use the same secret that was used in the original database. We are going to specify it using `.spec.databaseSecret` field. +- We are going to specify `.spec.init.waitForInitialRestore: true` which tells KubeDB to wait for the initial restore to complete before marking this database as ready to use. + +Below is the YAML for `PerconaXtraDB` CRD we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: restored-xtradb-cluster + namespace: demo +spec: + version: "5.7-cluster" + replicas: 3 + authSecret: + name: sample-xtradb-cluster-auth + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples/restored-xtradb-cluster.yaml +perconaxtradb.kubedb.com/restored-xtradb-cluster created +``` + +If you check the database status, you will see it is stuck in **`Provisioning`** state. + +```bash +$ kubectl get px -n demo restored-xtradb-cluster +NAME VERSION STATUS AGE +restored-xtradb-cluster 5.7-cluster Provisioning 4m10s +``` + +#### Create RestoreSession + +Now, we need to create a `RestoreSession` CRD pointing to the newly created restored database. + +In case of Percona XtraDB cluster, the RestoreSession object contains some different configurations unlike other databases supported by KubeDB. To restore Percona XtraDB cluster, Stash operator will create the required number of PVCs and mount the data in the data directory `/var/lib/mysql` with proper ownership and permission. After completing the PVC creation, KubeDB then creates AppBinding, Secret, Services, etc. objects. + +Below is the contents of YAML file of the RestoreSession CRD that we are going to create to restore the backed up data into the newly created database provisioned by PerconaXtrDB CRD named `restored-xtradb-cluster`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restored-xtradb-cluster-restore + namespace: demo +spec: + task: + name: perconaxtradb-restore-5.7 + repository: + name: gcs-repo-xtradb-cluster + target: + replicas: 3 + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-xtradb-cluster + volumeMounts: + - name: data-restored-xtradb-cluster + mountPath: /var/lib/mysql + volumeClaimTemplates: + - metadata: + name: data-restored-xtradb-cluster-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + rules: + - targetHosts: [] # empty host match all hosts + sourceHost: "host-0" # restore same data on all pvc + snapshots: ["latest"] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to restore a Percona XtraDB cluster. +- `.spec.repository.name` specifies the Repository CRD that holds the backend information where our backed up data has been stored. +- `.spec.target.replicas` specifies the number of PVCs where snapshot data will be restored. +- `.spec.target.ref` refers to the AppBinding object for the `restored-xtradb-cluster` PerconaXtraDB object. Though the KubeDB operator will create this AppBinding object later, we need to tell Stash operator about this AppBinding object ref. Because the AppBinding object name is identical with the corresponding PerconaXtraDB object name and the names of the PVCs directly depend on this name. +- `.spec.target.volumeClaimTemplates` specifies the template used for the PVCs. The important thing here is the `.metadata.name`. In KubeDB side, the PVC name is formed by following the rule `data--`. Since we have created our restore database named `restored-xtradb-cluster` and later KubeDB will create a StatefulSet for this database, the PVC names will be `data-restored-xtradb-cluster-0`, `data-restored-xtradb-cluster-1`, `data-restored-xtradb-cluster-2`, etc. up to the number of replicas. Here Stash operator will create these PVCs by following the same convention as KubeDB. We just need to provide the `.metadata.name` as `data--${POD_ORDINAL}`. You must insert `${POD_ORDINAL}` at the end of the name. Stash will create the required PVCs by replacing this with the corresponding pod index. That means if the value of `.spec.target.replicas` is 3, then Stash will create 3 PVCs named `data-restored-xtradb-cluster-0`, `data-restored-xtradb-cluster-1`, and `data-restored-xtradb-cluster-2`. +- `.spec.target.volumeMounts` specifies the mount path for the volume. The `mountPath` must be `/var/lib/mysql` as expected by Percona XtraDB server. And the volume name is form as `"data-"`. Since for restoring purpose, we have created a PerconaXtraDB object named `restored-xtradb-cluster`, the volume name will be `"data-restored-xtradb-cluster"`. +- `.spec.rules` specifies that we are restoring data from the `latest` backup snapshot of the database. Empty (`[]`) `targetHosts` means snapshot data will be restored in all specified number of PVCs. And another obvious thing is we want to restore the same data from `host-0` to all PVCs. During the backup procedure, we took backup data as `host-0` from the Percona XtraDB cluster. So, here the source host is `host-0`. + +Let's create the RestoreSession CRD object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/cluster/examples/restoresession.yaml +restoresession.stash.appscode.com/restored-xtradb-cluster-restore created +``` + +Once you have created the RestoreSession object, Stash will create a restore Job. We can watch the phase of the RestoreSession object to check whether the restore process has succeeded or not. + +Run the following command to watch the phase of the RestoreSession object, + +```bash +$ kubectl get restoresession -n demo restored-xtradb-cluster-restore --watch +NAME REPOSITORY PHASE AGE +restored-xtradb-cluster-restore gcs-repo-xtradb-cluster Running 3m33s +restored-xtradb-cluster-restore gcs-repo-xtradb-cluster Running 3m51s +restored-xtradb-cluster-restore gcs-repo-xtradb-cluster Running 3m58s +restored-xtradb-cluster-restore gcs-repo-xtradb-cluster Succeeded 3m58s +``` + +Here, we can see from the output of the above command that the restore process succeeded. + +#### Verify Restored Data + +In this section, we are going to verify whether the desired data has restored successfully. We are going to connect to the database server and check whether the database and the table we created earlier in the original database have restored. + +At first, check if the database has gone into **`Running`** state, + +```bash +$ kubectl get px -n demo restored-xtradb-cluster --watch +NAME VERSION STATUS AGE +restored-xtradb-cluster 5.7-cluster Provisioning 3m36s +restored-xtradb-cluster 5.7-cluster Provisioning 4m4s +restored-xtradb-cluster 5.7-cluster Ready 4m4s +``` + +Now, find out the database Pod, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=restored-xtradb-cluster" --watch +NAME READY STATUS RESTARTS AGE +restored-xtradb-cluster-0 1/1 Running 0 115s +restored-xtradb-cluster-1 1/1 Running 0 77s +restored-xtradb-cluster-2 1/1 Running 0 41s +``` + +And then copy the user name and password of the `root` user to access into `mysql` shell. + +> Notice: We used the same Secret for the `restored-xtradb-cluster` object. So, we will use the same commands as before. + +```bash +$ kubectl get secret -n demo sample-xtradb-cluster-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo sample-xtradb-cluster-auth -o jsonpath='{.data.password}'| base64 -d +CZYWy7MDXiedL2EG⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and check the database and the table we created before, + +```bash +$ kubectl exec -it -n demo restored-xtradb-cluster-0 -- mysql --user=root --password=CZYWy7MDXiedL2EG +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 275 +Server version: 5.7.25-28-57 Percona XtraDB Cluster (GPL), Release rel28, Revision a2ef85f, WSREP version 31.35, wsrep_31.35 + +Copyright (c) 2009-2019 Percona LLC and/or its affiliates +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.00 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +So, from the above output, we can see that the `playground` database and the `equipment` table we created before in the original database are restored successfully. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete restoresession -n demo restored-xtradb-cluster-restore +kubectl delete px -n demo restored-xtradb-cluster +kubectl delete repository -n demo gcs-repo-xtradb-cluster +kubectl delete backupconfiguration -n demo sample-xtradb-cluster-backup +kubectl delete px -n demo sample-xtradb-cluster +``` diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/backup_overview.svg new file mode 100644 index 0000000000..508f350424 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/backup_overview.svg @@ -0,0 +1,1002 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_backup.png b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_backup.png new file mode 100644 index 0000000000..1e70ba4426 Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_backup.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_restore.png b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_restore.png new file mode 100644 index 0000000000..41923f0fca Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/cluster_restore.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/restore_overview.svg new file mode 100644 index 0000000000..5fbb1158f6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/restore_overview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.png b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.png new file mode 100644 index 0000000000..7803c9cf93 Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.svg b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.svg new file mode 100644 index 0000000000..d8428839c7 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_backup.svg @@ -0,0 +1,273 @@ + + + + + diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_restore.png b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_restore.png new file mode 100644 index 0000000000..301a760d92 Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/overview/images/standalone_restore.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/overview/index.md b/content/docs/v2024.8.27/addons/percona-xtradb/overview/index.md new file mode 100644 index 0000000000..4efd04bf10 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/overview/index.md @@ -0,0 +1,191 @@ +--- +title: Percona XtraDB Backup & Restore Overview | Stash +description: How Percona XtraDB Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-percona-xtradb-overview + name: How does it work? + parent: stash-percona-xtradb + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backup & Restore Percona XtraDB Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how Percona XtraDB database backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of a Percona XtraDB database. Open the image in a new tab to see the enlarged version. + +
+  Percona XtraDB Backup Overview +
Fig: Percona XtraDB Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database(s) and uploads the output to the backend. Stash pipes the output of the dump command to the upload process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +### Backup Different Percona XtraDB Configurations + +This section will show you how backup works for different Percona XtraDB Configurations. + +#### Standalone Percona XtraDB + +For a standalone Percona XtraDB database, the backup job directly dumps the database using `mysqldump` and pipe the output to the backup process. + +
+ Standalone Percona XtraDB Backup Overview +
Fig: Standalone Percona XtraDB Backup
+
+ +#### Percona XtraDB Cluster + +For a standalone Percona XtraDB database, the backup Job runs the backup procedure to take the backup of the targeted databases and uploads the output to the backend. In backup procedure, the Job runs a process called `garbd` ([Galera Arbitrator](https://galeracluster.com/library/documentation/arbitrator.html)) which uses `xtrabackup-v2` script during State Snapshot Transfer (SST). Basically this Job takes a full copy of the data stored in the data directory (`/var/lib/mysql`) and pipes the output of the backup procedure to the uploading process. Hence, backup Job does not require a large volume to hold the entire backed up data. + +
+ Percona XtraDB Cluster Backup Overview +
Fig: Percona XtraDB Cluster Backup
+
+ +## How Restore Process Works + +The following diagram shows how Stash restores backed up data into a Percona XtraDB database. Open the image in a new tab to see the enlarged version. + +
+  Percona XtraDB Restore Overview +
Fig: Percona XtraDB Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job (in case of restoring cluster more than one Job and PVC) definition(s) to restore. + +4. Then, it creates the Job(s) (as well as PVCs in case of cluster) to restore the target. + +5. The Job(s) reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the Job(s) downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to inject into the database. Hence, the restore Job(s) does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job(s) sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +### Restore Different Percona XtraDB Configurations + +This section will show you how restore works for different Percona XtraDB Configurations. + +#### Standalone Percona XtraDB + +For a standalone Percona XtraDB database, the restore Job downloads the backed up data from the backend and pipe the downloaded data to `mysql` command which inserts the data into the desired database. + +
+ Standalone Percona XtraDB Restore Overview +
Fig: Standalone Percona XtraDB Restore
+
+ +#### Percona XtraDB Cluster + +For a Percona XtraDB Cluster, the Stash operator creates a number (equal to the value of `.spec.target.replicas` of `RestoreSession` object) of Jobs to restore. Each of these Jobs requires a PVC to store the previously backed up data of the data directory `/var/lib/mysql` from the backend. Then each Job downloads the backed up data from the backend and injects into the associated PVC. + +
+ Percona XtraDB Cluster Restore Overview +
Fig: Percona XtraDB Cluster Restore
+
+ +## Next Steps + +- Backup standalone Precona-XtraDB using Stash following the guide from [here](/docs/v2024.8.27/addons/percona-xtradb/standalone/). +- Backup Precona-XtraDB cluster using Stash following the guide from [here](/docs/v2024.8.27/addons/percona-xtradb/cluster/). diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..8590296309 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-xtradb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: perconaxtradb-backup-5.7 + repository: + name: gcs-repo-sample-xtradb + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-xtradb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/repository.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/repository.yaml new file mode 100644 index 0000000000..05f180f88c --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-sample-xtradb + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/xtradb/sample-xtradb + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restored-xtradb.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restored-xtradb.yaml new file mode 100644 index 0000000000..e58e377a4e --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restored-xtradb.yaml @@ -0,0 +1,21 @@ +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: restored-xtradb + namespace: demo +spec: + version: "5.7" + replicas: 1 + authSecret: + name: sample-xtradb-auth + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restoresession.yaml new file mode 100644 index 0000000000..051c952836 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restored-xtradb-restore + namespace: demo +spec: + task: + name: perconaxtradb-restore-5.7 + repository: + name: gcs-repo-sample-xtradb + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-xtradb + rules: + - snapshots: ["latest"] diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/sample-xtradb.yaml b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/sample-xtradb.yaml new file mode 100644 index 0000000000..9ea30a4596 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/examples/sample-xtradb.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: sample-xtradb + namespace: demo +spec: + version: "5.7" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/images/sample-xtradb-backup.png b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/images/sample-xtradb-backup.png new file mode 100644 index 0000000000..67855bb9b6 Binary files /dev/null and b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/images/sample-xtradb-backup.png differ diff --git a/content/docs/v2024.8.27/addons/percona-xtradb/standalone/index.md b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/index.md new file mode 100644 index 0000000000..8ba32f6045 --- /dev/null +++ b/content/docs/v2024.8.27/addons/percona-xtradb/standalone/index.md @@ -0,0 +1,721 @@ +--- +title: Backup & Restore Percona XtraDB Database | Stash +description: Backup & Restore a standalone Percona XtraDB Database database using Stash +menu: + docs_v2024.8.27: + identifier: stash-percona-xtradb-standalone + name: Standalone Percona XtraDB + parent: stash-percona-xtradb + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Percona XtraDB database using Stash + +Stash 0.9.0+ supports backup and restoration of Percona XtraDB databases. This guide will show you how you can backup and restore your Percona XtraDB database with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks to run a production-grade database on private and public clouds. +- If you are not familiar with how Stash takes backup and restores Percona XtraDB databases, please check the following guide [here](/docs/v2024.8.27/addons/percona-xtradb/overview/). + +You have to be familiar with the following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created yet. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/examples). + +## Backup Percona XtraDB + +This section will demonstrate how to backup a Percona XtraDB database. Here, we are going to deploy a Percona XtraDB database using KubeDB. Then, we are going to back up this database into a GCS bucket. Finally, we are going to restore the backed up data into another Percona XtraDB database. + +### Deploy Sample Percona XtraDB Database + +Let's deploy a sample Percona XtraDB database and insert some data into it. + +#### Create Percona XtraDB CRD + +Below is the YAML of a sample `PerconaXtraDB` CRD that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: sample-xtradb + namespace: demo +spec: + version: "5.7" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Create the above `PerconaXtraDB` CRD, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/examples/sample-xtradb.yaml +perconaxtradb.kubedb.com/sample-xtradb created +``` + +KubeDB will deploy a Percona XtraDB database according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Let's check if the database is ready to use, + +```bash +$ kubectl get px -n demo sample-xtradb +NAME VERSION STATUS AGE +sample-xtradb 5.7 Provisioning 54s +``` + +The database is `Running`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```bash +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-xtradb +NAME TYPE DATA AGE +sample-xtradb-auth Opaque 2 85s + +$ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-xtradb +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-xtradb ClusterIP 10.108.43.167 3306/TCP 111s +sample-xtradb-gvr ClusterIP None 3306/TCP 111s +``` + +Here, we have to use service `sample-xtradb` and secret `sample-xtradb-auth` to connect with the database. KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) CRD that holds the necessary information to connect with the database. + +#### Verify AppBinding + +Verify that the `AppBinding` has been created successfully using the following command, + +```bash +$ kubectl get appbindings -n demo +NAME TYPE VERSION AGE +sample-xtradb kubedb.com/perconaxtradb 5.7 89s +``` + +Let's check the YAML of the above AppBinding, + +```bash +$ kubectl get appbindings -n demo sample-xtradb -o yaml +``` + +Output is as follows, + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + creationTimestamp: "2020-01-26T06:57:35Z" + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-xtradb + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: perconaxtradbs.kubedb.com + name: sample-xtradb + namespace: demo + ownerReferences: + - apiVersion: kubedb.com/v1alpha2 + blockOwnerDeletion: true + controller: true + kind: PerconaXtraDB + name: sample-xtradb + uid: 279e90e5-7596-4cd2-b971-99e9a3dff839 + resourceVersion: "16218" + selfLink: /apis/appcatalog.appscode.com/v1alpha1/namespaces/demo/appbindings/sample-xtradb + uid: 5aff9236-e886-4a0d-b767-85d639cfe7c4 +spec: + clientConfig: + service: + name: sample-xtradb + path: / + port: 3306 + scheme: mysql + url: tcp(sample-xtradb:3306)/ + secret: + name: sample-xtradb-auth + type: kubedb.com/perconaxtradb + version: "5.7" +``` + +Stash uses the AppBinding CRD to connect with the target database. It requires the following two fields to be set in the AppBinding's `.spec` section. + +- `.spec.clientConfig.service.name` specifies the name of the Service that connects to the database. +- `.spec.secret` specifies the name of the Secret that holds the necessary credentials to access the database. +- `.spec.type` specifies the type of the app that this AppBinding is pointing to. The format KubeDB generated AppBinding follows to set the value of `.spec.type` is `/`. + +#### Provisioning AppBinding Manually + +If you deploy the Percona XtraDB database without KubeDB, you have to create the AppBinding CRD manually in the same namespace as the service and secret of the database. + +The following YAML shows a minimal AppBinding specification that you have to create if you deploy the Percona XtraDB database without KubeDB. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: your-custom-appbinding-name + namespace: your-database-namespace +spec: + clientConfig: + service: + name: your-database-service-name + port: 3306 + scheme: mysql + secret: + name: your-database_credentials_secret_name> + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: kubedb.com/perconaxtradb +``` + +You have to replace the `<...>` quoted part with proper values in the above YAML. + +#### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pods using the following command, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-xtradb" +NAME READY STATUS RESTARTS AGE +sample-xtradb-0 1/1 Running 0 6m56s +``` + +And copy the username and password of the `root` user to access into `mysql` shell. + +```bash +$ kubectl get secret -n demo sample-xtradb-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo sample-xtradb-auth -o jsonpath='{.data.password}'| base64 -d +5qtWP192NLD-nwgd⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n demo sample-xtradb-0 -- mysql --user=root --password=5qtWP192NLD-nwgd +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 48 +Server version: 5.7.26-29 Percona Server (GPL), Release 29, Revision 11ad961 + +Copyright (c) 2009-2019 Percona LLC and/or its affiliates +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> CREATE DATABASE playground; +Query OK, 1 row affected (0.00 sec) + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id)); +Query OK, 0 rows affected (0.06 sec) + +mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue"); +Query OK, 1 row affected (0.01 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +Now, we are ready to back up the database. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CRD. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +#### Create Storage Secret + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +#### Create Repository + +Now, crete a `Repository` using this secret. Below is the YAML of Repository CRD we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-sample-xtradb + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/xtradb/sample-xtradb + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/examples/repository.yaml +repository.stash.appscode.com/gcs-repo-sample-xtradb created +``` + +Now, we are ready to back up our database to our desired backend. + +### Backup + +We have to create a `BackupConfiguration` targeting respective AppBinding CRD of our desired database. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` CRD to backup the `sample-xtradb` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-xtradb-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: perconaxtradb-backup-5.7 + repository: + name: gcs-repo-sample-xtradb + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-xtradb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to back up the database at 5 minutes interval. +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to backup a Percona XtraDB database. +- `.spec.target.ref` refers to the AppBinding CRD that was created for the `sample-xtradb` database. + +Let's create the `BackupConfiguration` CRD we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-xtradb-backup created +``` + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-xtradb-backup perconaxtradb-backup-5.7 */5 * * * * Ready 11s +``` + +```bash +$ kubectl describe backupconfiguration -n demo sample-xtradb-backup +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `.spec.schedule` field of `BackupConfiguration` CRD. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-xtradb-backup */5 * * * * False 0 38s +``` + +#### Wait for BackupSession + +The `sample-xtradb-backup` CronJob will trigger a backup on each scheduled slot by Provisioning a `BackupSession` CRD. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` CRD, + +```bash +$ kubectl get backupsession -n demo -l=stash.appscode.com/invoker-name=sample-xtradb-backup --watch +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-xtradb-backup-1580023322 BackupConfiguration sample-xtradb-backup 0s +sample-xtradb-backup-1580023322 BackupConfiguration sample-xtradb-backup 0s +sample-xtradb-backup-1580023322 BackupConfiguration sample-xtradb-backup Running 0s +sample-xtradb-backup-1580023322 BackupConfiguration sample-xtradb-backup Running 36s +sample-xtradb-backup-1580023322 BackupConfiguration sample-xtradb-backup Succeeded 36s +``` + +Here, the phase **`Succeeded`** means that the backupsession has been succeeded. + +>Note: Backup CronJob creates `BackupSession` CRD the label `stash.appscode.com/invoker-name=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is in the backend. Once a backup is completed, Stash will update the respective `Repository` CRD to reflect the backup completion. Check that the repository `gcs-repo-sample-xtradb` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo-sample-xtradb +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo-sample-xtradb true 3 82s 17m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/xtradb/sample-xtradb` directory as specified by `.spec.backend.gcs.prefix` field of Repository CRD. + +
+  Backed up data in GCS Bucket +
Fig: Backed up data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +### Restore Percona XtraDB + +In this section, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new database and initialize it from the backup. + +#### Stop Taking Backup of the Old Database + +At first, let's stop taking any further backup of the old database so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` CRD that we had created to backup the `sample-xtradb` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-xtradb-backup` BackupConfiguration, + +```console +$ kubectl patch backupconfiguration -n demo sample-xtradb-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-xtradb-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the operator has paused the BackupConfiguration object, + +```console +$ kkubectl get backupconfiguration -n demo sample-xtradb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-xtradb-backup perconaxtradb-backup-5.7 */5 * * * * true Ready 13m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +#### Deploy Restored Database + +Now, we have to deploy the restored database similarly as we have deployed the original `sample-xtradb` database. However, this time there will be the following differences: + +- We have to use the same secret that was used in the original database. We are going to specify it using `.spec.databaseSecret` field. +- We are going to specify `.spec.init.waitForInitialRestore: true` which tells KubeDB to wait for the initial restore to complete before marking this database as ready to use. + +Below is the YAML for `PerconaXtraDB` CRD we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: PerconaXtraDB +metadata: + name: restored-xtradb + namespace: demo +spec: + version: "5.7" + replicas: 1 + authSecret: + name: sample-xtradb-auth + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/restored-xtradb.yaml +perconaxtradb.kubedb.com/restored-xtradb created +``` + +If you check the database status, you will see it is stuck in **`Provisioning`** state. + +```bash +$ kubectl get px -n demo restored-xtradb --watch +NAME VERSION STATUS AGE +restored-xtradb 5.7 Provisioning 42s +restored-xtradb 5.7 Provisioning 74s +``` + +#### Create RestoreSession + +Now, we need to create a `RestoreSession` CRD pointing to the newly created restored database. + +Using the following command, check that another AppBinding object has been created for the `restored-xtradb` object, + +```bash +$ kubectl get appbindings -n demo restored-xtradb +NAME TYPE VERSION AGE +restored-xtradb kubedb.com/perconaxtradb 5.7 4m6s +``` + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +Below is the contents of YAML file of the RestoreSession CRD that we are going to create to restore the backed up data into the newly created database provisioned by PerconaXtrDB CRD named `restored-xtradb`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restored-xtradb-restore + namespace: demo +spec: + task: + name: perconaxtradb-restore-5.7 + repository: + name: gcs-repo-sample-xtradb + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-xtradb + rules: + - snapshots: ["latest"] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task CRD that specifies the necessary Functions and their execution order to restore a Percona XtraDB database. +- `.spec.repository.name` specifies the Repository CRD that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the AppBinding object for the `restored-xtradb` PerconaXtraDB object. +- `.spec.rules` specifies that we are restoring data from the `latest` backup snapshot of the database. + +Let's create the RestoreSession CRD object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/percona-xtradb/standalone/restoresession.yaml +restoresession.stash.appscode.com/restored-xtradb-restore created +``` + +Once you have created the RestoreSession object, Stash will create a restore Job. We can watch the phase of the RestoreSession object to check whether the restore process has succeeded or not. + +Run the following command to watch the phase of the RestoreSession object, + +```bash +$ kubectl get restoresession -n demo restored-xtradb-restore --watch +NAME REPOSITORY PHASE AGE +restored-xtradb-restore gcs-repo-sample-xtradb Running 35s +restored-xtradb-restore gcs-repo-sample-xtradb Succeeded 44s +``` + +Here, we can see from the output of the above command that the restore process succeeded. + +#### Verify Restored Data + +In this section, we are going to verify whether the desired data has restored successfully. We are going to connect to the database server and check whether the database and the table we created earlier in the original database have restored. + +At first, check if the database has gone into **`Ready`** state, + +```bash +$ kubectl get px -n demo restored-xtradb --watch +NAME VERSION STATUS AGE +restored-xtradb 5.7 Provisioning 10m +restored-xtradb 5.7 Ready 13m +``` + +Now, find out the database Pod, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=restored-xtradb" --watch +NAME READY STATUS RESTARTS AGE +restored-xtradb-0 1/1 Running 0 15m +``` + +And then copy the user name and password of the `root` user to access into `mysql` shell. + +> Notice: We used the same Secret for the `restored-xtradb` object. So, we will use the same commands as before. + +```bash +$ kubectl get secret -n demo sample-xtradb-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n demo sample-xtradb-auth -o jsonpath='{.data.password}'| base64 -d +5qtWP192NLD-nwgd⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and check the database and the table we created before, + +```bash +$ kubectl exec -it -n demo restored-xtradb-0 -- mysql --user=root --password=5qtWP192NLD-nwgd +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 103 +Server version: 5.7.26-29 Percona Server (GPL), Release 29, Revision 11ad961 + +Copyright (c) 2009-2019 Percona LLC and/or its affiliates +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.00 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +So, from the above output, we can see that the `playground` database and the `equipment` table we created before in the original database are restored successfully. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete restoresession -n demo restored-xtradb-restore +kubectl delete px -n demo restored-xtradb +kubectl delete repository -n demo gcs-repo-sample-xtradb +kubectl delete backupconfiguration -n demo sample-xtradb-backup +kubectl delete px -n demo sample-xtradb +``` diff --git a/content/docs/v2024.8.27/addons/postgres/README.md b/content/docs/v2024.8.27/addons/postgres/README.md new file mode 100644 index 0000000000..0888c69237 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/README.md @@ -0,0 +1,107 @@ +--- +title: PostgreSQL Addon Overview | Stash +description: PostgreSQL Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-postgres-readme + name: Readme + parent: stash-postgres + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/postgres/ +aliases: +- /docs/v2024.8.27/addons/postgres/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash PostgreSQL Addon + +Stash 0.9.0+ supports extending its functionality through addons. Stash PostgreSQL addon enables Stash to backup and restore PostgreSQL databases. + +This guide will give you an overview of which PostgreSQL versions are supported and how the docs are organized. + +## Supported PostgreSQL Versions + +Stash has the following addon versions for PostgreSQL: + +{{< versionlist "postgres">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, PostgreSQL addon with version `12.x.x` should be able take backup of any PostgreSQL of `12.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash PostgreSQL documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/postgres/overview/) gives an overview of how backup and restore process for PostgreSQL database works in Stash. +- [Standalone PostgreSQL](/docs/v2024.8.27/addons/postgres/standalone/) shows how to backup and restore a standalone PostgreSQL database using Stash. +- [Auto-Backup](/docs/v2024.8.27/addons/postgres/auto-backup/) shows how to configure a generic backup template for all the PostgreSQL databases of a cluster. diff --git a/content/docs/v2024.8.27/addons/postgres/_index.md b/content/docs/v2024.8.27/addons/postgres/_index.md new file mode 100644 index 0000000000..dd9ff7975b --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash PostgreSQL Addon +menu: + docs_v2024.8.27: + identifier: stash-postgres + name: Postgres + parent: stash-addons + weight: 70 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/backupblueprint.yaml b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/backupblueprint.yaml new file mode 100644 index 0000000000..ade06c2254 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/backupblueprint.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: postgres-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: postgres-backup-11.9 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-1.yaml b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-1.yaml new file mode 100644 index 0000000000..aca08d5422 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-1.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-1 + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-2.yaml b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-2.yaml new file mode 100644 index 0000000000..53a4257ec3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-2.yaml @@ -0,0 +1,19 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-3.yaml b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-3.yaml new file mode 100644 index 0000000000..98ff388e9e --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/auto-backup/examples/sample-pg-3.yaml @@ -0,0 +1,19 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template + params.stash.appscode.com/args: --no-owner --clean +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-1.png b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-1.png new file mode 100644 index 0000000000..08ac7e0983 Binary files /dev/null and b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-1.png differ diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-2.png b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-2.png new file mode 100644 index 0000000000..2331644c8b Binary files /dev/null and b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-2.png differ diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-3.png b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-3.png new file mode 100644 index 0000000000..b27d7581e9 Binary files /dev/null and b/content/docs/v2024.8.27/addons/postgres/auto-backup/images/sample-postgres-3.png differ diff --git a/content/docs/v2024.8.27/addons/postgres/auto-backup/index.md b/content/docs/v2024.8.27/addons/postgres/auto-backup/index.md new file mode 100644 index 0000000000..6e5883dc7c --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/auto-backup/index.md @@ -0,0 +1,713 @@ +--- +title: PostgreSQL | Stash +description: Stash auto-backup for PostgreSQL database +menu: + docs_v2024.8.27: + identifier: stash-postgres-auto-backup + name: Auto-Backup + parent: stash-postgres + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup PostgreSQL using Stash Auto-Backup + +Stash can be configured to automatically backup any PostgreSQL database in your cluster. Stash enables cluster administrators to deploy backup blueprints ahead of time so that the database owners can easily backup their database with just a few annotations. + +In this tutorial, we are going to show how you can configure a backup blueprint for PostgreSQL databases in your cluster and backup them with few annotations. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. +- If you are not familiar with how Stash backup and restore PostgreSQL databases, please check the following guide [here](/docs/v2024.8.27/addons/postgres/overview/). +- If you are not familiar with how auto-backup works in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/overview/). +- If you are not familiar with the available auto-backup options for databases in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/database/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) + +In this tutorial, we are going to show backup of three different PostgreSQL databases on three different namespaces named `demo`, `demo-2`, and `demo-3`. Create the namespaces as below if you haven't done it already. + +```bash +❯ kubectl create ns demo +namespace/demo created + +❯ kubectl create ns demo-2 +namespace/demo-2 created + +❯ kubectl create ns demo-3 +namespace/demo-3 created +``` + +When you install Stash, it will automatically installs the official database addons. Make sure the addons for PostgreSQL was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep postgres +postgres-backup-10.14 8d +postgres-backup-11.9 8d +postgres-backup-12.4 8d +postgres-backup-13.1 8d +postgres-backup-9.6.19 8d +postgres-restore-10.14 8d +postgres-restore-11.9 8d +postgres-restore-12.4 8d +postgres-restore-13.1 8d +postgres-restore-9.6.19 8d +``` + +## Prepare Backup Blueprint + +To backup a PostgreSQL database using Stash, you have to create a `Secret` containing the backend credentials, a `Repository` containing the backend information, and a `BackupConfiguration` containing the schedule and target information. A `BackupBlueprint` allows you to specify a template for the `Repository` and the `BackupConfiguration`. + +The `BackupBlueprint` is a non-namespaced CRD. So, once you have created a `BackupBlueprint`, you can use it to backup any PostgreSQL database of any namespace just by creating the storage `Secret` in that namespace and adding few annotations to your Postgres CRO. Then, Stash will automatically create a `Repository` and a `BackupConfiguration` according to the template to backup the database. + +Below is the `BackupBlueprint` object that we are going to use in this tutorial, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: postgres-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: postgres-backup-11.9 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we are using a GCS bucket as our backend. We are providing `gcs-secret` at the `storageSecretName` field. Hence, we have to create a secret named `gcs-secret` with the access credentials of our bucket in every namespace where we want to enable backup through this blueprint. + +Notice the `prefix` field of `backend` section. We have used some variables in form of `${VARIABLE_NAME}`. Stash will automatically resolve those variables from the database information to make the backend prefix unique for each database instance. + +Let's create the `BackupBlueprint` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/auto-backup/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/postgres-backup-template created +``` + +Now, we are ready to backup our PostgreSQL databases using few annotations. You can check available auto-backup annotations for a database from [here](/docs/v2024.8.27/guides/auto-backup/database/#available-auto-backup-annotations-for-database). + +## Auto-backup with default configurations + +In this section, we are going to backup a PostgreSQL database of `demo` namespace. We are going to use the default configurations specified in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo` namespace with the access credentials to our GCS bucket. + +```bash +❯ echo -n 'changeit' > RESTIC_PASSWORD +❯ echo -n '' > GOOGLE_PROJECT_ID +❯ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +❯ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create a Postgres CRO in `demo` namespace. Below is the YAML of the PostgreSQL object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-1 + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete +``` + +Notice the `annotations` section. We are pointing to the `BackupBlueprint` that we have created earlier though `stash.appscode.com/backup-blueprint` annotation. Stash will watch this annotation and create a `Repository` and a `BackupConfiguration` according to the `BackupBlueprint`. + +Let's create the above Postgres CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/auto-backup/examples/sample-pg-1.yaml +postgres.kubedb.com/sample-postgres-1 created +``` + +### Verify Auto-backup configured + +In this section, we are going to verify whether Stash has created the respective `Repository` and `BackupConfiguration` for our PostgreSQL database we have just deployed. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our PostgreSQL or not. + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-postgres-1 25s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo app-sample-postgres-1 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-postgres-1 + namespace: demo + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo/postgres/sample-postgres-1 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Postgres in `demo` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-postgres-1 postgres-backup-11.9 */5 * * * * Ready 97s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo app-sample-postgres-1 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-postgres-1 + namespace: demo + ... +spec: + driver: Restic + repository: + name: app-sample-postgres-1 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-postgres-1 + task: + name: postgres-backup-11.9 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-23T09:38:19Z" + message: Repository demo/app-sample-postgres-1 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-23T09:38:19Z" + message: Backend Secret demo/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-23T09:38:19Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-postgres-1 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-23T09:38:19Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 + +``` + +Notice the `target` section. Stash has automatically added the respective AppBinding of our PostgreSQL database as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-postgres-1-1614073215 BackupConfiguration app-sample-postgres-1 0s +app-sample-postgres-1-1614073215 BackupConfiguration app-sample-postgres-1 Running 3s +app-sample-postgres-1-1614073215 BackupConfiguration app-sample-postgres-1 Succeeded 47s +``` + +Once the backup has been completed successfully, you should see the backed-up data has been stored in the bucket at the directory pointed by the `prefix` field of the `Repository`. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with a custom schedule + +In this section, we are going to backup a PostgreSQL database of `demo-2` namespace. This time, we are going to overwrite the default schedule used in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the backend Secret `gcs-secret` in `demo-2` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-2 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create a Postgres CRO in `demo-2` namespace. Below is the YAML of the PostgreSQL object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete +``` + +Notice the `annotations` section. This time, we have passed a schedule via `stash.appscode.com/schedule` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above Postgres CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/auto-backup/examples/sample-pg-2.yaml +postgres.kubedb.com/sample-postgres-2 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup has been configured properly or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our PostgreSQL or not. + +```bash +❯ kubectl get repository -n demo-2 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-postgres-2 13s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-2 app-sample-postgres-2 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-postgres-2 + namespace: demo-2 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo-2/postgres/sample-postgres-2 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Postgres in `demo-2` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-2 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-postgres-2 postgres-backup-11.9 */3 * * * * Ready 61s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-2 app-sample-postgres-2 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-postgres-2 + namespace: demo-2 + ... +spec: + driver: Restic + repository: + name: app-sample-postgres-2 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/3 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-postgres-2 + task: + name: postgres-backup-11.9 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-23T09:44:33Z" + message: Repository demo-2/app-sample-postgres-2 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-23T09:44:33Z" + message: Backend Secret demo-2/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-23T09:44:33Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-postgres-2 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-23T09:44:33Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `schedule` section. This time the `BackupConfiguration` has been created with the schedule we have provided via annotation. + +Also, notice the `target` section. Stash has automatically added the new PostgreSQL as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-2 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-postgres-2-1614073502 BackupConfiguration app-sample-postgres-2 0s +app-sample-postgres-2-1614073502 BackupConfiguration app-sample-postgres-2 Running 2s +app-sample-postgres-2-1614073502 BackupConfiguration app-sample-postgres-2 Succeeded 48s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed-up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with custom parameters + +In this section, we are going to backup a PostgreSQL database of `demo-3` namespace. This time, we are going to pass some parameters for the Task through the annotations. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-3` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-3 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Database + +Now, we are going to create a Postgres CRO in `demo-3` namespace. Below is the YAML of the PostgreSQL object that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: postgres-backup-template + params.stash.appscode.com/args: --no-owner --clean +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete +``` + +Notice the `annotations` section. This time, we have passed an argument via `params.stash.appscode.com/args` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above Postgres CRO, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/auto-backup/examples/sample-pg-3.yaml +postgres.kubedb.com/sample-postgres-3 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup resources has been created or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our PostgreSQL or not. + +```bash +❯ kubectl get repository -n demo-3 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-postgres-3 17s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-3 app-sample-postgres-3 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-postgres-3 + namespace: demo-3 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/demo-3/postgres/sample-postgres-3 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Postgres in `demo-3` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-3 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-postgres-3 postgres-backup-11.9 */5 * * * * Ready 51s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-3 app-sample-postgres-3 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-postgres-3 + namespace: demo-3 + ... +spec: + driver: Restic + repository: + name: app-sample-postgres-3 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-postgres-3 + task: + name: postgres-backup-11.9 + params: + - name: args + value: --no-owner --clean + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-02-23T09:48:15Z" + message: Repository demo-3/app-sample-postgres-3 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-02-23T09:48:15Z" + message: Backend Secret demo-3/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-02-23T09:48:15Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-postgres-3 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-02-23T09:48:15Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `task` section. The `args` parameter that we had passed via annotations has been added to the `params` section. + +Also, notice the `target` section. Stash has automatically added the new PostgreSQL as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-3 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +app-sample-postgres-3-1614073808 BackupConfiguration app-sample-postgres-3 0s +app-sample-postgres-3-1614073808 BackupConfiguration app-sample-postgres-3 Running 3s +app-sample-postgres-3-1614073808 BackupConfiguration app-sample-postgres-3 Succeeded 47s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed-up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Cleanup + +To cleanup the resources crated by this tutorial, run the following commands, + +```bash +❯ kubectl delete -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/auto-backup/examples/ +backupblueprint.stash.appscode.com "postgres-backup-template" deleted +postgres.kubedb.com "sample-postgres-1" deleted +postgres.kubedb.com "sample-postgres-2" deleted +postgres.kubedb.com "sample-postgres-3" deleted + +❯ kubectl delete repository -n demo --all +repository.stash.appscode.com "app-sample-postgres-1" deleted +❯ kubectl delete repository -n demo-2 --all +repository.stash.appscode.com "app-sample-postgres-2" deleted +❯ kubectl delete repository -n demo-3 --all +repository.stash.appscode.com "app-sample-postgres-3" deleted +``` diff --git a/content/docs/v2024.8.27/addons/postgres/overview/images/backup_overview.svg b/content/docs/v2024.8.27/addons/postgres/overview/images/backup_overview.svg new file mode 100644 index 0000000000..68437a3669 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/overview/images/backup_overview.svg @@ -0,0 +1,997 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/postgres/overview/images/restore_overview.svg b/content/docs/v2024.8.27/addons/postgres/overview/images/restore_overview.svg new file mode 100644 index 0000000000..b9adb0bba0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/overview/images/restore_overview.svg @@ -0,0 +1,857 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/postgres/overview/index.md b/content/docs/v2024.8.27/addons/postgres/overview/index.md new file mode 100644 index 0000000000..d67d02acc1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/overview/index.md @@ -0,0 +1,146 @@ +--- +title: PostgreSQL Backup & Restore Overview | Stash +description: How PostgreSQL Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-postgres-overview + name: How does it work? + parent: stash-postgres + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backup & Restore PostgreSQL Database + +Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how PostgreSQL database backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of a PostgreSQL database. Open the image in a new tab to see the enlarged version. + +
+  PostgreSQL Backup Overview +
Fig: PostgreSQL Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +## How Restore Process Works + +The following diagram shows how Stash restores backed up data into a PostgreSQL database. Open the image in a new tab to see the enlarged version. + +
+  Database Restore Overview +
Fig: PostgreSQL Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup standalone PostgreSQL database using Stash following the guides from [here](/docs/v2024.8.27/addons/postgres/standalone/). diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/appbinding.yaml new file mode 100644 index 0000000000..93a5c3bf47 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/appbinding.yaml @@ -0,0 +1,22 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-postgres + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: postgreses.kubedb.com + name: sample-postgres + namespace: demo +spec: + clientConfig: + service: + name: sample-postgres + path: / + port: 5432 + query: sslmode=disable + scheme: postgresql + secret: + name: sample-postgres-auth + type: kubedb.com/postgres + version: "11.2" diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..5c4862ea41 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-postgres-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: postgres-backup-11.9 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-postgres + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/minimal_appbinding.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/minimal_appbinding.yaml new file mode 100644 index 0000000000..c30d5f4eb2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/minimal_appbinding.yaml @@ -0,0 +1,17 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service + port: 5432 + scheme: postgresql + secret: + name: my-database-credentials-secret + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: postgres diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/postgres.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/postgres.yaml new file mode 100644 index 0000000000..674fb778d3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/postgres.yaml @@ -0,0 +1,16 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres + namespace: demo +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/repository.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/repository.yaml new file mode 100644 index 0000000000..025191f0be --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: demo/postgres/sample-postgres + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/restored-postgres.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/restored-postgres.yaml new file mode 100644 index 0000000000..d47082f7ff --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/restored-postgres.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: restored-postgres + namespace: demo +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: Delete diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/restoresession.yaml new file mode 100644 index 0000000000..bd6e5d7b70 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-postgres-restore + namespace: demo +spec: + task: + name: postgres-restore-11.9 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-postgres + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/examples/secret_transform.yaml b/content/docs/v2024.8.27/addons/postgres/standalone/examples/secret_transform.yaml new file mode 100644 index 0000000000..0e28f36069 --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/examples/secret_transform.yaml @@ -0,0 +1,21 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service + port: 5432 + scheme: postgresql + secret: + name: my-database-credentials-secret + secretTransforms: + - renameKey: + from: POSTGRES_USER + to: username + - renameKey: + from: POSTGRES_PASSWORD + to: password + type: postgres diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/images/sample-postgres-backup.png b/content/docs/v2024.8.27/addons/postgres/standalone/images/sample-postgres-backup.png new file mode 100644 index 0000000000..333d669827 Binary files /dev/null and b/content/docs/v2024.8.27/addons/postgres/standalone/images/sample-postgres-backup.png differ diff --git a/content/docs/v2024.8.27/addons/postgres/standalone/index.md b/content/docs/v2024.8.27/addons/postgres/standalone/index.md new file mode 100644 index 0000000000..a4f410f0de --- /dev/null +++ b/content/docs/v2024.8.27/addons/postgres/standalone/index.md @@ -0,0 +1,709 @@ +--- +title: PostgreSQL | Stash +description: Backup and restore standalone PostgreSQL database using Stash +menu: + docs_v2024.8.27: + identifier: stash-postgres-standalone + name: Standalone PostgreSQL + parent: stash-postgres + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore PostgreSQL database using Stash + +Stash 0.9.0+ supports backup and restoration of PostgreSQL databases. This guide will show you how you can backup and restore your PostgreSQL database with Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running production-grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore PostgreSQL databases, please check the following guide [here](/docs/v2024.8.27/addons/postgres/overview/): + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create the `demo` namespace if you haven't created it already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples). + +## Backup PostgreSQL + +This section will demonstrate how to backup a PostgreSQL database. Here, we are going to deploy a PostgreSQL database using KubeDB. Then, we are going to backup this database into a GCS bucket. Finally, we are going to restore the backed-up data into another PostgreSQL database. + +### Deploy Sample PostgreSQL Database + +Let's deploy a sample PostgreSQL database and insert some data into it. + +**Create Postgres CRD:** + +Below is the YAML of a sample Postgres crd that we are going to create for this tutorial: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: sample-postgres + namespace: demo +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: Delete +``` + +Create the above `Postgres` crd, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples/postgres.yaml +postgres.kubedb.com/sample-postgres created +``` + +KubeDB will deploy a PostgreSQL database according to the above specification. It will also create the necessary secrets and services to access the database. + +Let's check if the database is ready to use, + +```bash +❯ kubectl get pg -n demo sample-postgres +NAME VERSION STATUS AGE +sample-postgres 11.2-v1 Ready 50s +``` + +The database is `Ready`. Verify that KubeDB has created a Secret and a Service for this database using the following commands, + +```bash +❯ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-postgres +NAME TYPE DATA AGE +sample-postgres-auth kubernetes.io/basic-auth 2 2m42s + + +❯ kubectl get service -n demo -l=app.kubernetes.io/instance=sample-postgres +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +sample-postgres ClusterIP 10.96.242.0 5432/TCP 3m9s +sample-postgres-pods ClusterIP None 5432/TCP 3m9s +``` + +Here, we have to use the service `sample-postgres` and secret `sample-postgres-auth` to connect with the database. KubeDB creates an [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd that holds the necessary information to connect with the database. + +**Verify AppBinding:** + +Verify that the `AppBinding` has been created successfully using the following command, + +```bash +❯ kubectl get appbindings -n demo +NAME TYPE VERSION AGE +sample-postgres kubedb.com/postgres 11.2 3m54s +``` + +Let's check the YAML of the above `AppBinding`, + +```bash +❯ kubectl get appbindings -n demo sample-postgres -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-postgres + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: postgreses.kubedb.com + name: sample-postgres + namespace: demo + ... +spec: + clientConfig: + service: + name: sample-postgres + path: / + port: 5432 + query: sslmode=disable + scheme: postgresql + secret: + name: sample-postgres-auth + type: kubedb.com/postgres + version: "11.2" +``` + +Stash uses the `AppBinding` crd to connect with the target database. It requires the following two fields to set in AppBinding's `Spec` section. + +- `spec.clientConfig.service.name` specifies the name of the service that connects to the database. +- `spec.secret` specifies the name of the secret that holds necessary credentials to access the database. +- `spec.type` specifies the types of the app that this AppBinding is pointing to. KubeDB generated AppBinding follows the following format: `/`. + +**Creating AppBinding Manually:** + +If you deploy the PostgreSQL database without KubeDB, you have to create the AppBinding crd manually in the same namespace as the service and secret of the database. + +The following YAML shows a minimal AppBinding specification that you have to create if you deploy the PostgreSQL database without KubeDB. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service + port: 5432 + scheme: postgresql + secret: + name: my-database-credentials-secret + # type field is optional. you can keep it empty. + # if you keep it empty then the value of TARGET_APP_RESOURCE variable + # will be set to "appbinding" during auto-backup. + type: postgres +``` + +Stash expects your database secret to have `username` and `password` keys. If your database secret has different keys, you can map them to the Stash recommended keys using `secretTransformation` section of the AppBinding. An example of such transformation is shown below, + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: my-custom-appbinding + namespace: my-database-namespace +spec: + clientConfig: + service: + name: my-database-service + port: 5432 + scheme: postgresql + secret: + name: my-database-credentials-secret + secretTransforms: + - renameKey: + from: POSTGRES_USER + to: username + - renameKey: + from: POSTGRES_PASSWORD + to: password + type: postgres +``` + +>The `secretTransforms` does not modify your original database Secret. Stash just uses those transformations to obtain the desired keys from the original Secret. + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database pod using the following command, + +```bash +❯ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-postgres" +NAME READY STATUS RESTARTS AGE +sample-postgres-0 1/1 Running 0 18m +``` + +Now, let's exec into the pod and create a table, + +```bash +❯ kubectl exec -it -n demo sample-postgres-0 -- sh + +# login as "postgres" superuser. +/ # psql -U postgres +psql (11.2) +Type "help" for help. + +# list available databases +postgres=# \l + List of databases + Name | Owner | Encoding | Collate | Ctype | Access privileges +-----------+----------+----------+------------+------------+----------------------- + postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | + template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres + template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres +(3 rows) + +# create a database named "demo" +postgres=# create database demo; +CREATE DATABASE + +# verify that the "demo" database has been created +postgres=# \l + List of databases + Name | Owner | Encoding | Collate | Ctype | Access privileges +-----------+----------+----------+------------+------------+----------------------- + demo | postgres | UTF8 | en_US.utf8 | en_US.utf8 | + postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | + template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres + template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres +(4 rows) + +# connect to the "demo" database +postgres=# \c demo +You are now connected to database "demo" as user "postgres". + +# create a sample table +demo=# CREATE TABLE COMPANY( NAME TEXT NOT NULL, EMPLOYEE INT NOT NULL); +CREATE TABLE + +# verify that the table has been created +demo=# \d + List of relations + Schema | Name | Type | Owner +--------+---------+-------+---------- + public | company | table | postgres +(1 row) + +# quit from the database +demo=# \q + +# exit from the pod +/ # exit +``` + +Now, we are ready to backup this sample database. + +### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` crd. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` using this secret. Below is the YAML of Repository crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: demo/postgres/sample-postgres + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database to our desired backend. + +### Backup + +We have to create a `BackupConfiguration` targeting the respective AppBinding object of our desired database. Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the YAML for `BackupConfiguration` crd to backup the `sample-postgres` database we have deployed earlier., + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-postgres-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: postgres-backup-11.9 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-postgres + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` specifies that we want to backup the database at 5 minutes interval. +- `spec.task.name` specifies the name of the task crd that specifies the necessary Function and their execution order to backup a PostgreSQL database. +- `spec.repository.name` specifies the name of the `Repository` crd the holds the backend information where the backed up data will be stored. +- `spec.target.ref` refers to the `AppBinding` crd that was created for `sample-postgres` database. +- `spec.retentionPolicy` specifies the policy to follow for cleaning old snapshots. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-postgres-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-postgres-backup postgres-backup-11.9 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-postgres-backup */5 * * * * False 0 30s +``` + +**Wait for BackupSession:** + +The `sample-postgres-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` crd. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` crd, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-postgres-backup-1613390711 BackupConfiguration sample-postgres-backup Running 15s +sample-postgres-backup-1613390711 BackupConfiguration sample-postgres-backup Succeeded 78s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.770 KiB 1 2m 4m16s +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `demo/postgres/sample-postgres` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed-up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore PostgreSQL + +Now, we are going to restore the database from the backup we have taken in the previous section. We are going to deploy a new database and initialize it from the backup. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` crd that we had created to backup the `sample-postgres` database. Then, Stash will stop taking any further backup for this database. + +Let's pause the `sample-postgres-backup` BackupConfiguration, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-postgres-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-postgres-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-postgres-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-postgres-backup postgres-backup-11.9 */5 * * * * true Ready 5m55s +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Restored Database:** + +Now, we are going to deploy the restored database similarly as we have deployed the original `sample-psotgres` database. + +Below is the YAML for `Postgres` crd we are going deploy to initialize from backup, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Postgres +metadata: + name: restored-postgres + namespace: demo +spec: + version: "11.11" + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + init: + waitForInitialRestore: true + terminationPolicy: Delete + +``` + +Notice the `init` section. Here, we have specified `waitForInitialRestore: true` which tells KubeDB to wait for the first restore to complete before marking this database as ready to use. + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples/restored-postgres.yaml +postgres.kubedb.com/restored-postgres created +``` + +This time, the database will get stuck in the `Provisioning` state because we haven't restored the data yet. + +```bash +❯ kubectl get postgres -n demo restored-postgres +NAME VERSION STATUS AGE +restored-postgres 11.2-v1 Provisioning 6m7s +``` + +You can check the log from the database pod to be sure whether the database is ready to accept connections or not. + +```bash +❯ kubectl logs -n demo restored-postgres-0 +.... +2021-02-15 12:36:31.087 UTC [19] LOG: listening on IPv4 address "0.0.0.0", port 5432 +2021-02-15 12:36:31.087 UTC [19] LOG: listening on IPv6 address "::", port 5432 +2021-02-15 12:36:31.094 UTC [19] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +2021-02-15 12:36:31.121 UTC [50] LOG: database system was shut down at 2021-02-15 12:36:31 UTC +2021-02-15 12:36:31.126 UTC [19] LOG: database system is ready to accept connections +``` + +As you can see from the above log that the database is ready to accept connections. Now, we can start restoring this database. + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` object pointing to the AppBinding for this restored database. + +Check AppBinding has been created for the `restored-postgres` database using the following command, + +```bash +❯ kubectl get appbindings -n demo restored-postgres +NAME TYPE VERSION AGE +restored-postgres kubedb.com/postgres 11.2-v1 6m45s +``` + +> If you are not using KubeDB to deploy the database, then create the AppBinding manually. + +Below is the YAML for the `RestoreSession` crd that we are going to create to restore backed up data into `restored-postgres` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-postgres-restore + namespace: demo +spec: + task: + name: postgres-restore-11.9 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-postgres + rules: + - snapshots: [latest] +``` + +Here, + +- `spec.task.name` specifies the name of the `Task` crd that specifies the Functions and their execution order to restore a PostgreSQL database. +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the AppBinding crd for the `restored-postgres` database where the backed up data will be restored. +- `spec.rules` specifies that we are restoring from the latest backup snapshot of the original database. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/postgres/standalone/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-postgres-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a job to restore the database. We can watch the `RestoreSession` phase to check whether the restore process has succeeded or not. + +Run the following command to watch `RestoreSession` phase, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-postgres-restore gcs-repo Running 4s +sample-postgres-restore gcs-repo Running 15s +sample-postgres-restore gcs-repo Succeeded 15s +sample-postgres-restore gcs-repo Succeeded 15s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. We are going to connect to the database and check whether the table we had created in the original database has been restored or not. + +At first, check if the database has gone into `Ready` state using the following command, + +```bash +❯ kubectl get pg -n demo restored-postgres +NAME VERSION STATUS AGE +restored-postgres 11.2-v1 Ready 11m +``` + +Now, exec into the database pod and verify restored data. + +```bash +❯ kubectl exec -it -n demo restored-postgres-0 -- /bin/sh +# login as "postgres" superuser. +/ # psql -U postgres +psql (11.2) +Type "help" for help. + +# verify that the "demo" database has been restored +postgres=# \l + List of databases + Name | Owner | Encoding | Collate | Ctype | Access privileges +-----------+----------+----------+------------+------------+----------------------- + demo | postgres | UTF8 | en_US.utf8 | en_US.utf8 | + postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | + template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres + template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + + | | | | | postgres=CTc/postgres +(4 rows) + +# connect to the "demo" database +postgres=# \c demo +You are now connected to database "demo" as user "postgres". + +# verify that the sample table has been restored +demo=# \d + List of relations + Schema | Name | Type | Owner +--------+---------+-------+---------- + public | company | table | postgres +(1 row) + +# disconnect from the database +demo=# \q + +# exit from the pod +/ # exit +``` + +So, from the above output, we can see the `demo` database we had created in the original database `sample-postgres` has been restored in the `restored-postgres` database. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-postgres-backup +kubectl delete -n demo restoresession sample-postgres-restore +kubectl delete -n demo postgres sample-postgres restored-postgres +kubectl delete -n demo repository gcs-repo +``` diff --git a/content/docs/v2024.8.27/addons/redis/README.md b/content/docs/v2024.8.27/addons/redis/README.md new file mode 100644 index 0000000000..b550021784 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/README.md @@ -0,0 +1,108 @@ +--- +title: Redis Addon Overview | Stash +description: Redis Addon Overview | Stash +menu: + docs_v2024.8.27: + identifier: stash-redis-readme + name: Readme + parent: stash-redis + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +url: /docs/v2024.8.27/addons/redis/ +aliases: +- /docs/v2024.8.27/addons/redis/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Redis Addon + +Stash `{{< param "info.version" >}}` supports extending its functionality through addons. Stash Redis addon enables Stash to backup and restore Redis databases. + +This guide will give you an overview of which Redis versions are supported and how the docs are organized. + +## Supported Redis Versions + +Stash has the following addon versions for Redis: + +{{< versionlist "redis">}} + +Here, the addon follows `M.M.P` versioning scheme where `M.M.P` (Major.Minor.Patch) represents the respective database version. + +## Addon Version Compatibility + +Any addon with matching major version with the database version should be able to take backup of that database. For example, Redis addon with version `6.x.x` should be able take backup of any Redis of `6.x.x` series. However, this might not be true for some versions. In that case, we will have separate addon for that version. + +## Documentation Overview + +Stash Redis documentations are organized as below: + +- [How does it work?](/docs/v2024.8.27/addons/redis/overview/) gives an overview of how backup and restore process for Redis database works in Stash. +- [Helm managed Redis](/docs/v2024.8.27/addons/redis/helm/) shows how to backup and restore a Helm managed Redis database. +- [Auto-Backup](/docs/v2024.8.27/addons/redis/auto-backup/) shows how to configure a generic backup template for all the Redis databases of a cluster. +- [Customizing Backup & Restore Process](/docs/v2024.8.27/addons/redis/customization/) shows how to customize the backup & restore process. diff --git a/content/docs/v2024.8.27/addons/redis/_index.md b/content/docs/v2024.8.27/addons/redis/_index.md new file mode 100644 index 0000000000..2cfd0429dc --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/_index.md @@ -0,0 +1,76 @@ +--- +title: Stash Redis Addon +menu: + docs_v2024.8.27: + identifier: stash-redis + name: Redis + parent: stash-addons + weight: 30 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/examples/backupblueprint.yaml b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/backupblueprint.yaml new file mode 100644 index 0000000000..de4f5cd4db --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/backupblueprint.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: redis-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: redis-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: redis-backup-6.2.5 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-1.yaml b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-1.yaml new file mode 100644 index 0000000000..27d4628da6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-1.yaml @@ -0,0 +1,22 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-1 + namespace: demo-1 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template +spec: + clientConfig: + service: + name: sample-redis-1-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-1 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-2.yaml b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-2.yaml new file mode 100644 index 0000000000..ae2240e37c --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-2.yaml @@ -0,0 +1,23 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + clientConfig: + service: + name: sample-redis-2-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-2 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-3.yaml b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-3.yaml new file mode 100644 index 0000000000..aecb738af8 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/auto-backup/examples/sample-redis-3.yaml @@ -0,0 +1,23 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template + params.stash.appscode.com/args: -db 0 +spec: + clientConfig: + service: + name: sample-redis-3-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-3 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-1.png b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-1.png new file mode 100644 index 0000000000..fafe699957 Binary files /dev/null and b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-1.png differ diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-2.png b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-2.png new file mode 100644 index 0000000000..3ca8153635 Binary files /dev/null and b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-2.png differ diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-3.png b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-3.png new file mode 100644 index 0000000000..6da0f056c5 Binary files /dev/null and b/content/docs/v2024.8.27/addons/redis/auto-backup/images/sample-redis-3.png differ diff --git a/content/docs/v2024.8.27/addons/redis/auto-backup/index.md b/content/docs/v2024.8.27/addons/redis/auto-backup/index.md new file mode 100644 index 0000000000..7a753cc146 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/auto-backup/index.md @@ -0,0 +1,791 @@ +--- +title: Redis Auto-Backup | Stash +description: Backup Redis using Stash Auto-Backup +menu: + docs_v2024.8.27: + identifier: stash-redis-auto-backup + name: Auto-Backup + parent: stash-redis + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup Redis using Stash Auto-Backup + +Stash can be configured to automatically backup any Redis database in your cluster. Stash enables cluster administrators to deploy backup blueprints ahead of time so that the database owners can easily backup their database with just a few annotations. + +In this tutorial, we are going to show how you can configure a backup blueprint for Redis databases in your cluster and backup them with few annotations. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore Redis databases, please check the following guide [here](/docs/v2024.8.27/addons/redis/overview/). +- If you are not familiar with how auto-backup works in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/overview/). +- If you are not familiar with the available auto-backup options for databases in Stash, please check the following guide [here](/docs/v2024.8.27/guides/auto-backup/database/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) + +In this tutorial, we are going to show backup of three different Redis databases on three different namespaces named `demo-1`, `demo-2`, and `demo-3`. Create the namespaces as below if you haven't done it already. + +```bash +❯ kubectl create ns demo-1 +namespace/demo-1 created + +❯ kubectl create ns demo-2 +namespace/demo-2 created + +❯ kubectl create ns demo-3 +namespace/demo-3 created +``` + +When you install Stash, it installs the necessary addons to backup Redis. Verify that the Redis addons were installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep redis +redis-backup-6.2.5 62m +redis-backup-6.2.5 62m +``` + +We are going to use [bitnami/redis](https://artifacthub.io/packages/helm/bitnami/redis) chart from [ArtifactHub](https://artifacthub.io/). Let's add the respective chart repository to our helm repo list. + +```bash +# Add bitnami chart registry +$ helm repo add bitnami https://charts.bitnami.com/bitnami +# Update helm registries +$ helm repo update +``` + +## Prepare Backup Blueprint + +To backup a Redis database using Stash, you have to create a `Secret` containing the backend credentials, a `Repository` containing the backend information, and a `BackupConfiguration` containing the schedule and target information. A `BackupBlueprint` allows you to specify a template for the `Repository` and the `BackupConfiguration`. + +The `BackupBlueprint` is a non-namespaced CRD. So, once you have created a `BackupBlueprint`, you can use it to backup any Redis database of any namespace just by creating the storage `Secret` in that namespace and adding few annotations to the AppBinding containing the connection info to your database. Then, Stash will automatically create a `Repository` and a `BackupConfiguration` according to the template to backup the database. + +Below is the `BackupBlueprint` object that we are going to use in this tutorial, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: redis-backup-template +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: redis-backup/${TARGET_NAMESPACE}/${TARGET_APP_RESOURCE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: redis-backup-6.2.5 + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we are using a GCS bucket as our backend. We are providing `gcs-secret` at the `storageSecretName` field. Hence, we have to create a secret named `gcs-secret` with the access credentials of our bucket in every namespace where we want to enable backup through this blueprint. + +Notice the `prefix` field of `backend` section. We have used some variables in form of `${VARIABLE_NAME}`. Stash will automatically resolve those variables from the database information to make the backend prefix unique for each database instance. + +Let's create the `BackupBlueprint` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/auto-backup/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/redis-backup-template created +``` + +Now, we are ready to backup our Redis databases using few annotations. You can check available auto-backup annotations for a databases from [here](/docs/v2024.8.27/guides/auto-backup/database/#available-auto-backup-annotations-for-database). + +## Auto-backup with default configurations + +In this section, we are going to backup a Redis database of `demo-1` namespace. We are going to use the default configurations specified in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-1` namespace with the access credentials to our GCS bucket. + +```bash +❯ echo -n 'changeit' > RESTIC_PASSWORD +❯ echo -n '' > GOOGLE_PROJECT_ID +❯ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +❯ kubectl create secret generic -n demo-1 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Deploy Database + +Let's deploy a Redis database named `sample-redis-1` in the `demo-1` namespace. + +```bash +❯ helm install sample-redis-1 bitnami/redis -n demo-1 +``` + +Now, let's insert some sample data into it. + +```bash +❯ export PASSWORD=$(kubectl get secrets -n demo-1 sample-redis-1 -o jsonpath='{.data.\redis-password}' | base64 -d) +❯ kubectl exec -it -n demo-1 sample-redis-1-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +127.0.0.1:6379> set key1 value1 +OK +127.0.0.1:6379> get key1 +"value1" +127.0.0.1:6379> exit +``` + +### Create AppBinding + +Now, we have to create an AppBinding with the connection information of our database. Below, is the YAML of the AppBinding that we are going to create for our `sample-redis-1` database. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-1 + namespace: demo-1 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template +spec: + clientConfig: + service: + name: sample-redis-1-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-1 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 +``` + +Notice the `annotations` section. We are pointing to the `BackupBlueprint` that we have created earlier through `stash.appscode.com/backup-blueprint` annotation. Stash will watch this annotation and create a `Repository` and a `BackupConfiguration` according to the `BackupBlueprint`. + +Let's create the above AppBinding, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/auto-backup/examples/sample-redis-1.yaml +appbinding.appcatalog.appscode.com/sample-redis-1 created +``` + +### Verify Auto-backup configured + +In this section, we are going to verify whether Stash has created the respective `Repository` and `BackupConfiguration` for our Redis database or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Redis or not. + +```bash +❯ kubectl get repository -n demo-1 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-redis-1 22s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-1 app-sample-redis-1 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-redis-1 + namespace: demo-1 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: redis-backup/demo-1/redis/sample-redis-1 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Redis in `demo-1` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-1 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-redis-1 redis-backup-6.2.5 */5 * * * * Ready 76s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-1 app-sample-redis-1 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-redis-1 + namespace: demo-1 + ... +spec: + driver: Restic + repository: + name: app-sample-redis-1 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis-1 + task: + name: redis-backup-6.2.5 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-07-29T13:59:57Z" + message: Repository demo-1/app-sample-redis-1 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-07-29T13:59:57Z" + message: Backend Secret demo-1/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-07-29T13:59:57Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-redis-1 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-07-29T13:59:57Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 + +``` + +Notice the `target` section. Stash has automatically added the Redis as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-1 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +app-sample-redis-1-1627567808 BackupConfiguration app-sample-redis-1 0s +app-sample-redis-1-1627567808 BackupConfiguration app-sample-redis-1 Running 22s +app-sample-redis-1-1627567808 BackupConfiguration app-sample-redis-1 Succeeded 1m28.696008079s 88s +``` + +Once the backup has been completed successfully, you should see the backed up data has been stored in the bucket at the directory pointed by the `prefix` field of the `Repository`. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with a custom schedule + +In this section, we are going to backup a Redis database of `demo-2` namespace. This time, we are going to overwrite the default schedule used in the `BackupBlueprint`. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-2` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-2 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Deploy Database + +Let's deploy a Redis database named `sample-redis-2` in the `demo-2` namespace. + +```bash +❯ helm install sample-redis-2 bitnami/redis -n demo-2 +``` + +Now, let's insert some sample data into it. + +```bash +❯ export PASSWORD=$(kubectl get secrets -n demo-2 sample-redis-2 -o jsonpath='{.data.\redis-password}' | base64 -d) +❯ kubectl exec -it -n demo-2 sample-redis-2-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +127.0.0.1:6379> set key1 value1 +OK +127.0.0.1:6379> get key1 +"value1" +127.0.0.1:6379> exit +``` + +### Create AppBinding + +Now, we have to create an AppBinding with the connection information of our database. Below, is the YAML of the AppBinding that we are going to create for our `sample-redis-2` database. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-2 + namespace: demo-2 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template + stash.appscode.com/schedule: "*/3 * * * *" +spec: + clientConfig: + service: + name: sample-redis-2-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-2 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 +``` + +Notice the `annotations` section. This time, we have passed a schedule via `stash.appscode.com/schedule` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above AppBinding, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/auto-backup/examples/sample-redis-2.yaml +appbinding.appcatalog.appscode.com/sample-redis-2 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup has been configured properly or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Redis or not. + +```bash +❯ kubectl get repository -n demo-2 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-redis-2 29s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-2 app-sample-redis-2 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-redis-2 + namespace: demo-2 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: redis-backup/demo-2/redis/sample-redis-2 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Redis in `demo-2` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-2 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-redis-2 redis-backup-6.2.5 */3 * * * * Ready 64s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-2 app-sample-redis-2 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-redis-2 + namespace: demo-2 + ... +spec: + driver: Restic + repository: + name: app-sample-redis-2 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/3 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis-2 + task: + name: redis-backup-6.2.5 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-07-29T14:17:31Z" + message: Repository demo-2/app-sample-redis-2 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-07-29T14:17:31Z" + message: Backend Secret demo-2/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-07-29T14:17:31Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-redis-2 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-07-29T14:17:31Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `schedule` section. This time the `BackupConfiguration` has been created with the schedule we have provided via annotation. + +Also, notice the `target` section. Stash has automatically added the new Redis as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-2 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +app-sample-redis-2-1627568283 BackupConfiguration app-sample-redis-2 Running 86s +app-sample-redis-2-1627568283 BackupConfiguration app-sample-redis-2 Succeeded 1m33.522226054s 93s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Auto-backup with custom parameters + +In this section, we are going to backup a Redis database of `demo-3` namespace. This time, we are going to pass some parameters for the Task through the annotations. + +### Create Storage Secret + +At first, let's create the `gcs-secret` in `demo-3` namespace with the access credentials to our GCS bucket. + +```bash +❯ kubectl create secret generic -n demo-3 gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Deploy Database + +Let's deploy a Redis database named `sample-redis-3` in the `demo-3` namespace. + +```bash +❯ helm install sample-redis-3 bitnami/redis -n demo-3 +``` + +Now, let's insert some sample data into it. + +```bash +❯ export PASSWORD=$(kubectl get secrets -n demo-3 sample-redis-3 -o jsonpath='{.data.\redis-password}' | base64 -d) +❯ kubectl exec -it -n demo-3 sample-redis-3-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +127.0.0.1:6379> set key1 value1 +OK +127.0.0.1:6379> get key1 +"value1" +127.0.0.1:6379> exit +``` + +### Create AppBinding + +Now, we have to create an AppBinding with the connection information of our database. Below, is the YAML of the AppBinding that we are going to create for our `sample-redis-3` database. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis-3 + namespace: demo-3 + annotations: + stash.appscode.com/backup-blueprint: redis-backup-template + params.stash.appscode.com/args: -db 0 +spec: + clientConfig: + service: + name: sample-redis-3-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis-3 + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 +``` + +Notice the `annotations` section. This time, we have passed an argument via `params.stash.appscode.com/args` annotation along with the `stash.appscode.com/backup-blueprint` annotation. + +Let's create the above AppBinding, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/auto-backup/examples/sample-redis-3.yaml +appbinding.appcatalog.appscode.com/sample-redis-3 created +``` + +### Verify Auto-backup configured + +Now, let's verify whether the auto-backup resources has been created or not. + +#### Verify Repository + +At first, let's verify whether Stash has created a `Repository` for our Redis or not. + +```bash +❯ kubectl get repository -n demo-3 +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +app-sample-redis-3 29s +``` + +Now, let's check the YAML of the `Repository`. + +```yaml +❯ kubectl get repository -n demo-3 app-sample-redis-3 -o yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: app-sample-redis-3 + namespace: demo-3 + ... +spec: + backend: + gcs: + bucket: stash-testing + prefix: redis-backup/demo-3/redis/sample-redis-3 + storageSecretName: gcs-secret +``` + +Here, you can see that Stash has resolved the variables in `prefix` field and substituted them with the equivalent information from this new database. + +#### Verify BackupConfiguration + +If everything goes well, Stash should create a `BackupConfiguration` for our Redis in `demo-3` namespace and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +❯ kubectl get backupconfiguration -n demo-3 +NAME TASK SCHEDULE PAUSED PHASE AGE +app-sample-redis-3 redis-backup-6.2.5 */5 * * * * Ready 62s +``` + +Now, let's check the YAML of the `BackupConfiguration`. + +```yaml +❯ kubectl get backupconfiguration -n demo-3 app-sample-redis-3 -o yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: app-sample-redis-3 + namespace: demo-3 + ... +spec: + driver: Restic + repository: + name: app-sample-redis-3 + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis-3 + task: + name: redis-backup-6.2.5 + params: + - name: args + value: -db 0 + tempDir: {} +status: + conditions: + - lastTransitionTime: "2021-07-29T14:23:58Z" + message: Repository demo-3/app-sample-redis-3 exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2021-07-29T14:23:58Z" + message: Backend Secret demo-3/gcs-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2021-07-29T14:23:58Z" + message: Backup target appcatalog.appscode.com/v1alpha1 appbinding/sample-redis-3 + found. + reason: TargetAvailable + status: "True" + type: BackupTargetFound + - lastTransitionTime: "2021-07-29T14:23:58Z" + message: Successfully created backup triggering CronJob. + reason: CronJobCreationSucceeded + status: "True" + type: CronJobCreated + observedGeneration: 1 +``` + +Notice the `task` section. The `args` parameter that we had passed via annotations has been added to the `params` section. + +Also, notice the `target` section. Stash has automatically added the new Redis as the target of this `BackupConfiguration`. + +#### Verify Backup + +Now, let's wait for a backup run to complete. You can watch for `BackupSession` as below, + +```bash +❯ kubectl get backupsession -n demo-3 -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +app-sample-redis-3-1627568709 BackupConfiguration app-sample-redis-3 Running 20s +app-sample-redis-3-1627568709 BackupConfiguration app-sample-redis-3 Succeeded 1m43.931692282s 103s +``` + +Once the backup has been completed successfully, you should see that Stash has created a new directory as pointed by the `prefix` field of the new `Repository` and stored the backed up data there. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +## Cleanup + +To cleanup the resources crated by this tutorial, run the following commands, + +```bash +# cleanup sample-redis-1 resources +❯ helm uninstall sample-redis-1 -n demo-1 +❯ kubectl delete appbinding sample-redis-1 -n demo-1 +❯ kubectl delete repository -n demo-1 --all + +# cleanup sample-redis-2 resources +❯ helm uninstall sample-redis-2 -n demo-2 +❯ kubectl delete appbinding sample-redis-2 -n demo-2 +❯ kubectl delete repository -n demo-2 --all + +# cleanup sample-redis-3 resources +❯ helm uninstall sample-redis-3 -n demo-3 +❯ kubectl delete appbinding sample-redis-3 -n demo-3 +❯ kubectl delete repository -n demo-3 --all + +# cleanup BackupBlueprint +❯ kubectl delete backupblueprint redis-backup-template +``` diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/backup/multi-retention-policy.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/multi-retention-policy.yaml new file mode 100644 index 0000000000..430c3c4fd3 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/multi-retention-policy.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: sample-redis-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/backup/passing-args.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/passing-args.yaml new file mode 100644 index 0000000000..90a9d22bdb --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/passing-args.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + params: + - name: args + value: -db 1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/backup/resource-limit.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/resource-limit.yaml new file mode 100644 index 0000000000..310b6b6177 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/resource-limit.yaml @@ -0,0 +1,29 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/backup/specific-user.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/specific-user.yaml new file mode 100644 index 0000000000..54e877a18b --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/backup/specific-user.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/restore/passing-args.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/passing-args.yaml new file mode 100644 index 0000000000..ef84e8e5cc --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/passing-args.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + params: + - name: args + value: --pipe-timeout 300 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/restore/resource-limit.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/resource-limit.yaml new file mode 100644 index 0000000000..cb71b7aaa9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/resource-limit.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-snapshot.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-snapshot.yaml new file mode 100644 index 0000000000..ca36e05baa --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-snapshot.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [4bc21d6f] diff --git a/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-user.yaml b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-user.yaml new file mode 100644 index 0000000000..e681c5bbdb --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/examples/restore/specific-user.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/redis/customization/index.md b/content/docs/v2024.8.27/addons/redis/customization/index.md new file mode 100644 index 0000000000..ee7eca9c86 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/customization/index.md @@ -0,0 +1,355 @@ +--- +title: Redis Backup Customization | Stash +description: Customizing Redis Backup and Restore process with Stash +menu: + docs_v2024.8.27: + identifier: stash-redis-customization + name: Customizing Backup & Restore Process + parent: stash-redis + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing Backup and Restore Process + +Stash provides rich customization supports for the backup and restore process to meet the requirements of various cluster configurations. This guide will show you some examples of these customizations. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/redis/customization/examples). + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, ignoring some indexes during the backup process, etc. + +### Passing arguments to the backup process + +Stash Redis addon uses [redis-dump-go](https://github.com/yannh/redis-dump-go) for backup. You can pass arguments to the `redis-dump-go` through `args` param under `task.params` section. + +The below example shows how you can pass the `-db 1` to take backup only the database with index 1. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + params: + - name: args + value: -db 1 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Running backup job as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.pod` section. The below example shows how you can run the backup job as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup job + +If you want to specify the Memory/CPU limit/request for your backup job, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: sample-redis-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +Stash uses `redis-cli` during the restore process. In this section, we are going to show how you can pass arguments to the restore process, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process + +Similar to the backup process, you can pass arguments to the restore process through the `args` params under `task.params` section. Here, we have passed `--pipe-timeout` argument to the `redis-cli`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + params: + - name: args + value: --pipe-timeout 300 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [latest] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore job as a specific user + +You can provide `securityContext` under `runtimeSettings.pod` section to run the restore job as a specific user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore job + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore job. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/addons/redis/helm/examples/appbinding.yaml b/content/docs/v2024.8.27/addons/redis/helm/examples/appbinding.yaml new file mode 100644 index 0000000000..26c2b73bb0 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/helm/examples/appbinding.yaml @@ -0,0 +1,20 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis + namespace: demo +spec: + clientConfig: + service: + name: sample-redis-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 diff --git a/content/docs/v2024.8.27/addons/redis/helm/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/addons/redis/helm/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..541464f51e --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/helm/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/addons/redis/helm/examples/repository.yaml b/content/docs/v2024.8.27/addons/redis/helm/examples/repository.yaml new file mode 100644 index 0000000000..112349ead9 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/helm/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/redis/sample-redis + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/addons/redis/helm/examples/restoresession.yaml b/content/docs/v2024.8.27/addons/redis/helm/examples/restoresession.yaml new file mode 100644 index 0000000000..c5ebeebbd2 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/helm/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/addons/redis/helm/images/sample-redis-backup.png b/content/docs/v2024.8.27/addons/redis/helm/images/sample-redis-backup.png new file mode 100644 index 0000000000..c646174c77 Binary files /dev/null and b/content/docs/v2024.8.27/addons/redis/helm/images/sample-redis-backup.png differ diff --git a/content/docs/v2024.8.27/addons/redis/helm/index.md b/content/docs/v2024.8.27/addons/redis/helm/index.md new file mode 100644 index 0000000000..e08d890dd6 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/helm/index.md @@ -0,0 +1,633 @@ +--- +title: Logical Backup & Restore Redis | Stash +description: Take logical backup of Redis database using Stash +menu: + docs_v2024.8.27: + identifier: stash-redis-helm + name: Helm managed Redis + parent: stash-redis + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Take a logical backup of the Redis database using Stash + +Stash `{{< param "info.version" >}}` supports backup and restoration of Redis databases. This guide will show you how you can take a logical backup of your Redis databases and restore them using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you are not familiar with how Stash backup and restore Redis databases, please check the following guide [here](/docs/v2024.8.27/addons/redis/overview/). + +You have to be familiar with following custom resources: + +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. Create `demo` namespace if you haven't created already. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/redis/helm/examples). + +## Prepare Redis + +In this section, we are going to deploy a Redis database. Then, we are going to insert some sample data into it. + +### Deploy Redis + +At first, let's deploy a Redis database. Here, we are going to use [bitnami/redis](https://artifacthub.io/packages/helm/bitnami/redis) chart from [ArtifactHub](https://artifacthub.io/). + +Let's deploy a Redis database named `sample-redis` using Helm as below, + +```bash +# Add bitnami chart registry +$ helm repo add bitnami https://charts.bitnami.com/bitnami +# Update helm registries +$ helm repo update +# Install bitnami/redis chart into demo namespace +$ helm install sample-redis bitnami/redis -n demo +``` + +This chart will create the necessary StatefulSet, Secret, Service etc. for the database. You can easily view all the resources created by chart using [ketall](https://github.com/corneliusweig/ketall) `kubectl` plugin as below, + +```bash +❯ kubectl get-all -n demo -l app.kubernetes.io/instance=sample-redis +NAME NAMESPACE AGE +configmap/sample-redis-configuration demo 117s +configmap/sample-redis-health demo 117s +configmap/sample-redis-scripts demo 117s +endpoints/sample-redis-headless demo 117s +endpoints/sample-redis-master demo 117s +endpoints/sample-redis-replicas demo 117s +persistentvolumeclaim/redis-data-sample-redis-master-0 demo 117s +persistentvolumeclaim/redis-data-sample-redis-replicas-0 demo 117s +persistentvolumeclaim/redis-data-sample-redis-replicas-1 demo 79s +persistentvolumeclaim/redis-data-sample-redis-replicas-2 demo 51s +pod/sample-redis-master-0 demo 117s +pod/sample-redis-replicas-0 demo 117s +pod/sample-redis-replicas-1 demo 79s +pod/sample-redis-replicas-2 demo 51s +secret/sample-redis demo 117s +serviceaccount/sample-redis demo 117s +service/sample-redis-headless demo 117s +service/sample-redis-master demo 117s +service/sample-redis-replicas demo 117s +controllerrevision.apps/sample-redis-master-755dd8b64d demo 117s +controllerrevision.apps/sample-redis-replicas-7b8c7694bf demo 117s +statefulset.apps/sample-redis-master demo 117s +statefulset.apps/sample-redis-replicas demo 117s +endpointslice.discovery.k8s.io/sample-redis-headless-6bvt2 demo 117s +endpointslice.discovery.k8s.io/sample-redis-master-78wcv demo 117s +endpointslice.discovery.k8s.io/sample-redis-replicas-vhc7z demo 117s +``` + +Now, wait for the database pod `sample-redis-master-0` to go into `Running` state, + +```bash +❯ kubectl get pod -n demo sample-redis-master-0 +NAME READY STATUS RESTARTS AGE +sample-redis-master-0 1/1 Running 0 2m57s +``` + +Once the database pod is in `Running` state, verify that the database is ready to accept the connections. + +```bash +❯ kubectl logs -n demo sample-redis-master-0 +1:C 28 Jul 2021 13:03:28.191 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +1:C 28 Jul 2021 13:03:28.191 # Redis version=6.2.5, bits=64, commit=00000000, modified=0, pid=1, just started +1:C 28 Jul 2021 13:03:28.191 # Configuration loaded +1:M 28 Jul 2021 13:03:28.192 * monotonic clock: POSIX clock_gettime +1:M 28 Jul 2021 13:03:28.192 * Running mode=standalone, port=6379. +1:M 28 Jul 2021 13:03:28.192 # Server initialized +1:M 28 Jul 2021 13:03:28.193 * Ready to accept connections +``` + +From the above log, we can see the database is ready to accept connections. + +### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. The helm chart has created a secret with access credentials. Let's find out the credentials from the Secret, + +```yaml +❯ kubectl get secret -n demo sample-redis -o yaml +apiVersion: v1 +data: + redis-password: WTFZTENrZmNpcw== +kind: Secret +metadata: + annotations: + meta.helm.sh/release-name: sample-redis + meta.helm.sh/release-namespace: demo + creationTimestamp: "2021-07-28T13:03:23Z" + labels: + app.kubernetes.io/instance: sample-redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-14.8.6 + name: sample-redis + namespace: demo + resourceVersion: "530037" + uid: a48ce23a-105d-4d92-9067-c80623cbe269 +type: Opaque + +``` + +Here, we are going to use `redis-password` to authenticate and insert the sample data. + +At first, let's export the password as environment variables to make further commands re-usable. + +```bash +export PASSWORD=$(kubectl get secrets -n demo sample-redis -o jsonpath='{.data.\redis-password}' | base64 -d) +``` + +Now, let's exec into the database pod and insert some sample data, + +```bash +❯ kubectl exec -it -n demo sample-redis-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +# insert some key value pairs +127.0.0.1:6379> set key1 value1 +OK +127.0.0.1:6379> set key2 value2 +OK +# check the inserted data +127.0.0.1:6379> get key1 +"value1" +127.0.0.1:6379> get key2 +"value2" +# exit from redis-cli +127.0.0.1:6379> exit +``` + +We have successfully deployed a Redis database and inserted some sample data into it. In the subsequent sections, we are going to backup these data using Stash. + +## Prepare for Backup + +In this section, we are going to prepare the necessary resources (i.e. database connection information, backend information, etc.) before backup. + +### Ensure Redis Addon + +When you install Stash, it will automatically install all the official database addons. Make sure that Redis addon was installed properly using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com | grep redis +redis-backup-6.2.5 24m +redis-restore-6.2.5 24m +``` + +This addon should be able to take backup of the databases with matching major versions as discussed in [Addon Version Compatibility](/docs/v2024.8.27/addons/redis/README#addon-version-compatibility). + +### Create AppBinding + +Stash needs to know how to connect with the database. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the database. You have to point to the respective `AppBinding` as a target of backup instead of the database itself. + +Stash expect your database Secret to have `password` keys. If your database secret does not have the expected key, the `AppBinding` can also help here. You can specify a `secretTransforms` section with the mapping between the current keys and the desired keys. + +Here, is the YAML of the `AppBinding` that we are going to create for the Redis database we have deployed earlier. + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: sample-redis + namespace: demo +spec: + clientConfig: + service: + name: sample-redis-master + path: / + port: 6379 + scheme: http + secret: + name: sample-redis + secretTransforms: + - renameKey: + from: redis-password + to: password + type: redis + version: 6.2.5 +``` + +Here, + +- **.spec.clientConfig.service** specifies the Service information to use to connects with the database. +- **.spec.secret** specifies the name of the Secret that holds necessary credentials to access the database. If your Redis is not using authentication, then don't provide this field. +- **.spec.secretTransforms** specifies the transformations required to achieve the desired keys from the current Secret. You can apply the following transformations here: + - **addKey**: If your database Secret does not have an equivalent key expected by Stash, you can add the key using `addKey` transformation. + - **renameKey**: If your database Secret does not have a key expected by Stash but it has an equivalent key that is used for the same purpose, you can use `renameKey` transformation to specify the mapping between the keys. For example, our Redis Secret didn't have `password` key but it has an equivalent `redis-password` key that contains password for the database. Hence, we are telling Stash using `renameKey` transformation that the `redis-password` should be used as `password` key. + - **addKeysFrom**: You can also merge keys from another Secret using `addKeysFrom` transformation. You have to specify the respective Secret name and namespace as below: + ```yaml + addKeysFrom: + name: + namespace: + ``` +- `spec.type` specifies the type of the database. This is particularly helpful in auto-backup where you want to use different path prefixes for different types of database. + +Let's create the `AppBinding` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/addons/redis/helm/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/sample-redis created +``` + +>The `secretTransforms` does not modify your original database Secret. Stash just uses those transformations to obtain the desired keys from the original Secret. + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. So, we need to create a Secret with GCS credentials and a `Repository` object with the bucket information. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +At first, let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat downloaded-sa-json.key > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, crete a `Repository` object with the information of your desired bucket. Below is the YAML of `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/redis/sample-redis + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/helm/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database into our desired backend. + +### Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective `AppBinding` of our desired database. Then Stash will create a CronJob to periodically backup the database. + +#### Create BackupConfiguration + +Below is the YAML for `BackupConfiguration` object we care going to use to backup the `sample-redis` database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-redis-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: redis-backup-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `.spec.schedule` specifies that we want to backup the database at 5 minutes intervals. +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to backup a Redis database. +- `.spec.repository.name` specifies the Repository CR name we have created earlier with backend information. +- `.spec.target.ref` refers to the AppBinding object that holds the connection information of our targeted database. +- `.spec.retentionPolicy` specifies a policy indicating how we want to cleanup the old backups. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl create -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/helm/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-redis-backup created +``` + + +#### Verify Backup Setup Successful + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-redis-backup redis-backup-6.2.5 */5 * * * * Ready 11s +``` + +#### Verify CronJob + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-redis-backup */5 * * * * False 0 14s +``` + +#### Wait for BackupSession + +The `sample-redis-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +❯ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-redis-backup-1627490702 BackupConfiguration sample-redis-backup 0s +sample-redis-backup-1627490702 BackupConfiguration sample-redis-backup Running 0s +sample-redis-backup-1627490702 BackupConfiguration sample-redis-backup Succeeded 1m18.098555424s 78s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +#### Verify Backup + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +❯ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 93 B 1 2m1s 24m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/redis/sample-redis` directory as specified by `.spec.backend.gcs.prefix` field of the `Repository` object. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> Note: Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore Redis + +If you have followed the previous sections properly, you should have a successful logical backup of your Redis database. Now, we are going to show how you can restore the database from the backed up data. + +### Restore Into the Same Database + +You can restore your data into the same database you have backed up from or into a different database in the same cluster or a different cluster. In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +#### Temporarily Pause Backup + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-redis-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-redis-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-redis-backup patched +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +❯ kubectl get backupconfiguration -n demo sample-redis-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-redis-backup redis-backup-6.2.5 */5 * * * * true Ready 4h47m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-redis-backup */5 * * * * True 0 113s 4h48m +``` + +#### Simulate Disaster + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the database pod and delete the sample data we have inserted earlier. + +```bash +❯ kubectl exec -it -n demo sample-redis-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +# delete the sample data +127.0.0.1:6379> del key1 key2 +(integer) 2 +# verify that the sample data has been deleted +127.0.0.1:6379> get key1 +(nil) +127.0.0.1:6379> get key2 +(nil) +127.0.0.1:6379> exit +``` + +#### Create RestoreSession + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our `sample-redis` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-redis-restore + namespace: demo +spec: + task: + name: redis-restore-6.2.5 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-redis + rules: + - snapshots: [latest] +``` + +Here, + +- `.spec.task.name` specifies the name of the Task object that specifies the necessary Functions and their execution order to restore a Redis database. +- `.spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `.spec.target.ref` refers to the respective AppBinding of the `sample-redis` database. +- `.spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/addons/redis/helm/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-redis-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +❯ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE DURATION AGE +sample-redis-restore gcs-repo Running 6s +sample-redis-restore gcs-repo Running 16s +sample-redis-restore gcs-repo Succeeded 16s +sample-redis-restore gcs-repo Succeeded 16.324570911s 16s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +#### Verify Restored Data + +Now, let's exec into the database pod and verify whether data actual data has been restored or not, + +```bash +❯ kubectl exec -it -n demo sample-redis-master-0 -- redis-cli -a $PASSWORD +Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. +127.0.0.1:6379> get key1 +"value1" +127.0.0.1:6379> get key2 +"value2" +127.0.0.1:6379> exit +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +#### Resume Backup + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +❯ kubectl patch backupconfiguration -n demo sample-redis-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-redis-backup patched +``` + +Verify that the `BackupConfiguration` has been resumed, +```bash +❯ kubectl get backupconfiguration -n demo sample-redis-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-redis-backup redis-backup-6.2.5 */5 * * * * false Ready 4h54m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +❯ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-redis-backup */5 * * * * False 0 3m24s 4h54m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +### Restore Into Different Database of the Same Namespace + +If you want to restore the backed up data into a different database of the same namespace, you have to create another `AppBinding` pointing to the desired database. Then, you have to create the `RestoreSession` pointing to the new `AppBinding`. + +### Restore Into Different Namespace + +If you want to restore into a different namespace of the same cluster, you have to create the Repository, backend Secret, AppBinding, in the desired namespace. You can use [Stash kubectl plugin](https://stash.run/docs/{{< param "info.version" >}}/guides/cli/cli/) to easily copy the resources into a new namespace. Then, you have to create the `RestoreSession` object in the desired namespace pointing to the Repository, AppBinding of that namespace. + +### Restore Into Different Cluster + +If you want to restore into a different cluster, you have to install Stash in the desired cluster. Then, you have to install Stash Redis addon in that cluster too. Then, you have to create the Repository, backend Secret, AppBinding, in the desired cluster. Finally, you have to create the `RestoreSession` object in the desired cluster pointing to the Repository, AppBinding of that cluster. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-redis-backup +kubectl delete -n demo restoresession sample-redis-restore +kubectl delete -n demo repository gcs-repo +# delete the database chart +helm delete sample-redis -n demo +``` diff --git a/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-backup.svg b/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-backup.svg new file mode 100644 index 0000000000..58769ecaa1 --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-backup.svg @@ -0,0 +1,987 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-restore.svg b/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-restore.svg new file mode 100644 index 0000000000..1ad280075f --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/overview/images/redis-logical-restore.svg @@ -0,0 +1,857 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/addons/redis/overview/index.md b/content/docs/v2024.8.27/addons/redis/overview/index.md new file mode 100644 index 0000000000..c3ceffd8dd --- /dev/null +++ b/content/docs/v2024.8.27/addons/redis/overview/index.md @@ -0,0 +1,150 @@ +--- +title: Redis Backup & Restore Overview | Stash +description: How Redis Backup & Restore Works in Stash +menu: + docs_v2024.8.27: + identifier: stash-redis-overview + name: How does it work? + parent: stash-redis + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: stash-addons +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How Stash Backups & Restores Redis Database + +Stash `{{< param "info.version" >}}` supports backup and restore operation of many databases. This guide will give you an overview of how Redis database backup and restore process works in Stash. + +## Logical Backup + +Stash supports taking logical backup of Redis databases using [redis-dump-go](https://github.com/yannh/redis-dump-go). It is the most flexible way to perform a backup and restore, and a good choice when the data size is relatively small. + +### How Logical Backup Works + +The following diagram shows how Stash takes logical backup of a Redis database. Open the image in a new tab to see the enlarged version. + +
+  Redis Backup Overview +
Fig: Redis Logical Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) crd of the desired database. The `BackupConfiguration` object also specifies the `Task` to use to backup the database. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On the next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to backup. + +9. Then, it creates the Job to backup the targeted database. + +10. The backup Job reads necessary information to connect with the database from the `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +11. Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output. + +12. Finally, when the backup is complete, 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. + +### How Restore from Logical Backup Works + +The following diagram shows how Stash restores a Redis database from a logical backup. Open the image in a new tab to see the enlarged version. + +
+  Database Restore Overview +
Fig: Redis Logical Restore Process Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd targeting the `AppBinding` of the desired database 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. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a Job definition to restore. + +4. Then, it creates the Job to restore the target. + +5. The Job reads necessary information to connect with the database from respective `AppBinding` crd. It also reads backend information and access credentials from `Repository` crd and Storage Secret respectively. + +6. Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it. + +7. Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +## Next Steps + +- Backup your Redis database using Stash following the guide from [here](/docs/v2024.8.27/addons/redis/helm/). diff --git a/content/docs/v2024.8.27/concepts/README.md b/content/docs/v2024.8.27/concepts/README.md new file mode 100644 index 0000000000..36126901e6 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/README.md @@ -0,0 +1,103 @@ +--- +title: Concepts | Stash +menu: + docs_v2024.8.27: + identifier: concepts-readme + name: README + parent: concepts + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +url: /docs/v2024.8.27/concepts/ +aliases: +- /docs/v2024.8.27/concepts/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Concepts + +Concepts help you to learn about the different parts of the Stash and the abstractions it uses. + +This concept section is divided into the following modules: + +- What is Stash? + - [Overview](/docs/v2024.8.27/concepts/what-is-stash/overview/) provides an introduction to Stash. It also give an overview of the features it provides. + - [Architecture](/docs/v2024.8.27/concepts/what-is-stash/architecture/) provides a visual representation of Stash architecture. It also provides a brief overview of the components it uses. + +- Declarative API + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) introduces the concept of `Repository` crd that holds backend information in a Kubernetes native way. + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) introduces the concept of `BackupConfiguration` crd that is used to configure backup for a target resource in a Kubernetes native way. + - [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) introduces the concept of `BackupBatch` crd that is used to setup backup of multiple co-related targets under single configuration. + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) introduces the concept of `BackupSession` crd that represents a backup run of a target resource for the respective `BackupConfiguration` or `BackupBatch` object. + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) introduces the concept of `RestoreSession` crd that represents a restore run of a target resource. + - [RestoreBatch](/docs/v2024.8.27/concepts/crds/restorebatch/) introduces the concept of `RestoreBatch` crd that allows restore of multiple targets that were backed up using `BackupBatch` under single configuration. + - [Function](/docs/v2024.8.27/concepts/crds/function/) introduces the concept of `Function` crd that represents a step of a backup or restore process. + - [Task](/docs/v2024.8.27/concepts/crds/task/) introduces the concept of `Task` crd which specifies an ordered collection of multiple `Function`s and their parameters that make up a complete backup or restore process. + - [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) introduces the concept of `BackupBlueprint` crd that specifies a blueprint for `Repository` and `BackupConfiguration` object which provides an option to share backup configuration across similar targets. + - [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) introduces the concept of `AppBinding` crd which holds the information that are necessary to connect with an application like database. + - [Snapshot](/docs/v2024.8.27/concepts/crds/snapshot/) introduces the concept of `Snapshot` object that represents backed up snapshots in a Kubernetes native way. diff --git a/content/docs/v2024.8.27/concepts/_index.md b/content/docs/v2024.8.27/concepts/_index.md new file mode 100644 index 0000000000..8a2444cb5c --- /dev/null +++ b/content/docs/v2024.8.27/concepts/_index.md @@ -0,0 +1,76 @@ +--- +title: Concepts +description: Stash Concepts +menu: + docs_v2024.8.27: + identifier: concepts + name: Concepts + weight: 20 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/concepts/crds/_index.md b/content/docs/v2024.8.27/concepts/crds/_index.md new file mode 100644 index 0000000000..d5b59cd36c --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/_index.md @@ -0,0 +1,77 @@ +--- +title: Declarative API | Stash +description: Declarative API +menu: + docs_v2024.8.27: + identifier: crds + parent: concepts + name: Declarative API + weight: 15 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/concepts/crds/appbinding/appbinding.yaml b/content/docs/v2024.8.27/concepts/crds/appbinding/appbinding.yaml new file mode 100644 index 0000000000..f7c5cd932a --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/appbinding/appbinding.yaml @@ -0,0 +1,22 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: quick-postgres + namespace: demo + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: quick-postgres + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: postgreses.kubedb.com +spec: + type: kubedb.com/postgres + secret: + name: quick-postgres-auth + clientConfig: + service: + name: quick-postgres + path: / + port: 5432 + query: sslmode=disable + scheme: postgresql + version: "10.2" diff --git a/content/docs/v2024.8.27/concepts/crds/appbinding/index.md b/content/docs/v2024.8.27/concepts/crds/appbinding/index.md new file mode 100644 index 0000000000..864a04ff1a --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/appbinding/index.md @@ -0,0 +1,206 @@ +--- +title: AppBinding Overview +menu: + docs_v2024.8.27: + identifier: appbinding-overview + name: AppBinding + parent: crds + weight: 45 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# AppBinding + +## What is AppBinding + +Stash needs to know how to connect with a target database and the credentials necessary to access it. This is done via an `AppBinding`. + +An `AppBinding` is a Kubernetes `CustomResourceDefinition`(CRD) which points to an application using either its URL (usually for a non-Kubernetes resident service instance) or a Kubernetes service object (if self-hosted in a Kubernetes cluster), some optional parameters and a credential secret. To learn more about AppBinding and the problems it solves, please read this blog post: [The case for AppBinding](https://blog.byte.builders/post/the-case-for-appbinding). + +If you deploy a database using [KubeDB](https://kubedb.com/docs/0.11.0/concepts/), `AppBinding` object will be created automatically for it. Otherwise, you have to create an `AppBinding` object manually pointing to your desired database. + +## AppBinding CRD Specification + +Like any official Kubernetes resource, an `AppBinding` has `TypeMeta`, `ObjectMeta` and `Spec` sections. However, unlike other Kubernetes resources, it does not have a `Status` section. + +An `AppBinding` object created by `KubeDB` for PostgreSQL database is shown below, + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: quick-postgres + namespace: demo + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: quick-postgres + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: postgreses.kubedb.com +spec: + type: kubedb.com/postgres + secret: + name: quick-postgres-auth + clientConfig: + service: + name: quick-postgres + path: / + port: 5432 + query: sslmode=disable + scheme: postgresql + version: "10.2" +``` + +Here, we are going to describe the sections of an `AppBinding` crd that are relevant to Stash. + +### AppBinding `Spec` + +An `AppBinding` object has the following fields in the `spec` section that are relevant to Stash: + +#### spec.type + +`spec.type` is an optional field that indicates the type of the app that this `AppBinding` is pointing to. Stash uses this field to resolve the values of `TARGET_APP_TYPE`, `TARGET_APP_GROUP` and `TARGET_APP_RESOURCE` variables of [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) object. + +This field follows the following format: `/`. The above AppBinding is pointing to a `postgres` resource under `kubedb.com` group. + +Here, the variables are parsed as follows: + +| Variable | Usage | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `TARGET_APP_GROUP` | Represents the application group where the respective app belongs (i.e: `kubedb.com`). | +| `TARGET_APP_RESOURCE` | Represents the resource under that application group that this appbinding represents (i.e: `postgres`). | +| `TARGET_APP_TYPE` | Represents the complete type of the application. It's simply `TARGET_APP_GROUP/TARGET_APP_RESOURCE` (i.e: `kubedb.com/postgres`). | + +#### spec.secret + +`spec.secret` specifies the name of the secret which contains the credentials that are required to access the database. This secret must be in the same namespace as the `AppBinding`. + +This secret must contain the following keys: + +PostgreSQL : + +| Key | Usage | +| ------------------- | --------------------------------------------------- | +| `POSTGRES_USER` | Username of the target database. | +| `POSTGRES_PASSWORD` | Password for the user specified by `POSTGRES_USER`. | + +MySQL : + +| Key | Usage | +| ---------- | ---------------------------------------------- | +| `username` | Username of the target database. | +| `password` | Password for the user specified by `username`. | + +MongoDB : + +| Key | Usage | +| ---------- | ---------------------------------------------- | +| `username` | Username of the target database. | +| `password` | Password for the user specified by `username`. | + +Elasticsearch: + +| Key | Usage | +| ---------------- | ----------------------- | +| `ADMIN_USERNAME` | Admin username | +| `ADMIN_PASSWORD` | Password for admin user | + +#### spec.clientConfig + +`spec.clientConfig` defines how to communicate with the target database. You can use either an URL or a Kubernetes service to connect with the database. You don't have to specify both of them. + +You can configure following fields in `spec.clientConfig` section: + +- **spec.clientConfig.url** + + `spec.clientConfig.url` gives the location of the database, in standard URL form (i.e. `[scheme://]host:port/[path]`). This is particularly useful when the target database is running outside of the Kubernetes cluster. If your database is running inside the cluster, use `spec.clientConfig.service` section instead. + + > Note that, attempting to use a user or basic auth (e.g. `user:password@host:port`) is not allowed. Stash will insert them automatically from the respective secret. Fragments ("#...") and query parameters ("?...") are not allowed either. + +- **spec.clientConfig.service** + + If you are running the database inside the Kubernetes cluster, you can use Kubernetes service to connect with the database. You have to specify the following fields in `spec.clientConfig.service` section if you manually create an `AppBinding` object. + + - **name :** `name` indicates the name of the service that connects with the target database. + - **scheme :** `scheme` specifies the scheme (i.e. http, https) to use to connect with the database. + - **port :** `port` specifies the port where the target database is running. + +- **spec.clientConfig.insecureSkipTLSVerify** + + `spec.clientConfig.insecureSkipTLSVerify` is used to disable TLS certificate verification while connecting with the database. We strongly discourage to disable TLS verification during backup. You should provide the respective CA bundle through `spec.clientConfig.caBundle` field instead. + +- **spec.clientConfig.caBundle** + + `spec.clientConfig.caBundle` is a PEM encoded CA bundle which will be used to validate the serving certificate of the database. + +## Next Steps + +- Learn how to backup/restore databases using Stash from [here](/docs/v2024.8.27/guides/addons/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/backupbatch/backupbatch.yaml b/content/docs/v2024.8.27/concepts/crds/backupbatch/backupbatch.yaml new file mode 100644 index 0000000000..405ec665a8 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupbatch/backupbatch.yaml @@ -0,0 +1,57 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: deploy-backup-batch + namespace: demo +spec: + repository: + name: minio-repo + namespace: demo + schedule: "*/3 * * * *" + members: + - target: + alias: db + ref: + apiVersion: apps/v1 + kind: AppBinding + name: wordpress-mysql + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + volumeMounts: + - name: wordpress-persistent-storage + mountPath: /var/www/html + paths: + - /var/www/html + exclude: + - /var/www/html/my-file.html + - /var/www/html/*.json + executionOrder: Parallel + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreBackup hook demo" + containerName: my-database-container + postBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PostBackup hook demo" + containerName: my-database-container + retryConfig: + maxRetry: 3 + delay: 10m + timeOut: 1h30m + retentionPolicy: + name: 'keep-last-10' + keepLast: 10 + prune: true diff --git a/content/docs/v2024.8.27/concepts/crds/backupbatch/index.md b/content/docs/v2024.8.27/concepts/crds/backupbatch/index.md new file mode 100644 index 0000000000..6d3070eeba --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupbatch/index.md @@ -0,0 +1,252 @@ +--- +title: BackupBatch Overview +menu: + docs_v2024.8.27: + identifier: backupbatch-overview + name: BackupBatch + parent: crds + weight: 15 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# BackupBatch + +## What is BackupBatch + +Sometimes, a single component may not meet the requirement for your application. For example, in order to deploy a WordPress, you will need a Deployment for the WordPress and another Deployment for a database to store its contents. Now, you may want to backup both of the deployment and database together as they are parts of a single application. + +A `BackupBatch` is a Kubernetes `CustomResourceDefinition`(CRD) which lets you configure backup for multiple co-related components(workload, database, etc.) together. + +## BackupBatch CRD Specification + +Like any official Kubernetes resource, a `BackupBatch` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +A sample `BackupBatch` object to backup multiple co-related components is shown below: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: deploy-backup-batch + namespace: demo +spec: + repository: + name: minio-repo + namespace: demo + schedule: "*/3 * * * *" + members: + - target: + alias: db + ref: + apiVersion: apps/v1 + kind: AppBinding + name: wordpress-mysql + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + volumeMounts: + - name: wordpress-persistent-storage + mountPath: /var/www/html + paths: + - /var/www/html + exclude: + - /var/www/html/my-file.html + - /var/www/html/*.json + executionOrder: Parallel + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreBackup hook demo" + containerName: my-database-container + postBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PostBackup hook demo" + containerName: my-database-container + retryConfig: + maxRetry: 3 + delay: 10m + timeOut: 1h30m + retentionPolicy: + name: 'keep-last-10' + keepLast: 10 + prune: true +``` + +Here, we are going to describe the various sections of `BackupBatch` crd. + +### BackupBatch `Spec` + +A `BackupBatch` object has the following fields in the `spec` section. + +#### spec.driver + +`spec.driver` indicates the mechanism used to backup. Currently, Stash supports `Restic` and `VolumeSnapshotter` as drivers. The default value of this field is `Restic`. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specdriver). + +#### spec.repository + +`spec.repository.name` indicates the `Repository` crd name that holds necessary backend information where the backed up data will be stored. + +#### spec.schedule + +`spec.schedule` is a [cron expression](https://en.wikipedia.org/wiki/Cron) that specifies the schedule of backup. Stash creates a Kubernetes [CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) with this schedule. + +#### spec.executionOrder + +`spec.executionOrder` specifies whether Stash should backup the targets sequentially or parallelly. If `spec.executionOrder` is set to `Parallel`, Stash will start backup of all the targets simultaneously. If it is set to `Sequential`, Stash will not start backup of a target until all the previous members have completed their backup process. The default value of this field is `Parallel`. + +#### spec.members + +`spec.members` field specifies a list of targets to backup. Each member consists of the following fields: + +- **target :** Each member has a target specification. The target specification of a member is the same as the target specification of a `BackupConfiguration` explained [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spectarget). + +- **task :** `task` specifies the name and parameters of the [Task](/docs/v2024.8.27/concepts/crds/task/) crd to use to backup the target. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spectask). + +- **runtimeSettings :** `runtimeSettings` allows to configure runtime environment for the backup sidecar or job. You can specify runtime settings at both pod level and container level. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specruntimesettings). + +- **tempDir :** Stash mounts an `emptyDir` for holding temporary files. It is also used for `caching` for faster backup performance. You can configure the `emptyDir` using `tempDir` section. You can also disable `caching` using this field. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spectempdir). + +- **interimVolumeTemplate :** For some targets (i.e. some databases), Stash can't directly pipe the dumped data to the uploading process. In this case, it has to store the dumped data temporarily before uploading to the backend. `interimVolumeTemplate` specifies a PVC template for holding those data temporarily. Stash will create a PVC according to the template and use it to store the data temporarily. This PVC will be deleted according to the [backupHistoryLimit](#specbackuphistorylimit). For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specinterimvolumetemplate). + +- **hooks :** Each member has its own hook field which allows you to execute member-specific pre-backup or post-backup hooks. For more details about hooks, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spechooks). + +#### spec.hooks + +`spec.hooks` allows performing some global actions before and after the backup process of the members. You can send HTTP requests to a remote server via `httpGet` or `httpPost`. You can check whether a TCP port is open using `tcpSocket` hooks. You can also execute some commands using `exec` hook. + +- **spec.hooks.preBackup:** `spec.hooks.preBackup` hooks are executed on each backup session before taking backup of any of the members. +- **spec.hooks.postBackup:** `spec.hooks.postBackup` hooks are executed on each backup session after taking backup of all the members. + +For more details on how hooks work in Stash and how to configure different types of hook, please visit [here](/docs/v2024.8.27/guides/hooks/overview/). + +#### spec.runtimeSettings + +`spec.runtimeSettings` This runtime settings is applicable for CronJob(used to create `BackupSession`) only. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specruntimesettings). + +#### spec.backupHistoryLimit + +`spec.backupHistoryLimit` specifies the number of `BackupSession` and its associate resources (Job, PVC etc.) to keep for debugging purposes. The default value of this field is 1. Stash will clean up the old `BackupSession` and it's associate resources after each backup session according to `backupHistoryLimit`. + +#### spec.paused + +`spec.paused` can be used as `enable/disable` switch for backup. If it is set `true`, Stash will not take any backup of the target specified by this BackupBatch. + +#### spec.retentionPolicy + +`spec.retentionPolicy` specifies the policy to follow for cleaning old snapshots. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + + +#### spec.retryConfig + +`spec.retryConfig` specifies a retry logic for failed backup. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretryconfig). + +#### spec.timeOut + +`spec.timeOut` specifies the maximum duration of the backup. For more details, please see [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spectimeout). + +### BackupBatch `Status` + +A `BackupBatch` object has the following fields in the `status` section. + +- **observedGeneration :** The most recent generation observed by the `BackupBatch` controller. + +- **conditions :** The `status.conditions` shows current backup setup condition for this BackupBatch. The following conditions are set by the Stash operator: + +| Condition Type | Usage | +| -------------------- | -------------------------------------------------------------------- | +| `RepositoryFound` | Indicates whether the respective Repository object was found or not. | +| `BackendSecretFound` | Indicates whether the respective backend secret was found or not. | +| `CronJobCreated` | Indicates whether the backup triggering CronJob was created or not. | + +- **memberConditions :** Shows current backup setup condition of the members of a `BackupBatch`. Each entry has the following two fields: + - **target :** Points to the respective target whose condition is shown here. + - **conditions:** Shows the current backup setup condition of this member. + +The following conditions are set for the members of a `BackupBatch`. + +| Condition Type | Usage | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `BackupTargetFound` | Indicates whether the backup target was found or not. | +| `StashSidecarInjected` | Indicates whether `stash` sidecar was injected into the targeted workload or not. This condition is set only for the target that uses the sidecar model. | + +## Next Steps + +- Learn how to configure `BackupBatch` to backup data from [here](/docs/v2024.8.27/guides/batch-backup/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/backupblueprint/backupblueprint.yaml b/content/docs/v2024.8.27/concepts/crds/backupblueprint/backupblueprint.yaml new file mode 100644 index 0000000000..e93f1aa854 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupblueprint/backupblueprint.yaml @@ -0,0 +1,35 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: workload-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-backup + prefix: stash/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + wipeOut: false + # backupNamespace: stash + # ============== Blueprint for BackupConfiguration ================= + schedule: "* * * * *" + backupHistoryLimit: 3 + timeOut: 30m + retryConfig: + maxRetry: 3 + delay: 10m + # task: # no task section is required for workload data backup + # name: workload-backup + runtimeSettings: + container: + securityContext: + runAsUser: 2000 + runAsGroup: 2000 + tempDir: + medium: "Memory" + sizeLimit: "1Gi" + disableCaching: false + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/concepts/crds/backupblueprint/index.md b/content/docs/v2024.8.27/concepts/crds/backupblueprint/index.md new file mode 100644 index 0000000000..ada083a3cd --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupblueprint/index.md @@ -0,0 +1,199 @@ +--- +title: BackupBlueprint Overview +menu: + docs_v2024.8.27: + identifier: backupblueprint-overview + name: BackupBlueprint + parent: crds + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# BackupBlueprint + +## What is BackupBlueprint + +Stash uses 1-1 mapping among `Repository`, `BackupConfiguration` and the target. So, whenever you want to backup a target(workload/PV/PVC/database), you have to create a `Repository` and `BackupConfiguration` object. This could become tiresome when you are trying to backup similar types of target and the `Repository` and `BackupConfiguration` has only slight difference. To mitigate this problem, Stash provides a way to specify a blueprint for these two objects via `BackupBlueprint` crd. + +A `BackupBlueprint` is a Kubernetes `CustomResourceDefinition`(CRD) which specifies a blueprint for `Repository` and `BackupConfiguration` in a Kubernetes native way. + +You have to create only one `BackupBlueprint` for all similar types of workloads (i.e. Deployment, DaemonSet, StatefulSet etc.). Then, you just need to add some annotations in the target workload. Stash will automatically create respective `Repository`, `BackupConfiguration` object using the blueprint. In Stash parlance, we call this process as **auto backup**. + +## BackupBlueprint CRD Specification + +Like any official Kubernetes resource, a `BackupBlueprint` has `TypeMeta`, `ObjectMeta` and `Spec` sections. However, unlike other Kubernetes resources, it does not have a `Status` section. + +A sample `BackupBlueprint` object to auto backup the volumes of a Deployment is shown below, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: workload-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-backup + prefix: stash/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + wipeOut: false + # backupNamespace: stash + # ============== Blueprint for BackupConfiguration ================= + schedule: "* * * * *" + backupHistoryLimit: 3 + timeOut: 30m + retryConfig: + maxRetry: 3 + delay: 10m + # task: # no task section is required for workload data backup + # name: workload-backup + runtimeSettings: + container: + securityContext: + runAsUser: 2000 + runAsGroup: 2000 + tempDir: + medium: "Memory" + sizeLimit: "1Gi" + disableCaching: false + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +The sample `BackupBlueprint` that has been shown above can be used to backup Deployments, DaemonSets, StatefulSets, ReplicaSets and ReplicationControllers. You only have to add some annotations to these workloads. For more details on how auto backup works in Stash, please visit [here](/docs/v2024.8.27/guides/auto-backup/overview/). + +Here, we are going to describe the various sections of `BackupBlueprint` crd. + +### BackupBlueprint `Spec` + +We can divide BackupBlueprint's `.spec` section into two parts. One part specifies a blueprint for `Repository` object and other specifies a blueprint for `BackupConfiguration` object. + +#### Repository Blueprint + +You can configure `Repository` blueprint using `spec.backend` field and `spec.wipeOut` field. + +- **spec.backend :** `spec.backend` field is backend specification similar to [spec.backend](/docs/v2024.8.27/concepts/crds/repository/#specbackend) field of a `Repository` crd. There is only one difference. You can now templatize `prefix` section (`subPath` for local volume) of the backend to store backed up data of different workloads at different directory. You can use the following variables to templatize `spec.backend` field: + +| Variable | Usage | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `TARGET_API_VERSION` | API version of the target | +| `TARGET_KIND` | Resource kind of the target | +| `TARGET_NAMESPACE` | Namespace of the target | +| `TARGET_NAME` | Name of the target | +| `TARGET_RESOURCE` | Plural form of the target kind. i.e. `deployments`, `statefulsets` etc. | + +The following variables are available only for database backup. + +| Variable | Usage | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `TARGET_APP_GROUP` | Represents the application group where the respective app belongs (i.e: `kubedb.com`). | +| `TARGET_APP_RESOURCE` | Represents the resource kind under that application group that the respective app works with (i.e: `postgres`). | +| `TARGET_APP_TYPE` | Represents the total types of the application. It's simply `TARGET_APP_GROUP/TARGET_APP_RESOURCE` (i.e: `kubedb.com/postgres`). | + + If you use the sample `BackupBlueprint` that has been shown above to backup a Deployment named `my-deploy` of `test` namespace, the backed up data will be stored in `stash/test/deployment/my-deploy` directory of the `stash-backup` bucket. Similarly, if you want to backup a StatefulSet with name `my-sts` of same namespace, the backed up data will be stored in `/stash/test/statefulset/my-sts` directory of the backend. + +- **spec.backend.\.storageSecretName:** specifies the name of the secret that holds the access credentials to the backend. + +>Note: `BackupBlueprint` is a non-namespaced crd. So, you can use a `BackupBlueprint` to backup targets in multiple namespaces. However, Storage Secret is a namespaced object. So, you have to manually create the secret in each namespace where you have a target for backup. + +- **spec.wipeOut :** `spec.wipeOut` indicates whether Stash should delete the respective backed up data from the backend if a user deletes a `Repository` crd. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/repository/#specwipeout). + +#### BackupConfiguration Blueprint + +You can provide a blueprint for the `BackupConfiguration` object that will be created for respective target using the following fields: + +- **spec.schedule :** `spec.schedule` is the schedule that will be used to create `BackupConfiguration` for respective target. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specschedule). + +- **spec.backupHistoryLimit :** `spec.backupHistoryLimit` specifies a limit for backup history to keep for debugging purposes. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specbackuphistroylimit). + +- **spec.backupNamespace :** `spec.backupNamespace` specifies the namespace where the backup resources (i.e. BackupConfiguration, BackupSession, Job, Repository etc.) will be created. + +- **spec.retryConfig :** `spec.retryConfig` specifies a retry logic for failed backup. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretryconfig). + +- **spec.task :** `spec.task` specifies the name and the parameters of [Task](/docs/v2024.8.27/concepts/crds/task/) to use to backup the target. You can template the name field with `TARGET_APP_VERSION` variable for database backup. Stash will replace this variable with respective database version. This will allow you to backup multiple database versions with the same `BackupBlueprint`. For more details, please check the following [guide](/docs/v2024.8.27/guides/auto-backup/database/). + +- **spec.runtimeSettings :** `spec.runtimeSettings` allows to configure runtime environment for backup sidecar or job. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specruntimesettings). + +- **spec.tempDir :** `spec.tempDir` specifies the temporary volume setting that will be used to create respective `BackupConfiguration` object. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#spectempdir). + +- **spec.interimVolumeTemplate :** `spec.interimVolumeTemplate` specifies a PVC template for holding data temporarily before uploading to the backend. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specinterimvolumetemplate). + +- **spec.retentionPolicy :** `spec.retentionPolicy` specifies the retention policies that will be used to create respective `BackupConfiguration` object. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Next Steps + +- Learn how to use `BackupBlueprint` for auto backup of workloads data from [here](/docs/v2024.8.27/guides/auto-backup/workload/). +- Learn how to use `BackupBlueprint` for auto backup of database from [here](/docs/v2024.8.27/guides/auto-backup/database/). +- Learn how to use `BackupBlueprint` for auto backup of stand-alone PVC from [here](/docs/v2024.8.27/guides/auto-backup/pvc/). diff --git a/content/docs/v2024.8.27/concepts/crds/backupconfiguration/backupconfiguration.yaml b/content/docs/v2024.8.27/concepts/crds/backupconfiguration/backupconfiguration.yaml new file mode 100644 index 0000000000..f8ee28a25a --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupconfiguration/backupconfiguration.yaml @@ -0,0 +1,77 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: demo-backup + namespace: demo +spec: + driver: Restic + repository: + name: local-repo + namespace: demo + # task: + # name: workload-backup # task field is not required for workload data backup but it is necessary for database backup. + schedule: "* * * * *" # backup at every minutes + paused: false + backupHistoryLimit: 3 + timeOut: 2h + target: + alias: app-data + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + paths: + - /source/data + exclude: + - /source/data/not-important.txt + - /source/data/*.html + - /source/data/tmp/* + volumeMounts: + - name: source-data + mountPath: /source/data + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreBackup hook demo" + containerName: my-app-container + postBackup: + executionPolicy: Always + exec: + command: + - /bin/sh + - -c + - echo "Sample PostBackup hook demo" + containerName: my-app-container + runtimeSettings: + container: + resources: + requests: + memory: 256M + limits: + memory: 256M + securityContext: + runAsUser: 2000 + runAsGroup: 2000 + nice: + adjustment: 5 + ionice: + class: 2 + classData: 4 + pod: + imagePullSecrets: + - name: my-private-registry-secret + serviceAccountName: my-backup-svc + tempDir: + medium: "Memory" + sizeLimit: "2Gi" + disableCaching: false + retryConfig: + maxRetry: 3 + delay: 10m + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/concepts/crds/backupconfiguration/index.md b/content/docs/v2024.8.27/concepts/crds/backupconfiguration/index.md new file mode 100644 index 0000000000..7fa66460ef --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupconfiguration/index.md @@ -0,0 +1,362 @@ +--- +title: BackupConfiguration Overview +menu: + docs_v2024.8.27: + identifier: backupconfiguration-overview + name: BackupConfiguration + parent: crds + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# BackupConfiguration + +## What is BackupConfiguration + +A `BackupConfiguration` is a Kubernetes `CustomResourceDefinition`(CRD) which specifies the backup target, parameters(schedule, retention policy etc.) and a `Repository` object that holds snapshot storage information in a Kubernetes native way. + +You have to create a `BackupConfiguration` object for each backup target. A backup target can be a workload, database or a PV/PVC. + +## BackupConfiguration CRD Specification + +Like any official Kubernetes resource, a `BackupConfiguration` has `TypeMeta`, `ObjectMeta` and `Spec` sections. However, unlike other Kubernetes resources, it does not have a `Status` section. + +A sample `BackupConfiguration` object to backup the volumes of a Deployment is shown below: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: demo-backup + namespace: demo +spec: + driver: Restic + repository: + name: local-repo + namespace: demo + # task: + # name: workload-backup # task field is not required for workload data backup but it is necessary for database backup. + schedule: "* * * * *" # backup at every minutes + paused: false + backupHistoryLimit: 3 + timeOut: 2h + target: + alias: app-data + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + paths: + - /source/data + exclude: + - /source/data/not-important.txt + - /source/data/*.html + - /source/data/tmp/* + volumeMounts: + - name: source-data + mountPath: /source/data + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreBackup hook demo" + containerName: my-app-container + postBackup: + executionPolicy: Always + exec: + command: + - /bin/sh + - -c + - echo "Sample PostBackup hook demo" + containerName: my-app-container + runtimeSettings: + container: + resources: + requests: + memory: 256M + limits: + memory: 256M + securityContext: + runAsUser: 2000 + runAsGroup: 2000 + nice: + adjustment: 5 + ionice: + class: 2 + classData: 4 + pod: + imagePullSecrets: + - name: my-private-registry-secret + serviceAccountName: my-backup-svc + tempDir: + medium: "Memory" + sizeLimit: "2Gi" + disableCaching: false + retryConfig: + maxRetry: 3 + delay: 10m + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we are going to describe the various sections of `BackupConfiguration` crd. + +### BackupConfiguration `Spec` + +A `BackupConfiguration` object has the following fields in the `spec` section. + +#### spec.driver + +`spec.driver` indicates the mechanism used to backup a target. Currently, Stash supports `Restic` and `VolumeSnapshotter` as drivers. The default value of this field is `Restic`. + +| Driver | Usage | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Restic` | Used to backup workload data, persistent volumes data and databases. It uses [restic](https://restic.net) to backup the target. | +| `VolumeSnapshotter` | Used to take snapshot of PersistentVolumeClaims of a targeted workload. It leverages Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) crd and CSI driver to snapshot the PVCs. | + +#### spec.target + +`spec.target` field indicates the target for backup runs. This field consists of the following sub-fields: + +- **spec.target.alias :** The alias is used as an identifer of the backed up data in the backend. This is particularly useful for `BackupBatch` where multiple targets are backed up into a single repository. + +- **spec.target.ref :** `spec.target.ref` refers to the target of backup. You have to specify `apiVersion`, `kind` and `name` of the target. Stash will use this information to inject a sidecar to the target or to create a backup job for it. + +- **spec.target.paths :** `spec.target.paths` specifies list of file paths to backup. + +- **spec.target.exclude :** Specifies a list of pattern for the files that should be ignored during backup. Stash will not backup the files that matches these patterns. + +- **spec.target.volumeMounts :** `spec.target.volumeMounts` are the list of volumes and their `mountPath`s that contain the target file paths. Stash will mount these volumes inside a sidecar container or a backup job. + +- **spec.target.snapshotClassName:** `spec.target.snapshotClassName` indicates the [VolumeSnapshotClass](https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/) to use for volume snasphotting. Use this field only if `spec.driver` is set to `VolumeSnapshotter`. + +#### spec.repository + +`spec.repository` specifies the name and namespace of the Repository CR that holds the necessary backend information where the backed up data will be stored. + +- `spec.repository.name` specifies the name of the Repository CR. +- `spec.repository.namespace` specifies the namespace of the Repository. If you don't provide this field, Stash will look for the Repository CR in the same namespace as the BackupConfiguration. + +#### spec.schedule + +`spec.schedule` is a [cron expression](https://en.wikipedia.org/wiki/Cron) that specifies the schedule of backup. Stash creates a Kubernetes [CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) with this schedule. + +#### spec.backupHistoryLimit + +`spec.backupHistoryLimit` specifies the number of `BackupSession` and its associate resources (Job, PVC etc.) to keep for debugging purposes. The default value of this field is 1. Stash will cleanup the old `BackupSession` and it's associate resources after each backup session according to `backupHistoryLimit`. Stash will always keep the last completed BackupSession when `backuphistorylimit>0`. It will keep the last completed BackupSession even if it exceeds the history limit. This will help to keep the backup history when a backup gets skipped due to another running backup. + +#### spec.timeOut + +`spec.timeOut` specifies the maximum amount of time to wait for the backup to complete. If the backup doesn't complete within this time limit, Stash will mark the respective BackupSession as `Failed`. You can specify the timeout in the following format: + +- Seconds `30s` +- Minutes `10m` +- Hours `1h` +- Combination of seconds, minutes, and hours `10m30s`, `1h30m` etc. + +Stash does not support providing days (`d`) in the `timeOut` field. Use the equivalent hours instead. + +#### spec.task + +`spec.task` specifies the name and parameters of the [Task](/docs/v2024.8.27/concepts/crds/task/) crd to use to backup the target. + +- **spec.task.name:** `spec.task.name` indicates the name of the `Task` to use for this backup process. +- **spec.task.params:** `spec.task.params` is an array of custom parameters to use to configure the task. + +> `spec.task` section is not required for backing up workload data (i.e. Deployment, DaemonSet, StatefulSet etc.). However, it is necessary for backing up databases and stand-alone PVCs. + +#### spec.paused + +`spec.paused` can be used as `enable/disable` switch for backup. If it is set `true`, Stash will not take any backup of the target specified by this BackupConfiguration. + +#### spec.hooks + +`spec.hooks` allows performing some actions before and after the backup process. You can send HTTP requests to a remote server via `httpGet` or `httpPost` hooks. You can check whether a TCP socket is open using `tcpSocket` hook. You can also execute some commands into your application pod using `exec` hook. + +- **spec.hooks.preBackup:** `spec.hooks.preBackup` hooks are executed before the backup process. +- **spec.hooks.postBackup:** `spec.hooks.postBackup` hooks are executed after the backup process. Unlike the `preBackup` hook, `postBackup` hook has an extra field named `executionPolicy` which let you execute hook based on the backup status. Currently, it support the following values: + - `Always`: The hook will be executed after the backup process no matter the backup has failed or succeeded. This is the default behavior. + - `OnSuccess`: The hook will be executed after the backup process only if the backup has succeeded. + - `OnFailure`: The hook will be executed after the backup process only if the backup has failed. + - `OnFinalRetryFailure`: The hook will be executed after the backup process only if the backup has failed with no more retry attempts left. +For more details on how hooks work in Stash and how to configure different types of hook, please visit [here](/docs/v2024.8.27/guides/hooks/overview/). + +#### spec.runtimeSettings + +`spec.runtimeSettings` allows to configure runtime environment for the backup sidecar or job. You can specify runtime settings at both pod level and container level. + +- **spec.runtimeSettings.container** + + `spec.runtimeSettings.container` is used to configure the backup sidecar/job at container level. You can configure the following container level parameters: + +| Field | Usage | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resources` | Compute resources required by the sidecar container or backup job. To learn how to manage resources for containers, please visit [here](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/). | +| `livenessProbe` | Periodic probe of backup sidecar/job container's liveness. Container will be restarted if the probe fails. | +| `readinessProbe` | Periodic probe of backup sidecar/job container's readiness. Container will be removed from service endpoints if the probe fails. | +| `lifecycle` | Actions that the management system should take in response to container lifecycle events. | +| `securityContext` | Security options that backup sidecar/job's container should run with. For more details, please visit [here](https://kubernetes.io/docs/concepts/policy/security-context/). | +| `nice` | Set CPU scheduling priority for backup process. For more details about `nice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#nice). | +| `ionice` | Set I/O scheduling class and priority for backup process. For more details about `ionice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#ionice). | +| `env` | A list of the environment variables to set in the sidecar container or backup job's container. | +| `envFrom` | This allows to set environment variables to the container that will be created for this function from a Secret or ConfigMap. | + +- **spec.runtimeSettings.pod** + + `spec.runtimeSettings.pod` is used to configure backup job in pod level. You can configure the following pod level parameters, + +| Field | Usage | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `serviceAccountName` | Name of the `ServiceAccount` to use for the backup job. Stash sidecar will use the same `ServiceAccount` as the target workload. | +| `nodeSelector` | Selector which must be true for backup job pod to fit on a node. | +| `automountServiceAccountToken` | Indicates whether a service account token should be automatically mounted into the backup pod. | +| `nodeName` | `nodeName` is used to request to schedule backup job's pod onto a specific node. | +| `securityContext` | Security options that backup job's pod should run with. For more details, please visit [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/). | +| `imagePullSecrets` | A list of secret names in the same namespace that will be used to pull image from private Docker registry. For more details, please visit [here](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). | +| `affinity` | Affinity and anti-affinity to schedule backup job's pod on a desired node. For more details, please visit [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). | +| `schedulerName` | Name of the scheduler that should dispatch the backup job. | +| `tolerations` | Taints and Tolerations to ensure that backup job's pod is not scheduled in inappropriate nodes. For more details about `toleration`, please visit [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/). | +| `priorityClassName` | Indicates the backup job pod's priority class. For more details, please visit [here](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/). | +| `priority` | Indicates the backup job pod's priority value. | +| `readinessGates` | Specifies additional conditions to be evaluated for Pod readiness. For more details, please visit [here](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-readiness-gate). | +| `runtimeClassName` | RuntimeClass is used for selecting the container runtime configuration. For more details, please visit [here](https://kubernetes.io/docs/concepts/containers/runtime-class/) | +| `enableServiceLinks` | EnableServiceLinks indicates whether information about services should be injected into pod's environment variables. | + +#### spec.tempDir + +Stash mounts an `emptyDir` for holding temporary files. It is also used for `caching` for faster backup performance. You can configure the `emptyDir` using `spec.tempDir` section. You can also disable `caching` using this field. The following fields are configurable in `spec.tempDir` section: + +- **spec.tempDir.medium :** Specifies the type of storage medium should back this directory. +- **spec.tempDir.sizeLimit :** Maximum limit of storage for this volume. +- **spec.tempDir.disableCaching :** Disable caching while backup. This may negatively impact backup performance. This is set to `false` by default. + +#### spec.interimVolumeTemplate + +For some targets (i.e. some databases), Stash can't directly pipe the dumped data to the uploading process. In this case, it has to store the dumped data temporarily before uploading to the backend. `spec.interimVolumeTemplate` specifies a PVC template for holding those data temporarily. Stash will create a PVC according to the template and use it to store the data temporarily. This PVC will be deleted according to the [spec.backupHistoryLimit](#specbackuphistorylimit). + +>Note that the usage of this field is different than `spec.tempDir` which is used for caching purpose. Stash has introduced this field because the `emptyDir` volume that is used for `spec.tempDir` does not play nice with large databases( i.e. 100Gi database). Also, it provides debugging capability as Stash keeps it until it hits the limit specified in `spec.backupHistoryLimit`. + +#### spec.retryConfig + +`spec.retryConfig` is an optional field the let users to specify a retry logic for failed backup. It has the following fields: + +- `spec.retryConfig.maxRetry` specifies the maximum number of times Stash should retry a failed backup. +- `spec.retryConfig.delay` specifies the amount of time to wait before retrying a failed backup. You can specify the delay in the following format: + - Seconds `30s` + - Minutes `10m` + - Hours `1h` + - Combination of seconds, minutes, and hours `10m30s`, `1h30m` etc. + + Stash does not support providing days (`d`) in the `delay` field. Use the equivalent hours instead. + +#### spec.retentionPolicy + +`spec.retentionPolicy` specifies the policy to follow for cleaning old snapshots. Following options are available to configure retention policy: + +| Policy | Value | `restic` forget command flag | Description | +| ------------- | ------- | ---------------------------- | -------------------------------------------------------------------------------------------------- | +| `name` | string | | Name of retention policy. You can provide any name. | +| `keepLast` | integer | --keep-last n | Never delete the **n** last (most recent) snapshots. | +| `keepHourly` | integer | --keep-hourly n | For the last **n** hours in which a snapshot was made, keep only the last snapshot for each hour. | +| `keepDaily` | integer | --keep-daily n | For the last **n** days which have one or more snapshots, only keep the last one for that day. | +| `keepWeekly` | integer | --keep-weekly n | For the last **n** weeks which have one or more snapshots, only keep the last one for that week. | +| `keepMonthly` | integer | --keep-monthly n | For the last **n** months which have one or more snapshots, only keep the last one for that month. | +| `keepYearly` | integer | --keep-yearly n | For the last **n** years which have one or more snapshots, only keep the last one for that year. | +| `keepTags` | array | --keep-tag | Keep all snapshots which have all tags specified by this option (can be specified multiple times). | +| `prune` | bool | --prune | If set `true`, Stash will cleanup unreferenced data from the backend. | +| `dryRun` | bool | --dry-run | Stash will not remove anything but print which snapshots would be removed. | + + +### BackupConfiguration `Status` + +A `BackupConfiguration` object has the following fields in the `status` section. + +- **observedGeneration :** The most recent generation observed by the `BackupConfiguration` controller. + +- **conditions :** The `spec.conditions` shows current backup setup condition for this BackupConfiguration. The following conditions are set by the Stash operator: + +| Condition Type | Usage | +| -------------------- | -------------------------------------------------------------------- | +| `RepositoryFound` | Indicates whether the respective Repository object was found or not. | +| `BackendSecretFound` | Indicates whether the respective backend secret was found or not. | +| `CronJobCreated` | Indicates whether the backup triggering CronJob was created or not. | +| `ValidationPassed` | Indicates whether the resource has passed validation checks or not. | + +## Next Steps + +- Learn how to configure `BackupConfiguration` to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to configure `BackupConfiguration` to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to configure `BackupConfiguration` to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/backupsession/backupsession.yaml b/content/docs/v2024.8.27/concepts/crds/backupsession/backupsession.yaml new file mode 100644 index 0000000000..a244b93fc7 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupsession/backupsession.yaml @@ -0,0 +1,90 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + creationTimestamp: "2020-07-25T17:41:28Z" + labels: + app: stash + stash.appscode.com/invoker-name: wordpress-backup + stash.appscode.com/invoker-type: BackupBatch + name: wordpress-backup-1578458376 + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupBatch + name: wordpress-backup + retryLeft: 2 +status: + conditions: + - lastTransitionTime: "2020-07-25T17:41:31Z" + message: Repository exist in the backend. + reason: BackendRepositoryFound + status: "True" + type: BackendRepositoryInitialized + - lastTransitionTime: "2020-07-25T17:41:48Z" + message: Successfully applied retention policy. + reason: SuccessfullyAppliedRetentionPolicy + status: "True" + type: RetentionPolicyApplied + - lastTransitionTime: "2020-07-25T17:41:50Z" + message: Repository integrity verification succeeded. + reason: SuccessfullyVerifiedRepositoryIntegrity + status: "True" + type: RepositoryIntegrityVerified + - lastTransitionTime: "2020-07-25T17:41:50Z" + message: Successfully pushed repository metrics. + reason: SuccessfullyPushedRepositoryMetrics + status: "True" + type: RepositoryMetricsPushed + phase: Succeeded + sessionDuration: 22.575920065s + sessionDeadline: "2020-07-25T17:46:28Z" + targets: + - phase: Succeeded + preBackupActions: + - InitializeBackendRepository + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + stats: + - duration: 831.018039ms + hostname: app + phase: Succeeded + snapshots: + - fileStats: + modifiedFiles: 0 + newFiles: 1 + totalFiles: 1 + unmodifiedFiles: 0 + name: b54ee4a0 + path: /var/www/html + processingTime: "0:00" + totalSize: 0 B + uploaded: 711 B + totalHosts: 1 + - phase: Succeeded + postBackupActions: + - ApplyRetentionPolicy + - VerifyRepositoryIntegrity + - SendRepositoryMetrics + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + stats: + - duration: 1.147010638s + hostname: db + phase: Succeeded + snapshots: + - fileStats: + modifiedFiles: 0 + newFiles: 1 + totalFiles: 1 + unmodifiedFiles: 0 + name: b30beb44 + path: dumpfile.sql + processingTime: "0:00" + totalSize: 0 B + uploaded: 3.408 MiB + totalHosts: 1 diff --git a/content/docs/v2024.8.27/concepts/crds/backupsession/index.md b/content/docs/v2024.8.27/concepts/crds/backupsession/index.md new file mode 100644 index 0000000000..35eaed9b95 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/backupsession/index.md @@ -0,0 +1,325 @@ +--- +title: BackupSession Overview +menu: + docs_v2024.8.27: + identifier: backupsession-overview + name: BackupSession + parent: crds + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# BackupSession + +## What is BackupSession + +A `BackupSession` is a Kubernetes `CustomResourceDefinition`(CRD) which represents a backup run of the respective target(s) referenced by a `BackupConfiguration`/`BackupBatch` in a Kubernetes native way. + +Stash operator creates a Kubernetes `CronJob` according to the schedule defined in a `BackupConfiguration`/`BackupBatch`. On each backup schedule, this `CronJob` creates a `BackupSession` object. It points to the respective `BackupConfiguration`/`BackupBatch`. The controller that runs inside backup sidecar (in case of backup via jobs, it is stash operator itself) watches this `BackupSession` object and starts taking backup instantly. + +You can also create a `BackupSession` object manually to trigger backup at any time. + +## BackupSession CRD Specification + +Like any official Kubernetes resource, a `BackupSession` has `TypeMeta`, `ObjectMeta` and `Spec` , `Status` sections. + +A sample `BackupSession` created for backing up a WordPress Application and it's components' is shown below, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + creationTimestamp: "2020-07-25T17:41:28Z" + labels: + app: stash + stash.appscode.com/invoker-name: wordpress-backup + stash.appscode.com/invoker-type: BackupBatch + name: wordpress-backup-1578458376 + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupBatch + name: wordpress-backup + retryLeft: 2 +status: + conditions: + - lastTransitionTime: "2020-07-25T17:41:31Z" + message: Repository exist in the backend. + reason: BackendRepositoryFound + status: "True" + type: BackendRepositoryInitialized + - lastTransitionTime: "2020-07-25T17:41:48Z" + message: Successfully applied retention policy. + reason: SuccessfullyAppliedRetentionPolicy + status: "True" + type: RetentionPolicyApplied + - lastTransitionTime: "2020-07-25T17:41:50Z" + message: Repository integrity verification succeeded. + reason: SuccessfullyVerifiedRepositoryIntegrity + status: "True" + type: RepositoryIntegrityVerified + - lastTransitionTime: "2020-07-25T17:41:50Z" + message: Successfully pushed repository metrics. + reason: SuccessfullyPushedRepositoryMetrics + status: "True" + type: RepositoryMetricsPushed + phase: Succeeded + sessionDuration: 22.575920065s + sessionDeadline: "2020-07-25T17:46:28Z" + targets: + - phase: Succeeded + preBackupActions: + - InitializeBackendRepository + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + stats: + - duration: 831.018039ms + hostname: app + phase: Succeeded + snapshots: + - fileStats: + modifiedFiles: 0 + newFiles: 1 + totalFiles: 1 + unmodifiedFiles: 0 + name: b54ee4a0 + path: /var/www/html + processingTime: "0:00" + totalSize: 0 B + uploaded: 711 B + totalHosts: 1 + - phase: Succeeded + postBackupActions: + - ApplyRetentionPolicy + - VerifyRepositoryIntegrity + - SendRepositoryMetrics + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + stats: + - duration: 1.147010638s + hostname: db + phase: Succeeded + snapshots: + - fileStats: + modifiedFiles: 0 + newFiles: 1 + totalFiles: 1 + unmodifiedFiles: 0 + name: b30beb44 + path: dumpfile.sql + processingTime: "0:00" + totalSize: 0 B + uploaded: 3.408 MiB + totalHosts: 1 +``` + +Here, we are going to describe the various sections of a `BackupSession` object. + +### BackupSession `Metadata` + +#### metadata.name + +`metadata.name` indicates the name of the `BackupSession`. This name is automatically generated by respective `CronJob` and it follows the following pattern: `-`. + +#### metadata.namespace + +`metadata.namespace` indicates the name of the `BackupSession`. It is the same as the namespace of respective `BackupConfiguration`/`BackupBatch` object. + +#### metadata.labels + +`metadata.labels` holds respective `BackupConfiguration`/`BackupBatch` kind and name as a label. The stash backup sidecar container use this label to watch only the BackupSessions of that `BackupConfiguration`/`BackupBatch`. + +>If you create `BackupSession` manually to trigger a backup instantly, make sure that you have added `stash.appscode.com/invoker-type: ` and `stash.appscode.com/invoker-name: ` label to your `BackupSession`. Otherwise, it will not trigger backup for workloads (those resources that are backed up using sidecar). + +### BackupSession `Spec` + +A `BackupSession` object has the following fields in the `spec` section: + +#### spec.invoker + +`spec.invoker` specifies the `apiGroup`, `kind`, and `name` of the respective object which is responsible for invoking this backup session. + +#### spec.retryLeft + +`spec.retryLeft` specifies the number of retry attempt left for this backup session. + +### BackupSession `Status` + +`.status` section of `BackupSession` shows stats and progress of backup process in this session.A backup sidecar container or job updates the respective fields under `.status` section after it completes its task. `.status` section consists of the following fields: + +#### status.phase + +`status.phase` indicates the overall phase of the backup process for this BackupSession. `status.phase` will be `Succeeded` only if the phase of all targets is `Succeeded`. If any of the targets fail to complete its backup, `status.phase` will be `Failed`. + +#### status.sessionDuration + +`status.sessionDuration` indicates the total time taken to complete the backup of all targets in this session. + +#### status.sessionDeadline + +`status.sessionDeadline` indicates the the deadline of the backup process. `BackupSession` will be considered `Failed` if the backup does not complete within this deadline. + +#### status.retried + +`status.retried` is a boolean field which specifies whether this session was retried or not in case of failed backup. + +#### status.nextRetry + +`status.nextRetry` specifies the timestamp when this backup will be retried if it has failed. + +#### status.conditions + +`status.conditions` shows the conditions of different operations/steps of the backup process. The following conditions are set by the Stash operator on a BackupSession. + +| Condition Type | Usage | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `BackendRepositoryInitialized` | Indicates whether the backend repository was initialized or not. | +| `RetentionPolicyApplied` | Indicates whether the retention policies were applied or not. | +| `RepositoryIntegrityVerified` | Indicates whether the repository integrity check succeeded or not. | +| `RepositoryMetricsPushed` | Indicates whether the Repository metrics for this backup session were pushed or not. | +| `GlobalPreBackupHookSucceeded` | Indicates whether the global PreBackupHook was executed successfully or not. Only available during backup using BackupBatch. | +| `GlobalPostBackupHookSucceeded` | Indicates whether the global PostBackupHook was executed successfully or not. Only available during backup BackupBatch. | +| `DeadlineExceeded` | Indicates whether the session deadline was exceeded or not.| + +#### status.targets + +`status.targets` field contains an array of the status of the individual target for a backup run. Each target's status field consists of the following sub-fields: + +- **totalHosts :** Not every pod or replica of a target is subject to backup. Thus, we refer those entities that are subject to backup as a host. `totalHosts` specifies the total number of hosts of the target that will be backed up for this BackupSession. For more details on how many hosts will be backed up for which types of workload, please visit [here](#hosts-of-a-backup-process). + +- **preBackupActions :** Specifies a list of actions that the backup process should execute before taking backup. For example, the backend repository must be initialized by one of the targets before taking backup. Stash automatically assigned which target should execute this action. The `preBackupActions` should not be confused with `preBackup` hook. The hooks are meant to be configured by the users where the `preBackupActions` are meant to be configured by Stash itself. + +- **postBackupActions :** Similar to `preBackupActions`, it specifies a list of actions that a backup process should execute after taking the backup. For example, when all the targets complete their backup, one target must apply retention policy into the repository. Stash automatically selects which target should execute these `postBackupActions`. + +- **ref :** `ref` refers to the target whose backup stats has been presented by this array entry. + +- **phase :** `phase` indicates the backup phase of the target. `phase` will be `Succeeded` only if the phase of all hosts are `Succeeded`. If any of the hosts fail to complete its backup, `phase` will be `Failed`. + +- **stats :** `stats` section is an array of backup statistics about individual hosts of the target. Each host adds its statistics in this array after completing its backup process. +Each stats entry consists of the following fields: + + - **hostname:** `hostname` indicates the name of the host. + - **phase:** `phase` indicates the backup phase of this host. + - **duration:** `duration` indicates the total time taken to complete backup for this host. + - **snapshots:** Stash creates one snapshot for each targeted file paths specified in `spec.target.paths` field of `BackupConfiguration` object. The `snapshots` field holds statistics of each of these individual snapshots. Each snapshot statistics has the following fields: + - **name:** `name` indicates the name of the snapshot. + - **path:** `path` indicates the file path that was backed up in this snapshot. + - **totalSize:** `totalSize` indicates the size of data to backup from this path. + - **uploaded:** `uploaded` indicates the size of the data that was uploaded to the backend for this snapshot. This could be much smaller than `size` if some data was already uploaded in the backend in previous backup sessions. + - **processingTime:** `processingTime` indicates the time taken to process the data of the target path. + - **fileStats:** `fileStats` field show statics of files that were backed up in this snapshot. + - **totalFiles:** `totalFiles` shows the total number of files that were backed up in this snapshot. + - **newFiles:** `newFiles` shows the number of new files that were backed up in this snapshot. + - **modifiedFiles:** `modifiedFiles` shows the number of files that were modified since last backup of this directory. + - **unmodifiedFiles:** `unmodifiedFiles` shows the number of files that haven't changed since the last backup of this path. + - **error:** `error` shows the reason for failure if the backup process failed for this host. + +### Hosts of a backup process + +Stash uses two different models for backup depending on the target type. It uses **sidecar model** for Kubernetes workloads and **job model** for the rest of the targets. In the sidecar model, Stash injects a sidecar inside the targeted workload and the sidecar is responsible for taking backup. In the job model, Stash launches a job to take a backup of the target. + +Stash uses an identifier called **host** to separate the backed up data of different subjects in the backed. This host identification process depends on the backup model and the target types. The backup strategy and host identification strategy for different types of the target is explained below. + +**Kubernetes Workloads:** + +Stash uses the sidecar model to backup Kubernetes workloads. However, not every sidecar takes backup. How many sidecars will take backup depends on the type of the workload. We can divide them into the following categories: + +- **Deployment, ReplicaSet, and ReplicationController:** For these types of stateless workloads, all the replicas mount the same volumes. So, taking backup from only one replica is enough. In this case, Stash uses a leader election to elect the leader pod. Only the sidecar of the leader pod takes backup. The `alias` provided in the BackupConfiguration/BackupBatch is used as a host identifier. If the `alias` was not provided, then it defaults to `host-0`. The total number of hosts for these types of workload is 1. +- **StatefulSet:** Every replica of a StatefulSet mount different volumes. So, taking a backup from each replica is necessary. In this case, sidecar inside each replica takes backup. Stash identifies **pod-0** as **\-0**, **pod-1** as **\-1**, **pod-2** as **\-2** and so on. If the `alias` was not provided in the BackupConfiguration/BackupBatch, then the host identifiers are generated as `host-0`, `host-1`, and `host-2` etc. The total number of hosts for a StatefulSet is the number of replicas. +- **DaemonSet:** Daemon replicas on every node may contain different data. So, taking a backup of each daemon pod is necessary. In this case, sidecar inside each daemon pod takes backup. Stash considers the individual daemon pod as a separate host and the host identifiers are generated as **\-\**. The total number of hosts for a DaemonSet is the number of daemon pod running in the cluster. + +**Stand-alone PVC:** + +Stash uses the job model to backup a stand-alone PVC. Stash launches a job to backup the targeted PVC. The `alias` provided in the BackupConfiguration/BackupBatch is used as the host identifier. If the `alias` was not provided, it defaults to `host-0`. The total number of hosts for a stand-alone PVC backup is 1. + +**Databases:** + +Stash uses the job model to backup a database. Stash launches a job to backup the targeted database. In this case, the number of hosts depends on the database type. + +- **Stand-alone database:** For stand-alone database, the backup target is identified by the `alias` and the total number of hosts is 1. +- **Replicated cluster:** For replicated clustered databases such as MongoDB ReplicaSet, all the replicas contain the same data. In this case, taking a backup of only one replica is enough. This replica is identified by the `alias` and the total number of hosts is 1. +- **Sharded cluster:** For the sharded database cluster, Stash takes a backup of all shards. Hence, the number of hosts for a sharded database is the number of shards and they are identified as **\-0**, **\-1**, **\-2**, etc. However, the number of hosts may increase based on the database type. + +**VolumeSnapshot:** + +Stash uses the job model for taking volume snapshots. Each volume is considered as different hosts and they are identified by their name. Hence, the number of total hosts for VolumeSnapshot is the number of targeted volumes. However, since VolumeSnapshot is handled by the respective CSI driver, the host identifier does not play any role to separate their data. + +## Next Steps + +- Learn how backup of workloads data works from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how backup of databases works from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how backup stand alone PVC works from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/function/function.yaml b/content/docs/v2024.8.27/concepts/crds/function/function.yaml new file mode 100644 index 0000000000..3e25274211 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/function/function.yaml @@ -0,0 +1,74 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: postgres-backup-11.2 +spec: + image: stashed/postgres-stash:11.2 + args: + - backup-pg + # setup information + - --provider=${REPOSITORY_PROVIDER:=} + - --bucket=${REPOSITORY_BUCKET:=} + - --endpoint=${REPOSITORY_ENDPOINT:=} + - --region=${REPOSITORY_REGION:=} + - --path=${REPOSITORY_PREFIX:=} + - --secret-dir=/etc/repository/secret + - --scratch-dir=/tmp + - --enable-cache=${ENABLE_CACHE:=true} + - --max-connections=${MAX_CONNECTIONS:=0} # 0 indicates use default connection limit + - --hostname=${HOSTNAME:=} + - --backup-cmd=${backupCMD:=} # can specify dump command with either pg_dump or pg_dumpall + - --pg-args=${args:=} # optional arguments pass to pgdump command + - --wait-timeout=${waitTimeout:=} + # target information + - --namespace=${NAMESPACE:=default} + - --appbinding=${TARGET_NAME:=} + - --backupsession=${BACKUP_SESSION:=} + # cleanup information + - --retention-keep-last=${RETENTION_KEEP_LAST:=0} + - --retention-prune=${RETENTION_PRUNE:=false} + # output & metric information + - --output-dir=${outputDir:=} + volumeMounts: + - name: ${secretVolume} + mountPath: /etc/repository/secret + runtimeSettings: + resources: + requests: + memory: 256M + limits: + memory: 256M + securityContext: + runAsUser: 5000 + runAsGroup: 5000 +--- +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: update-status +spec: + image: appscode/stash:0.10.0 + args: + - update-status + - --provider=${REPOSITORY_PROVIDER:=} + - --bucket=${REPOSITORY_BUCKET:=} + - --endpoint=${REPOSITORY_ENDPOINT:=} + - --path=${REPOSITORY_PREFIX:=} + - --secret-dir=/etc/repository/secret + - --scratch-dir=/tmp + - --enable-cache=${ENABLE_CACHE:=true} + - --max-connections=${MAX_CONNECTIONS:=0} + - --namespace=${NAMESPACE:=default} + - --backupsession=${BACKUP_SESSION:=} + - --repository=${REPOSITORY_NAME:=} + - --invoker-kind=${INVOKER_KIND:=} + - --invoker-name=${INVOKER_NAME:=} + - --target-kind=${TARGET_KIND:=} + - --target-name=${TARGET_NAME:=} + - --output-dir=${outputDir:=} + - --metrics-enabled=true + - --metrics-pushgateway-url=http://stash.kube-system.svc:56789 + - --prom-job-name=${PROMETHEUS_JOB_NAME:=} + volumeMounts: + - mountPath: /etc/repository/secret + name: ${secretVolume} diff --git a/content/docs/v2024.8.27/concepts/crds/function/index.md b/content/docs/v2024.8.27/concepts/crds/function/index.md new file mode 100644 index 0000000000..33a53c1c6d --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/function/index.md @@ -0,0 +1,292 @@ +--- +title: Function Overview +menu: + docs_v2024.8.27: + identifier: function-overview + name: Function + parent: crds + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Function + +## What is Function + +A complete backup or restore process may consist of several steps. For example, in order to backup a PostgreSQL database we first need to dump the database and upload the dumped file to a backend. Then we need to update the respective`Repository` and `BackupSession` status and send Prometheus metrics. In Stash, we call such individual steps a `Function`. + +A `Function` is a Kubernetes `CustomResourceDefinition`(CRD) which basically specifies a template for a container that performs only a specific action. For example, `postgres-backup-*` function only dumps and uploads the dumped file into the backend where `update-status` function updates the status of respective `BackupSession` and `Repository` and sends Prometheus metrics to pushgateway based on the output of `postgres-backup-*` function. + +When you install Stash, some `Function`s will be pre-installed for supported targets like databases, etc. However, you can create your own function to customize or extend the backup/restore process. + +## Function CRD Specification + +Like any official Kubernetes resource, a `Function` has `TypeMeta`, `ObjectMeta` and `Spec` sections. However, unlike other Kubernetes resources, it does not have a `Status` section. + +A sample `Function` object to backup a PostgreSQL is shown below, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: postgres-backup-11.2 +spec: + image: stashed/postgres-stash:11.2 + args: + - backup-pg + # setup information + - --provider=${REPOSITORY_PROVIDER:=} + - --bucket=${REPOSITORY_BUCKET:=} + - --endpoint=${REPOSITORY_ENDPOINT:=} + - --region=${REPOSITORY_REGION:=} + - --path=${REPOSITORY_PREFIX:=} + - --secret-dir=/etc/repository/secret + - --scratch-dir=/tmp + - --enable-cache=${ENABLE_CACHE:=true} + - --max-connections=${MAX_CONNECTIONS:=0} # 0 indicates use default connection limit + - --hostname=${HOSTNAME:=} + - --backup-cmd=${backupCMD:=} # can specify dump command with either pg_dump or pg_dumpall + - --pg-args=${args:=} # optional arguments pass to pgdump command + - --wait-timeout=${waitTimeout:=} + # target information + - --namespace=${NAMESPACE:=default} + - --appbinding=${TARGET_NAME:=} + - --backupsession=${BACKUP_SESSION:=} + # cleanup information + - --retention-keep-last=${RETENTION_KEEP_LAST:=0} + - --retention-prune=${RETENTION_PRUNE:=false} + # output & metric information + - --output-dir=${outputDir:=} + volumeMounts: + - name: ${secretVolume} + mountPath: /etc/repository/secret + runtimeSettings: + resources: + requests: + memory: 256M + limits: + memory: 256M + securityContext: + runAsUser: 5000 + runAsGroup: 5000 +``` + +A sample `Function` that updates `BackupSession` and `Repository` status and sends metrics to Prometheus pushgateway is shown below, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: update-status +spec: + image: appscode/stash:0.10.0 + args: + - update-status + - --provider=${REPOSITORY_PROVIDER:=} + - --bucket=${REPOSITORY_BUCKET:=} + - --endpoint=${REPOSITORY_ENDPOINT:=} + - --path=${REPOSITORY_PREFIX:=} + - --secret-dir=/etc/repository/secret + - --scratch-dir=/tmp + - --enable-cache=${ENABLE_CACHE:=true} + - --max-connections=${MAX_CONNECTIONS:=0} + - --namespace=${NAMESPACE:=default} + - --backupsession=${BACKUP_SESSION:=} + - --repository=${REPOSITORY_NAME:=} + - --invoker-kind=${INVOKER_KIND:=} + - --invoker-name=${INVOKER_NAME:=} + - --target-kind=${TARGET_KIND:=} + - --target-name=${TARGET_NAME:=} + - --output-dir=${outputDir:=} + - --metrics-enabled=true + - --metrics-pushgateway-url=http://stash.kube-system.svc:56789 + - --prom-job-name=${PROMETHEUS_JOB_NAME:=} + volumeMounts: + - mountPath: /etc/repository/secret + name: ${secretVolume} +``` + +Here, we are going to describe the various sections of a `Function` crd. + +### Function `Spec` + +A `Function` object has the following fields in the `spec` section: + +#### spec.image + +`spec.image` specifies the docker image to use to create a container using the template specified in this `Function`. + +#### spec.command + +`spec.command` specifies the commands to be executed by the container. Docker image's `ENTRYPOINT` will be executed if no commands are specified. + +#### spec.args + +`spec.args` specifies a list of arguments that will be passed to the entrypoint. You can templatize this section using `envsubst` style variables. Stash will resolve all the variables before creating the respective container. A variable should follow the following patterns: + +- ${VARIABLE_NAME:=default-value} +- ${VARIABLE_NAME:=} + +In the first case, if Stash can't resolve the variable, the default value will be used in place of this variable. In the second case, if Stash can't resolve the variable, an empty string will be used to replace the variable. + +##### Stash Provided Variables + +Stash operator provides the following built-in variables based on `BackupConfiguration`, `BackupSession`, `RestoreSession`, `Repository`, `Task`, `Function`, `BackupBlueprint` etc. + +| Environment Variable | Usage | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `NAMESPACE` | Namespace of backup or restore job/workload | +| `BACKUP_SESSION` | Name of the respective BackupSession object | +| `RESTORE_SESSION` | Name of the respective RestoreSession object | +| `REPOSITORY_NAME` | Name of the Repository object that holds respective backend information | +| `REPOSITORY_PROVIDER` | Type of storage provider. i.e. gcs, s3, aws, local etc. | +| `REPOSITORY_SECRET_NAME` | Name of the secret that holds the credentials to access the backend | +| `REPOSITORY_BUCKET` | Name of the bucket where backed up data will be stored | +| `REPOSITORY_PREFIX` | A prefix of the directory inside bucket where backed up data will be stored | +| `REPOSITORY_ENDPOINT` | URL of S3 compatible Minio/Rook server | +| `REPOSITORY_URL` | URL of the REST server for REST backend | +| `HOSTNAME` | An identifier for the backed up data. If multiple pods backup in same Repository (i.e. StatefulSet or DaemonSet) this host name is to used identify data of the individual host. | +| `SOURCE_HOSTNAME` | An identifier of the host whose backed up data will be restored | +| `TARGET_NAME` | Name of the target of backup or restore | +| `TARGET_API_VERSION` | API version of the target of backup or restore | +| `TARGET_KIND` | Kind of the target of backup or restore | +| `TARGET_NAMESPACE` | Namespace of the target object for backup or restore | +| `TARGET_MOUNT_PATH` | Directory where target PVC will be mounted in stand-alone PVC backup or restore | +| `TARGET_PATHS` | Array of file paths that are subject to backup | +| `RESTORE_PATHS` | Array of file paths that are subject to restore | +| `RESTORE_SNAPSHOTS` | Name of the snapshot that will be restored | +| `TARGET_APP_VERSION` | Version of the application pointed by an AppBinding | +| `TARGET_APP_GROUP` | The application group where the app pointed by an AppBinding belongs | +| `TARGET_APP_RESOURCE` | The resource kind under an application group that the app pointed by an AppBinding works with | +| `TARGET_APP_TYPE` | The total types of the application. It's simply `TARGET_APP_GROUP/TARGET_APP_RESOURCE` | +| `TARGET_APP_REPLICAS` | Number of replicas of an application targeted for backup or restore | +| `RETENTION_KEEP_LAST` | Number of latest snapshots to keep | +| `RETENTION_KEEP_HOURLY` | Number of hourly snapshots to keep | +| `RETENTION_KEEP_DAILY` | Number of daily snapshots to keep | +| `RETENTION_KEEP_WEEKLY` | Number of weekly snapshots to keep | +| `RETENTION_KEEP_MONTHLY` | Number of monthly snapshots to keep | +| `RETENTION_KEEP_YEARLY` | Number of yearly snapshots to keep | +| `RETENTION_KEEP_TAGS` | Keep only those snapshots that have these tags | +| `RETENTION_PRUNE` | Specify whether to remove data of old snapshot completely from the backend | +| `RETENTION_DRY_RUN` | Specify whether to run cleanup in test mode | +| `ENABLE_CACHE` | Specify whether to use cache while backup or restore | +| `MAX_CONNECTIONS` | Specifies number of parallel connections to upload/download data to/from backend | +| `NICE_ADJUSTMENT` | Adjustment value to configure `nice` to throttle the load on cpu. | +| `IONICE_CLASS` | Name of the `ionice` class | +| `IONICE_CLASS_DATA` | Value of the `ionice` class data | +| `ENABLE_STATUS_SUBRESOURCE` | Specifies whether crd has subresource enabled | +| `PROMETHEUS_PUSHGATEWAY_URL` | URL of the Prometheus pushgateway that collects the backup/restore metrics | +| `INTERIM_DATA_DIR` | Directory to store backed up or restored data temporarily before uploading to the backend or injecting into the target | + +If you want to use a variable that is not present this table, you have to provide its value in `spec.task.params` section of `BackupConfiguration` crd. + +#### spec.workDir + +`spec.workDir` specifies the container's working directory. If this field is not specified, the container's runtime default will be used. + +#### spec.ports + +`spec.ports` specifies a list of the ports to expose from the respective container that will be created for this function. + +#### spec.volumeMounts + +`spec.volumeMounts` specifies a list of volume names and their `mountPath` that will be mounted into the container that will be created for this function. + +#### spec.volumeDevices + +`spec.volumeDevices` specifies a list of the block devices to be used by the container that will be created for this function. + +#### spec.runtimeSettings + +`spec.runtimeSettings.container` allows to configure runtime environment of a backup job at container level. You can configure the following container level parameters: + +| Field | Usage | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resources` | Compute resources required by sidecar container or backup job. To know how to manage resources for containers, please visit [here](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/). | +| `livenessProbe` | Periodic probe of backup sidecar/job container's liveness. Container will be restarted if the probe fails. | +| `readinessProbe` | Periodic probe of backup sidecar/job container's readiness. Container will be removed from service endpoints if the probe fails. | +| `lifecycle` | Actions that the management system should take in response to container lifecycle events. | +| `securityContext` | Security options that backup sidecar/job's container should run with. For more details, please visit [here](https://kubernetes.io/docs/concepts/policy/security-context/). | +| `nice` | Set CPU scheduling priority for the backup process. For more details about `nice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#nice). | +| `ionice` | Set I/O scheduling class and priority for the backup process. For more details about `ionice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#ionice). | +| `env` | A list of the environment variables to set in the container that will be created for this function. | +| `envFrom` | This allows to set environment variables to the container that will be created for this function from a Secret or ConfigMap. | + +#### spec.podSecurityPolicyName + +If you are using a [PSP enabled cluster](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) and the function needs any specific permission then you can specify the PSP name using `spec.podSecurityPolicyName` field. Stash will add this PSP in the respective RBAC roles that will be created for this function. + +>Note that Stash operator can't give permission to use a PSP to a backup job if the operator itself does not have permission to use it. So, if you want to specify PSP name in this section, make sure to add that in `stash-operator` ClusterRole too. + +## Next Steps + +- Learn how to use `Function` to create a `Task` from [here](/docs/v2024.8.27/concepts/crds/task/). diff --git a/content/docs/v2024.8.27/concepts/crds/repository/index.md b/content/docs/v2024.8.27/concepts/crds/repository/index.md new file mode 100644 index 0000000000..5433b64c85 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/repository/index.md @@ -0,0 +1,239 @@ +--- +title: Repository Overview +menu: + docs_v2024.8.27: + identifier: repository-overview + name: Repository + parent: crds + weight: 5 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Repository + +## What is Repository + +A `Repository` is a Kubernetes `CustomResourceDefinition`(CRD) which represents [backend](/docs/v2024.8.27/guides/backends/overview/) information in a Kubernetes native way. + +You have to create a `Repository` object for each backup target. Since v1beta1 api, a `Repository` object has 1-1 mapping with a target. Thus, only one target can be backed up into one `Repository`. + +## Repository CRD Specification + +Like any official Kubernetes resource, a `Repostiory` object has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +A sample `Repository` object that uses Google Cloud Storage(GCS) bucket as backend is shown below: + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-demo-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-demo-backup + prefix: demo + storageSecretName: gcs-secret + usagePolicy: + allowedNamespaces: + from: Same + wipeOut: false +status: + firstBackupTime: "2019-04-15T06:08:16Z" + integrity: true + lastBackupTime: "2019-04-15T06:14:15Z" + totalSize: 2.567 KiB + snapshotCount: 5 + snapshotsRemovedOnLastCleanup: 1 +``` + +Here, we are going to describe the various sections of the `Repository` crd. + +### Repository `Spec` + +`Repository` CRD has the following fields in the `.spec` section. + +- **spec.backend** +`spec.backend` specifies the storage location where the backed up snapshots will be stored. To learn how to configure `Repository` crd for various backends, please visit [here](/docs/v2024.8.27/guides/backends/overview/). + +- **backend prefix/subPath** +`prefix` of any backend denotes the directory inside the backend where the backed up snapshots will be stored. In case of **Local** backend, `subPath` is used for this purpose. + +- **spec.wipeOut** +As the name implies, `spec.wipeOut` field indicates whether Stash operator should delete backed up files from the backend when `Repository` crd is deleted. The default value of this field is `false` which tells Stash to not delete backed up data when a user deletes a `Repository` crd. + +- **spec.usagePolicy** +This lets you control which namespaces are allowed to use the Repository and which are not. If you refer to a Repository from a restricted namespace, Stash will reject creating the respective BackupConfiguration/RestoreSession from validating webhook. You can use the `usagePolicy` to allow only the same namespace, a subset of namespaces, or all the namespaces to refer to the Repository. If you don't specify any `usagePolicy`, Stash will allow referencing the Repository only from the namespace where the Repository has been created. + + +Here is an example of `spec.usagePolicy` that limits referencing the Repository only from the same namespace, +```yaml +spec: + usagePolicy: + allowedNamespaces: + from: Same +``` + +Here is an example of `spec.usagePolicy` that allows referencing it from all namespaces, +```yaml +spec: + usagePolicy: + allowedNamespaces: + from: All +``` + +Here is an example of `spec.usagePolicy` that allows referencing it from only `prod` and `staging` namespace, +```yaml +spec: + usagePolicy: + allowedNamespaces: + from: Selector + selector: + matchExpressions: + - key: "kubernetes.io/metadata.name" + operator: In + values: ["prod","staging"] +``` + +### Repository `Status` + +Stash operator updates `.status` of a Repository crd every time a backup operation is completed. `Repository` crd shows the following statistics in status section: + +- **status.firstBackupTime** +`status.firstBackupTime` indicates the timestamp when the first backup was taken. + +- **status.lastBackupTime** +`status.lastBackupTime` indicates the timestamp when the latest backup was taken. + +- **status.integrity** +Stash checks the integrity of backed up files after each backup. `status.integrity` shows the result of the integrity check. + +- **status.totalSize** +`status.totalSize` shows the total size of a repository after last backup. + +- **status.snapshotCount** +`status.SnapshotCount` shows the number of snapshots stored in the Repository. + +- **status.snapshotsRemovedOnLastCleanup** +`status.snapshotsRemovedOnLastCleanup` shows the number of old snapshots that has been cleaned up according to retention policy on last backup session. + + +## Deleting Repository + +Stash allows users to delete **only `Repository` crd** or **`Repository` crd along with respective backed up data**. Here, we are going to show how to perform these operations. + +**Delete only `Repository` keeping backed up data :** + + You can delete only `Repository` crd by, + +```bash +$ kubectl delete repository + +# Example +$ kubectl delete repository gcs-demo-repo +repository "gcs-demo-repo" deleted +``` + +This will delete only `Repository` crd. It won't delete any backed up data from the backend. You can recreate the `Repository` object later to reuse existing data as long as your restic password in unchanged. + +>If you delete `Repository` crd while respective stash sidecar still exists on the workload, it will fail to take further backup. + +**Delete `Repository` along with backed up data :** + +In order to prevent the users from accidentally deleting backed up data, Stash uses a special `wipeOut` flag in `spec` section of `Repository` crd. By default, this flag is set to `wipeOut: false`. If you want to delete respective backed up data from backend while deleting `Repository` crd, you must set this flag to `wipeOut: true`. + +> Currently, Stash does not support wiping out backed up data for local backend. If you want to cleanup backed up data from local backend, you must do it manually. + +Here, is an example of deleting backed up data from GCS backend, + +- First, set `wipeOut: true` by patching `Repository` crd. + + ```bash + $ kubectl patch repository gcs-demo-repo --type="merge" --patch='{"spec": {"wipeOut": true}}' + repository "gcs-demo-repo" patched + ``` + +- Finally, delete `Repository` object. It will delete backed up data from the backend. + + ```bash + $ kubectl delete repository gcs-demo-repo + repository "gcs-demo-repo" deleted + ``` + +You can browse your backend storage bucket to verify that the backed up data has been wiped out. + +## Next Steps + +- Learn how to create `Repository` crd for different backends from [here](/docs/v2024.8.27/guides/backends/overview/). +- Learn how Stash backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how Stash backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/repository/repository.yaml b/content/docs/v2024.8.27/concepts/crds/repository/repository.yaml new file mode 100644 index 0000000000..511f0c2e90 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/repository/repository.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-demo-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-demo-backup + prefix: demo + storageSecretName: gcs-secret + wipeOut: false +status: + firstBackupTime: "2019-04-15T06:08:16Z" + integrity: true + lastBackupTime: "2019-04-15T06:14:15Z" + totalSize: 2.567 KiB + snapshotCount: 5 + snapshotsRemovedOnLastCleanup: 1 diff --git a/content/docs/v2024.8.27/concepts/crds/restorebatch/index.md b/content/docs/v2024.8.27/concepts/crds/restorebatch/index.md new file mode 100644 index 0000000000..3a3caf8ca0 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/restorebatch/index.md @@ -0,0 +1,269 @@ +--- +title: RestoreBatch Overview +menu: + docs_v2024.8.27: + identifier: restorebatch-overview + name: RestoreBatch + parent: crds + weight: 27 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# RestoreBatch + +## What is RestoreBatch + +A `RestoreBatch` is a Kubernetes `CustomResourceDefinition`(CRD) which allows you to restore multiple co-related components( eg, workloads, databases, etc.) together that were backed up via a `BackupBatch`. + +## RestoreBatch CRD Specification + +Like any official Kubernetes resource, a `RestoreBatch` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. A sample `RestoreBatch` object to restore multiple co-related components is shown below: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreBatch +metadata: + name: batch-restore + namespace: demo +spec: + driver: Restic + repository: + name: minio-repo + namespace: demo + executionOrder: Parallel + members: + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + rules: + - paths: + - /var/www/html + volumeMounts: + - mountPath: /var/www/html + name: wordpress-persistent-storage + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + rules: + - snapshots: + - latest + task: + name: mysql-restore-8.0.14 + timeOut: 30m +status: + phase: Succeeded + sessionDuration: 15.145032437s + conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Repository demo/minio-repo exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Backend Secret demo/minio-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + members: + - conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Restore target apps/v1 deployment/wordpress + found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Successfully injected stash init-container. + reason: InitContainerInjectionSucceeded + status: "True" + type: StashInitContainerInjected + phase: Succeeded + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + stats: + - duration: 822.861322ms + hostname: app + phase: Succeeded + totalHosts: 1 + - conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Restore target appcatalog.appscode.com/v1alpha1 appbinding/wordpress-mysql + found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Successfully created restore job. + reason: RestoreJobCreationSucceeded + status: "True" + type: RestoreJobCreated + phase: Succeeded + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + stats: + - duration: 4.597812876s + hostname: db + phase: Succeeded + totalHosts: 1 +``` + +Here, we are going to describe the various sections of `RestoreBatch` crd. + +### RestoreBatch `Spec` + +A `RestoreBatch` object has the following fields in the `spec` section. + +#### spec.driver + +`spec.driver` indicates the mechanism used to restore. Currently, Stash supports `Restic` and `VolumeSnapshotter` as drivers. The default value of this field is `Restic`. For more details, please see [here](/docs/v2024.8.27/concepts/crds/restoresession/#specdriver). + +#### spec.repository + +`spec.repository.name` indicates the `Repository` crd name that holds necessary backend information from where data will be restored. + +#### spec.executionOrder + +`spec.executionOrder` specifies whether Stash should restore the targets sequentially or parallelly. If `spec.executionOrder` is set to `Parallel`, Stash will start to restore of all the targets simultaneously. If it is set to `Sequential`, Stash will not start restoring a target until all the previous members have completed their restore process. The default value of this field is `Parallel`. + +#### spec.members + +`spec.members` field specifies a list of targets to restore. Each member consists of the following fields: + +- **target :** Each member has a target specification. The target specification of a member is the same as the target specification of a `RestoreSession` explained [here](/docs/v2024.8.27/concepts/crds/restoresession/#spectarget). + +- **task :** `task` specifies the name and parameters of the [Task](/docs/v2024.8.27/concepts/crds/task/) crd to use to restore the member. For more details, please see [here](/docs/v2024.8.27/concepts/crds/restoresession/#spectask). + +- **runtimeSettings :** `runtimeSettings` allows to configure runtime environment for the restore init-container or job. You can specify runtime settings at both pod level and container level. For more details, please see [here](/docs/v2024.8.27/concepts/crds/restoresession/#specruntimesettings). + +- **tempDir :** Stash mounts an `emptyDir` for holding temporary files. It is also used for `caching` for faster restore performance. You can configure the `emptyDir` using `tempDir` section. You can also disable `caching` using this field. For more details, please see [here](/docs/v2024.8.27/concepts/crds/restoresession/#spectempdir). + +- **interimVolumeTemplate :** For some targets (i.e. some databases), Stash can't directly pipe the restored data into the target. In this case, it has to store the restored data temporarily before injecting into the target. `spec.interimVolumeTemplate` specifies a PVC template for holding those data temporarily. Stash will create a PVC according to the template and use it to store the data temporarily. This PVC will be deleted automatically if you delete the `RestoreBatch`. + +- **hooks :** Each member has it's own `hooks` field which allows you to execute member-specific pre-restore or post-restore hooks. For more details about hooks, please visit [here](/docs/v2024.8.27/concepts/crds/restoresession/#spechooks). + +#### spec.hooks + +`spec.hooks` allows performing some global actions before and after the restoration process. You can send HTTP requests to a remote server via `httpGet` or `httpPost`. You can check whether a TCP port is open using `tcpSocket` hooks. You can also execute some commands using `exec` hook. + +- **spec.hooks.preRestore:** `spec.hooks.preRestore` hooks are executed before restoring any of the members. +- **spec.hooks.postRestore:** `spec.hooks.postRestore` hooks are executed after restoring all the members. + +For more details on how hooks work in Stash and how to configure different types of hook, please visit [here](/docs/v2024.8.27/guides/hooks/overview/). + +#### spec.timeOut + +`spec.timeOut` specifies the amount of time to wait for the restore to complete. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/restoresession/#spectimeout). +### RestoreBatch `Status` + +A `RestoreBatch` object has the following fields in the `status` section. + +- **phase :** `phase` shows the overall phase of the restore process. It will be `Succeeded` only if all the targets are restored successfully. + +- **sessionDuration :** `sessionDuration` shows the total time taken to complete the entire restoration process. + +- **sessionDeadline :** `sessionDeadline` indicates the the deadline of the restore process. `RestoreBatch` will be considered `Failed` if the restore does not complete within this deadline. + +- **conditions :** The `conditions` field shows conditions of different steps of the restore process. The following conditions are set by the Stash operator for a RestoreBatch: + +| Condition Type | Usage | +| -------------------------------- | ----------------------------------------------------------------------------- | +| `RepositoryFound` | Indicates whether the respective Repository object was found or not. | +| `BackendSecretFound` | Indicates whether the respective backend secret was found or not. | +| `GlobalPreRestoreHookSucceeded` | Indicates whether the global PreRestoreHook was executed successfully or not. | +| `GlobalPostRestoreHookSucceeded` | Indicates whether the global PostRestoreHook was executed successfully or no. | +| `DeadlineExceeded` | Indicates whether the session deadline was exceeded or not.| + +- **members :** `members` section shows the restore status of the individual members. Each entry has the following fields: + - **ref :** `ref` points to the respective target whose status is shown here. + - **phase :** `phase` shows the restore phase of the member. + - **conditions:** `conditions` shows the conditions of different steps of restoring this member. Stash set the following conditions for each restore members. + +| Condition Type | Usage | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `RestoreTargetFound` | Indicates whether the restore target was found or not. | +| `StashInitContainerInjected` | Indicates whether stash init-container was injected into the targeted workload. This condition is applicable only for the sidecar model. | +| `RestoreJobCreated` | Indicates whether the restore job was created or not. This condition is only applicable in the job model. | + + - **totalHosts :** `totalHosts` field specifies the total number of hosts that will be restored for this member. + - **stats :** `stats` section is an array of restore statistics of individual hosts. Individual host stats entry consists of the following fields: + - **hostname :** `hostname` indicates the name of the host. Usually it is the `alias` or `alias-`. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupsession/#hosts-of-a-backup-process). + - **phase :** `phase` indicates the restore phase of this host. + - **duration :** `duration` indicates the total time taken to complete the restore process for this host. + - **error :** `error` shows the reason for failure if the restore process fails for this host. diff --git a/content/docs/v2024.8.27/concepts/crds/restorebatch/restorebatch.yaml b/content/docs/v2024.8.27/concepts/crds/restorebatch/restorebatch.yaml new file mode 100644 index 0000000000..d715285007 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/restorebatch/restorebatch.yaml @@ -0,0 +1,95 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreBatch +metadata: + name: batch-restore + namespace: demo +spec: + driver: Restic + repository: + name: minio-repo + namespace: demo + executionOrder: Parallel + members: + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + rules: + - paths: + - /var/www/html + volumeMounts: + - mountPath: /var/www/html + name: wordpress-persistent-storage + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + rules: + - snapshots: + - latest + task: + name: mysql-restore-8.0.14 + timeOut: 30m +status: + phase: Succeeded + sessionDuration: 15.145032437s + conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Repository demo/minio-repo exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Backend Secret demo/minio-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + members: + - conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Restore target apps/v1 deployment/wordpress + found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Successfully injected stash init-container. + reason: InitContainerInjectionSucceeded + status: "True" + type: StashInitContainerInjected + phase: Succeeded + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress + stats: + - duration: 822.861322ms + hostname: app + phase: Succeeded + totalHosts: 1 + - conditions: + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Restore target appcatalog.appscode.com/v1alpha1 appbinding/wordpress-mysql + found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:41:52Z" + message: Successfully created restore job. + reason: RestoreJobCreationSucceeded + status: "True" + type: RestoreJobCreated + phase: Succeeded + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-mysql + stats: + - duration: 4.597812876s + hostname: db + phase: Succeeded + totalHosts: 1 diff --git a/content/docs/v2024.8.27/concepts/crds/restoresession/index.md b/content/docs/v2024.8.27/concepts/crds/restoresession/index.md new file mode 100644 index 0000000000..3a88fb01ae --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/restoresession/index.md @@ -0,0 +1,407 @@ +--- +title: RestoreSession Overview +menu: + docs_v2024.8.27: + identifier: restoresession-overview + name: RestoreSession + parent: crds + weight: 25 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# RestoreSession + +## What is RestoreSession + +A `RestoreSession` is a Kubernetes `CustomResourceDefinition`(CRD) which specifies a target to restore and the source of data that will be restored in a Kubernetes native way. + +You have to create a `RestoreSession` object whenever you want to restore. When a `RestoreSession` object is created, Stash injects an `init-container` into the target workload and restarts it. The `init-container` restores the desired data. If the target is a database or a stand-alone PVC, Stash launches a job to perform the restore process. + +## RestoreSession CRD Specification + +Like any official Kubernetes resource, a `RestoreSession` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +A sample `RestoreSession` object to restore backed up data of a StatefulSet is shown below: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: statefulset-restore + namespace: demo +spec: + driver: Restic + repository: + name: minio-repo + namespace: demo + # task: + # name: workload-restore # task field is not required for workload data backup but it is necessary for database backup. + target: + alias: my-sts + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: recovered-statefulset + volumeMounts: + - mountPath: /source/data + name: source-data + rules: + - targetHosts: ["my-sts-3","my-sts-4"] # "pod-3" and "pod-4" will have restored data of backed up host "pod-1" + sourceHost: "my-sts-1" # source host + paths: + - /source/data + include: + - /source/data/*.json + - targetHosts: [] # empty host match all hosts + sourceHost: "" # no source host indicates that the host is pod itself + paths: + - /source/data + exclude: + - /source/data/tmp.json + - /source/data/*.txt + hooks: + preRestore: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreRestore hook demo" + containerName: stash-init + postRestore: + executionPolicy: Always + exec: + command: + - /bin/sh + - -c + - echo "Sample PostRestore hook demo" + containerName: stash-init + runtimeSettings: + container: + resources: + limits: + memory: 256M + requests: + memory: 256M + securityContext: + runAsGroup: 2000 + runAsUser: 2000 + ionice: + class: 2 + classData: 4 + nice: + adjustment: 5 + pod: + imagePullSecrets: + - name: my-private-registry-secret + serviceAccountName: my-backup-sa + tempDir: + disableCaching: false + medium: Memory + sizeLimit: 2Gi + timeOut: 30m +status: + totalHosts: 5 + phase: Succeeded + sessionDuration: 2m40.595857548s + conditions: + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Repository demo/minio-repo exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Backend Secret demo/minio-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Restore target apps/v1 statefulset/recovered-statefulset found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Successfully injected stash init-container. + reason: InitContainerInjectionSucceeded + status: "True" + type: StashInitContainerInjected + stats: + - duration: 884.431745ms + hostname: host-1 + phase: Succeeded + - duration: 769.924342ms + hostname: host-2 + phase: Succeeded + - duration: 868.694738ms + hostname: host-3 + phase: Succeeded + - duration: 792.097784ms + hostname: host-4 + phase: Succeeded + - duration: 833.139795ms + hostname: host-0 + phase: Succeeded +``` + +Here, we are going to describe the various sections of a `RestoreSession` object. + +### RestoreSession `Spec` + +A `RestoreSession` object has the following fields in the `spec` section. + +#### spec.driver + +`spec.driver` indicates the mechanism used to restore a target. Currently, Stash supports `Restic` and `VolumeSnapshotter` as drivers. The default value of this field is `Restic`. + +| Driver | Usage | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Restic` | Used to restore workload data, persistent volumes data and databases. It uses [restic](https://restic.net) to restore the target. | +| `VolumeSnapshotter` | Used to initialize PersistentVolumeClaim from VolumeSnapshot. It leverages Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) crd and CSI driver to initialize the target PVCs from respective snapshots. Currently, it can restore only in the new PVC. | + +#### spec.target + +`spec.target` field indicates the target where data will be restored. This section consists of the following fields: + +- **spec.target.alias :** `spec.target.alias` field specifies the alias that was used as the identifier of the backed up data. It must match with the alias used during backup. + +- **spec.target.ref :** `spec.target.ref` refers to the restore target. You have to specify `apiVersion`, `kind`, and `name` of the target. Stash will use this information to inject an `init-container` or to create a restore job. + +- **spec.target.volumeMounts :** `spec.target.volumeMounts` specifies a list of volumes and their `mountPath` where the data will be restored. Stash will mount these volumes inside the `init-container` or restore job. + +> Note: Stash stores the absolute path of the backed up files. Hence, your restored volume must be mounted on the same `mountPath` as the original volume. Otherwise, the backed up files will not be restored into your desired volume. + +- **spec.target.volumeClaimTemplates :** You can specify a list of PVC template using `spec.target.volumeClaimTemplates` field. Stash will create those PVCs then it will restore the desired data into them. Then, you can use those PVCs to deploy your desired workload. + +- **spec.target.replicas :** If you want to restore the volumes of a StatefulSet through `spec.target.volumeClaimTemplate` field, you can specify the number of replicas of the StatefulSet using `spec.target.replicas`. In this case, you have to use `${POD_ORDINAL}` variable suffix in the claim name. Stash will replace that variable with respective ordinal and it will create the volumes for each replica. For more details, please visit [here](/docs/v2024.8.27/guides/use-cases/clone-pvc/#clone-the-volumes-of-a-satefulset). + +- **spec.target.rules :** `spec.target.rules` is an array of restore rules that specify how Stash should restore data for each host. For example, Stash runs the restore process in all pods of a StatefulSet. You can configure this `spec.target.rules` section to control what data will be restored into which pod. Each restore rule has the following fields: + + - **targetHosts :** `targetHosts` field contains a list of host names that are subject to this rule. If `targetHosts` field is empty, this rule applies to all hosts for which there is no specific rule. In the sample `RestoreSession` given above, the first rule applies to only `pod-3` and `pod-4` and the second rule is applicable to all hosts. + - **sourceHost :** `sourceHost` specifies the name of host whose backed up data will be restored by this rule. In the sample `RestoreSession`, the first rule specifies that backed up data of `pod-0` will be restored into `pod-3` and `pod-4`. If you keep `sourceHost` field empty as the second rule of the above example, data from a similar backup host will be restored on the respective restore host. That means, backed up data of `pod-0` will be restored into `pod-0`, backed up data of `pod-1` will be restored into `pod-1` and so on. + - **paths :** `paths` specifies a list of file paths that will be restored into the hosts who are subject to this rule. + - **snapshots :** `snapshots` specifies the list of snapshots that will be restored into the hosts who are subject to this rule. If you don't specify the snapshot field, the latest snapshot of the file paths specified in the `paths` section will be restored. + - **include :** `include` field specifies a list of patterns for the files that should be restored. Stash only restore the files that match these patterns. + - **exclude :** `exclude` field specifies a list of patterns for the files that should be ignored during. Stash will not restore the files that match these patterns. + + Restore rules comply with the following conditions: + + - There could be at most one rule with an empty `targetHosts` field. + - No two rules with non-empty `targetHosts` can't be matched for a single host. + - Stash restore only one file path in a single snapshot. So, if you specify `snapshots` field in a rule, you can't specify `paths` field as it may cause restore failure if a file path wasn't backed up in the snapshot specified in the `snapshots` field. + - If no rule matches for a host, no data will be restored on that host. + - The order of the rules does not have any effect on the restoration process. + +#### spec.repository + +`spec.repository` specifies the name and namespace of the Repository CR that holds the necessary backend information where the backed up data has been stored. + +- `spec.repository.name` specifies the name of the Repository CR. +- `spec.repository.namespace` specifies the namespace of the Repository. If you don't provide this field, Stash will look for the Repository CR in the same namespace as the RestoreSession. + +#### spec.task + +`spec.task` specifies the name and parameters of the [Task](/docs/v2024.8.27/concepts/crds/task/) crd to use to restore the target data. + +- **spec.task.name:** `spec.task.name` indicates the name of the `Task` template to use for this restore process. +- **spec.task.params:** `spec.task.params` is an array of custom parameters to use to configure the task. + +> `spec.task` section is not necessary for restoring workload data (i.e. Deployment, DaemonSet, StatefulSet, etc.). However, it is necessary for restoring the database and stand-alone PVC. + +#### spec.hooks + +`spec.hooks` allows performing some actions before and after the restoration process. You can send HTTP requests to a remote server via `httpGet` or `httpPost` hooks. You can check whether a TCP socket is open using `tcpSocket` hook. You can also execute some commands into your application pod using `exec` hook. + +- **spec.hooks.preRestore:** `spec.hooks.preRestore` hooks are executed before the restore process. +- **spec.hooks.postRestore:** `spec.hooks.postRestore` hooks are executed after the restore process. Unlike the `preRestore` hook, `postRestore` hook has an extra field named `executionPolicy` which let you execute hook based on the restore status. Currently, it support the following values: + - `Always`: The hook will be executed after the restore process no matter the restore has failed or succeeded. This is the default behavior. + - `OnSuccess`: The hook will be executed after the restore process only if the restore has succeeded. + - `OnFailure`: The hook will be executed after the restore process only if the restore has failed. + +For more details on how hooks work in Stash and how to configure different types of hook, please visit [here](/docs/v2024.8.27/guides/hooks/overview/). + +#### spec.runtimeSettings + +`spec.runtimeSettings` allows to configure runtime environment for restore `init-container` or job. You can specify runtime settings in both the pod level and container level. + +- **spec.runtimeSettings.container** + + `spec.runtimeSettings.container` is used to configure restore init-container/job in container level. You can configure the following container level parameters, + +| Field | Usage | +| :---------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resources` | Compute resources required by restore init-container or restore job. To know how to manage resources for containers, please visit [here](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/). | +| `livenessProbe` | Periodic probe of restore init-container/job's container liveness. The container will be restarted if the probe fails. | +| `readinessProbe` | Periodic probe of restore init-container/job's container readiness. The container will be removed from service endpoints if the probe fails. | +| `lifecycle` | Actions that the management system should take in response to container lifecycle events. | +| `securityContext` | Security options that restore init-container/job's container should run with. For more details, please visit [here](https://kubernetes.io/docs/concepts/policy/security-context/). | +| `nice` | Set CPU scheduling priority for the restore process. For more details about `nice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#nice). | +| `ionice` | Set I/O scheduling class and priority for the restore process. For more details about `ionice`, please visit [here](https://www.askapache.com/optimize/optimize-nice-ionice/#ionice). | +| `env` | A list of the environment variables to set in the restore init-container/job's container. | +| `envFrom` | This allows to set environment variables to the restore init-container/job's container from a Secret or ConfigMap. | + +- **spec.runtimeSettings.pod** + + `spec.runtimeSettings.pod` is used to configure restore job in pod level. You can configure following pod level parameters, + +| Field | Usage | +| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `serviceAccountName` | Name of the `ServiceAccount` to use for restore job. Stash init-container will use the same `ServiceAccount` as the target. | +| `nodeSelector` | Selector which must be true for restore job pod to fit on a node. | +| `automountServiceAccountToken` | Indicates whether a service account token should be automatically mounted into the restore job's pod. | +| `nodeName` | NodeName is used to request to schedule restore job's pod onto a specific node. | +| `securityContext` | Security options that restore job's pod should run with. For more details, please visit [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/). | +| `imagePullSecrets` | A list of secret names in the same namespace that will be used to pull images from the private docker registry. For more details, please visit [here](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). | +| `affinity` | Affinity and anti-affinity to schedule restore job's pod in the desired node. For more details, please visit [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). | +| `schedulerName` | Name of the scheduler that should dispatch the restore job. | +| `tolerations` | Taints and Tolerations to ensure that restore job's pod is not scheduled in inappropriate nodes. For more details about `toleration`, please visit [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/). | +| `priorityClassName` | Indicates the restore job pod's priority class. For more details, please visit [here](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/). | +| `priority` | Indicates the restore job pod's priority value. | +| `readinessGates` | Specifies additional conditions to be evaluated for Pod readiness. For more details, please visit [here](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-readiness-gate). | +| `runtimeClassName` | RuntimeClass is used for selecting the container runtime configuration. For more details, please visit [here](https://kubernetes.io/docs/concepts/containers/runtime-class/) | +| `enableServiceLinks` | EnableServiceLinks indicates whether information about services should be injected into pod's environment variables. | + +#### spec.tempDir + +Stash mounts an `emptyDir` for holding temporary files. It is also used for `caching` for faster restore performance. You can configure the `emptyDir` using `spec.tempDir` section. You can also disable `caching` using this field. The following fields are configurable in `spec.tempDir` section: + +- **spec.tempDir.medium :** Specifies the type of storage medium should back this file path. +- **spec.tempDir.sizeLimit :** Maximum limit of storage for this volume. +- **spec.tempDir.disableCaching :** Disable caching while restoring. This may negatively impact restore performance. This field is set to `false` by default. + +#### spec.timeOut + +`spec.timeOut` specifies the maximum amount of time to wait for the restore to complete. If the restore doesn't complete within this time limit, Stash will mark the respective RestoreSession as `Failed`. You can specify the timeout in the following format: + +- Seconds `30s` +- Minutes `10m` +- Hours `1h` +- Combination of seconds, minutes, and hours `10m30s`, `1h30m` etc. + +Stash does not support providing days (`d`) in the `timeOut` field. Use the equivalent hours instead. + +#### spec.interimVolumeTemplate + +For some targets (i.e. some databases), Stash can't directly pipe the restored data into the target. In this case, it has to store the restored data temporarily before injecting into the target. `spec.interimVolumeTemplate` specifies a PVC template for holding those data temporarily. Stash will create a PVC according to the template and use it to store the data temporarily. This PVC will be deleted automatically if you delete the `RestoreSession`. + +>Note that the usage of this field is different from `spec.tempDir` which is used for caching purpose. Stash has introduced this field because the `emptyDir` volume that is used for `spec.tempDir` does not play nice with large databases( i.e. 100Gi database). Also, it provides debugging capability as Stash keeps it until you delete the `RestoreSession`. + +### RestoreSession `Status` + +`.status` section of `RestoreSession` shows progress, stats, and overall phase of the restore process. The restore init-container or job adds its respective stats in `.status` section after it completes its task. `.status` section consists of the following fields: + +#### status.totalHosts + +Not every pod or replica of the target will run the restore process. Thus, we refer those entities that run the restore process as a host. `status.totalHosts` specifies the total number of hosts that will run the restore process for this RestoreSession. For more details on how many hosts will run restore process for which types of workload, please visit [here](#hosts-of-a-restore-process). + +#### status.phase + +`status.phase` indicates the overall phase of the restore process for this RestoreSession. `status.phase` will be `Succeeded` only if the phase of all hosts are `Succeeded`. If any of the hosts fail to complete restore, `status.phase` will be `Failed`. + +#### status.sessionDuration + +`status.sessionDuration` indicates the total time taken to complete the restoration of all hosts. + +#### status.sessionDeadline + +`status.sessionDeadline` indicates the the deadline of the restore process. `RestoreSession` will be considered `Failed` if the restore does not complete within this deadline. + + +#### status.conditions + +`status.conditions` shows the conditions of various steps of the restore process. Stash sets the following conditions for a RestoreSession: + +| Condition Type | Usage | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `RepositoryFound` | Indicates whether the respective Repository object was found or not. | +| `BackendSecretFound` | Indicates whether the respective backend secret was found or not. | +| `RestoreTargetFound` | Indicates whether the restore target was found or not. | +| `StashInitContainerInjected` | Indicates whether stash init-container was injected into the targeted workload or not. This condition is applicable only in the sidecar model. | +| `RestorerEnsured` | Indicates whether the Restorer job/init-container was created or not. | +| `ValidationPassed` | Indicates whether the resource has passed validation checks or not. | +| ` MetricsPushed` | Indicates whether the metrics have been pushed to the Pushgateway or not. | +| `DeadlineExceeded` | Indicates whether the session deadline was exceeded or not.| + +#### status.stats + +`status.stats` section is an array of restore statistics of individual hosts. Each host adds their statistics in this array after completing their restore process. This field is only available for the `Restic` driver but not available for the `VolumeSnapshotter` driver. The default value of the driver is `Restic`. + +Individual host stats entry consists of the following fields: + +- **hostname :** `hostname` indicates the name of the host. Usually, it is the `alias` or `alias-`. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupsession/#hosts-of-a-backup-process). +- **phase :** `phase` indicates the restore phase of this host. +- **duration :** `duration` indicates the total time taken to complete the restore process for this host. +- **error :** `error` shows the reason for failure if the restore process fails for this host. + +## Next Steps + +- Learn how restore of workloads data works from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how restore of databases works from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how restore stand-alone PVC works from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/restoresession/restoresession.yaml b/content/docs/v2024.8.27/concepts/crds/restoresession/restoresession.yaml new file mode 100644 index 0000000000..9ac033e18e --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/restoresession/restoresession.yaml @@ -0,0 +1,116 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: statefulset-restore + namespace: demo +spec: + driver: Restic + repository: + name: minio-repo + namespace: demo + # task: + # name: workload-restore # task field is not required for workload data backup but it is necessary for database backup. + target: + alias: my-sts + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: recovered-statefulset + volumeMounts: + - mountPath: /source/data + name: source-data + rules: + - targetHosts: ["my-sts-3","my-sts-4"] # "pod-3" and "pod-4" will have restored data of backed up host "pod-1" + sourceHost: "my-sts-1" # source host + paths: + - /source/data + include: + - /source/data/*.json + - targetHosts: [] # empty host match all hosts + sourceHost: "" # no source host indicates that the host is pod itself + paths: + - /source/data + exclude: + - /source/data/tmp.json + - /source/data/*.txt + hooks: + preRestore: + exec: + command: + - /bin/sh + - -c + - echo "Sample PreRestore hook demo" + containerName: stash-init + postRestore: + executionPolicy: Always + exec: + command: + - /bin/sh + - -c + - echo "Sample PostRestore hook demo" + containerName: stash-init + runtimeSettings: + container: + resources: + limits: + memory: 256M + requests: + memory: 256M + securityContext: + runAsGroup: 2000 + runAsUser: 2000 + ionice: + class: 2 + classData: 4 + nice: + adjustment: 5 + pod: + imagePullSecrets: + - name: my-private-registry-secret + serviceAccountName: my-backup-sa + tempDir: + disableCaching: false + medium: Memory + sizeLimit: 2Gi + timeOut: 30m +status: + totalHosts: 5 + phase: Succeeded + sessionDuration: 2m40.595857548s + conditions: + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Repository demo/minio-repo exist. + reason: RepositoryAvailable + status: "True" + type: RepositoryFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Backend Secret demo/minio-secret exist. + reason: BackendSecretAvailable + status: "True" + type: BackendSecretFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Restore target apps/v1 statefulset/recovered-statefulset found. + reason: TargetAvailable + status: "True" + type: RestoreTargetFound + - lastTransitionTime: "2020-07-25T17:55:56Z" + message: Successfully injected stash init-container. + reason: InitContainerInjectionSucceeded + status: "True" + type: StashInitContainerInjected + stats: + - duration: 884.431745ms + hostname: host-1 + phase: Succeeded + - duration: 769.924342ms + hostname: host-2 + phase: Succeeded + - duration: 868.694738ms + hostname: host-3 + phase: Succeeded + - duration: 792.097784ms + hostname: host-4 + phase: Succeeded + - duration: 833.139795ms + hostname: host-0 + phase: Succeeded diff --git a/content/docs/v2024.8.27/concepts/crds/snapshot/index.md b/content/docs/v2024.8.27/concepts/crds/snapshot/index.md new file mode 100644 index 0000000000..f9257a8c84 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/snapshot/index.md @@ -0,0 +1,215 @@ +--- +title: Snapshot Overview +menu: + docs_v2024.8.27: + identifier: snapshot-overview + name: Snapshot + parent: crds + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Snapshot + +## What is Snapshot + +A `Snapshot` is a representation of backup snapshot in a Kubernetes native way. Stash uses an [Aggregated API Server](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md) to provide `get` and `list` capabilities for snapshots from the backend. + +This enables you to view some useful information such as `creationTimestamp`, `snapshot id`, `backed up path` etc of a snapshot. This also provides the capability to restore a specific snapshot. + +## Snapshot structure + +Like other official Kuberentes resources, a `Snapshot` has `TypeMeta`, `ObjectMeta` and `Status` sections. However, unlike other Kubernetes resources, it does not have a `Spec` section. + +A sample `Snapshot` object is shown below, + +```yaml +apiVersion: repositories.stash.appscode.com/v1alpha1 +kind: Snapshot +metadata: + creationTimestamp: "2020-07-25T17:41:31Z" + labels: + hostname: app + repository: minio-repo + name: minio-repo-b54ee4a0 + namespace: demo + uid: b54ee4a0e9c9084696dc976f125c4fd0e6b1a31abfd82cfc857b3bc9e559fa2f +status: + gid: 0 + hostname: app + paths: + - /var/lib/html + repository: minio-repo + tree: 11527d99281bf3725d58cd637d1f3c19ab9d397d6cff1887a1cd1f9c8c5ebb80 + uid: 0 + username: "" +``` + +Here, we are going to describe the various sections of a `Snapshot` object. + +### Snapshot `Metadata` + +- **metadata.name** + + `metadata.name` specifies the name of the `Snapshot` object. It follows the following pattern, `-`. + +- **metadata.uid** + + `metadata.uid` specifies the complete id of the respective restic snapshot in the backend. + +- **metadata.creationTimestamp** + + `metadata.creationTimestamp` represents the time when the snapshot was created. + +- **metadata.labels** + + A `Snapshot` object holds `repository` and `hostname` as a label in `metadata.labels` section. This helps a user to query the snapshots of a particular repository and/or a particular host. + +### Snapshot `Status` + +`Snapshot` object has the following fields in `.status` section: + +- **status.gid** +`status.gid` indicates the group identifier of the user who took this backup. + +- **status.hostname** +`status.hostname` indicates the host identifier whose data has been backed up in this snapshot. In order to know how this host identifier are generated, please visit [here](/docs/v2024.8.27/concepts/crds/backupsession/#hosts-of-a-backup-process). + +- **status.paths** +`status.paths` indicates the paths that have been backed up in this snapshot. + +- **status.repository** +`status.repository` indicates the name of the Repository crd where this Snapshot came from. + +- **status.tree** +`status.tree` indicates `tree` of the restic snapshot. For more details, please visit [here](https://restic.readthedocs.io/en/stable/100_references.html#trees-and-data). + +- **status.uid** +`status.uid` indicates `uid` of the user who took this backup. For `root` user it is 0. + +- **status.username** +`status.username` indicates the name of the user who runs the backup process that took the backup. + +- **status.tags** +`status.tags` indicates the tags of the snapshot. + +## Working with Snapshot + +In this section, we are going to show different types of operations you can perform on the Snapshots. + +**Listing Snapshots:** + +Stash lists Snapshots directly from the backend. This operation can take more time than the default request timeout of `kubectl`. So, we are going to increase the request timeout through the `--request-timeout` flag for get/list commands. + +```bash +# List Snapshots of all Repositories in the current namespace +$ kubectl get snapshot --request-timeout=300s + +# List Snapshots of all Repositories of all namespaces +$ kubectl get snapshot --all-namespaces --request-timeout=300s + +# List Snapshots of all Repositories of a particular namespace +$ kubectl get snapshot -n demo --request-timeout=300s + +# List Snapshots of a particular Repository +$ kubectl get snapshot -l repository=local-repo --request-timeout=300s + +# List Snapshots from multiple Repositories +$ kubectl get snapshot -l 'repository in (local-repo,gcs-repo)' --request-timeout=300s + +# List Snapshots of a particular host +$ kubectl get snapshot -l hostname=db --request-timeout=300s + +# List Snapshots of a particular Repository and particular host +$ kubectl get snapshot -l repository=local-repo,hostname=db --request-timeout=300s +``` + +**Viewing information of a particular Snapshot:** + +```bash +$ kubectl get snapshot [-n ] -o yaml + +# Example: +$ kubectl get snapshot -n demo local-repo-02b0ed42 -o yaml +``` + +## Preconditions for Snapshot + +1. Stash provides `Snapshots` listing facility with the help of an Aggregated API Server. Your cluster must support Aggregated API Server. Otherwise, you won't be able to perform `get` or `list` operation on `Snapshot`. + +2. If you are using [local](/docs/v2024.8.27/guides/backends/local/) backend, the respective pod that took the backup must be in `Running` state. It is not necessary if you use cloud backends. + +## Next Steps + +- Learn how to configure `BackupConfiguration` to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to configure `BackupConfiguration` to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to configure `BackupConfiguration` to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/snapshot/snapshot.yaml b/content/docs/v2024.8.27/concepts/crds/snapshot/snapshot.yaml new file mode 100644 index 0000000000..2903474b9f --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/snapshot/snapshot.yaml @@ -0,0 +1,19 @@ +apiVersion: repositories.stash.appscode.com/v1alpha1 +kind: Snapshot +metadata: + creationTimestamp: "2020-07-25T17:41:31Z" + labels: + hostname: app + repository: minio-repo + name: minio-repo-b54ee4a0 + namespace: demo + uid: b54ee4a0e9c9084696dc976f125c4fd0e6b1a31abfd82cfc857b3bc9e559fa2f +status: + gid: 0 + hostname: app + paths: + - /var/lib/html + repository: minio-repo + tree: 11527d99281bf3725d58cd637d1f3c19ab9d397d6cff1887a1cd1f9c8c5ebb80 + uid: 0 + username: "" diff --git a/content/docs/v2024.8.27/concepts/crds/task/index.md b/content/docs/v2024.8.27/concepts/crds/task/index.md new file mode 100644 index 0000000000..4151d19ea1 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/task/index.md @@ -0,0 +1,162 @@ +--- +title: Task Overview +menu: + docs_v2024.8.27: + identifier: task-overview + name: Task + parent: crds + weight: 35 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Task + +## What is Task + +An entire backup or restore process needs an ordered execution of one or more steps. A [Function](/docs/v2024.8.27/concepts/crds/function/) represents a step of a backup or restore process. A `Task` is a Kubernetes `CustomResourceDefinition`(CRD) which specifies a sequence of functions along with their parameters in a Kubernetes native way. + +When you install Stash, some `Task`s will be pre-installed for supported targets like databases, etc. However, you can create your own `Task` to customize or extend the backup/restore process. Stash will execute these steps in the order you have specified. + +## Task CRD Specification + +Like any official Kubernetes resource, a `Task` has `TypeMeta`, `ObjectMeta` and `Spec` sections. However, unlike other Kubernetes resources, it does not have a `Status` section. + +A sample `Task` object to backup a PostgreSQL database is shown below: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: Task +metadata: + name: postgres-backup-11.2 +spec: + steps: + - name: postgres-backup-11.2 + params: + - name: outputDir # specifies where to write output file + value: /tmp/output + - name: secretVolume # specifies where backend secret has been mounted + value: secret-volume + - name: update-status + params: + - name: outputDir + value: /tmp/output + - name: secretVolume + value: secret-volume + volumes: + - name: secret-volume + secret: + secretName: ${REPOSITORY_SECRET_NAME} +``` + +This `Task` uses two functions to backup a PostgreSQL database. The first step uses `postgres-backup-11.2` function that dumps PostgreSQL database and uploads the dumped file. The second step uses `update-status` function which updates the status of the `BackupSession` and `Repository` crd for respective backup. + +Here, we are going to describe the various sections of a `Task` crd. + +### Task `Spec` + +A `Task` object has the following fields in the `spec` section: + +#### spec.steps + +`spec.steps` section specifies a list of functions and their parameters in the order they should be executed. You can also templatize this section using the [variables](/docs/v2024.8.27/concepts/crds/function/#stash-provided-variables) that Stash can resolve itself. Stash will resolve all the variables and create a pod definition with a container specification for each `Function` specified in `steps` section. + +Each `step` consists of the following fields: + +- **name :** `name` specifies the name of the `Function` that will be executed at this step. +- **params :** `params` specifies an optional list of variables names and their values that Stash should use to resolve the respective `Function`. If you use a variable in a `Function` specification whose value Stash cannot provide, you can pass the value of that variable using this `params` section. You have to specify the following fields for a variable: + - **name :** `name` of the variable. + - **value :** value of the variable. + +In the above example `Task`, we have used `outputDir` variable in `postgres-backup-11.2` function that Stash can't resolve automatically. So, we have passed the value using the `params` section in the `Task` object. + +>Stash executes the `Functions` in the order they appear in `spec.steps` section. All the functions except the last one will be used to create `init-container` specification and the last function will be used to create `container` specification for respective backup job. This guarantees an ordered execution of the steps. + +#### spec.volumes + +`spec.volumes` specifies a list of volumes that should be mounted in the respective job created for this `Task`. In the sample we have shown above, we need to mount storage secret for the backup job. So, we have added the secret volume in `spec.volumes` section. Note that, we have used `REPOSITORY_SECRET_NAME` variable as secret name. This variable will be resolved by Stash from `Repository` specification. + +## Why Function and Task? + +You might be wondering why we have introduced `Function` and `Task` crd. We have designed `Function-Task` model for the following reasons: + +- **Customizability:** `Function` and `Task` enables you to customize backup/recovery process. For example, currently we use [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) in `mysql-backup` Function to backup MySQL database. You can build a custom `Function` using Percona's [xtrabackup](https://www.percona.com/software/mysql-database/percona-xtrabackup) tool instead of `mysqldump`. Then you can write a `Task` with this custom `Function` and use it to backup your target MySQL database. + + You can also customize backup/restore process by executing hooks before or after the backup/restore process. For example, if you want to execute some logic to prepare your apps for backup or you want to send an email notification after each backup, you just need to add `Function` with your custom logic and respective `Task` to execute them. + +- **Extensibility:** Currently, Stash supports backup of MySQL, MongoDB and PostgreSQL databases. You can easily backup the databases that are not officially supported by Stash. You just need to create a `Function` and a `Task` for your desired database. + +- **Re-usability:** `Function`'s are self-sufficient and independent of Stash. So, you can reuse them in any application that uses `Function-Task` model. + +## Next Steps + +- Learn how Stash backup databases using `Function-Task` model from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how Stash backup stand-alone PVC using `Function-Task` model from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/concepts/crds/task/task.yaml b/content/docs/v2024.8.27/concepts/crds/task/task.yaml new file mode 100644 index 0000000000..375a9f6ed5 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/crds/task/task.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: Task +metadata: + name: postgres-backup-11.2 +spec: + steps: + - name: postgres-backup-11.2 + params: + - name: outputDir # specifies where to write output file + value: /tmp/output + - name: secretVolume # specifies where backend secret has been mounted + value: secret-volume + - name: update-status + params: + - name: outputDir + value: /tmp/output + - name: secretVolume + value: secret-volume + volumes: + - name: secret-volume + secret: + secretName: ${REPOSITORY_SECRET_NAME} diff --git a/content/docs/v2024.8.27/concepts/what-is-stash/_index.md b/content/docs/v2024.8.27/concepts/what-is-stash/_index.md new file mode 100644 index 0000000000..80b37c1883 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/what-is-stash/_index.md @@ -0,0 +1,77 @@ +--- +title: What is Stash +description: What is Stash +menu: + docs_v2024.8.27: + identifier: what-is-stash + parent: concepts + name: What is Stash + weight: 10 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/concepts/what-is-stash/architecture/images/stash_architecture.svg b/content/docs/v2024.8.27/concepts/what-is-stash/architecture/images/stash_architecture.svg new file mode 100644 index 0000000000..04fae9a129 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/what-is-stash/architecture/images/stash_architecture.svg @@ -0,0 +1,924 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/concepts/what-is-stash/architecture/index.md b/content/docs/v2024.8.27/concepts/what-is-stash/architecture/index.md new file mode 100644 index 0000000000..33a9835131 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/what-is-stash/architecture/index.md @@ -0,0 +1,159 @@ +--- +title: Stash Architecture +description: Stash Architecture +menu: + docs_v2024.8.27: + identifier: architecture-concepts + name: Architecture + parent: what-is-stash + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Architecture + +Stash is a Kubernetes operator for [restic](https://restic.net/). At the heart of Stash, it is a Kubernetes [controller](https://book.kubebuilder.io/cronjob-tutorial/controller-overview.html). It uses [Custom Resource Definition(CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) to specify targets and behaviors of backup and restore process in a Kubernetes native way. A simplified architecture of Stash is shown below: + +
+  Stash Architecture +
Fig: Stash Architecture
+
+ +## Components + +Stash consists of various components that implement backup and restore logic. This section will give you a brief overview of such components. + +### Stash Operator + +When a user installs Stash, it creates a Kubernetes [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) typically named `stash-operator`. This deployment controls the entire backup and restore process. `stash-operator` deployment runs two containers. One of them is called `operator` which performs the core functionality of Stash and the other one is `pushgateway` which is a Prometheus [pushgateway](https://github.com/prometheus/pushgateway). + +#### Operator + +`operator` container runs all the controllers as well as an [Aggregated API Server](https://kubernetes.io/docs/tasks/access-kubernetes-api/setup-extension-api-server/). + +##### Controllers + +Controllers watch various Kubernetes resources as well as the custom resources introduced by Stash. It applies the backup or restore logic for a target resource when requested by users. + +##### Aggregated API Server + +Aggregated API Server self-hosts validating and mutating [webhooks](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) and runs an Extension API Server for Snapshot resource. + +- **Mutating Webhook:** Stash uses Mutating Webhook to inject backup `sidecar` or restore `init-container` into a workload if any backup or restore process is configured for it. It is also used for defaulting custom resources. + +- **Validating Webhook:** Validating Webhook is used to validate the custom resource objects. + +- **Snapshot Server:** Stash uses Kubernetes Extended API Server to provide `view` and `list` capability of backed up snapshots. When a user requests for Snapshot objects, Snapshot server reads respective information directly from backend repository and returns object representation in a Kubernetes native way. + +#### Pushgateway + +`pushgateway` container runs Prometheus [pushgateway](https://github.com/prometheus/pushgateway). All the backup sidecars/jobs and restore init-containers/jobs send Prometheus metrics to this pushgateway after completing their backup or restore process. Prometheus server can scrape those metrics from this pushgateway. + +### Backend + +Backend is the storage where Stash stores backed up files. It can be a cloud storage like GCS bucket, AWS S3, Azure Blob Storage etc. or a Kubernetes persistent volume like [NFS](https://kubernetes.io/docs/concepts/storage/volumes/#nfs), [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim), etc. To learn more about backend, please visit [here](/docs/v2024.8.27/guides/backends/overview/). + +### CronJob + +When a user creates a [BackupConfiguration](#backupconfiguration) object, Stash creates a CronJob with the schedule specified in it. At each scheduled slot, this CronJob triggers a backup for the targeted workload. + +### Backup Sidecar / Backup Job + +When a user creates a [BackupConfiguration](#backupconfiguration) object, Stash injects a `sidecar` to the target if it is a workload (i.e. `Deployment`, `DaemonSet`, `StatefulSet` etc.). This `sidecar` takes backup when the respective CronJob triggers a backup. If the target is a database or stand-alone volume, Stash creates a job to take backup at each trigger. + +### Restore Init-Container / Restore Job + +When a user creates a [RestoreSession](#restoresession) object, Stash injects an `init-container` to the target if it is a workload (i.e. `Deployment`, `DaemonSet`, `StatefulSet` etc.). This `init-container` performs restore process on restart. If the target is a database or stand-alone volume, Stash creates a job to restore the target. + +### Custom Resources + +Stash uses [Custom Resource Definition(CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) to specify targets and behaviors of backup and restore process in a Kubernetes native way. This section will give you a brief overview of the custom resources used by Stash. + +- **Repository:** A `Repository` specifies the backend storage system where the backed up data will be stored. A user has to create `Repository` object for each backup target. Only one target can be backed up into one `Repository`. For details about `Repository`, please visit [here](/docs/v2024.8.27/concepts/crds/repository/). + +- **BackupConfiguration:** A `BackupConfiguration` specifies the backup target, behaviors (schedule, retention policy etc.), `Repository` object that holds backend information etc. A user has to create one `BackupConfiguration` object for each backup target. When a user creates a `BackupConfiguration`, Stash creates a CronJob for it and injects backup sidecar to the target if it is a workload (i.e. Deployment, DaemonSet, StatefulSet etc.). For more details about `BackupConfiguration`, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/). + +- **BackupSession:** A `BackupSession` object represents a backup run of a target. It is created by respective CronJob at each scheduled time slot. It refers to a `BackupConfiguration` object for necessary configuration. Controller that runs inside backup sidecar (in case of backup via job, it is stash operator itself) will watch this `BackupSession` object and start taking the backup instantly. A user can also create a `BackupSession` object manually to trigger instant backups. For more details about `BackupSession`s, please visit [here](/docs/v2024.8.27/concepts/crds/backupsession/). + +- **RestoreSession:** A `RestoreSession` specifies what to restore and the source of data. A user has to create a `RestoreSession` object when s/he wants to restore a target. When s/he creates a `RestoreSession`, Stash injects an `init-container` into the target workload (launches a job if the target is not a workload) to restore. For more details about `RestoreSession`, please visit [here](/docs/v2024.8.27/concepts/crds/restoresession/). + +- **Function:** A `Function` is a template for a container that performs only a specific action. For example, `pg-backup` function only dumps and uploads the dumped file into the backend, whereas `update-status` function updates the status of the respective `BackupSession` and `Repository` and sends Prometheus metrics to `pushgateway` based on the output of another function. For more details about `Function`, please visit [here](/docs/v2024.8.27/concepts/crds/function/). + +- **Task:** A complete backup or restore process may consist of several steps. For example, in order to backup a PostgreSQL database we first need to dump the database, upload the dumped file to backend and then we need to update `Repository` and `BackupSession` status and send Prometheus metrics. We represent such individual steps via `Function` objects. An entire backup or restore process needs an ordered execution of one or more functions. A `Task` specifies an ordered collection of functions along with their parameters. `Function` and `Task` enables users to extend or customize the backup/restore process. For more details about `Task`, please visit [here](/docs/v2024.8.27/concepts/crds/task/). + +- **BackupBlueprint:** A `BackupBlueprint` enables users to provide a blueprint for `Repository` and `BackupConfiguration` object. Then, s/he just needs to add some annotations to the workload s/he wants to backup. Stash will automatically create respective `Repository` and `BackupConfiguration` according to the blueprint. In this way, users can create a single blueprint for all similar types of workloads and backup them only by applying some annotations on them. In Stash parlance, we call this process **Auto Backup**. For more details about `BackupBlueprint`, please visit [here](/docs/v2024.8.27/concepts/crds/backupblueprint/). + +- **BackupBatch:** Sometimes, a single stateful component may not meet the requirements of your application. For example, in order to deploy a WordPress, you will need a Deployment for the WordPress and another Deployment for database to store it's contents. Now, you may want to backup both of the deployment and database together as they are parts of a single application. A `BackupBatch` is a Kubernetes `CustomResourceDefinition`(CRD) which lets you configure backup for multiple co-related stateful components(workload, database etc.) together. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/backupbatch/). + +- **RestoreBatch:** A `RestoreBatch` allows restoring of multiple co-related targets together that were backed up using a `BackupBatch`. For more details, please visit [here](/docs/v2024.8.27/concepts/crds/restorebatch/). + +- **AppBinding:** An `AppBinding` holds necessary information to connect with an application. For more details about `AppBinding`, please visit [here](/docs/v2024.8.27/concepts/crds/appbinding/). + +- **Snapshot:** A `Snapshot` is a representation of a backup snapshot in a Kubernetes native way. Stash uses Kuberentes Extended API Server for handling `Snapshot`s. For more details about `Snapshot`s, please visit [here](/docs/v2024.8.27/concepts/crds/snapshot/). diff --git a/content/docs/v2024.8.27/concepts/what-is-stash/overview/index.md b/content/docs/v2024.8.27/concepts/what-is-stash/overview/index.md new file mode 100644 index 0000000000..9aab5fd100 --- /dev/null +++ b/content/docs/v2024.8.27/concepts/what-is-stash/overview/index.md @@ -0,0 +1,111 @@ +--- +title: Stash Overview +description: Stash Overview +menu: + docs_v2024.8.27: + identifier: overview-concepts + name: Overview + parent: what-is-stash + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: concepts +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash + +[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/{{< param "info.version" >}}/guides/addons/overview/) for any custom workload. + +## Features + +| Features | Community Edition | Enterprise Edition | Scope | +| --------------------------------------------------------------------------------------- | :---------------: | :----------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | Open source Stash Free for everyone | Open Core Stash for production Enterprise workloads | | +| Backup & Restore Stand-alone Volume (PVC) | ✓ | ✓ | PersistentVolumeClaim, PersistentVolume | +| Schedule Backup, Instant Backup | ✓ | ✓ | Schedule through [cron expression](https://en.wikipedia.org/wiki/Cron) or trigger instant backup using Stash Kubernetes plugin | +| Pause Backup | ✓ | ✓ | No new backup when paused. | +| Backup & Restore subset of files | ✓ | ✓ | Only backup/restore the files that matches the provided patterns | +| Cleanup old snapshots automatically | ✓ | ✓ | Cleanup old snapshots according to different [retention policies](https://restic.readthedocs.io/en/stable/060_forget.html#removing-snapshots-according-to-a-policy) | +| Encryption, Deduplication (send only diff) | ✓ | ✓ | Encrypt backed up data with AES-256. Stash only sends the changes since last backup. | +| [CSI Driver Integration](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) | ✓ | ✓ | VolumeSnapshot for Kubernetes workloads. Supported for Kubernetes v1.17.0+. | +| Prometheus Metrics | ✓ | ✓ | Rich backup metrics, restore metrics and Stash operator metrics. | +| Security | ✓ | ✓ | Built-in support for RBAC, PSP and Network Policy | +| CLI | ✓ | ✓ | `kubectl` plugin (for Kubernetes 1.12+) | +| Extensibility and Customizability | ✓ | ✓ | Write addons for bespoke applications and customize currently supported workloads | +| Hooks | ✓ | ✓ | Execute `httpGet`, `httpPost`, `tcpSocket` and `exec` hooks before and after of backup or restore process. | +| Cloud Storage as Backend | ✓ | ✓ | Stores backup data in AWS S3, Minio, Rook, GCS, Azure, OpenStack Swift, Backblaze B2 and Rest Server | +| On-prem Storage as Backend | ✗ | ✓ | Stores backup data in any locally mounted Kubernetes Volumes such as NFS, etc. | +| Backup & Restore databases | ✗ | ✓ | PostgreSQL, MySQL, MongoDB, Elasticsearch, Redis, MariaDB, Percona XtraDB | +| Auto Backup | ✗ | ✓ | Share backup configuration across workloads using templates. Enable backup for a target application via annotation. | +| Batch Backup & Batch Restore | ✗ | ✓ | Backup and restore co-related applications (eg, WordPress server and its database) together | +| Point-In-Time Recovery (PITR) | ✗ | Planned | Restore a set of files from a time in the past. | +| Role Based Access Control (RBAC) | ✓ | ✓ | | +| Open Policy Agent (OPA) | ✓ | ✓ | | +| Pod Security Policy (PSP) | ✓ | ✓ | | +| Network Policy | ✓ | ✓ | | +| GDPR | ✗ | Planned | | \ No newline at end of file diff --git a/content/docs/v2024.8.27/design.md b/content/docs/v2024.8.27/design.md new file mode 100644 index 0000000000..717061745b --- /dev/null +++ b/content/docs/v2024.8.27/design.md @@ -0,0 +1,902 @@ +# Stash Design Overview + +We are going to make a design overhaul of Stash to simplify backup and recovery process and support some most requested features. This doc will discuss what features stash is going to support and how these features may work. + +We have introduced some new crd such as [Function](#function), [Task](#action) etc. and made whole process more modular. This will make easy to add support for new features and the users will also be able to customize backup process. Furthermore, this will make stash resources inter-operable between different tools and even might allow to use stash resources as function in serverless concept. + +**We are hoping this design will graduate to GA. So, we are taking security seriously. We are going to make sure that nobody can bypass clusters security using Stash. This might requires to remove some existing features (for example, restore from different namespace). However, we are going to provide an alternate way to cover those use cases.** + +## Goal + +Goal of this new design to support following features: +- [Schedule Backup and Restore Workload Data](#schedule-backup-and-restore-workload-data) +- [Schedule Backup and Restore PVC](#schedule-backup-and-restore-pvc) +- [Schedule Backup and Restore Database](#schedule-backup-and-restore-database) +- [Schedule Backup Cluster YAMLs](#schedule-backup-cluster-yamls) +- [Trigger Backup Instantly](#trigger-backup-instantly) +- [Default Backup](#default-backup) +- [Auto Restore](#auto-restore) +- [Stash cli/kubectl-plugin](#stash-clikubectl-plugin) +- [Function](#function) +- [Task](#task) + +## Schedule Backup and Restore Workload Data + +### Backup Workload Data + +User will be able to backup data from a running workload. + +**What user have to do?** + +- Create a `Repository` crd. +- Create a `BackupConfiguration` crd pointing to targeted workload. + +Sample `Repository` crd: + +```yaml +apiVersion: stash.appscode.com/v1alpha2 +kind: Repository +metadata: + name: stash-backup-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-backup-repo + prefix: default/deployment/stash-demo + storageSecretName: gcs-secret +``` + +Sample `BackupConfiguration` crd: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: workload-data-backup + namespace: demo +spec: + schedule: '@every 1h' + # + # repository refers to the Repository crd that hold backend information + repository: + name: stash-backup-repo + # target indicate the target workload that we want to backup + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + # directories indicates the directories inside the workload we want to backup + directories: + - /source/data + # retentionPolicies specify the policy to follow to clean old backup snapshots + retentionPolicy: + keepLast: 5 + prune: true +``` + +**How it will work?** + +- Stash will watch for `BackupCofiguration` crd. When it will find a `BackupConfiguration` crd, it will inject a `sidecar` container to the workload and start a `cron` for scheduled backup. +- In each schedule, the `cron` will create `BackupSession` crd. +- The `sidecar` container watches for `BackupSession` crd. If it finds one, it will take backup instantly and update `BackupSession` status accordingly. + +Sample `BackupSession` crd: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + name: demo-volume-backup-session + namespace: demo +spec: + # backupConfiguration indicates the BackupConfiguration crd of respective target that we want to backup + backupConfiguration: + name: backup-volume-demo +status: + observedGeneration: 239844#2 + phase: Succeed + stats: + - direcotry: /source/data + snapshot: 40dc1520 + totalSize: 1.720 GiB + uploaded: 1.200 GiB # upload size can be smaller than original file size if there are some duplicate files + fileStats: + new: 5307 + changed: 0 + unmodified: 0 +``` + +### Restore Workload Data + +User will be able to restore backed up data either into a separate volume or into the same workload from where the backup was taken. Here, is an example for recovering into same workload. + +**What user have to do?** + +- Create a `RestoreSession` crd pointing `target` field to the workload. + +Sample `RestoreSession` crd to restore into same workload: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: recovery-database-demo + namespace: demo +spec: + repository: + name: stash-backup-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + directories: # indicates which directories will be recovered + - /source/data +``` + +**How it will work?** + +- When Stash will find a `RestoreSession` crd created to restore into a workload, it will inject a `init-container` to the targeted workload. +- Then, it will restart the workload. +- The `init-container` will restore data inside the workload. + +> **Warning:** Restore in same workload require to restart the workload. So, there will be downtime of the workload. + +## Schedule Backup and Restore PVC + +### Backup PVC + +User will be also able to backup stand-alone pvc. This is useful for `ReadOnlyMany` or `ReadWriteMany` type pvc. + +**What user have to do?** + +- Create a `Repository` crd for respective backend. + +- Create a `BackupConfiguration` crd pointing `target` field to the volume. + +Sample `BackupConfiguration` crd to backup a PVC: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: volume-backup-demo + namespace: demo +spec: + schedule: '@every 1h' + # task indicates Task crd that specifies the steps to backup a volume. + # stash will create some default Task crd while install to backup/restore various resources. + # user can also crate their own Task to customize backup/recovery + task: + name: volumeBackup + # repository refers to the Repository crd that hold backend information + repository: + name: stash-backup-repo + # target indicate the target workload that we want to backup + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: demo-pvc + mountPath: /source/data + # retentionPolicies specify the policy to follow to clean old backup snapshots + retentionPolicy: + keepLast: 5 + prune: true +``` + +**How it will work?** + +1. Stash will create a `CronJob` using information of respective `Task` crd specified by `task` field. +2. The `CronJob` will take periodic backup of the target volume. + +### Restore PVC + +User will be able to restore backed up data into a volume. + +**What user have to do?** + +- Create a `RestoreSession` crd pointing `target` field to the target volume where the recovered data will be stored. + +Sample `RestoreSession` crd to restore into a volume: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: recovery-volume-demo + namespace: demo +spec: + repository: + name: stash-backup-repo + # task indicates Task crd that specifies steps to restore a volume + task: + name: volumeRecovery + target: # target indicates where the recovered data will be stored + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: demo-pvc + mountPath: /source/data + directories: # indicates which directories will be recovered + - /source/data +``` + +**How it will work?** + +- When Stash will find a `RestoreSession` crd created to restore into a volume, it will launch a Job to restore into that volume. +- The recovery Job will restore and store recovered data to the specified volume. + +## Schedule Backup and Restore Database + +### Backup Database + +User will be able to backup database using Stash. + +**What user have to do?** + +- Create a `Repository` crd for respective backend. +- Create an `AppBinding` crd which holds connection information for the database. If the database is deployed with [KubeDB](https://kubedb.com/docs/0.9.0/welcome/), `AppBinding` crd will be created automatically for each database. +- Create a `BackupConfiguration` crd pointing to the `AppBinding` crd. + +Sample `AppBinding` crd: + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: quick-postgres + namespace: demo + labels: + app.kubernetes.io/name: postgreses.kubedb.com + app.kubernetes.io/instance: quick-postgres +spec: + clientConfig: + insecureSkipTLSVerify: true + service: + name: quick-postgres + port: 5432 + scheme: "http" + secret: + name: quick-postgres-auth + type: kubedb.com/postgres +``` + +Sample `BackupConfiguration` crd for database backup: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: database-backup-demo + namespace: demo +spec: + schedule: '@every 1h' + # task indicates Task crd that specifies the steps to backup postgres database + task: + name: pgBackup + inputs: + database: my-postgres # specify this field if you want to backup a particular database. + # repository refers to the Repository crd that hold backend information + repository: + name: stash-backup-repo + # target indicates the respective AppBinding crd for target database + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: quick-postgres + # retentionPolicies specify the policy to follow to clean old backup snapshots + retentionPolicy: + keepLast: 5 + prune: true +``` + +**How it will work?** + +- When Stash will see a `BackupConfiguration` crd for database backup, it will launch a `CronJob` to take periodic backup of this database. + +### Restore Database + +User will be able to initialize a database from backed up snapshot. + +**What user have to do?** + +- Create a `RestoreSession` crd with `target` field pointing to respective `AppBinding` crd of the target database. + +Sample `RestoreSession` crd to restore database: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: database-recovery-demo + namespace: demo +spec: + repository: + name: stash-backup-repo + # task indicates Task crd that specifies the steps to restore Postgres database + task: + name: pgRecovery + target: # target indicates where to restore + # indicates the respective AppBinding crd for target database that we want to initialize from backup + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: quick-postgres +``` + +**How it will work?:** + +- Stash will launch a Job to restore the backed up database and initialize target with this recovered data. + +## Schedule Backup Cluster YAMLs + +User will be able to backup yaml of the cluster resources. However, currently stash will not provide automatic restore cluster from the YAMLs. So, user will have to create them manually. + +In future, Stash might be able to backup and restore not only YAMLs but also entire cluster. + +**What user have to do?** + +- Create a `Repository` crd for respective backend. +- Create a `BackupConfiguration` crd with `task` field point to a `Task` crd that backup cluster. + +Sample `BackupConfiguration` crd to backup YAMLs of cluster resources: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: cluster-backup-demo + namespace: demo +spec: + schedule: '@every 1h' + # task indicates Task crd that specifies the steps of backup cluster yamls + task: + name: clusterBackup + # repository refers to the Repository crd that hold backend information + repository: + name: stash-backup-repo + # + # retentionPolicies specify the policy to follow to clean old backup snapshots + retentionPolicy: + keepLast: 5 + prune: true +``` + +**How it will work?** + +- Stash will launch a `CronJob` using informations of the `Task` crd specified through `task` filed. +- The `CronJob` will take periodic backup of the cluster. + +## Trigger Backup Instantly + +User will be able to trigger a scheduled backup instantly. + +**What user have to do?** + +- Create a `BackupSession` crd pointing to the target `BackupConfiguration` crd. + +Sample `BackupSession` crd for triggering instant backup: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + name: demo-volume-backup-session + namespace: demo +spec: + # backupConfiguration indicates the BackupConfiguration crd of respective target that we want to backup + backupConfiguration: + name: volume-backup-demo +``` + +**How it will work?** + +- For scheduled backup through `sidecar` container, the `sidecar` container will take instant backup as it watches for `BackupSession` crd. +- For scheduled backup through `CronJob`, Stash will launch another job to take instant backup of the target. + +## Default Backup + +User will also be able to configure a `default` backup for the cluster. So, user will no longer need to create `Repository` and `BackupConfiguration` crd for every workload he want to backup. Instead, she will need to add some annotations to the target workload. + +**What user have to do?** + +- Create a `BackupTemplate` crd which will hold backend information and backup information. +- Add some annotations to the target. If the target is a database then add the annotations to respective `AppBinding` crd. + +### Default Backup of Workload Data + +Sample `BackupTemplate` crd to backup workload data: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupTemplate +metadata: + name: workload-data-backup-template +spec: + backend: + gcs: + bucket: stash-backup-repo + prefix: ${target.namespace}/${target.name} # this prefix template will be used to initialize repository in different directory in backend. + storageSecretName: gcs-secret # users must ensure this secret is present in respective namespace + schedule: '@every 1h' + # < no task required > + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Sample workload with annotations for default backup: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo + # if stash find bellow annotations, it will take backup of it. + annotations: + stash.appscode.com/backuptemplate: "workload-data-backup-template" + stash.appscode.com/targetDirectories: "[/source/data]" +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + configMap: + name: stash-sample-data +``` + +### Default Backup of a PVC + +Sample `BackupTemplate` crd for stand-alone pvc backup: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupTemplate +metadata: + name: volume-backup-template +spec: + backend: + gcs: + bucket: stash-backup-repo + prefix: ${target.namespace}/${target.name} # this prefix template will be used to initialize repository in different directory in backend. + storageSecretName: gcs-secret # users must ensure this secret is present in respective namespace + schedule: '@every 1h' + task: + name: volumeBackup + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Sample PVC with annotation for default backup: + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: demo-pvc + namespace: demo + # if stash find bellow annotations, it will take backup of it. + annotations: + stash.appscode.com/backuptemplate: "volume-backup-template" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi +``` + +### Default Backup of Database + +Sample `BackupTemplate` crd for database backup: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupTemplate +metadata: + name: pgdb-backup-template +spec: + backend: + gcs: + bucket: stash-backup-repo + prefix: ${target.namespace}/${target.name} # this prefix template will be used to initialize repository in different directory in backend. + storageSecretName: gcs-secret # users must ensure this secret is present in respective namespace + schedule: '@every 1h' + task: + name: pgBackup + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Sample `AppBinding` crd with annotations for default backup: + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: quick-postgres + namespace: demo + labels: + app.kubernetes.io/name: postgreses.kubedb.com + app.kubernetes.io/instance: quick-postgres + # if stash find bellow annotations, it will take backup of it. + annotations: + stash.appscode.com/backuptemplate: "pgdb-backup-template" +spec: + clientConfig: + insecureSkipTLSVerify: true + service: + name: quick-postgres + port: 5432 + scheme: "http" + secret: + name: quick-postgres-auth + type: kubedb.com/postgres +``` + +**How it will work?** + +- Stash will watch the workloads, volume and `AppBinding` crds. When Stash will find an workload/volume/AppBinding crd with these annotations, it will create a `Repository` crd and a `BackupConfiguration` crd using the information from respective `Task`. +- Then, Stash will take normal backup as discussed earlier. + +## Auto Restore + +User will be also able to configure an automatic recovery for a particular workload. Each time the workload restart, at first it will perform restore data from backup then original workload's container will start. + +**What user have to do?** + +- User will have to provide some annotations in the workload. + +Sample workload wit annotation to restore on restart: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo + # This annotations indicates that data should be recovered on each restart of the workload + annotations: + stash.appscode.com/restorepolicy: "OnRestart" + stash.appscode.com/repository: "demo-backup-repo" + stash.appscode.com/directories: "[/source/data]" +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + configMap: + name: stash-sample-data +``` + +**How it will work?** + +- When Stash will see a `RestoreSession` crd configured for auto recovery, it will inject an `init-container` to the target. +- The `init-container` will perform recovery on each restart. + +## Stash cli/kubectl-plugin + +We are going to provide a Stash plugin for `kubectl`. This will help to perform following operations: + +- Restore into local machine instead of cluster (necessary for testing purpose). +- Restore into a different namespace from a repository: copy repository + secret into the desired namespace and then create `RestoreSession` object. +- Backup PV: creates matching PVC from PV (ensures that user has permission to read PV) +- Trigger instant backup. + +## Function + +`Function` are independent single-containered workload specification that perform only single task. For example, [pgBackup](#pgbackup) takes backup a PostgreSQL database and [clusterBackup](#clusterbackup) takes backup of YAMLs of cluster resources. `Function` crd has some variable fields with `$` prefix which hast be resolved while creating respective workload. You can consider these variable fields as input for an `Function`. + +Some example `Function` definition is given below: + +#### clusterBackup + +```yaml +# clusterBackup function backup yamls of all resources of the cluster +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: clusterBackup +spec: + image: appscodeci/cluster-tool:v1 + name: cluster-tool + args: + - backup + - --sanitize=${sanitize} + - --provider=${provider} + - --hostname=${hostname} + - --path=${repoDir} + - --output-dir=${outputDir} + - --retention-policy.policy=${policy} + - --retention-policy.value=${retentionValue} + - --metrics.enabled=${enableMetric} + - --metrics.pushgateway-url=${pushgatewayURL} + - --metrics.labels="workload-kind=${workloadKind},workload-name=${workloadName}" + volumeMounts: + - name: ${tempVolumeName} + mountPath: /tmp/restic + - name: ${storageSecretName} + mountPath: /etc/secrets/storage-secret +``` + +#### pgBackup + +```yaml +# pgBackup function backup a PostgreSQL database +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: pgBackup +spec: + image: appscodeci/postgresql-tool:v1 + name: postgres-tool + args: + - backup + - --database=${databases} + - --provider=${provider} + - --hostname=${hostname} + - --path=${repoDir} + - --output-dir=${outputDir} + - --retention-policy.policy=${policy} + - --retention-policy.value=${retentionValue} + - --metrics.enabled=${enableMetric} + - --metrics.pushgateway-url=${pushgatewayURL} + - --metrics.labels="workload-kind=${workloadKind},workload-name=${workloadName}" + runtimeSettings: + env: + - name: PGPASSWORD + valueFrom: + secretKeyRef: + name: $(databaseSecret) + key: "POSTGRES_PASSWORD" + - name: DB_USER + valueFrom: + secretKeyRef: + name: $(databaseSecret) + key: "POSTGRES_USER" + - name: DB_HOST + value: $(host) + volumeMounts: + - name: ${tempVolumeName} + mountPath: /tmp/restic + - name: ${storageSecretName} + mountPath: /etc/secrets/storage-secret + +``` + +#### pgRecovery + +```yaml +# pgRecovery function restore a PostgreSQL database +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: pgRecovery +spec: + image: appscodeci/postgresql-tool:v1 + name: postgres-tool + args: + - restore + - --provider=${provider} + - --hostname=${hostname} + - --path=${repoDir} + - --output-dir=${outputDir} + - --metrics.enabled=${enableMetric} + - --metrics.pushgateway-url=${pushgatewayURL} + - --metrics.labels="workload-kind=${workloadKind},workload-name=${workloadName}" + runtimeSettings: + env: + - name: PGPASSWORD + valueFrom: + secretKeyRef: + name: $(databaseSecret) + key: "POSTGRES_PASSWORD" + - name: DB_USER + valueFrom: + secretKeyRef: + name: $(databaseSecret) + key: "POSTGRES_USER" + - name: DB_HOST + value: $(host) + volumeMounts: + - name: ${tempVolumeName} + mountPath: /tmp/restic + - name: ${storageSecretName} + mountPath: /etc/secrets/storage-secret +``` + +#### stashPostBackup + +```yaml +# stashPostBackup update Repository and BackupSession status for respective backup +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: stashPostBackup +spec: + image: appscode/stash:0.9.0 + name: stash-post-backup + args: + - post-backup-update + - --repository=${repoName} + - --backupsession=${backupSessionName} + - --output-json-dir=${outputJsonDir} + volumeMounts: + - name: ${outputVolumeName} + mountPath: /tmp/restic +``` + +## stashPostRecovery + +```yaml +# stashPostRecovery update RestoreSession status for respective recovery +apiVersion: stash.appscode.com/v1beta1 +kind: Function +metadata: + name: stashPostRecovery +spec: + image: appscode/stash:0.9.0 + name: stash-post-recovery + args: + - post-recovery-update + - --recoveryconfiguration=${recoveryConfigurationName} + - --output-json-dir=${outputJsonDir} + volumeMounts: + - name: ${outputVolumeName} + mountPath: /tmp/restic +``` + +## Task + +A complete backup process may need to perform multiple function. For example, if you want to backup a PostgreSQL database, we need to initialize a `Repository`, then backup the database and finally update `Repository` and `BackupSession` status to inform backup is completed or push backup metrics to a `pushgateway` . `Task` specifies these functions sequentially along with their inputs. + +We have chosen to break complete backup process into several independent steps so that those individual functions can be used with other tool than Stash. It also make easy to add support for new feature. For example, to add support new database backup, we are going to just require to add a `Function` and `Task` crd. We are going to no longer need change anything in Stash operator code. This will also helps users to backup databases that are not officially supported by stash. + +Some sample `Task` is given below: + +#### pgBackup + +```yaml +# pgBackup specifies required functions and their inputs to backup PostgreSQL database +apiVersion: stash.appscode.com/v1beta1 +kind: Task +metadata: + name: pgBackup +spec: + functions: + - name: pgBackup + inputs: + database: ${databases} + provider: ${provider} + hostname: ${hostname} + repoDir: ${prefix} + outputDir: ${outputDir} + policy: ${retentionPolicyName} + retentionValue: ${retentionPolicyValue} + enableMetric: ${enableMetric} + pushgatewayURL: ${pushgatewayURL} + workloadKind: ${kind} + workloadName: ${name} + tempVolumeName: ${tmpVolumeName} + storageSecretName: ${secretName} + - name: stashPostBackup + inputs: + repoName: ${repoName} + backupSession: ${backupSessionName} + outputJsonDir: ${output-dir} + outputVolumeName: ${output-volume-name} +``` + +#### pgRecovery + +```yaml +# pgRecovery specifies required functions and their inputs to restore PostgreSQL database +apiVersion: stash.appscode.com/v1beta1 +kind: Task +metadata: + name: pgRecovery +spec: + functions: + - name: pgRecovery + inputs: + provider: ${provider} + hostname: ${hostname} + repoDir: ${prefix} + outputDir: ${outputDir} + enableMetric: ${enableMetric} + pushgatewayURL: ${pushgatewayURL} + workloadKind: ${kind} + workloadName: ${name} + tempVolumeName: ${tmpVolumeName} + storageSecretName: ${secretName} + - name: stashPostRecovery + inputs: + recoveryConfigurationName: ${recoveryConfigurationName} + outputJsonDir: ${output-dir} + outputVolumeName: ${output-volume-name} +``` + +#### clusterBackup + +```yaml +# clusterBackup specifies required functions and their inputs to backup cluster yaml +apiVersion: stash.appscode.com/v1beta1 +kind: Task +metadata: + name: clusterBackup +spec: + functions: + - name: clusterBackup + inputs: + sanitize: ${sanitize} + provider: ${provider} + hostname: ${hostname} + repoDir: ${prefix} + outputDir: ${outputDir} + policy: ${retentionPolicyName} + retentionValue: ${retentionPolicyValue} + enableMetric: ${enableMetric} + pushgatewayURL: ${pushgatewayURL} + workloadKind: ${kind} + workloadName: ${name} + tempVolumeName: ${tmpVolumeName} + storageSecretName: ${secretName} + - name: stashPostBackup + inputs: + repoName: ${repoName} + backupSession: ${backupSessionName} + outputJsonDir: ${output-dir} + outputVolumeName: ${output-volume-name} +``` diff --git a/content/docs/v2024.8.27/guides/README.md b/content/docs/v2024.8.27/guides/README.md new file mode 100644 index 0000000000..44571d803e --- /dev/null +++ b/content/docs/v2024.8.27/guides/README.md @@ -0,0 +1,115 @@ +--- +title: Table of Contents | Guides +description: Table of Contents | Guides +menu: + docs_v2024.8.27: + identifier: guides-readme + name: Readme + parent: guides + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +url: /docs/v2024.8.27/guides/ +aliases: +- /docs/v2024.8.27/guides/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Guides + +Guides show how to perform different operations with Stash. We have divided guides section into the following sub-sections: + +- [Supported Backends](/docs/v2024.8.27/guides/backends/overview/): Describes how to configure different storage for storing backed up data. +- [Workload Volume Backup](/docs/v2024.8.27/guides/workloads/overview/): Shows how to use Stash to backup and restore volumes of a workload (i.e. `Deployment`, `StatefulSet`, `DaemonSet`, etc). +- [Stand-alone Volume Backup](/docs/v2024.8.27/guides/volumes/overview/): Shows how to use Stash to backup and restore stand-alone volumes(i.e. `PersistentVolumeClaim`). +- [Batch Backup](/docs/v2024.8.27/guides/batch-backup/overview/): Shows how to backup multiple co-related components using a single configuration known as `BackupBatch`. +- [Auto Backup](/docs/v2024.8.27/guides/auto-backup/overview/): Shows how to configure automatic backup of any stateful workload in your cluster. +- [Volume Snapshot](/docs/v2024.8.27/guides/volumesnapshot/overview/): Shows how Stash takes snapshot of `PersistentVolumeClaim`s and restore them from snapshot using Kubernetes `VolumeSnapshot` API. + +- **Different Use Cases:** +Shows different uses cases of Stash like instant backup, pause backup, cross-namespace backup and restore etc. + + - [Instant Backup](/docs/v2024.8.27/guides/use-cases/instant-backup/): Shows you how to take an instant backup in Stash. + - [Exclude/Include Files](/docs/v2024.8.27/guides/use-cases/exclude-include-files/): Shows how to exclude/include subset of files during backup/restore process. + - [Pause Backup](/docs/v2024.8.27/guides/use-cases/pause-backup/): Shows how to pause a backup temporarily. + - [Clone Data Volumes](/docs/v2024.8.27/guides/use-cases/clone-pvc/): Shows how to clone data volumes of a workload into a different namespace in a cluster using Stash. + - [File Ownership](/docs/v2024.8.27/guides/use-cases/ownership/): Explains when and how ownership of the restored files can be changed. + - [Cross-Cluster Backup and Restore](/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/): Shows how to take backup and restore across clusters using Stash. + - [Customize Backup and Restore](/docs/v2024.8.27/guides/use-cases/customize-backup-restore/): Shows how to customize backup and restore processes in Stash according to your needs. + +- **Managed Backup** +Shows how backup and restore can be managed in some specific scenerios. + - [Dedicated Backup Namespace](/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/): Shows you how to manage backup and restore from a dedicated namespace for targets of different namespaces using Stash. + - [Dedicated Storage Namespace](/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/): Shows you how to take backup and restore by keeping the storage resources (Repository and backend Secret) in a dedicated namespace using Stash. + +- [Platforms](/docs/v2024.8.27/guides/platforms/eks-irsa/): Shows how to use Stash to backup and restore volumes of a Kubernetes workload running in different platforms. +- [Monitoring](/docs/v2024.8.27/guides/monitoring/overview/): Shows how Prometheus monitoring works with Stash, what metrics Stash exports, and how to enable monitoring. +- [Hooks](/docs/v2024.8.27/guides/hooks/overview/): Shows how to execute different actions before/after the backup/restore process. +- [CLI](/docs/v2024.8.27/guides/cli/kubectl-plugin/): Shows how to manage Stash objects quickly and easily using Stash `kubectl` plugin. +- [Troubleshooting](/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/): Gives an overview of how you can gather the necessary information to identify the issue that causes the backup/restore failure. +- [Security](/docs/v2024.8.27/guides/security/rbac/): Describes different built-in cluster security support by Stash. diff --git a/content/docs/v2024.8.27/guides/_index.md b/content/docs/v2024.8.27/guides/_index.md new file mode 100644 index 0000000000..9774e0655c --- /dev/null +++ b/content/docs/v2024.8.27/guides/_index.md @@ -0,0 +1,75 @@ +--- +title: Guides | Stash +menu: + docs_v2024.8.27: + identifier: guides + name: Guides + weight: 40 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/addons/_index.md b/content/docs/v2024.8.27/guides/addons/_index.md new file mode 100644 index 0000000000..b142f34322 --- /dev/null +++ b/content/docs/v2024.8.27/guides/addons/_index.md @@ -0,0 +1,76 @@ +--- +title: Addons | Stash +menu: + docs_v2024.8.27: + identifier: addons + name: Addons + parent: guides + weight: 110 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/addons/overview/images/addon_overview.svg b/content/docs/v2024.8.27/guides/addons/overview/images/addon_overview.svg new file mode 100644 index 0000000000..2cd2053c94 --- /dev/null +++ b/content/docs/v2024.8.27/guides/addons/overview/images/addon_overview.svg @@ -0,0 +1,433 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/addons/overview/index.md b/content/docs/v2024.8.27/guides/addons/overview/index.md new file mode 100644 index 0000000000..9185b9a21a --- /dev/null +++ b/content/docs/v2024.8.27/guides/addons/overview/index.md @@ -0,0 +1,108 @@ +--- +title: Addons | Stash +menu: + docs_v2024.8.27: + identifier: addons-overview + name: Overview + parent: addons + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# 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](/docs/v2024.8.27/concepts/crds/function/) which resembles a step of backup/restore process and a [Task](/docs/v2024.8.27/concepts/crds/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](/docs/v2024.8.27/concepts/crds/function/) and a [Task](/docs/v2024.8.27/concepts/crds/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](/docs/v2024.8.27/setup/install/stash/): + +{{< catalogtable "elasticsearch" "mariadb" "mongodb" "mysql" "percona-xtradb" "postgres" >}} diff --git a/content/docs/v2024.8.27/guides/auto-backup/_index.md b/content/docs/v2024.8.27/guides/auto-backup/_index.md new file mode 100644 index 0000000000..89d89bfb01 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/_index.md @@ -0,0 +1,76 @@ +--- +title: Auto Backup | Stash +menu: + docs_v2024.8.27: + identifier: auto-backup + name: Auto Backup + parent: guides + weight: 60 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/auto-backup/database/index.md b/content/docs/v2024.8.27/guides/auto-backup/database/index.md new file mode 100644 index 0000000000..70bd6c8e11 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/database/index.md @@ -0,0 +1,147 @@ +--- +title: Auto Backup Databases | Stash +description: Stash auto-backup for databases. +menu: + docs_v2024.8.27: + identifier: auto-backup-database + name: Auto Backup for Databases + parent: auto-backup + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Auto Backup for Database + +This tutorial will give you an overview of how you can configure Stash auto-backup of the databases and the available configurable options for database auto-backup. + +## Configuring auto-backup for databases + +To configure auto-backup for a database, you have to follow the following steps: + +- **Create BackupBlueprint:** At first, you have to create a `BackupBlueprint` with the template for `Repository` and `BackupConfiguration`. Use the appropriate `Task` in the `task` section. +- **Create Storage Secret:** Then, you have to create a storage Secret in the same namespace as your database with the access credential to your backend. You can re-use this secret to backup the other databases in that namespace. +- **Add auto-backup annotations:** Finally, add the auto-backup annotations to your database object or the respective `AppBinding` object. + +## Where to put auto-backup annotations + +If you are using KubeDB to manage your databases, you can add the annotations to your database object. KubeDB will automatically pass those annotations to the respective `AppBinding`. + +If you are not managing your database using KubeDB, you have to add the annotation in the respective `AppBinding` that you have created for your database. + +## Available Auto-Backup Annotations for Database + +The following auto-backup annotations are available for the databases: + +- **BackupBlueprint Name:** You have to specify the `BackupBlueprint` name that holds the template for `Repository` and `BackupConfiguration` in the following annotation: + +```yaml +stash.appscode.com/backup-blueprint: +``` + +You can also specify multiple BackupBlueprint name separated by comma (`,`). For example: + +```yaml +stash.appscode.com/backup-blueprint: daily-gcs-backup,weekly-s3-backup +``` + +- **Schedule:** You can specify a custom schedule for a target to overwrite the schedule of the BackupBlueprint through this annotation. + +```yaml + stash.appscode.com/schedule: +``` + +- **Task Parameters:** You can also pass some parameters to the respective backup `Task` through annotations. Use following format to pass parameters via annotations: + +```yaml +params.stash.appscode.com/key1: value1 +params.stash.appscode.com/key2: value2,value3 +params.stash.appscode.com/key3: ab=123,bc=234 +``` + +The above parameters will be added in the `spec.task.params` section as bellow, + +```yaml +task: + name: postgres-backup-13.1-v1 + params: + - name: key1 + value: value1 + - name: key2 + value: value3,value3 + - name: key3 + value: ab=123,bc=234 +``` + +## Database Auto-backup Examples + +You can find auto-backup examples for the databases here: + +- [Backup PostgreSQL using Stash Auto-Backup](/docs/v2024.8.27/addons/postgres/auto-backup/) +- [Backup Elasticsearch using Stash Auto-Backup](/docs/v2024.8.27/addons/elasticsearch/auto-backup/) diff --git a/content/docs/v2024.8.27/guides/auto-backup/overview/images/auto_backup_overview.svg b/content/docs/v2024.8.27/guides/auto-backup/overview/images/auto_backup_overview.svg new file mode 100644 index 0000000000..af9643ef73 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/overview/images/auto_backup_overview.svg @@ -0,0 +1,557 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/auto-backup/overview/index.md b/content/docs/v2024.8.27/guides/auto-backup/overview/index.md new file mode 100644 index 0000000000..a036e28831 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/overview/index.md @@ -0,0 +1,133 @@ +--- +title: Auto Backup Overview | Stash +description: An overview on how auto backup works in Stash. +menu: + docs_v2024.8.27: + identifier: auto-backup-overview + name: What is Auto Backup? + parent: auto-backup + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Auto Backup with Stash + +Stash can be configured to automatically backup of any stateful workloads in your cluster. Stash enables cluster administrators to deploy backup blueprints ahead of time so that application owners can easily backup any types of workload with a few annotations. This allows Enterprises to stay prepared for disaster scenarios and recover from offsite secure backups in case of a disaster on public cloud and on-premises datacenters. + +## What is Auto Backup + +Stash uses 1-1 mapping among `Repository`, `BackupConfiguration` and the target. So, whenever you want to backup a target(workload/PVC/database), you have to create a `Repository` and `BackupConfiguration` object. This could become tiresome when you are trying to backup similar types of target and the `Repository` and `BackupConfiguration` have only a slight difference. To mitigate this problem, Stash provides a way to specify a blueprint for these two objects via `BackupBlueprint` crd. In Stash parlance, we call this process as **Auto Backup**. + +You have to create only one `BackupBlueprint` for all similar types of target. For example, you need only one `BackupBlueprint` for Deployment, DaemonSet, StatefulSet etc. Similarly, you have to create only one `BackupBlueprint` for all PostgreSQL databases. Then, you just need to add some annotations in the target. Stash will automatically create respective `Repository` and `BackupConfiguration` objects using the blueprint and perform backups on pre-defined schedule. + +## How Auto Backup Works? + +The following diagram shows how automatic backup works in Stash. Open the image in a new tab to see the enlarged version. + +
+  Auto Backup Overview +
Fig: Auto Backup Overview
+
+ +The automatic backup process consists of the following steps: + +1. A user creates a storage secret with necessary credentials of the backend where the backed up data will be stored. +2. Then, he creates a `BackupBlueprint` crd that specifies a blueprint for `Repository` and `BackupConfiguration` object. +3. Then, he creates a workload with some specific annotations for automatic backup. +4. Stash operator watches for workloads. When it finds a workload with annotations for automatic backup, it finds out the respective `BackupBlueprint`. +5. Then, Stash operator resolves the blueprint by replacing variable fields of the blueprint with respective information from the workload. +6. Then, it creates a `Repository` and a `BackupConfiguration` object for the workload according to the resolved blueprint. +7. Finally, Stash starts rest of the standard backup process as discussed in [here](/docs/v2024.8.27/guides/workloads/overview/). + +> Note: `BackupBlueprint` is a non-namespaced crd. So, you can use a `BackupBlueprint` to backup targets in multiple namespaces. However, Storage Secret is a namespaced object. So, you have to manually create the secret in each namespace where you have a target for backup. Please give us your feedback on how to improve the ux of this aspect of Stash on [GitHub](https://github.com/stashed/stash/issues/842). + +## Frequently Asked Question regarding Auto-backup + +In this guide, we are going to answer some frequently asked questions regarding Stash auto-backup. If your query isn't answer here, feel free to open an issue [here](https://github.com/stashed/stash/issues). + +#### What will happen if I remove the auto-backup annotations? + +If you remove the auto-backup annotation, the respective `BackupConfiguration` will be deleted. If you are taking backup of workload volume, the respective sidecar will be removed and your workload will restart. The backup will stop immediately. If there is any running `BackupSession`, it will be deleted and the backup may terminate in incomplete state. + +The respective `Repository` object will be preserved as well as the backed up data. If you add the auto-backup annotation again, the previous `Repository` will be used until you modify/change the respective `BackupBlueprint`. + +#### What if different target require different runtime settings? + +Currently, you can't pass runtime settings via annotation. So, if different target needs different runtime settings, you have to create separate `BackupBlueprint` for them. + +#### What if I want to have different retention policy for different targets? + +Currently, you can't pass retention policy via annotation. So, if different target needs different retention policy, you have to create separate `BackupBlueprint` for them. + +## Next Step + +- Learn how to configure automatic backup for workloads from [here](/docs/v2024.8.27/guides/auto-backup/workload/). +- Learn how to configure automatic backup for PVCs from [here](/docs/v2024.8.27/guides/auto-backup/pvc/). +- Learn how to configure automatic backup for databases from [here](/docs/v2024.8.27/guides/auto-backup/database/). diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/backupblueprint.yaml b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/backupblueprint.yaml new file mode 100644 index 0000000000..773f9fa7bc --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/backupblueprint.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: pvc-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: pvc-backup + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pv.yaml b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pv.yaml new file mode 100644 index 0000000000..582bb70467 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pv.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-pv + labels: + app: nfs-demo +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteMany + nfs: + server: "nfs-service.storage.svc.cluster.local" + path: "/" diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pvc.yaml b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pvc.yaml new file mode 100644 index 0000000000..5203a8033e --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/nfs_pvc.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-pvc + namespace: demo +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app: nfs-demo diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-1.yaml b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-1.yaml new file mode 100644 index 0000000000..2c0929e070 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-1.yaml @@ -0,0 +1,18 @@ +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-1 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 1.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-1/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-2.yaml b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-2.yaml new file mode 100644 index 0000000000..b8a0ec7bae --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/examples/pod-2.yaml @@ -0,0 +1,18 @@ +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-2 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 2.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-2/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/images/pvc_repo.png b/content/docs/v2024.8.27/guides/auto-backup/pvc/images/pvc_repo.png new file mode 100644 index 0000000000..a7efdacdd2 Binary files /dev/null and b/content/docs/v2024.8.27/guides/auto-backup/pvc/images/pvc_repo.png differ diff --git a/content/docs/v2024.8.27/guides/auto-backup/pvc/index.md b/content/docs/v2024.8.27/guides/auto-backup/pvc/index.md new file mode 100644 index 0000000000..6c770c68ca --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/pvc/index.md @@ -0,0 +1,578 @@ +--- +title: Auto Backup PVC | Stash +description: An step by step guide on how to configure automatic backup for PVCs. +menu: + docs_v2024.8.27: + identifier: auto-backup-pvc + name: Auto Backup for PVCs + parent: auto-backup + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Auto Backup for PVC + +This tutorial will show you how to configure automatic backup for PersistentVolumeClaims. Here, we are going to backup a PVC provisioned from an NFS server using auto-backup. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- You will need to have a PVC with `ReadWriteMany` access permission. Here, we are going to use an NFS server to provision a PVC with `ReadWriteMany` access. If you don't have an NFS server running, deploy one by following the guide [here](https://github.com/appscode/third-party-tools/blob/master/storage/nfs/README.md). +- You should be familiar with the following `Stash` concepts: + - [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + - [Function](/docs/v2024.8.27/concepts/crds/function/) + - [Task](/docs/v2024.8.27/concepts/crds/task/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +>**Note:** YAML files used in this tutorial are stored in [docs/guides/auto-backup/pvc/examples](/docs/v2024.8.27/guides/auto-backup/pvc/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +**Verify necessary Function and Task:** + +Stash uses a `Function-Task` model to automatically backup PVC. When you install Stash, it creates the necessary `Function` and `Task`. + +Let's verify that Stash has created the necessary `Function` to backup/restore PVC by the following command, + +```bash +$ kubectl get function +NAME AGE +pvc-backup 6h55m +pvc-restore 6h55m +update-status 6h55m +``` + +Also, verify that the necessary `Task` has been created, + +```bash +$ kubectl get task +NAME AGE +pvc-backup 6h55m +pvc-restore 6h55m +``` + +## Prepare Backup Blueprint + +We are going to use [GCS Backend](/docs/v2024.8.27/guides/backends/gcs/) to store the backed up data. You can use any supported backend you prefer. You just have to configure Storage Secret and `spec.backend` section of `BackupBlueprint` to match your backend. To learn which backends are supported by Stash and how to configure them, please visit [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Storage Secret:** + +At first, let's create a Storage Secret for the GCS backend, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ mv downloaded-sa-json.key GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create BackupBlueprint:** + +Now, we have to create a `BackupBlueprint` crd with a blueprint for `Repository` and `BackupConfiguration` object. + +Below is the YAML of the `BackupBlueprint` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: pvc-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + task: + name: pvc-backup + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.task.name` specifies the `Task` crd name that will be used to backup the targeted PVC. + +Note that we have used some variables (format: `${}`) in `backend.gcs.prefix` field. Stash will substitute these variables with values from the respective target. To know which variable you can use in this `prefix` field, please visit [here](/docs/v2024.8.27/concepts/crds/backupblueprint/#repository-blueprint). + +Let's create the `BackupBlueprint` that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/pvc/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/pvc-backup-blueprint created +``` + +Now, automatic backup is configured for PVC. We just have to add some annotations to the targeted PVC to enable backup. + +**Available Auto-Backup Annotations for PVC:** + +You have to add the auto-backup annotations to the PVC that you want to backup. The following auto-backup annotations are available for a PVC: + +- **BackupBlueprint Name:** You have to specify the `BackupBlueprint` name that holds the template for `Repository` and `BackupConfiguration` in the following annotation: + +```yaml +stash.appscode.com/backup-blueprint: +``` + +You can also specify multiple BackupBlueprint name separated by comma (`,`). For example: + +```yaml +stash.appscode.com/backup-blueprint: daily-gcs-backup,weekly-s3-backup +``` + +- **Schedule:** You can specify a schedule to backup this target through this annotation. If you don't specify this annotation, schedule from the `BackupBlueprint` will be used. + +```yaml + stash.appscode.com/schedule: +``` + +## Prepare PVC + +At first, let's prepare our desired PVC. Here, we are going to create a [PersistentVolume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) (PV) that will use an NFS server as storage. Then, we are going to create a PVC that will bind with the PV. Then, we are going to mount this PVC into a pod. This pod will generate a sample file into the PVC. + +**Create PersistentVolume:** + +We have deployed an NFS server in `storage` namespace and it is accessible through a Service named `nfs-service`. Now, we are going to create a PV that uses the NFS server as storage. + +Below is the YAML of the PV that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-pv + labels: + app: nfs-demo +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteMany + nfs: + server: "nfs-service.storage.svc.cluster.local" + path: "/" +``` + +Notice the `metadata.labels` section. Here, we have added `app: nfs-demo` label. We are going to use this label as selector in PVC so that the PVC binds with this PV. + +Let's create the PV we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/pvc/examples/nfs_pv.yaml +persistentvolume/nfs-pv created +``` + +**Create PersistentVolumeClaim:** + +Now, create a PVC to bind with the PV we have just created. Below, is the YAML of the PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-pvc + namespace: demo +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app: nfs-demo +``` + +Notice the `spec.accessModes` section. We are using `ReadWriteMany` access mode so that multiple pods can use this PVC simultaneously. Without this access mode, Stash will fail to backup the volume if any other pod mounts it during backup. + +Also, notice the `spec.selector` section. We have specified `app: nfs-demo` labels as a selector so that it binds with the PV that we have created earlier. + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/pvc/examples/nfs_pvc.yaml +persistentvolumeclaim/nfs-pvc created +``` + +Verify that the PVC has bounded with our desired PV, + +```bash +$ kubectl get pvc -n demo nfs-pvc +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +nfs-pvc Bound nfs-pv 1Gi RWX 61s +``` + +Here, we can see that the PVC `nfs-pvc` has been bounded with PV `nfs-pv`. + +**Generate Sample Data:** + +Now, we are going to deploy two sample pods `demo-pod-1` and `demo-pod-2` that will mount `pod-1/data` and `pod-2/data` [subPath](https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath) of the `nfs-pvc` respectively. Each of the pods will generate a sample file named `hello.txt` with some demo data. We are going to backup the entire PVC that contains the sample files using auto-backup. + +Below, is the YAML of the first pod that we are going to deploy, + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-1 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 1.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-1/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc +``` + +Here, we have mounted `pod-1/data` directory of the `nfs-pvc` into `/sample/data` directory of this pod. + +Let's deploy the pod we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/pvc/examples/pod-1.yaml +pod/demo-pod-1 created +``` + +Verify that the sample data has been generated into `/sample/data/` directory, + +```bash +$ kubectl exec -n demo demo-pod-1 cat /sample/data/hello.txt +hello from pod 1. +``` + +Below is the YAML of the second pod that we are going to deploy, + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-2 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 2.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-2/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc +``` + +Now, we have mounted `pod-2/data` directory of the `nfs-pvc` into `/sample/data` directory of this pod. + +Let's create the pod we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/pvc/examples/pod-2.yaml +pod/demo-pod-2 created +``` + +Verify that the sample data has been generated into `/sample/data/` directory, + +```bash +$ kubectl exec -n demo demo-pod-2 cat /sample/data/hello.txt +hello from pod 2. +``` + +## Backup + +Now, we are going to add auto backup specific annotation to the PVC. Stash watches for PVC with auto-backup annotations. Once it finds a PVC with auto-backup annotations, it will create a `Repository` and a `BackupConfiguration` crd according to respective `BackupBlueprint`. Then, rest of the backup process will proceed as normal backup of a stand-alone PVC as describe [here](/docs/v2024.8.27/guides/volumes/pvc/). + +**Add Annotations:** + +Let's add the auto backup specific annotation to the PVC, + +```bash +$ kubectl annotate pvc nfs-pvc -n demo --overwrite \ + stash.appscode.com/backup-blueprint=pvc-backup-blueprint \ + stash.appscode.com/schedule="*/15 * * * *" +``` + +Verify that the annotations has been added successfully, + +```bash +$ kubectl get pvc -n demo nfs-pvc -o yaml +``` + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"nfs-pvc","namespace":"demo"},"spec":{"accessModes":["ReadWriteMany"],"resources":{"requests":{"storage":"1Gi"}},"selector":{"matchLabels":{"app":"nfs-demo"}},"storageClassName":""}} + pv.kubernetes.io/bind-completed: "yes" + pv.kubernetes.io/bound-by-controller: "yes" + stash.appscode.com/backup-blueprint: pvc-backup-blueprint + stash.appscode.com/schedule: "*/15 * * * *" + creationTimestamp: "2019-08-19T09:08:44Z" + finalizers: + - kubernetes.io/pvc-protection + name: nfs-pvc + namespace: demo + resourceVersion: "64082" + selfLink: /api/v1/namespaces/demo/persistentvolumeclaims/nfs-pvc + uid: 7c9dca87-8577-466a-bf2d-2fa7a83f85b7 +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app: nfs-demo + storageClassName: "" + volumeMode: Filesystem + volumeName: nfs-pv +status: + accessModes: + - ReadWriteMany + capacity: + storage: 1Gi + phase: Bound +``` + +Now, Stash will create a `Repository` crd and a `BackupConfiguration` crd according to the blueprint. + +**Verify Repository:** + +Verify that the `Repository` has been created successfully by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +persistentvolumeclaim-nfs-pvc +``` + +If we view the YAML of this `Repository`, we are going to see that the variables `${TARGET_NAMESPACE}`, `${TARGET_KIND}` and `${TARGET_NAME}` has been replaced by `demo`, `presistentvolumeclaim` and `nfs-pvc` respectively. + +```bash +$ kubectl get repository -n demo persistentvolumeclaim-nfs-pvc -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + creationTimestamp: "2019-08-19T09:18:55Z" + finalizers: + - stash + generation: 1 + name: persistentvolumeclaim-nfs-pvc + namespace: demo + resourceVersion: "64084" + selfLink: /apis/stash.appscode.com/v1beta1/namespaces/demo/repositories/persistentvolumeclaim-nfs-pvc + uid: a991373f-9d7a-4d02-a812-16f901497ebd +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/demo/persistentvolumeclaim/nfs-pvc + storageSecretName: gcs-secret +``` + +**Verify BackupConfiguration:** +If everything goes well, Stash should create a `BackupConfiguration` for our Pvc and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +persistentvolumeclaim-nfs-pvc pvc-backup */15 * * * * Ready 119s +``` + +Now, let's check the YAML of the `BackupConfiguration`. +```bash +$ kubectl get backupconfiguration -n demo persistentvolumeclaim-nfs-pvc -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + creationTimestamp: "2019-08-20T13:01:54Z" + finalizers: + - stash.appscode.com + generation: 1 + name: persistentvolumeclaim-nfs-pvc + namespace: demo + ownerReferences: + - apiVersion: v1 + blockOwnerDeletion: false + kind: PersistentVolumeClaim + name: nfs-pvc + uid: 7c9dca87-8577-466a-bf2d-2fa7a83f85b7 + resourceVersion: "124087" + selfLink: /apis/stash.appscode.com/v1beta1/namespaces/demo/backupconfigurations/persistentvolumeclaim-nfs-pvc + uid: 6270ab3f-c967-431b-8e4c-c19fafa44a64 +spec: + repository: + name: persistentvolumeclaim-nfs-pvc + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/15 * * * *' + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: nfs-pvc + task: + name: pvc-backup + tempDir: {} +``` + +Notice that the `spec.target.ref` is pointing to the `nfs-pvc` PVC. + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. Run the following command to watch `BackupSession` crd: + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=persistentvolumeclaim-nfs-pvc + +Every 1.0s: kubectl get backupsession -n demo ... workstation: Thu Jul 18 15:18:42 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +persistentvolumeclaim-nfs-pvc-1563441309 BackupConfiguration persistentvolumeclaim-nfs-pvc Succeeded 3m33s +``` + +>Note: Respective CronJob creates `BackupSession` crd with the following label `stash.appscode.com/backup-configuration=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +**Verify Backup:** + +When backup session is completed, Stash will update the respective `Repository` to reflect the latest state of backed up data. + +Run the following command to check if a snapshot has been sent to the backend, + +```bash +$ kubectl get repository -n demo persistentvolumeclaim-nfs-pvc +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +persistentvolumeclaim-nfs-pvc true 41 B 1 3m37s 5m11s +``` + +> Stash creates one snapshot for each targeted file path. Since we are taking backup of two file paths, two snapshots have been created for this BackupSession. + +If we navigate to `stash-backup/demo/persistentvolumeclaim/nfs-pvc` directory of our GCS bucket, we are going to see that the snapshot has been stored there. + +
+  Backup data of PVC 'nfs-pvc' in GCS backend +
Fig: Backup data of PVC "nfs-pvc" in GCS backend
+
+ +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupBlueprint/pvc-backup-blueprint +kubectl delete -n demo repository/persistentvolumeclaim-nfs-pvc +kubectl delete -n demo backupconfiguration/persistentvolumeclaim-nfs-pvc + +kubectl delete -n demo pod/demo-pod +kubectl delete -n demo pvc/nfs-pvc +kubectl delete -n demo pv/nfs-pv +``` + +If you would like to uninstall Stash operator, please follow the steps [here](/docs/v2024.8.27/setup/README). diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/examples/backupblueprint.yaml b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/backupblueprint.yaml new file mode 100644 index 0000000000..fd8d1b7f7c --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/backupblueprint.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: workload-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/examples/daemonset.yaml b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/daemonset.yaml new file mode 100644 index 0000000000..08aef1b82b --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/daemonset.yaml @@ -0,0 +1,45 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-daemon-config + namespace: demo +data: + config-file-1.txt: "This is first config file" + config-file-2.txt: "This is second config file" +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-demo + name: dmn-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/etc/config" + stash.appscode.com/volume-mounts: "dmn-config:/etc/config" +spec: + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - name: busybox + args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /etc/config + name: dmn-config + restartPolicy: Always + volumes: + - name: dmn-config + configMap: + name: my-daemon-config diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/examples/deployment.yaml b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/deployment.yaml new file mode 100644 index 0000000000..8be38eefb4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/deployment.yaml @@ -0,0 +1,59 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-sample-data-1 + namespace: demo +data: + file1.txt: "Data from ConfigMap 'stash-sample-data-1'" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-sample-data-2 + namespace: demo +data: + file2.txt: "Data from ConfigMap 'stash-sample-data-2'" +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/source/data-1,/source/data-2" + stash.appscode.com/volume-mounts: "source-data-1:/source/data-1,source-data-2:/source/data-2" + stash.appscode.com/schedule: "*/15 * * * *" +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + restartPolicy: Always + volumes: + - name: source-data-1 + configMap: + name: stash-sample-data-1 + - name: source-data-2 + configMap: + name: stash-sample-data-2 diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/examples/statefulset.yaml b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/statefulset.yaml new file mode 100644 index 0000000000..9447494b40 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/workload/examples/statefulset.yaml @@ -0,0 +1,64 @@ +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: sts-demo + namespace: demo + labels: + app: stash-demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/source/data-1,/source/data-2" + stash.appscode.com/volume-mounts: "source-data-1:/source/data-1,source-data-2:/source/data-2" +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c"] + args: ["touch /source/data-1/sample-file-1.txt && touch /source/data-2/sample-file-2.txt && sleep 3000"] + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + volumeClaimTemplates: + - metadata: + name: source-data-1 + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + - metadata: + name: source-data-2 + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/images/daemon_repo.png b/content/docs/v2024.8.27/guides/auto-backup/workload/images/daemon_repo.png new file mode 100644 index 0000000000..4a92b24d1c Binary files /dev/null and b/content/docs/v2024.8.27/guides/auto-backup/workload/images/daemon_repo.png differ diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/images/deployment_repo.png b/content/docs/v2024.8.27/guides/auto-backup/workload/images/deployment_repo.png new file mode 100644 index 0000000000..68e4ebecc2 Binary files /dev/null and b/content/docs/v2024.8.27/guides/auto-backup/workload/images/deployment_repo.png differ diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/images/statefulset_repo.png b/content/docs/v2024.8.27/guides/auto-backup/workload/images/statefulset_repo.png new file mode 100644 index 0000000000..fa0700e8a0 Binary files /dev/null and b/content/docs/v2024.8.27/guides/auto-backup/workload/images/statefulset_repo.png differ diff --git a/content/docs/v2024.8.27/guides/auto-backup/workload/index.md b/content/docs/v2024.8.27/guides/auto-backup/workload/index.md new file mode 100644 index 0000000000..9010f62027 --- /dev/null +++ b/content/docs/v2024.8.27/guides/auto-backup/workload/index.md @@ -0,0 +1,795 @@ +--- +title: Auto Backup Workload | Stash +description: An step by step guide on how to configure automatic backup for workloads. +menu: + docs_v2024.8.27: + identifier: auto-backup-workload + name: Auto Backup for Workloads + parent: auto-backup + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Auto Backup for Workloads + +This tutorial will show you how to configure automatic backup for Kubernetes workloads. Here, we are going to show a demo on how we can backup Deployments, StatefulSets, and DaemonSets using a common blueprint. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following Stash concepts: + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupBlueprint](/docs/v2024.8.27/concepts/crds/backupblueprint/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + +To keep things isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create namespace demo +namespace/demo created +``` + +## Prepare Backup Blueprint + +We are going to use [GCS Backend](/docs/v2024.8.27/guides/backends/gcs/) to store the backed up data. You can use any supported backend you prefer. You just have to configure Storage Secret and `spec.backend` section of `BackupBlueprint` to match your backend. To learn which backends are supported by Stash and how to configure them, please visit [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Storage Secret:** + +At first, let's create a Storage Secret for the GCS backend, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ mv downloaded-sa-json.key GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create BackupBlueprint:** + +Now, we have to create a `BackupBlueprint` crd with a blueprint for `Repository` and `BackupConfiguration` object. + +Below is the YAML of the `BackupBlueprint` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: workload-backup-blueprint +spec: + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_KIND}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Note that we have used some variables (format: `${}`) in `backend.gcs.prefix` field. Stash will substitute these variables with values from the respective target. Since the resolved prefix will be different for different workload, the backed up data will be stored in different directory inside the bucket. To know which variable you can use in this `prefix` field, please visit [here](/docs/v2024.8.27/concepts/crds/backupblueprint/#repository-blueprint). + +Let's create the `BackupBlueprint` that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/workload/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/workload-backup-blueprint created +``` + +Now, automatic backup is configured for Kubernetes workloads (`Deployment`, `StatefulSet`, `DaemonSet` etc.). We just have to add some annotations to the targeted workload to enable periodic backup. + +**Available Auto-Backup Annotations for Workloads:** + +You have to add the auto-backup annotations to the workload that you want to backup. The following auto-backup annotations are available for a workload: + +- **BackupBlueprint Name:** You have to specify the `BackupBlueprint` name that holds the template for `Repository` and `BackupConfiguration` in the following annotation: + +```yaml +stash.appscode.com/backup-blueprint: +``` + +You can also specify multiple BackupBlueprint name separated by comma (`,`). For example: + +```yaml +stash.appscode.com/backup-blueprint: daily-gcs-backup,weekly-s3-backup +``` + +- **Schedule:** You can specify a schedule to backup this target through this annotation. If you don't specify this annotation, schedule from the `BackupBlueprint` will be used. + +```yaml + stash.appscode.com/schedule: +``` + +- **Target Paths:** You have to specify a list of paths that you want to backup through this annotation. Use comma (`,`) to separate multiple file paths. For example, `"/my/target/dir-1,/my/target/dir-2"`. + +```yaml +stash.appscode.com/target-paths: "" +``` + +- **Volume Mounts:** You have to also specify a list of Volumes and their MountPath and SubPath where the targeted paths are located. Use `"::"` format to specify the volumes. The `:` part is optional. Use comma (`,`) to specify multiple volumes and mount path. For example, `"vol-1:/mount/path-1:sub/path-1,vol-2:/mount/path-2"`. + +```yaml +stash.appscode.com/volume-mounts: "::" +``` + +## Backup Deployment + +Now, we are going to backup a Deployment using the blueprint we have configured earlier. We are going to mount two ConfigMap volume in two different directories of the Deployment. Then, we are going to backup those directories using automatic backup. + +**Create Deployment:** + +Below is the YAML of the Deployment and respective ConfigMaps that we are going to create, + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-sample-data-1 + namespace: demo +data: + file1.txt: "Data from ConfigMap 'stash-sample-data-1'" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-sample-data-2 + namespace: demo +data: + file2.txt: "Data from ConfigMap 'stash-sample-data-2'" +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/source/data-1,/source/data-2" + stash.appscode.com/volume-mounts: "source-data-1:/source/data-1,source-data-2:/source/data-2" + stash.appscode.com/schedule: "*/15 * * * *" +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + restartPolicy: Always + volumes: + - name: source-data-1 + configMap: + name: stash-sample-data-1 + - name: source-data-2 + configMap: + name: stash-sample-data-2 +``` + +Notice the `metadata.annotations` field. We have specified the automatic backup specific annotations to backup `/source/data-1` and `/source/data-2` directories of the `source-data-1` and `source-data-2` volumes respectively. We have also specified to use `workload-backup-blueprint` BackupBlueprint for creating `Repository` and `BackupConfiguration` for this Deployment. BackupBlueprint is a non-namespaced resource, so we just need to specify the name of the blueprint. + +Let's create the above Deployment, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/workload/examples/deployment.yaml +configmap/stash-sample-data-1 created +configmap/stash-sample-data-2 created +deployment.apps/stash-demo created +``` + +If everything goes well, Stash will create a `Repository` and a `BackupConfiguration` with the name in the following format: `-`. + +**Verify Repository:** + +Verify that the Repository has been created successfully by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +deployment-stash-demo 9s +``` + +If we view the YAML of this Repository, we are going to see that the variables `${TARGET_NAMESPACE}`, `${TARGET_KIND}` and `${TARGET_NAME}` has been replaced by `demo`, `deployment` and `stash-demo` respectively. + +```bash +$ kubectl get repository -n demo deployment-stash-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: deployment-stash-demo + namespace: demo + ... +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/demo/deployment/stash-demo + storageSecretName: gcs-secret +``` + +**Verify BackupConfiguratoin:** + +If everything goes well, Stash should create a `BackupConfiguration` for our Deployment and the phase of that `BackupConfiguration` should be `Ready`. Verify that the `BackupConfiguration` has been created by the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-stash-demo */15 * * * * Ready 19s +``` + +Let's check the YAML of this `BackupConfiguration`, + +```bash +$ kubectl get backupconfiguration -n demo deployment-stash-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-stash-demo + namespace: demo + ... +spec: + repository: + name: deployment-stash-demo + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/15 * * * *' + target: + paths: + - /source/data-1 + - /source/data-2 + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + task: {} + tempDir: {} +``` + +Notice that the `spec.target.ref` is pointing to the `stash-demo` Deployment. Also, notice that the `spec.target.paths` and `spec.target.volumeMounts` fields have been populated with the information we had provided as annotation of the Deployment. + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. Run the following command to watch `BackupSession` crd: + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=deployment-stash-demo + +Every 1.0s: kubectl get backupsession -n demo workstation: Wed Jun 26 12:20:31 2019 +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-stash-demo-1561530008 BackupConfiguration deployment-stash-demo Succeeded 61s +``` + +>Note: Respective CronJob creates `BackupSession` crd with the following label `stash.appscode.com/backup-configuration=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +**Verify Backup:** + +When backup session is completed, Stash will update the respective `Repository` to reflect the latest state of backed up data. + +Run the following command to check if the snapshots are stored in the backend, + +```bash +$ kubectl get repository -n demo deployment-stash-demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +deployment-stash-demo true 246 B 2 70s 5m +``` + +> Stash creates one snapshot for each targeted file path. Since we are taking backup of two file paths, two snapshots have been created for this BackupSession. + +If we navigate to `stash-backup/demo/deployment/stash-demo` directory of our GCS bucket, we are going to see that the snapshot has been stored there. + +
+  Backup data in GCS backend +
Fig: Backup data in GCS backend
+
+ +>Stash keeps all backup data encrypted. So, snapshot files in the bucket will not contain any meaningful data until they are decrypted. + +## Backup StatefulSet + +Now, we are going to backup a StatefulSet with the same blueprint we have used to backup Deployment in the previous section. + +**Create StatefulSet:** + +We are going to create a StatefulSet with 3 replicas. We are going to configure the StatefulSet to generate sample data in each replica. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: sts-demo + namespace: demo + labels: + app: stash-demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/source/data-1,/source/data-2" + stash.appscode.com/volume-mounts: "source-data-1:/source/data-1,source-data-2:/source/data-2" +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c"] + args: ["touch /source/data-1/sample-file-1.txt && touch /source/data-2/sample-file-2.txt && sleep 3000"] + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + volumeClaimTemplates: + - metadata: + name: source-data-1 + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + - metadata: + name: source-data-2 + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Notice the `metadata.annotations` field. We have specified automatic backup specific annotations similarly as we had specified in the Deployment in the previous section. + +Let's create the StatefulSet we have created above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/workload/examples/statefulset.yaml +service/headless created +statefulset.apps/sts-demo created +``` + +**Verify Repository:** + +Verify that a Repository has been created for this StatefulSet using the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +deployment-stash-demo true 410 B 10 14s 39m +statefulset-sts-demo 31s +``` + +Here, `statefulset-sts-demo` Repository has been created for our `sts-demo` StatefulSet. + +Let's view the YAML of the Repository, + +```bash +$ kubectl get repository -n demo statefulset-sts-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: statefulset-sts-demo + namespace: demo + ... +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/demo/statefulset/sts-demo + storageSecretName: gcs-secret +``` + +Notice that the variables of the `prefix` field of `BackupBlueprint` is now replaced with `demo`, `statefulset` and `sts-demo` respectively. + +**Verify BackupConfiguratoin:** + +Verify that a `BackupConfiguration` has been created and in `Ready` Phase for this StatefulSet using the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-stash-demo */5 * * * * Ready 40m +statefulset-sts-demo */5 * * * * Ready 105s +``` + +Here, `statefulset-sts-demo` has been created for the StatefulSet `sts-demo`. You can check the YAML of this `BackupConfiguration` to see that the target field is pointing to this StatefulSet. + +```bash +$ kubectl get backupconfiguration -n demo statefulset-sts-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: statefulset-sts-demo + namespace: demo + ... +spec: + repository: + name: statefulset-sts-demo + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + paths: + - /source/data-1 + - /source/data-2 + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: sts-demo + volumeMounts: + - mountPath: /source/data-1 + name: source-data-1 + - mountPath: /source/data-2 + name: source-data-2 + task: {} + tempDir: {} +``` + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. Watch the `BackupSession` of the BackupConfiguration `statefulset-sts-demo` using the following command, + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=statefulset-sts-demo +Every 1.0s: kubectl get backupsession -n demo -l=stash.appscode.com/backup-... workstation: Wed Jun 26 13:01:22 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +statefulset-sts-demo-1561532403 BackupConfiguration statefulset-sts-demo Succeeded 2m21s +``` + +**Verify Backup:** + +Once the backup session is completed, verify that the `Repository` has been updated to reflect the backup using the following command, + +```bash +$ kubectl get repository -n demo statefulset-sts-demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +statefulset-sts-demo true 0 B 6 32s 7m29s +``` + +>For StatfulSet, Stash takes backup from every replica. Since we are using a StatefulSet with 3 replicas and we are taking backup of 2 file paths, total 6 snapshots have been created for this BackupSession. + +If we navigate to `stash-backup/demo/statefulset/sts-demo` directory of our GCS bucket, we are going to see that the snapshot been stored there. + +
+  Backup data of `sts-demo` StatefulSet in GCS backend +
Fig: Backup data of StatefulSet "sts-demo" in GCS backend
+
+ +## Backup DaemonSet + +Now, we are going to use the same blueprint to backup a DaemonSet. We are going to mount a ConfigMap in `/etc/config` directory. Then, we are going to backup this directory using automatic backup. + +**Create DaemonSet:** + +Below is the YAML of the DaemonSet that we are going to create, + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-daemon-config + namespace: demo +data: + config-file-1.txt: "This is first config file" + config-file-2.txt: "This is second config file" +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-demo + name: dmn-demo + namespace: demo + annotations: + stash.appscode.com/backup-blueprint: workload-backup-blueprint + stash.appscode.com/target-paths: "/etc/config" + stash.appscode.com/volume-mounts: "dmn-config:/etc/config" +spec: + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - name: busybox + args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /etc/config + name: dmn-config + restartPolicy: Always + volumes: + - name: dmn-config + configMap: + name: my-daemon-config +``` + +Notice the `metadata.annotations` field. We have specified automatic backup specific annotations to backup our desired file path. + +Let's create the DaemonSet we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/auto-backup/workload/examples/daemonset.yaml +configmap/my-daemon-config created +daemonset.apps/dmn-demo created +``` + +**Verify Repository:** + +Verify that a `Repository` has been created for this DaemonSet using the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +daemonset-dmn-demo 28s +deployment-stash-demo true 410 B 10 6m3s 70m +statefulset-sts-demo true 0 B 26 6m6s 31m +``` + +Here, `daemonset-dmn-demo` Repository has been created for our `dmn-demo` DaemonSet. + +Let's view the YAML of the Repository, + +```bash +$ kubectl get repository -n demo daemonset-dmn-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: daemonset-dmn-demo + namespace: demo + ... +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/demo/daemonset/dmn-demo + storageSecretName: gcs-secret +``` + +**Verify BackupConfiguratoin:** +If everything goes well, Stash should create a `BackupConfiguration` for our DaemonSet and the phase of that `BackupConfiguration` should be `Ready`. Verify the `BackupConfiguration` crd by the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +daemonset-dmn-demo */5 * * * * Ready 90s +deployment-stash-demo */5 * * * * Ready 71m +statefulset-sts-demo */5 * * * * Ready 32m +``` + +Here, `daemonset-dmn-demo` has been created for the DaemonSet `dmn-demo`. You can check the YAML of this `BackupConfiguration` to see that the target field is pointing to this DaemonSet. + +```bash +$ kubectl get backupconfiguration -n demo daemonset-dmn-demo -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: daemonset-dmn-demo + namespace: demo + ... +spec: + repository: + name: daemonset-dmn-demo + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: {} + schedule: '*/5 * * * *' + target: + paths: + - /etc/config + ref: + apiVersion: apps/v1 + kind: DaemonSet + name: dmn-demo + volumeMounts: + - mountPath: /etc/config + name: dmn-config + task: {} + tempDir: {} +``` + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. Watch the `BackupSession` of the BackupConfiguration `daemonset-dmn-demo` using the following command, + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=daemonset-dmn-demo + +Every 1.0s: kubectl get backupsession -n demo -l=stash.appscode.com/backup-... workstation: Wed Jun 26 13:30:14 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +daemonset-dmn-demo-1561534208 BackupConfiguration daemonset-dmn-demo Succeeded 45s +``` + +**Verify Backup:** + +Once the backup session is completed, verify that the `Repository` has been updated to reflect the backup using the following command, + +```bash +$ kubectl get repository -n demo daemonset-dmn-demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +daemonset-dmn-demo true 51 B 1 5s 4m27s +``` + +>For DaemonSet, Stash takes backup from every daemon pod running on different nodes. Since we are using a single node cluster (Minikube), only 1 snapshot has been created for this BackupSession. + +If we navigate to `stash-backup/demo/daemonset/dmn-demo` directory of our GCS bucket, we are going to see that the snapshot been stored there. + +
+  Backup data of `dmn-demo` DaemonSet in GCS backend +
Fig: Backup data of DaemonSet "dmn-demo" in GCS backend
+
+ +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment/stash-demo +kubectl delete -n demo statefulset/sts-demo +kubectl delete -n demo daemonset/dmn-demo + +kubectl delete -n demo repository --all +kubectl delete -n demo secret/gcs-secret +kubectl delete -n demo backupblueprint/workload-backup-blueprint +``` + +If you would like to uninstall Stash operator, please follow the steps [here](/docs/v2024.8.27/setup/README). diff --git a/content/docs/v2024.8.27/guides/backends/_index.md b/content/docs/v2024.8.27/guides/backends/_index.md new file mode 100644 index 0000000000..fddfb50021 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/_index.md @@ -0,0 +1,76 @@ +--- +title: Backends | Stash +menu: + docs_v2024.8.27: + identifier: backend + name: Supported Backends + parent: guides + weight: 10 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/backends/azure/examples/azure.yaml b/content/docs/v2024.8.27/guides/backends/azure/examples/azure.yaml new file mode 100644 index 0000000000..ef092cfb86 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/azure/examples/azure.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: azure-repo + namespace: demo +spec: + backend: + azure: + container: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: azure-secret diff --git a/content/docs/v2024.8.27/guides/backends/azure/index.md b/content/docs/v2024.8.27/guides/backends/azure/index.md new file mode 100644 index 0000000000..30e3289f61 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/azure/index.md @@ -0,0 +1,150 @@ +--- +title: Azure Backend | Stash +description: Configure Stash to use Microsoft Azure Storage as Backend. +menu: + docs_v2024.8.27: + identifier: backend-azure + name: Azure Blob Storage + parent: backend + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Microsoft Azure Storage + +Stash supports Microsoft's [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) as a backend. This tutorial will show you how to use this backend. + +In order to use Azure Blob Storage as backend, you have to create a `Secret` and a `Repository` object pointing to the desired blob container. + +#### Create Storage Secret + +To configure storage secret for this backend, following secret keys are needed: + +| Key | Type | Description | +| -------------------- | ---------- | ---------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots | +| `AZURE_ACCOUNT_NAME` | `Required` | Azure Storage account name | +| `AZURE_ACCOUNT_KEY` | `Required` | Azure Storage account key | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > AZURE_ACCOUNT_NAME +$ echo -n '' > AZURE_ACCOUNT_KEY +$ kubectl create secret generic -n demo azure-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AZURE_ACCOUNT_NAME \ + --from-file=./AZURE_ACCOUNT_KEY +secret/azure-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `azure` backend. + +| Parameter | Type | Description | +| ---------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `azure.container` | `Required` | Name of Storage container. | +| `azure.prefix` | `Optional` | Path prefix inside the container where backed up data will be stored. | +| `azure.maxConnections` | `Optional` | Maximum number of parallel connections to use for uploading backup data. By default, Stash will use maximum 5 parallel connections. | + +Below, the YAML of a sample `Repository` crd that uses an Azure Blob container as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: azure-repo + namespace: demo +spec: + backend: + azure: + container: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: azure-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/azure/examples/azure.yaml +repository/azure-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/b2/examples/b2.yaml b/content/docs/v2024.8.27/guides/backends/b2/examples/b2.yaml new file mode 100644 index 0000000000..e03411c56c --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/b2/examples/b2.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: b2-repo + namespace: demo +spec: + backend: + b2: + bucket: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: b2-secret diff --git a/content/docs/v2024.8.27/guides/backends/b2/index.md b/content/docs/v2024.8.27/guides/backends/b2/index.md new file mode 100644 index 0000000000..7b0ad83cc5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/b2/index.md @@ -0,0 +1,152 @@ +--- +title: Backblaze B2 Backend | Stash +description: Configure Stash to use Backblaze B2 as Backend. +menu: + docs_v2024.8.27: + identifier: backend-b2 + name: Backblaze B2 + parent: backend + weight: 70 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backblaze B2 + +Stash supports Backblaze's [B2 Cloud Storage](https://www.backblaze.com/b2/cloud-storage.html) as a backend. This tutorial will show you how to use this backend. + +In order to use Backblaze B2 Cloud Storage as backend, you have to create a `Secret` and a `Repository` object pointing to the desired B2 bucket. + +>If the bucket does not exist yet and the credentials you have provided have the privilege to create bucket, it will be created automatically during the first backup. In this case, you have to make sure that the bucket name is unique across all B2 buckets. + +#### Create Storage Secret + +To configure storage secret for this backend, following secret keys are needed: + +| Key | Type | Description | +| ----------------- | ---------- | ----------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots. | +| `B2_ACCOUNT_ID` | `Required` | Backblaze B2 account id. | +| `B2_ACCOUNT_KEY` | `Required` | Backblaze B2 account key. | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > B2_ACCOUNT_ID +$ echo -n '' > B2_ACCOUNT_KEY +$ kubectl create secret generic -n demo b2-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./B2_ACCOUNT_ID \ + --from-file=./B2_ACCOUNT_KEY +secret/b2-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `b2` backend, + +| Parameter | Type | Description | +| ------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `b2.bucket` | `Required` | Name of the B2 bucket. | +| `b2.prefix` | `Optional` | Path prefix inside the bucket where the backed up data will be stored. | +| `b2.maxConnections` | `Optional` | Maximum number of parallel connections to use for uploading backup data. By default, Stash will use maximum 5 parallel connections. | + +Below, the YAML of a sample `Repository` crd that uses a B2 bucket as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: b2-repo + namespace: demo +spec: + backend: + b2: + bucket: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: b2-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/b2/examples/b2.yaml +repository/b2-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/gcs/examples/gcs.yaml b/content/docs/v2024.8.27/guides/backends/gcs/examples/gcs.yaml new file mode 100644 index 0000000000..8dadcee219 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/gcs/examples/gcs.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/backends/gcs/index.md b/content/docs/v2024.8.27/guides/backends/gcs/index.md new file mode 100644 index 0000000000..25924b127c --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/gcs/index.md @@ -0,0 +1,152 @@ +--- +title: GCS Backend | Stash +description: Configure Stash to use Google Cloud Storage (GCS) as Backend. +menu: + docs_v2024.8.27: + identifier: backend-gcs + name: Google Cloud Storage + parent: backend + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Google Cloud Storage (GCS) + +Stash supports [Google Cloud Storage(GCS)](https://cloud.google.com/storage/) as a backend. This tutorial will show you how to use this backend. + +In order to use Google Cloud Storage as backend, you have to create a `Secret` and a `Repository` object pointing to the desired GCS bucket. + +> If the bucket already exists, the Google Cloud service account you provide to Stash only needs `Storage Object Creator` role permission. However, if the bucket does not exist, Stash will create the bucket during the first backup. In this case, the Google Cloud service account key used for Stash must have `Storage Object Admin` role permission. To avoid giving this elevated level of permission to Stash, create the bucket manually (either from GCP console or gcloud cli) ahead of time. + +#### Create Storage Secret + +To configure storage secret for this backend, following secret keys are needed: + +| Key | Type | Description | +| --------------------------------- | ---------- | ----------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots. | +| `GOOGLE_PROJECT_ID` | `Required` | Google Cloud project ID. | +| `GOOGLE_SERVICE_ACCOUNT_JSON_KEY` | `Required` | Google Cloud service account json key. | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ mv downloaded-sa-json.key GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `gcs` backend. + +| Parameter | Type | Description | +| -------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `gcs.bucket` | `Required` | Name of Bucket. If the bucket does not exist yet, it will be created in the default location (US). It is not possible at the moment for Stash to create a new bucket in a different location, so you need to create it using Google cloud console. | +| `gcs.prefix` | `Optional` | Path prefix inside the bucket where backed up data will be stored. | +| `gcs.maxConnections` | `Optional` | Maximum number of parallel connections to use for uploading backup data. By default, Stash will use maximum 5 parallel connections. | + +Below, the YAML of a sample `Repository` crd that uses a GCS bucket as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: gcs-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/gcs/examples/gcs.yaml +repository/gcs-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/awsElasticBolckStore.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/awsElasticBolckStore.yaml new file mode 100644 index 0000000000..b561256d15 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/awsElasticBolckStore.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-awsebs + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + awsElasticBlockStore: # This AWS EBS volume must already exist. + volumeID: + fsType: ext4 + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/azureDisk.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/azureDisk.yaml new file mode 100644 index 0000000000..fb4a839923 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/azureDisk.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-azuredisk + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + azureDisk: + diskName: stash.vhd + diskURI: https://someaccount.blob.microsoft.net/vhds/stash.vhd + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/emptyDir.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/emptyDir.yaml new file mode 100644 index 0000000000..cac13c8e64 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/emptyDir.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-emptydir + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + emptyDir: {} + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/gcePersistentDisk.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/gcePersistentDisk.yaml new file mode 100644 index 0000000000..9409337d53 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/gcePersistentDisk.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-gcepersistentdisk + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + gcePersistentDisk: + pdName: stash-repo + fsType: ext4 + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/hostPath.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/hostPath.yaml new file mode 100644 index 0000000000..aad97167b8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/hostPath.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-hostpath + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + hostPath: + path: /data/stash-test/repo + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/nfs.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/nfs.yaml new file mode 100644 index 0000000000..5d2bdb5f40 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/nfs.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-nfs + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + nfs: + server: "nfs-service.storage.svc.cluster.local" # use you own NFS server address + path: "/" # this path is relative to "/exports" path of NFS server + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/pvc.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/pvc.yaml new file mode 100644 index 0000000000..aa1d9f393a --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-pvc + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + persistentVolumeClaim: + claimName: repo-pvc + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/examples/storageOS.yaml b/content/docs/v2024.8.27/guides/backends/local/examples/storageOS.yaml new file mode 100644 index 0000000000..2905a5c32c --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/examples/storageOS.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-storageos + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + storageos: + volumeName: stash-vol01 # The `stash-vol01` volume must already exist within StorageOS in the `demo` namespace. + fsType: ext4 + storageSecretName: local-secret diff --git a/content/docs/v2024.8.27/guides/backends/local/index.md b/content/docs/v2024.8.27/guides/backends/local/index.md new file mode 100644 index 0000000000..eed7c34e08 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/local/index.md @@ -0,0 +1,342 @@ +--- +title: Local Backend | Stash +description: Configure Stash to Use Local Backend. +menu: + docs_v2024.8.27: + identifier: backend-local + name: Kubernetes Volumes + parent: backend + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Local Backend + +`Local` backend refers to a local path inside `stash` sidecar container. Any Kubernetes supported [persistent volume](https://kubernetes.io/docs/concepts/storage/volumes/) such as [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim), [HostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath), [EmptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) (for testing only), [NFS](https://kubernetes.io/docs/concepts/storage/volumes/#nfs), [gcePersistentDisk](https://kubernetes.io/docs/concepts/storage/volumes/#gcepersistentdisk) etc. can be used as local backend. + +In order to use Kubernetes volumes as backend, you have to create a `Secret` and a `Repository` object pointing to the desired volume. + +### Create Storage Secret + +To configure storage secret for local backend, following secret keys are needed: + +| Key | Type | Description | +| ----------------- | ---------- | ---------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ kubectl create secret generic -n demo local-secret --from-file=./RESTIC_PASSWORD +secret/local-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd that uses Kubernetes volume as a backend. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `Local` backend. + +| Parameter | Type | Description | +| -------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `local.mountPath` | `Required` | Path where this volume will be mounted inside the sidecar container. Example: `/safe/data`.
We have put `stash` binary in the root directory. Hence, you can not use `/stash` or `/stash/*` as `local.mountPath` | +| `local.subPath` | `Optional` | Sub-path inside the referenced volume where the backed up snapshot will be stored instead of its root. | +| `local.VolumeSource` | `Required` | Any Kubernetes volume. Can be specified inlined. Example: `hostPath`. | + +Here, we are going to show some sample `Repository` crds that uses different Kubernetes volume as a backend. + +##### HostPath volume as Backend + +Below, the YAML of a sample `Repository` crd that uses a `hostPath` volume as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-hostpath + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + hostPath: + path: /data/stash-test/repo + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/hostPath.yaml +repository/local-repo-with-hostpath created +``` + +>Note that by default, Stash runs as `non-root` user. `hostPath` volume is writable only for `root` user. So, in order to use `hostPath` volume as backend, either you have to run Stash as `root` user using securityContext or you have to change the permission of the `hostPath` to make it writable for `non-root` users. + +##### PersistentVolumeClaim as Backend + +Below, the YAML of a sample `Repository` crd that uses a `PersistentVolumeClaim` as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-pvc + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + persistentVolumeClaim: + claimName: repo-pvc + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/pvc.yaml +repository/local-repo-with-pvc created +``` + +##### NFS volume as Backend + +Below, the YAML of a sample `Repository` crd that uses an `NFS` volume as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-nfs + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + nfs: + server: "nfs-service.storage.svc.cluster.local" # use you own NFS server address + path: "/" # this path is relative to "/exports" path of NFS server + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/nfs.yaml +repository/local-repo-with-nfs created +``` + +>For NFS backend, Stash may have to run the network volume accessor deployments in privileged mode to provide Snapshot listing facility. In this case, please configure network volume accessors by following the instruction [here](/docs/v2024.8.27/setup/install/troubleshooting/#configuring-network-volume-accessor). + +##### GCE PersitentDisk as Backend + +Below, the YAML of a sample `Repository` crd that uses a [gcePersistentDisk](https://kubernetes.io/docs/concepts/storage/volumes/#gcepersistentdisk) as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-gcepersistentdisk + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + gcePersistentDisk: + pdName: stash-repo + fsType: ext4 + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/gcePersistentDisk.yaml +repository/local-repo-with-gcepersistentdisk created +``` + +>In order to use `gcePersistentDisk` volume as backend, the node where stash container is running must be a GCE VM and the VM must be in same GCE project and zone as the Persistent Disk. + +##### AWS EBS volume as Backend + +Below, the YAML of a sample `Repository` crd that uses an [awsElasticBlockStore](https://kubernetes.io/docs/concepts/storage/volumes/#awselasticblockstore) as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-awsebs + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + awsElasticBlockStore: # This AWS EBS volume must already exist. + volumeID: + fsType: ext4 + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/awsElasticBlockStore.yaml +repository/local-repo-with-awsebs created +``` + +>In order to use `awsElasticBlockStore` volume as backend, the pod where stash container is running must be running on an AWS EC2 instance and the instance must be in the same region and availability-zone as the EBS volume. + +##### Azure Disk as Backend + +Below, the YAML of a sample `Repository` crd that uses an [azureDisk](https://kubernetes.io/docs/concepts/storage/volumes/#azuredisk) as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-azuredisk + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + azureDisk: + diskName: stash.vhd + diskURI: https://someaccount.blob.microsoft.net/vhds/stash.vhd + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/azureDisk.yaml +repository/local-repo-with-azuredisk created +``` + +##### StorageOS as Backend + +Below, the YAML of a sample `Repository` crd that uses a [storageOS](https://kubernetes.io/docs/concepts/storage/volumes/#storageos) volume as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-storageos + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + storageos: + volumeName: stash-vol01 # The `stash-vol01` volume must already exist within StorageOS in the `demo` namespace. + fsType: ext4 + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/storageOS.yaml +repository/local-repo-with-storageos created +``` + +##### EmptyDir volume as Backend + +Below, the YAML of a sample `Repository` crd that uses an [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: local-repo-with-emptydir + namespace: demo +spec: + backend: + local: + mountPath: /safe/data + emptyDir: {} + storageSecretName: local-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/local/examples/emptyDir.yaml +repository/local-repo-with-emptydir created +``` + +>**Warning:** Data of an `emptyDir` volume is not persistent. If you delete the pod that runs the respective stash container, you will lose all the backed up data. You should use this kind of volumes only to test backup process. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/overview/images/backend_overview.svg b/content/docs/v2024.8.27/guides/backends/overview/images/backend_overview.svg new file mode 100644 index 0000000000..7106b39b3b --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/overview/images/backend_overview.svg @@ -0,0 +1,527 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/backends/overview/images/s3_repository.png b/content/docs/v2024.8.27/guides/backends/overview/images/s3_repository.png new file mode 100644 index 0000000000..47cdab9c97 Binary files /dev/null and b/content/docs/v2024.8.27/guides/backends/overview/images/s3_repository.png differ diff --git a/content/docs/v2024.8.27/guides/backends/overview/index.md b/content/docs/v2024.8.27/guides/backends/overview/index.md new file mode 100644 index 0000000000..177149e4e4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/overview/index.md @@ -0,0 +1,116 @@ +--- +title: Backend Overview | Stash +description: An overview of the backends used by Stash to store backed up data. +menu: + docs_v2024.8.27: + identifier: backend-overview + name: What is Backend? + parent: backend + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Stash Backends + +Stash supports various backends for storing data snapshots. It can be a cloud storage like GCS bucket, AWS S3, Azure Blob Storage etc. or a Kubernetes persistent volume like [HostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath), [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim), [NFS](https://kubernetes.io/docs/concepts/storage/volumes/#nfs) etc. + +The following diagram shows how Stash sidecar container accesses and backs up data into a backend. + +
+  Stash Backend Overview +
Fig: Stash Backend Overview
+
+ +You have to create a [Repository](/docs/v2024.8.27/concepts/crds/repository/) object which contains backend information and a `Secret` which contains necessary credentials to access the backend. + +Stash sidecar/backup job reads backend information from the `Repository` and retrieves access credentials from the `Secret`. Then on the first backup session, Stash will initialize a repository in the backend. + +Below, a screenshot that shows a repository created in AWS S3 bucket named `stash-qa`: + +
+  Repository in AWS S3 Backend +
Fig: Repository in AWS S3 Backend
+
+ +You will see all snapshots taken by Stash at `/snapshot` directory of this repository. + +> Note: Stash stores data encrypted at rest. So, snapshot files in the bucket will not contain any meaningful data until they are decrypted. + +## Next Steps + +- Learn how to configure `Kubernetes Volume` as backend from [here](/docs/v2024.8.27/guides/backends/local/). +- Learn how to configure `AWS S3/Minio/Rook` backend from [here](/docs/v2024.8.27/guides/backends/s3/). +- Learn how to configure `Google Cloud Storage (GCS)` backend from [here](/docs/v2024.8.27/guides/backends/gcs/). +- Learn how to configure `Microsoft Azure Storage` backend from [here](/docs/v2024.8.27/guides/backends/azure/). +- Learn how to configure `OpenStack Swift` backend from [here](/docs/v2024.8.27/guides/backends/swift/). +- Learn how to configure `Backblaze B2` backend from [here](/docs/v2024.8.27/guides/backends/b2/). +- Learn how to configure `REST` backend from [here](/docs/v2024.8.27/guides/backends/rest/). diff --git a/content/docs/v2024.8.27/guides/backends/rest/examples/rest.yaml b/content/docs/v2024.8.27/guides/backends/rest/examples/rest.yaml new file mode 100644 index 0000000000..de74aae945 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/rest/examples/rest.yaml @@ -0,0 +1,10 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: rest-repo + namespace: demo +spec: + backend: + rest: + url: http://rest-server.demo.svc:8000/stash-backup-demo + storageSecretName: rest-secret diff --git a/content/docs/v2024.8.27/guides/backends/rest/index.md b/content/docs/v2024.8.27/guides/backends/rest/index.md new file mode 100644 index 0000000000..20f691ef2c --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/rest/index.md @@ -0,0 +1,148 @@ +--- +title: REST Backend | Stash +description: Configure Stash to REST Server as Backend. +menu: + docs_v2024.8.27: + identifier: backend-rest + name: REST Server + parent: backend + weight: 80 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# REST Backend + +Stash supports restic's [REST Server](https://github.com/restic/rest-server) as a backend. This tutorial will show you how to use this backend. + +In order to use REST Server as backend, you have to create a `Secret` and a `Repository` object pointing to the desired REST Server address. + +#### Create Storage Secret + +To configure storage secret for this backend, following secret keys are needed: + +| Key | Type | Description | +| ---------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots. | +| `REST_SERVER_USERNAME` | `Optional` | Username for basic authentication in the REST server. | +| `REST_SERVER_PASSWORD` | `Optional` | Password for basic authentication in the REST Server | +| `CA_CERT_DATA` | `optional` | CA certificate used by storage backend. This can be used to pass the root certificate that has been used to sign the server certificate of a TLS secured REST Server. | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > REST_SERVER_USERNAME +$ echo -n '' > REST_SERVER_PASSWORD +$ kubectl create secret generic -n demo rest-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./REST_SERVER_USERNAME \ + --from-file=./REST_SERVER_PASSWORD +secret/rest-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `rest` backend, + +| Parameter | Type | Description | +| ---------- | ---------- | ------------------------------------------------------------------------------------------------------------- | +| `rest.url` | `Required` | URL of the REST Server along with an optional path inside the server where backed up snapshot will be stored. | + +Below, the YAML of a sample `Repository` crd that uses a REST Server as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: rest-repo + namespace: demo +spec: + backend: + rest: + url: http://rest-server.demo.svc:8000/stash-backup-demo + storageSecretName: rest-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/rest/examples/rest.yaml +repository/rest-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/s3/examples/minio.yaml b/content/docs/v2024.8.27/guides/backends/s3/examples/minio.yaml new file mode 100644 index 0000000000..b8ccb26706 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/s3/examples/minio.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: minio-repo + namespace: demo +spec: + backend: + s3: + endpoint: https://my-minio-service.minio-namespace.svc + bucket: stash-demo + prefix: /backup/demo/deployment/stash-demo + storageSecretName: minio-secret diff --git a/content/docs/v2024.8.27/guides/backends/s3/examples/s3.yaml b/content/docs/v2024.8.27/guides/backends/s3/examples/s3.yaml new file mode 100644 index 0000000000..ec4559c4d5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/s3/examples/s3.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: s3.amazonaws.com # use server URL for s3 compatible other storage service + bucket: stash-demo + region: us-west-1 + prefix: /backup/demo/deployment/stash-demo + storageSecretName: s3-secret diff --git a/content/docs/v2024.8.27/guides/backends/s3/index.md b/content/docs/v2024.8.27/guides/backends/s3/index.md new file mode 100644 index 0000000000..d813a10fb1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/s3/index.md @@ -0,0 +1,190 @@ +--- +title: AWS S3/Minio/Rook Backend | Stash +description: Configure Stash to use AWS S3/Minio/Rook as Backend. +menu: + docs_v2024.8.27: + identifier: backend-s3 + name: AWS S3/Minio/Rook + parent: backend + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# AWS S3 + +Stash supports AWS S3 or S3 compatible storage services like [Minio](https://minio.io/) servers, [Rook Object Store](https://rook.io/docs/rook/v0.9/ceph-object.html), [DigitalOceans Space](https://www.digitalocean.com/products/spaces/) as a backend. This tutorial will show you how to use this backend. + +In order to use S3 or S3 compatible storage service as backend, you have to create a `Secret` and a `Repository` object pointing to the desired bucket. + +>If the bucket does not exist yet, Stash will create it automatically in the default region (`us-east-1`) during the first backup. In this case, you have to make sure that the bucket name is unique across all S3 buckets. Currently, it is not possible for Stash to create bucket in different region. You have to create the bucket in your desired region before using it in Stash. + +#### Create Storage Secret + +To configure storage secret for this backend, following secret keys are needed: + +| Key | Type | Description | +| ----------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `RESTIC_PASSWORD` | `Required` | Password that will be used to encrypt the backup snapshots. | +| `AWS_ACCESS_KEY_ID` | `Required` | AWS / Minio / Rook / DigitalOcean Spaces access key ID | +| `AWS_SECRET_ACCESS_KEY` | `Required` | AWS / Minio / Rook / DigitalOcean Spaces secret access key | +| `CA_CERT_DATA` | `optional` | CA certificate used by storage backend. This can be used to pass the root certificate that has been used to sign the server certificate of a TLS secured Minio server. | + +Create storage secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > AWS_ACCESS_KEY_ID +$ echo -n '' > AWS_SECRET_ACCESS_KEY +$ kubectl create secret generic -n demo s3-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AWS_ACCESS_KEY_ID \ + --from-file=./AWS_SECRET_ACCESS_KEY +secret/s3-secret created +``` + +For TLS secured Minio Server, create secret as below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > AWS_ACCESS_KEY_ID +$ echo -n '' > AWS_SECRET_ACCESS_KEY +$ cat ./directory/of/root/certificate/ca.crt > CA_CERT_DATA +$ kubectl create secret generic -n demo minio-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AWS_ACCESS_KEY_ID \ + --from-file=./AWS_SECRET_ACCESS_KEY \ + --from-file=./CA_CERT_DATA +secret/minio-secret created +``` + +{{< notice type="warning" message="If you are using a Minio backend, make sure that you are using `AWS_ACCESS_KEY_ID` instead of `MINIO_ACCESS_KEY` and `AWS_SECRET_ACCESS_KEY` instead of `MINIO_SECRET_KEY`." >}} + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `S3` backend. + +| Parameter | Type | Description | +| ------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `s3.endpoint` | `Required` | For S3, use `s3.amazonaws.com`. If your bucket is in a different location, S3 server (s3.amazonaws.com) will redirect Stash to the correct endpoint. For DigitalOCean, use `nyc3.digitaloceanspaces.com` etc. depending on your bucket region. For S3-compatible other storage services like Minio / Rook use URL of the server. | +| `s3.bucket` | `Required` | Name of Bucket. If the bucket does not exist yet it will be created in the default location (`us-east-1` for S3). It is not possible at the moment for Stash to create a new bucket in a different location, so you need to create it using a different program. | +| `s3.region` | `Optional` | Specify the region of your bucket. | +| `s3.prefix` | `Optional` | Path prefix inside the bucket where the backed up data will be stored. | + +Below, the YAML of a sample `Repository` crd that uses an `S3` bucket as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: s3.amazonaws.com # use server URL for s3 compatible other storage service + bucket: stash-demo + region: us-west-1 + prefix: /backup/demo/deployment/stash-demo + storageSecretName: s3-secret +``` + +For S3 compatible Minio and other storage services, specify the endpoint with connection scheme (`http`, or `https`), + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: minio-repo + namespace: demo +spec: + backend: + s3: + endpoint: https://my-minio-service.minio-namespace.svc + bucket: stash-demo + prefix: /backup/demo/deployment/stash-demo + storageSecretName: s3-secret +``` + +Create the `s3-repo` Repository we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/s3/examples/s3.yaml +repository/s3-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/backends/swift/examples/swift.yaml b/content/docs/v2024.8.27/guides/backends/swift/examples/swift.yaml new file mode 100644 index 0000000000..9a817f31dd --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/swift/examples/swift.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: swift-repo + namespace: demo +spec: + backend: + swift: + container: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: swift-secret diff --git a/content/docs/v2024.8.27/guides/backends/swift/index.md b/content/docs/v2024.8.27/guides/backends/swift/index.md new file mode 100644 index 0000000000..66bf79db13 --- /dev/null +++ b/content/docs/v2024.8.27/guides/backends/swift/index.md @@ -0,0 +1,223 @@ +--- +title: Swift Backend | Stash +description: Configure Stash to use OpenStack Swift as Backend. +menu: + docs_v2024.8.27: + identifier: backend-swift + name: OpenStack Swift + parent: backend + weight: 60 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# OpenStack Swift + +Stash supports [OpenStack Swift](https://docs.openstack.org/swift/latest/) as a backend. This tutorial will show you how to use this backend. + +In order to use OpenStack Swift as backend, you have to create a `Secret` and a `Repository` object pointing to the desired Swift container. + +>If the Swift container does not exist yet, Stash will automatically create it during the first backup. + +#### Create Storage Secret + +Stash supports Swift's Keystone v1, v2, v3 authentication as well as token-based authentication. + +**Keystone v1 authentication:** + +For keystone v1 authentication, following secret keys are needed: + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `ST_AUTH` | URL of the Keystone server. | +| `ST_USER` | Username. | +| `ST_KEY` | Password. | + +**Keystone v2 authentication:** + +For keystone v2 authentication, following secret keys are needed: + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `OS_AUTH_URL` | URL of the Keystone server. | +| `OS_REGION_NAME` | Storage region name | +| `OS_USERNAME` | Username | +| `OS_PASSWORD` | Password | +| `OS_TENANT_ID` | Tenant ID | +| `OS_TENANT_NAME` | Tenant Name | + +**Keystone v3 authentication:** + +For keystone v3 authentication, following secret keys are needed: + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `OS_AUTH_URL` | URL of the Keystone server. | +| `OS_REGION_NAME` | Storage region name | +| `OS_USERNAME` | Username | +| `OS_PASSWORD` | Password | +| `OS_USER_DOMAIN_NAME` | User domain name | +| `OS_PROJECT_NAME` | Project name | +| `OS_PROJECT_DOMAIN_NAME` | Project domain name | + +For keystone v3 application credential authentication (application credential id): + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `OS_AUTH_URL` | URL of the Keystone server. | +| `OS_APPLICATION_CREDENTIAL_ID` | The ID of the application credential used for authentication. If not provided, the application credential must be identified by its name and its owning user.| +| `OS_APPLICATION_CREDENTIAL_SECRET` | The secret for authenticating the application credential. | + +For keystone v3 application credential authentication (application credential name): + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `OS_AUTH_URL` | URL of the Keystone server. | +| `OS_USERNAME` | User name| +| `OS_USER_DOMAIN_NAME` | User domain name| +| `OS_APPLICATION_CREDENTIAL_NAME` | The name of the application credential used for authentication. If provided, must be accompanied by a user object. | +| `OS_APPLICATION_CREDENTIAL_SECRET` | The secret for authenticating the application credential. | + +**Token-based authentication:** + +For token-based authentication, following secret keys are needed: + +| Key | Description | +|--------------------------|------------------------------------------------------------| +| `RESTIC_PASSWORD` | Password used that will be used to encrypt the backup snapshots.| +| `OS_STORAGE_URL` | Storage URL | +| `OS_AUTH_TOKEN` | Authentication token | + +A sample storage secret creation for keystone v2 authentication is shown below, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > OS_AUTH_URL +$ echo -n '' > OS_TENANT_ID +$ echo -n '' > OS_TENANT_NAME +$ echo -n '' > OS_USERNAME +$ echo -n '' > OS_PASSWORD +$ echo -n '' > OS_REGION_NAME +$ kubectl create secret generic swift-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./OS_AUTH_URL \ + --from-file=./OS_TENANT_ID \ + --from-file=./OS_TENANT_NAME \ + --from-file=./OS_USERNAME \ + --from-file=./OS_PASSWORD \ + --from-file=./OS_REGION_NAME +secret/swift-secret created +``` + +### Create Repository + +Now, you have to create a `Repository` crd. You have to provide the storage secret that we have created earlier in `spec.backend.storageSecretName` field. + +Following parameters are available for `Swift` backend. + +| Parameter | Description | +| ----------------- | ------------------------------------------------------------------------------ | +| `swift.container` | `Required`. Name of Storage container | +| `swift.prefix` | `Optional`. Path prefix inside the container where backed up data will be stored. | + +Below, the YAML of a sample `Repository` crd that uses a Swift container as a backend. + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: swift-repo + namespace: demo +spec: + backend: + swift: + container: stash-backup + prefix: /demo/deployment/my-deploy + storageSecretName: swift-secret +``` + +Create the `Repository` we have shown above using the following command, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/backends/swift/examples/swift.yaml +repository/swift-repo created +``` + +Now, we are ready to use this backend to backup our desired data using Stash. + +## Next Steps + +- Learn how to use Stash to backup workloads data from [here](/docs/v2024.8.27/guides/workloads/overview/). +- Learn how to use Stash to backup databases from [here](/docs/v2024.8.27/guides/addons/overview/). +- Learn how to use Stash to backup stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/overview/). diff --git a/content/docs/v2024.8.27/guides/batch-backup/_index.md b/content/docs/v2024.8.27/guides/batch-backup/_index.md new file mode 100644 index 0000000000..02f945014f --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/_index.md @@ -0,0 +1,76 @@ +--- +title: Batch Backup | Stash +menu: + docs_v2024.8.27: + identifier: batch-backup + name: Batch Backup + parent: guides + weight: 40 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/batch-backup/overview/images/batch-restore.svg b/content/docs/v2024.8.27/guides/batch-backup/overview/images/batch-restore.svg new file mode 100644 index 0000000000..141438c7d6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/overview/images/batch-restore.svg @@ -0,0 +1,1128 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/batch-backup/overview/images/batchbackup_overview.svg b/content/docs/v2024.8.27/guides/batch-backup/overview/images/batchbackup_overview.svg new file mode 100644 index 0000000000..a7d32e4a4d --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/overview/images/batchbackup_overview.svg @@ -0,0 +1,1326 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/batch-backup/overview/index.md b/content/docs/v2024.8.27/guides/batch-backup/overview/index.md new file mode 100644 index 0000000000..44261c071a --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/overview/index.md @@ -0,0 +1,137 @@ +--- +title: Batch Backup & Restore Overview | Stash +description: An overview on how batch backup & restore works in Stash. +menu: + docs_v2024.8.27: + identifier: batch-backup-overview + name: How Batch Backup & Restore works? + parent: batch-backup + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Batch Backup and Restore Overview + +Sometimes, an application may consist of multiple co-related components. For example, to deploy a WordPress, you will need a Deployment for the WordPress and another Deployment for the database. Now, it is sensible to want to backup or restore both of the deployments using a single configuration as they are parts of the same application. + +Stash 0.9.0+ supports taking backup multiple co-related components using a single configuration known as [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/). Stash 0.10.0+ supports restoring multiple co-related components together known as [RestoreBatch](/docs/v2024.8.27/concepts/crds/restorebatch/) This guide will give you an overview of how batch backup and restore works in Stash. + +## How Batch Backup Works + +The following diagram shows how Stash takes backup of multiple co-related components in a single application. Open the image in a new tab to see the enlarged version. + +
+ Stash Batch Backup Flow +
Fig: Batch backup flow in Stash
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a backend Secret. This secret holds the credentials to access the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd which represents the original repository in the backend. + +3. Then, she creates a `BackupBatch` crd which specifies multiple targets(workload, volume, and database). It also specifies the `Repository` object that holds the backend information where the backed up data will be stored. + +4. Stash operator watches for `BackupBatch` objects. + +5. When it finds a `BackupBatch` object, it checks if there is any workload as a target. If there any, it injects a sidecar named `stash` into the workloads. + +6. It also creates a `CronJob` to trigger backups periodically. + +7. The`CronJob` triggers backup on each scheduled slot by creating a `BackupSession` crd. + +8. The BackupSession controller (inside sidecar for sidecar model or inside the operator itself for job model) watches for `BackupSession` crd. + +9. When it finds a `BackupSession` it starts the backup process immediately(for job model a job is created for taking backup) for the individual targets. Stash operator enforces the backup order if the `executionOrder` is set to `Sequential`. + +10. The individual targets complete their backup process independently and update their respective fields in `BackupSession` status. + +## How Batch Restore Works + +The following diagram shows the batch restore process. Please, open image in new tab to view the enlarged image. + +
+ Stash Batch Restore Flow +
Fig: Batch restore flow in Stash
+
+ +The batch restore process consists of the following steps: + +1. At first, the user creates a `RestoreBatch` CR specifying the targets and the respective Repository where the backed up data has been stored. +2. The Stash operator watches for the `RestoreBatch` CR. +3. When the Stash operator finds a `RestoreBatch` CR, it executes the global `PreRestore` hooks. If there is no global `PreRestore` hook, Stash will skip this step. +4. Then, it injects an init-container into the target that follows the sidecar model and creates a restore job for the targets that follow the job model. Stash operator enforces the restore order in this step if the `executionOrder` is set to `Sequential`. +5. The restore init-container/job first execute their local `PreRestore` hooks. Then, restore their data and finally execute their `PostRestore` hooks. +6. Finally, Stash operator executes the global `PostRestore` hooks. If there is not global `PostRestore` hook configured for this RestoreBatch, Stash will skip this step. + +## Next Steps + +- See a step by step guide to backup application with multiple co-related components [here](/docs/v2024.8.27/guides/batch-backup/wordpress-backup/). diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/appbinding.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/appbinding.yaml new file mode 100644 index 0000000000..69866f47d1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/appbinding.yaml @@ -0,0 +1,15 @@ +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: wordpress-db + namespace: demo +spec: + type: mysql + version: 8.0.27 + clientConfig: + service: + name: wordpress-db + port: 3306 + scheme: mysql + secret: + name: mysql-pass diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/backupbatch.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/backupbatch.yaml new file mode 100644 index 0000000000..5d71744219 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/backupbatch.yaml @@ -0,0 +1,34 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: wordpress-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + executionOrder: Parallel + members: + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-app + volumeMounts: + - name: storage + mountPath: /var/www/html + paths: + - /var/www/html + retentionPolicy: + name: 'keep-last-10' + keepLast: 10 + prune: true diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/mysql.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/mysql.yaml new file mode 100644 index 0000000000..9b748a47e6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/mysql.yaml @@ -0,0 +1,75 @@ +apiVersion: v1 +kind: Service +metadata: + name: wordpress-db + namespace: demo + labels: + app: wordpress-db +spec: + ports: + - port: 3306 + selector: + app: wordpress-db +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-db + namespace: demo + labels: + app: wordpress-db +spec: + selector: + matchLabels: + app: wordpress-db + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress-db + spec: + containers: + - image: mysql:8.0.14 + name: mysql + args: + - --default-authentication-plugin=mysql_native_password + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + - name: MYSQL_USER + valueFrom: + secretKeyRef: + name: mysql-pass + key: username + ports: + - containerPort: 3306 + name: mysql + volumeMounts: + - name: storage + mountPath: /var/lib/mysql + - name: config-volume + mountPath: /etc/mysql/conf.d + volumes: + - name: storage + persistentVolumeClaim: + claimName: mysql-pvc + - name: config-volume + emptyDir: {} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pvc + namespace: demo + labels: + app: wordpress-db +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/repository.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/repository.yaml new file mode 100644 index 0000000000..8708c70ccd --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stashed-ci + prefix: /wordpress/backup + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restorebatch.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restorebatch.yaml new file mode 100644 index 0000000000..b2771a51c2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restorebatch.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreBatch +metadata: + name: wordpress-restore + namespace: demo +spec: + driver: Restic + repository: + name: gcs-repo + executionOrder: Sequential + members: + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + rules: + - snapshots: [latest] + task: + name: mysql-restore-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-app + rules: + - paths: + - /var/www/html + volumeMounts: + - name: storage + mountPath: /var/www/html diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restoresession.yaml new file mode 100644 index 0000000000..f39036ebf7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/restoresession.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: wordpress-db-restore + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/wordpress.yaml b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/wordpress.yaml new file mode 100644 index 0000000000..b5dfc55389 --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples/wordpress.yaml @@ -0,0 +1,71 @@ +apiVersion: v1 +kind: Service +metadata: + name: wordpress-app + namespace: demo + labels: + app: wordpress-app +spec: + ports: + - port: 80 + selector: + app: wordpress-app +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-app + namespace: demo + labels: + app: wordpress-app +spec: + selector: + matchLabels: + app: wordpress-app + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress-app + spec: + containers: + - image: wordpress:5.3.2-apache + name: wordpress + env: + - name: WORDPRESS_DB_HOST + value: wordpress-db + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + - name: WORDPRESS_DB_USER + valueFrom: + secretKeyRef: + name: mysql-pass + key: username + ports: + - containerPort: 80 + name: wordpress + volumeMounts: + - name: storage + mountPath: /var/www/html + volumes: + - name: storage + persistentVolumeClaim: + claimName: wordpress-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wordpress-pvc + namespace: demo + labels: + app: wordpress-app +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/backup-data.png b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/backup-data.png new file mode 100644 index 0000000000..8876082a19 Binary files /dev/null and b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/backup-data.png differ diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/sample-post.png b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/sample-post.png new file mode 100644 index 0000000000..8f4e560039 Binary files /dev/null and b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/sample-post.png differ diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wordpress-setup.png b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wordpress-setup.png new file mode 100644 index 0000000000..ba5fec4d45 Binary files /dev/null and b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wordpress-setup.png differ diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_missing.png b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_missing.png new file mode 100644 index 0000000000..a1dc99489b Binary files /dev/null and b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_missing.png differ diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_restored.png b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_restored.png new file mode 100644 index 0000000000..9aa8daced0 Binary files /dev/null and b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/images/wp_restored.png differ diff --git a/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/index.md b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/index.md new file mode 100644 index 0000000000..1988fb9a1c --- /dev/null +++ b/content/docs/v2024.8.27/guides/batch-backup/wordpress-backup/index.md @@ -0,0 +1,1019 @@ +--- +title: Batch Backup | Stash +description: A step by step guide showing how to backup and restore an application with multiple co-related components. +menu: + docs_v2024.8.27: + identifier: batch-backup-guide + name: Backup a WordPress Site + parent: batch-backup + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup & Restore a WordPress Site Using Batch Backup + +This tutorial will demonstrate how to use Stash to take backup of an application with multiple co-related components. Here, we are going to take backup of a [WordPress Site](https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/). + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install MySQL addon for Stash following the steps [here](https://stash.run/docs/v0.9.0-rc.2/addons/mysql/guides/8.0.14/mysql/). +- If you are not familiar with how Stash backup and restore MySQL databases, please check the following guide [here](https://stash.run/docs/v0.9.0-rc.2/addons/mysql/overview/). + +- You should be familiar with the following `Stash` concepts: + - [Appbinding](/docs/v2024.8.27/concepts/crds/appbinding/) + - [Function](/docs/v2024.8.27/concepts/crds/function/) + - [Task](/docs/v2024.8.27/concepts/crds/task/) + - [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + - [RestoreBatch](/docs/v2024.8.27/concepts/crds/restorebatch/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/batch-backup/wordpress-backup/examples](/docs/v2024.8.27/guides/batch-backup/wordpress-backup/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Deploy WordPress Site + +At first, we are going to deploy a WordPress site with a MySQL database and generate some sample data in it. Then, we are going to backup this site's data and database into a GCS bucket. Finally, we are going to show how we can restore the site form the backed up data. + +### Deploy Database + +We are going to use MySQL as the database for our WordPress site. So, let's deploy the database first. + +Let's create a secret for the MySQL database, + +```bash +$ kubectl create secret -n demo generic mysql-pass \ + --from-literal=username=root \ + --from-literal=password=mysqlpass +secret/mysql-pass created +``` + +Now, let's create a MySQL deployment with this secret. Below are the YAML of the MySQL Deployment along with its Service and PVC, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: wordpress-db + namespace: demo + labels: + app: wordpress-db +spec: + ports: + - port: 3306 + selector: + app: wordpress-db +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-db + namespace: demo + labels: + app: wordpress-db +spec: + selector: + matchLabels: + app: wordpress-db + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress-db + spec: + containers: + - image: mysql:8.0.14 + name: mysql + args: + - --default-authentication-plugin=mysql_native_password + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + - name: MYSQL_USER + valueFrom: + secretKeyRef: + name: mysql-pass + key: username + ports: + - containerPort: 3306 + name: mysql + volumeMounts: + - name: storage + mountPath: /var/lib/mysql + - name: config-volume + mountPath: /etc/mysql/conf.d + volumes: + - name: storage + persistentVolumeClaim: + claimName: mysql-pvc + - name: config-volume + emptyDir: {} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pvc + namespace: demo + labels: + app: wordpress-db +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +Let's create the above MySQL Deployment, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/mysql.yaml +service/wordpress-db created +deployment.apps/wordpress-db created +persistentvolumeclaim/mysql-pvc created +``` + +Now, wait for the MySQL pod to go into running state, + +```bash +$ kubectl get pod -n demo -l app=wordpress-db +NAME READY STATUS RESTARTS AGE +wordpress-db-58657b89b9-kgt76 1/1 Running 0 104s +``` + +Let's check if the MySQL database is ready to accept connections, + +```bash +$ kubectl logs -n demo -f wordpress-db-58657b89b9-kgt76 +Initializing database +.... +.... +2020-01-07T12:33:23.242350Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.14' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. +2020-01-07T12:33:23.325316Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060 +``` + +From the last line, we can see the database is ready to accept connections. + +### Deploy WordPress + +Now, we are going to deploy our WordPress app in another Deployment. This going to use the MySQL database through the `wordpress-db` Service that we have created earlier. + +Below is the YAML of the WordPress Deployment along with its PVC and Service: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: wordpress-app + namespace: demo + labels: + app: wordpress-app +spec: + ports: + - port: 80 + selector: + app: wordpress-app +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-app + namespace: demo + labels: + app: wordpress-app +spec: + selector: + matchLabels: + app: wordpress-app + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress-app + spec: + containers: + - image: wordpress:5.3.2-apache + name: wordpress + env: + - name: WORDPRESS_DB_HOST + value: wordpress-db + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + - name: WORDPRESS_DB_USER + valueFrom: + secretKeyRef: + name: mysql-pass + key: username + ports: + - containerPort: 80 + name: wordpress + volumeMounts: + - name: storage + mountPath: /var/www/html + volumes: + - name: storage + persistentVolumeClaim: + claimName: wordpress-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wordpress-pvc + namespace: demo + labels: + app: wordpress-app +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +Let's create the above Deployment, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/wordpress.yaml +service/wordpress-app created +deployment.apps/wordpress-app created +persistentvolumeclaim/wordpress-pvc created +``` + +Now, wait for the wordpress pod to go into running state, + +```bash +$ kubectl get pod -n demo -l app=wordpress-app +NAME READY STATUS RESTARTS AGE +wordpress-app-59b69858f9-48phf 1/1 Running 0 3m40s +``` + +So, we can see that our WordPress site is running. Now, its time to insert some sample data. + +#### Insert Sample Data + +At first, lets port-forward the `wordpress-app` Service that we have created with the WordPress deployment. + +```bash +$ kubectl port-forward -n demo service/wordpress-app 8080:80 +Forwarding from 127.0.0.1:8080 -> 80 +Forwarding from [::1]:8080 -> 80 +``` + +Now, we can access our site through a browser at `localhost:8080`. Let's complete the initial setup. + +
+ WordPress Setup Wizard +
Fig: WordPress Setup Wizard
+
+ +Once we have completed the setup, let's create some sample blog posts. Here, I have created a sample post titled **Stash Batch Backup Test**. + +
+ Sample Post +
Fig: A sample blog post
+
+ +When we save the post, WordPress will store it into the database. If we exec into the database pod, we will see the post has been stored there. + +```bash +$ kubectl exec -it -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass +... +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| sys | +| wordpress | ++--------------------+ +5 rows in set (0.01 sec) + +mysql> show tables in wordpress; ++-----------------------+ +| Tables_in_wordpress | ++-----------------------+ +| wp_commentmeta | +| wp_comments | +| wp_links | +| wp_options | +| wp_postmeta | +| wp_posts | +| wp_term_relationships | +| wp_term_taxonomy | +| wp_termmeta | +| wp_terms | +| wp_usermeta | +| wp_users | ++-----------------------+ +12 rows in set (0.00 sec) + +mysql> use wordpress; +Reading table information for completion of table and column names +You can turn off this feature to get a quicker startup with -A + +Database changed + +mysql> select post_name from wp_posts; ++-------------------------+ +| post_name | ++-------------------------+ +| hello-world | +| sample-page | +| privacy-policy | +| | +| stash-batch-backup-test | +| 5-revision-v1 | ++-------------------------+ +6 rows in set (0.00 sec) + +mysql> exit +Bye +``` + +So, we can see that our post has been stored with `stash-batch-backup-test` name. + +Also, WordPress pod write some files in its `/var/www/html` directory. Let's see whats file has been written there: + +```bash +$ kubectl exec -it -n demo wordpress-app-59b69858f9-48phf -- ls /var/www/html +index.php wp-blog-header.php wp-cron.php wp-mail.php +license.txt wp-comments-post.php wp-includes wp-settings.php +readme.html wp-config-sample.php wp-links-opml.php wp-signup.php +wp-activate.php wp-config.php wp-load.php wp-trackback.php +wp-admin wp-content wp-login.php xmlrpc.php +``` + +Notice the `wp-content` directory. We will work with this directory later in this tutorial. + +Now, our wordpress site is running and we have created some post into it. Now, its time to setup a backup for our site. + +### Backup + +Here, we are going to backup the `/var/www/html` directory of the WordPress pod and the MySQL database into a GCS bucket using `BackupBatch`. + +#### Create AppBinding + +At first, let's create an `AppBinding` CR that holds the connection information of the MySQL database. Stash uses this `AppBinding` to connect with the database. + +Here, is the `AppBinding` CR holding connection information of our MySQL database, + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + name: wordpress-db + namespace: demo +spec: + type: mysql + version: 8.0.27 + clientConfig: + service: + name: wordpress-db + port: 3306 + scheme: mysql + secret: + name: mysql-pass +``` + +Here, + +- `.spec.clientConfig.service.name` specifies the name of the Service that connects to the MySQL database. +- `.spec.clientConfig.service.port` specifies the port where the target database is running. +- `.spec.secret` specifies the name of the Secret that holds the necessary credentials to access the database. +- `spec.type` specifies the types of the database it pointing to. + +Let's create the above AppBinding, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/appbinding.yaml +appbinding.appcatalog.appscode.com/wordpress-db +``` + +#### Prepare Backend + +We are going to store our backed up data into a GCS bucket. We have to create a Secret with the necessary credentials and a Repository CR to use this backend. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a Secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, let's create a `Repository` with our GCS bucket information. Below is the YAML of `Repository` CR we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stashed-ci + prefix: /wordpress/backup + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our WordPress site into this backend. + +#### Backup + +Now, we are going to create a `BackupBatch` CR targeting the MySQL database and the WordPress deployment. + +**Create BackupBatch:** + +Below is the YAML of the `BackupBatch` CR that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: wordpress-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + executionOrder: Parallel + members: + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-app + volumeMounts: + - name: storage + mountPath: /var/www/html + paths: + - /var/www/html + retentionPolicy: + name: 'keep-last-10' + keepLast: 10 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` that holds the information of our GCS backend. +- `spec.schedule` is a cron expression that indicates that backup will take at every 5 minutes interval. +- `spec.executionOrder` specifies that we want to take backup both of the components in parallel. +- `spec.members` specifies a list of targets that are subject to backup. In our case, we are going to specify the `AppBinding` of our MySQL database and the WordPress deployment as members. Each of the members may have the following sub-fields: + - `target.alias` specify the host identifier that will be used to separate data of this member in the backend. + - `target.ref` refers to the target that will be backed up. + - `target.paths` specifies a list of file paths to backup for the target. + - `target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. + - `task.name` refers to the `Task` object that specifies the `Function` and their execution order to perform the backup in the Function-Task model. + +Let's create the `BackupBatch` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/backupbatch.yaml +backupbatch.stash.appscode.com/wordpress-backup created +``` + +**Verify CronJob:** + +Stash will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupBatch` CR. + +Verify that the CronJob has been created successfully, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-wordpress-backup */5 * * * * False 0 32s +``` + +**Wait for BackupSession:** + +The CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` CR. Let's wait for a `BackupSession` to complete, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +wordpress-backup-1597245602 BackupBatch wordpress-backup 0s +wordpress-backup-1597245602 BackupBatch wordpress-backup Running 0s +wordpress-backup-1597245602 BackupBatch wordpress-backup Succeeded 40s +``` + +We can see from the above output that the BackupSession has `Succeeded`. It means Stash has backed up our database and the `/var/www/html` directory of the WordPress deployment successfully. + +**Verify Backup:** + +When a backup session is completed, Stash will update the respective `Repository` to reflect the latest state of backed up data. + +Run the following command to check if a backup snapshot has been stored in the backend, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 183.5Mi 2 3s 38m +``` + +From the output above, we can see that 2 snapshots have been stored in the backend. + +Now, if we navigate to our GCS bucket, we are going to see that the backed up data has been stored in `/wordpress/backup` directory as specified by the `prefix` field of the Repository. + +
+ Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +In the previous section, we have successfully backed up the database and `/var/www/html` directory our WordPress deployment into a GCS bucket. Now, it is time to see the restore process in action. + +Here, we are going to see two different restore scenarios: + +- **Batch Restore:** In this scenario, we will assume that both of the components (database and wordpress deployment) our WordPress site has been damaged. In this case, we will restore the backed up data of both components using a `RestoreBatch` object. + +- **Individual Restore:** In this scenario, we will assume that only the database has been damaged. So, restoring only the database is sufficient. In this case, we are going to restore the database using a `RestoreSession` object. + +**Pause Backup:** + +At first, let stop the backup so that no new backup happens during the restore process. Let's set `spec.paused` section of `BackupBatch` to `true` which will stop taking further scheduled backup. + +```bash +$ kubectl patch backupbatch -n demo wordpress-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupbatch.stash.appscode.com/wordpress-backup patched +``` + +It should suspend the respective CronJob which is responsible for triggering backup at a scheduled slot. Let's verify that the CronJob has been suspended. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-wordpress-backup */5 * * * * True 0 12h 13h +``` + +### Batch Restore + +In this section, we are going to simulate a disaster scenario where we will damage both the database and the wordpress deployment's data. Then, we will restore them from the backup. + +**Simulate Disaster:** + +At first, let's corrupt the database. Here, we are going to delete the sample post we have created earlier. + +```bash +$ kubectl exec -it -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass +.... +mysql> show tables from wordpress; ++-----------------------+ +| Tables_in_wordpress | ++-----------------------+ +| wp_commentmeta | +| wp_comments | +| wp_links | +| wp_options | +| wp_postmeta | +| wp_posts | +| wp_term_relationships | +| wp_term_taxonomy | +| wp_termmeta | +| wp_terms | +| wp_usermeta | +| wp_users | ++-----------------------+ +12 rows in set (0.01 sec) + +mysql> use wordpress; +Reading table information for completion of table and column names +You can turn off this feature to get a quicker startup with -A + +Database changed +mysql> show tables; ++-----------------------+ +| Tables_in_wordpress | ++-----------------------+ +| wp_commentmeta | +| wp_comments | +| wp_links | +| wp_options | +| wp_postmeta | +| wp_posts | +| wp_term_relationships | +| wp_term_taxonomy | +| wp_termmeta | +| wp_terms | +| wp_usermeta | +| wp_users | ++-----------------------+ +12 rows in set (0.00 sec) + +mysql> select post_name from wp_posts; ++-------------------------+ +| post_name | ++-------------------------+ +| hello-world | +| sample-page | +| privacy-policy | +| | +| stash-batch-backup-test | +| 5-revision-v1 | ++-------------------------+ +6 rows in set (0.00 sec) + +mysql> delete from wp_posts where post_name='stash-batch-backup-test'; +Query OK, 1 row affected (0.01 sec) + +mysql> select post_name from wp_posts; ++----------------+ +| post_name | ++----------------+ +| hello-world | +| sample-page | +| privacy-policy | +| | +| 5-revision-v1 | ++----------------+ +5 rows in set (0.00 sec) + +mysql> exit; +Bye +``` + +We have deleted the `stash-batch-backup-test` post from the database. Now, if you go to our WordPress site through a browser, you will see that the sample post that we had created is missing now. + +
+ Missing Sample Post +
Fig: Missing Sample Post
+
+ +So, we can see that the sample post is gone. Only, the `Hello World!` post is now available. + +Now, let's do some damage to our WordPress deployment too. Here, we are going to remove the `wp-content` directory from `/var/www/html` directory of our WordPress pod. + +```bash +$ kubectl exec -n demo wordpress-app-5b778b446-gtd6d -c wordpress -- rm -r /var/www/html/wp-content +``` + +Verify that the `wp-content` directory has been removed. + +```bash +$ kubectl exec -n demo wordpress-app-5b778b446-gtd6d -c wordpress -- ls /var/www/html +index.php +license.txt +readme.html +wp-activate.php +wp-admin +wp-blog-header.php +wp-comments-post.php +wp-config-sample.php +wp-config.php +wp-cron.php +wp-includes +wp-links-opml.php +wp-load.php +wp-login.php +wp-mail.php +wp-settings.php +wp-signup.php +wp-trackback.php +xmlrpc.php +``` + +So, we can see from the above that the `wp-content` directory is no longer present in `/var/www/html` directory. + +**Create RestoreBatch:** + +Now, we are going to restore both of the components using a RestoreBatch. Here, is the YAML of the RestoreBatch CR that we are going to use: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreBatch +metadata: + name: wordpress-restore + namespace: demo +spec: + driver: Restic + repository: + name: gcs-repo + executionOrder: Sequential + members: + - target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + rules: + - snapshots: [latest] + task: + name: mysql-restore-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-app + rules: + - paths: + - /var/www/html + volumeMounts: + - name: storage + mountPath: /var/www/html +``` + +Here, + +- `spec.repository` specifies that we are restoring from the `gcs-repo` Repository. +- `spec.executionOrder` specify that we want Stash to restore the component sequentially. Here, we want to restore the database first then we want to restore the wordpress deployment's data. +- `spec.members` specify the targets to be restored. Each member may have the following sub-fields. + - `target.alias` specify the host identifier of the backed up data for this member. It must be the same as the `alias` used during backup. + - `target.ref` refers to the target to restore. + - `target.rules` specify the rules for restoring the data of this member. Here, we want to restore the `latest` snapshot for the database and the latest state of `/var/www/html` path for our WordPress deployment. + - `target.volumeMounts` specifies the volume mounts where the data will be restored. + - `task.name` refers to the `Task` object to use to restore the member in the Function-Task model. + +Let's create the above `RestoreBatch` object, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/restorebatch.yaml +restorebatch.stash.appscode.com/wordpress-restore created +``` + +Now, wait for the `RestoreBatch` phase to go into `Succeeded` state. + +```bash +$ kubectl get restorebatch -n demo -w +NAME REPOSITORY PHASE AGE +wordpress-restore gcs-repo Running 7s +wordpress-restore gcs-repo Succeeded 2m +``` + +We can see from above that Stash has successfully restored both components. Now, it's time to verify whether data has been restored or not. + +**Verify Restored Data :** + +Let's verify that `sample-batch-backup-test` post that we had deleted from the database has been restored. + +```bash +$ kubectl exec -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass -e "SELECT post_name FROM wordpress.wp_posts;" +mysql: [Warning] Using a password on the command line interface can be insecure. +post_name +hello-world +sample-page +privacy-policy + +stash-batch-backup-test +5-revision-v1= +``` + +We can see that the `stash-batch-backup-test` post is now present in the database. + +Again, let verify whether the `wp-content` directory that we had removed from the WordPress deployment's pod has been restored or not. + +```bash +$ kubectl exec -n demo wordpress-app-684b577c89-wpsqs -c wordpress -- ls /var/www/html +index.php +license.txt +readme.html +wp-activate.php +wp-admin +wp-blog-header.php +wp-comments-post.php +wp-config-sample.php +wp-config.php +wp-content +wp-cron.php +wp-includes +wp-links-opml.php +wp-load.php +wp-login.php +wp-mail.php +wp-settings.php +wp-signup.php +wp-trackback.php +xmlrpc.php +``` + +We can see from the above that the `wp-content` has been restored successfully. + +Now, if you go to the WordPress site through a browser, you will see that the `Stash Batch Backup Test` post is present now. + +
+ Restored Sample Post +
Fig: Restored Sample Post
+
+ +### Individual Restore + +In this section, we are going to simulate a disaster scenario where the data of only one component get damaged. So, restoring only the damaged component is sufficient. + +Here, we are going to delete the sample post again from the database and then restore it using a RestoreSession. + +**Simulate Disaster Scenario :** + +Let's delete the sample post from the database: + +```bash +$ kubectl exec -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass -e "DELETE FROM wordpress.wp_posts WHERE post_name='stash-batch-backup-test';" +``` + +Verify that the sample post has been removed: + +```bash +$ kubectl exec -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass -e "SELECT post_name FROM wordpress.wp_posts;" +mysql: [Warning] Using a password on the command line interface can be insecure. +post_name +hello-world +sample-page +privacy-policy + +5-revision-v1 +``` + +We can see from the above output that `stash-batch-backup-test` entry no longer presents in the database. + +**Create RestoreSession:** + +Now, let's create a `RestoreSession` object targeting the `AppBinding` of our MySQL database. Here, is the YAML of the `RestoreSession` that we are going to create: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: wordpress-db-restore + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + target: + alias: db + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: wordpress-db + rules: + - snapshots: [latest] +``` + +Let's create the above `RestoreSession` object, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/batch-backup/wordpress-backup/examples/restoresession.yaml +restoresession.stash.appscode.com/wordpress-db-restore created +``` + +Now, wait for the `RestoreSession` phase to go into `Succeeded` state, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +wordpress-db-restore gcs-repo Running 10s +wordpress-db-restore gcs-repo Succeeded 89s +``` + +So, we can see that Stash has successfully restored the database. + +**Verify Restored Data :** + +Let's verify whether the sample post has been restored or not, + +```bash +$ kubectl exec -n demo wordpress-db-58657b89b9-kgt76 -- mysql --user=root --password=mysqlpass -e "SELECT post_name FROM wordpress.wp_posts;" +mysql: [Warning] Using a password on the command line interface can be insecure. +post_name +hello-world +sample-page +privacy-policy + +stash-batch-backup-test +5-revision-v1 +``` + +We can see from the above output that the `stash-batch-backup-test` post has been restored. Now, if you navigate to the WordPress site in a browser, you should see the post again. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupbatch wordpress-backup +kubectl delete -n demo restorebatch wordpress-restore +kubectl delete -n demo restoresession wordpress-db-restore + +kubectl delete -n demo deployment wordpress-db +kubectl delete -n demo deployment wordpress-app +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo pvc --all +kubectl delete -n demo service --all +``` diff --git a/content/docs/v2024.8.27/guides/cli/_index.md b/content/docs/v2024.8.27/guides/cli/_index.md new file mode 100644 index 0000000000..0ff7df1041 --- /dev/null +++ b/content/docs/v2024.8.27/guides/cli/_index.md @@ -0,0 +1,76 @@ +--- +title: kubectl plugin | Stash +menu: + docs_v2024.8.27: + identifier: cli + name: CLI + parent: guides + weight: 120 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/cli/kubectl-plugin/index.md b/content/docs/v2024.8.27/guides/cli/kubectl-plugin/index.md new file mode 100644 index 0000000000..e1816637ed --- /dev/null +++ b/content/docs/v2024.8.27/guides/cli/kubectl-plugin/index.md @@ -0,0 +1,616 @@ +--- +title: kubectl Plugin | Stash +menu: + docs_v2024.8.27: + identifier: stash-cli + name: Stash kubectl Plugin + parent: cli + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Stash kubectl Plugin + +Stash gives you kubectl plugin support named `kubectl stash` cli. `kubectl stash` cli can be used to manage Stash objects quickly and easily. It performs various operations like creating Stash objects, coping Stash objects, cloning PVC, unlock Repository, triggering an instant backup, etc. To install Stash kubectl plugin on your workstation, follow the steps [here](/docs/v2024.8.27/setup/README). + +## Available Command + +Available command for `kubectl stash` cli are: + +| Main Command | Uses | +|----------------------------------------------------|----------------------------------------------------------------------------| +| [create repository](#create-repository) | Create a new `Repository`. | +| [create backupconfig](#create-backupconfiguration) | Create a new `BackupConfiguration`. | +| [create restoresession](#create-restoresession) | Create a new `RestoreSession`. | +| [cp secret](#copy-secret) | Copy `Secret` from source namespace to destination namespace. | +| [cp repository](#copy-repository) | Copy `Repository` from source namespace to destination namespace. | +| [copy backupconfig](#copy-backupconfiguration) | Copy `BackupConfiguration` from source namespace to destination namespace. | +| [copy volumesnapshot](#copy-volumesnapshot) | Copy `VolumeSnapshot` from source namespace to destination namespace. | +| [clone pvc](#clone-pvc) | Clone a PVC from source namespace to destination namespace. | +| [download](#download-snapshots) | Download backup snapshots from backend into your local repository. | +| [trigger](#trigger-an-instant-backup) | Take an instant backup. | +| [pause backup](#pause-backup) | Pause Stash backup. | +| [resume backup](#resume-backup) | Resume Stash backup. | +| [debug backup](#debug-backup) | Debug Stash backup issues. | +| [debug restore](#debug-restore) | Debug Stash restore issues. | +| [debug operator](#debug-operator) | Debug Stash operator issues. | +| [key list](#key-list) | List the keys (passwords) of a restic repository. | +| [key add](#key-add) | Add a new key (password) to a restic repository. | +| [key update](#key-update) | Update current key (password) of a restic repository. | +| [key remove](#key-remove) | Remove a key (password) of a restic repository. | +| [gen rules](#generate-rules) | Generate restore rules from nearest snapshots at a specific time | + +## Create Command + +`kubectl stash create` command is used to create stash objects. It creates various objects like `Repository`, `BackupConfiguration` and `RestoreSession` etc. + +### Create Repository + +To create a `Repository`, you need to provide a `Repository` name and backend information and credential. You will provide the information and credential by using flags. The available flags are: + +| Flag | Description | +| ------------------- | ----------------------------------------------------------------------------- | +| `--namespace` | Indicates the namespace where the Repository will be created | +| `--secret` | Specify the name of the storage secret that will be used to create Repository | +| `--bucket` | Specify the name of the cloud bucket/container. | +| `--prefix` | Prefix denotes the directory inside the backend. | +| `--provider` | Specify backend provider (i.e. gcs, s3, azure etc) | +| `--endpoint` | Endpoint for s3/s3 compatible backend | +| `--max-connections` | Specify maximum concurrent connections for GCS, Azure and B2 backend. | + +**Format:** + +```bash +kubectl stash create [flags] +``` + +**Example:** + +```bash +$ kubectl stash create repository gcs-repo --namespace=demo --secret=gcs-secret --bucket=appscode-qa --prefix=/source/data --provider=gcs +``` + +### Create BackupConfiguration + +To create a `BackupConfiguration`, you need to provide `BackupConfiguration` name, `Repository` name, Target, and RetentionPolicy, etc. You will provide the `Repository` name, Target, RetentionPolicy by using flags. The available flags are: + +| Flag | Description | +| ----------------------- | ---------------------------------------------------------------------------------------------- | +| `--namespace` | Indicates the namespace where the `BackupConfiguration` will be created | +| `--target-apiversion` | Specify API-Version of the target resource. | +| `--target-kind` | Specify kind of the target resource. | +| `--target-name` | Specify name of the target resource. | +| `--repo-name` | Specify name of the `Repository` that will be created. | +| `--repo-namespace` | Specify namespace of the `Repository` that will be created. | +| `--schedule` | Specify schedule of the backup. | +| `--driver` | `Driver` indicates the mechanism used to backup (i.e. VolumeSnapshotter, Restic) | +| `--task` | Specify name of a `Task` | +| `--volumesnpashotclass` | Specify name of the `VolumeSnapshotClass`. | +| `--replica` | Replica specifies the number of replicas whose data should be backed up. | +| `--paths` | A list of path that will be backed up | +| `--volume-mounts` | Specify a list of volumes and their mountPaths | +| `--keep-last` | Never delete the n last (most recent) snapshots. | +| `--keep-hourly` | For the last n hours in which a snapshot was made, keep only the last snapshot for each hour. | +| `--keep-daily` | For the last n days which have one or more snapshots, only keep the last one for that day. | +| `--keep-weekly` | For the last n weeks which have one or more snapshots, only keep the last one for that week. | +| `--keep-monthly` | For the last n months which have one or more snapshots, only keep the last one for that month. | +| `--keep-yearly` | For the last n years which have one or more snapshots, only keep the last one for that year. | +| `--prune` | If set `true`, Stash will cleanup unreferenced data from the backend. | +| `--dry-run` | Stash will not remove anything but print which snapshots would be removed. | + +> Note: You must provide `::` in the `--volume-mounts` flag to specify the volumes and their mountPath and subPath. The `:` part is optional. + +**Format:** + +```bash +kubectl stash create [flags] +``` + +**Example:** + +```bash +$ kubectl stash create backupconfig ss-backup --namespace=demo --repo-name=gcs-repo --schedule="*/4 * * * *" --target-apiversion=apps/v1 --target-kind=StatefulSet --target-name=stash-demo --paths=/source/data --volume-mounts=source-data:/source/data --keep-last=5 --prune=true +``` + +### Create RestoreSession + +To create a `RestoreSession`, you need to provide a `Repository` name, Target or `VolumeClaimTemplate`, etc. You will provide the `Repository` name, Target or `VolumeClaimTemplate` by using flags. The available flags are: + +| Flag | Description | +| ---------------------- | ------------------------------------------------------------------------------ | +| `--namespace` | Indicates the namespace where the `RestoreSession` will be created | +| `--target-apiversion` | API-Version of the target resource. | +| `--target-kind` | Specify kind of the target resource. | +| `--target-name` | Specify name of the target resource. | +| `--repo-name` | specify name of the `Repository`. | +| `--repo-namespace` | specify namespace of the `Repository` | +| `--driver` | Driver indicates the mechanism used to backup (i.e. VolumeSnapshotter, Restic) | +| `--task` | Name of the Task | +| `--replica` | Replica specifies the number of replicas whose data should be backed up. | +| `--paths` | A list of path that will be backed up | +| `--volume-mounts` | A list of volumes and their mountPaths | +| `--snapshots` | Specify the name of the Snapshot(single) | +| `--host` | Specify the name of the Source host | +| `--claim.name` | Specify the name of the `VolumeClaimTemplate` | +| `--claim.access-modes` | Access mode of the VolumeClaimTemplates | +| `--claim.storageclass` | Specify the name of the Storage secret for VolumeClaimTemplate | +| `--claim.size` | Total requested size of the VolumeClaimTemplate | +| `--claim.datasource` | DataSource of the VolumeClaimTemplate | + +> Note: You must provide `::` in the `--volume-mounts` flag to specify the volumes and their mountPath and subPath. The `:` part is optional. + +**Format:** + +```bash +kubectl stash create restoresession [flags] +``` + +**Example:** + +```bash +$ kubectl stash create restoresession ss-restore --namespace=demo --repo-name=gcs-repo --target-apiversion=apps/v1 --target-kind=StatefulSet --target-name=stash-recovered --paths=/source/data --volume-mounts=source-data:/source/data +``` + +## Copy Command + +`kubectl stash cp` command is used to copy stash objects from one namespace to another namespace. It copies various objects like `Secret`, `Repository`, `BackupConfiguration` and `VolumeSnapshot` etc. + +### Copy Secret + +To copy a Secret, you need to provide Secret name and destination namespace. You will provide the destination namespace by using flag. The available flags are: + +| Flag | Description | +| ---------------- |----------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Secret`. | +| `--to-namespace` | Indicates the destination namespace where the `Secret` will be copied. | + +**Format:** + +```bash +kubectl stash cp secret [flags] +``` + +**Example:** + +```bash +$ kubectl stash cp secret my-secret --namespace=demo --to-namespace=demo1 +``` + +### Copy Repository + +To copy a Repository, you need to provide a Repository name and destination namespace. When we run the command the coping process consists of the following steps: + +- At first, the cli copies Secret from source namespace to destination namespace. +- Then it copies Repository from source namespace to destination namespace. + +You will provide the destination namespace by using flag. The available flags are: + +| Flag | Description | +| ---------------- |-----------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--to-namespace` | Indicates the destination namespace where the `Repository` will be copied. | + +**Format:** + +```bash +kubectl stash cp repository [flags] +``` + +**Example:** + +```bash +$ kubectl stash cp repository my-repo --namespce=demo --to-namespace=demo1 +``` + +### Copy BackupConfiguration + +To copy a BackupConfiguration, you need to provide BackupConfiguration name and destination namespace. When we run the command the coping process consists of the following steps: + +- At first, the cli copies Secret from source namespace to destination namespace. +- Then it copies Repository from source namespace to destination namespace. +- finally it copies BackupConfiguration from source namespace to destination namespace. + +You will provide the destination namespace by using flags. The available flags are: + +| Flag | Description | +| ---------------- |-------------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `BackupConfiguration`. | +| `--to-namespace` | Indicates the destination namespace where the `BackupConfiguration` will be copied. | + +**Format:** + +```bash +kubectl stash cp backupconfig [flags] +``` + +**Example:** + +```bash +$ kubectl stash cp backupconfig my-backupconfig --namespace=demo --to-namespace=demo1 +``` + +### Copy VolumeSnapshot + +To copy a VolumeSnapshot, you need to provide `VolumeSnapshot` name and destination namespace. You will provide the destination namespace by using flag. The available flags are: + +| Flag | Description | +| ---------------- |--------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `VolumeSnapshot`. | +| `--to-namespace` | Indicates the destination namespace where the `VolumeSnapshot` will be copied. | + +**Example:** + +```bash +$ kubectl stash cp volumesnapshot my-vol-snap --namespace=demo --to-namespace=demo1 +``` + +## Clone PVC + +`kubectl stash clone pvc` command is used to clone PVC from one namespace to another namespace. When we run the command the cloning process consists of the following steps: + +- At first, It creates a Repository in the source namespace. +- Using this repository, it creates a BackupConfiguration targeting the PVC to take backup. +- After the backup process succeeded, It copies Repository to the destination namespace +- finally, It restores the backed up data into VolumeClaimTemplate in the destination namespace. + +To clone a PVC, you need to provide backend credentials for creating Repository. +You will provide the backend credential by using flags. The available flags are: + +| Flag | Description | +| ------------------- |-------------------------------------------------------------------------------| +| `--namespace` | Indicates namespace of the respective pvc. | +| `--to-namespace` | Indicates the destination namespace where the PVC will be cloned. | +| `--secret` | Specify the name of the storage secret that will be used to create Repository | +| `--bucket` | Specify the name of the cloud bucket/container. | +| `--prefix` | Prefix denotes the directory inside the backend. | +| `--provider` | Specify backend provider (i.e. gcs, s3, azure etc) | +| `--endpoint` | Endpoint for s3/s3 compatible backend | +| `--max-connections` | Specify maximum concurrent connections for GCS, Azure and B2 backend. | + +**Format:** + +```bash +kubectl stash clone pvc [flags] +``` + +**Example:** + +```bash +$ kubectl stash clone pvc my-pvc -n demo --to-namespace=demo-1 --secret= --bucket= --prefix= --provider= +``` + +## Download Snapshots + +`kubectl stash download` command is used to download the snapshots from backend repository into your local machine. +To download the snapshots you have to provide `Repository` name, download directory and snapshot list. You will provide the download directory and snapshot list using flags. The available flags are: + +| Flag | Description | +|-----------------|-----------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--destination` | Indicates the local directory where the snapshots will be downloaded. | | +| `--snapshots` | Specifies the list of snapshots. (Provide a list of snapshot ID) | + +**Format:** + +```bash +kubectl stash download [flags] +``` + +**Example:** + +```bash +$ kubectl stash download gcs-repo --namespace=demo --destination=/home/downloads/ --snapshots="19eb4793,b7244d52" + +``` +Use `kubectl get snapshots` to get the available snapshots. + +## Trigger an Instant Backup + +`kubectl stash trigger` command is used to take an instant backup in stash. +To trigger an instant backup, you need to have a BackupConfiguration in your cluster. You need to provide the BackupConfiguration name. You can also provide the namespace by using the `--namespace` flag. This flag indicates the namespace where the trigger backup will be occurred. + +**Format:** + +```bash +$ kubectl stash trigger [flags] +``` + +**Example:** + +```bash +$ kubectl stash trigger my-config --namespace=demo +``` + +## Unlock Repository + +`kubectl stash unlock` are used to remove lock from the backend repository. +To unlock the Repository, you need to provide a Repository name. You can also provide the namespace by using the `--namespace` flag. This flag indicates the Repository namespace. + +**Format:** + +```bash +kubectl stash unlock [flags] +``` + +**Example:** + +```bash +$ kubectl stash unlock my-repo --namespace=demo +``` + +## Pause Backup +`kubectl stash pause` command is used to pause Stash backup temporarily. To pause a backup you have to provide the `BackupConfiguration` name or `BackupBatch` name by using flags. The available flags are: + +| Flag | Description | +|------------------|-----------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `BackupConfiguration` or `BackupBatch`. | +| `--backupconfig` | Name of the `BackupConfiguration`. | +| `--backupbatch` | Name of the `BackupBatch`. | + +**Format:** + +```bash +kubectl stash pause backup [flags] +``` + +**Example:** + +```bash +$ kubectl stash pause backup --namespace=demo --backupconfig=my-config +``` + +## Resume Backup + +`kubectl stash pause` comand is used to resume a backup. To resume a backup you have to provide the `BackupConfiguration` name or `BackupBatch` name by using flags. The available flags are: + +| Flag | Description | +|------------------|-----------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `BackupConfiguration` or `BackupBatch`. | +| `--backupconfig` | Name of the `BackupConfiguration`. | +| `--backupbatch` | Name of the `BackupBatch`. | + +**Format:** + +```bash +kubectl stash resume backup [flags] +``` + +**Example:** + +```bash +$ kubectl stash resume backup --namespace=demo --backupconfig==my-config +``` + +## Debug Command +`kubectl stash debug` command is used to debug stash resources. This command describes the necessary resources and shows logs from the related pods which makes the debugging process quicker and easier. + +### Debug Backup +This command is used to debug a backup. You have to provide the BackupConfiguration name or BackupBatch name by using flags. The available flags are: + +| Flag | Description | +|------------------|-----------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `BackupConfiguration` or `BackupBatch`. | +| `--backupconfig` | Name of the `BackupConfiguration`. | +| `--backupbatch` | Name of the `BackupBatch`. | + + +**Format:** + +```bash +kubectl stash debug backup [flags] +``` + +**Example:** + +```bash +$ kubectl stash debug backup --namespace=demo --backupconfig=my-config +``` + +### Debug Restore + +This command is used to debug a restore. You have to provide the `RestoreSession` name or `RestoreBatch` name by using flags. The available flags are: + +| Flag | Description | +|--------------------|-------------------------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `RestoreSession` or `RestoreBatch`. | +| `--restoresession` | Name of the `RestoreSession`. | +| `--restorebatch` | Name of the `RestoreBatch`. | + + +**Format:** + +```bash +kubectl stash debug restore [flags] +``` + +**Example:** + +```bash +$ kubectl stash debug restore --namespace=demo --restoresession=my-restore +``` + +### Debug Operator + +This command is used to show version related information and operator logs. + +**Example:** + +```bash +$ kubectl stash debug operator +``` + +## Key Command + +`kubectl stash key` command is used to manage keys (passwords) of a restic repository. + +### Key List + +This command is used to list restic keys (passwords) of a restic repository. + +**Format:** + +```bash +kubectl stash key list [flags] +``` + +**Example:** + +```bash +$ kubectl stash key list my-repo --namespace=demo +``` + +### Key Add + +This command is used to add a new key (password) to a restic repository. You have to provide the information of the new key by using flags. The available flags are: + +| Flag | Description | +|-----------------------|---------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--host` | Host of the new key. | +| `--user` | User of the new key. | +| `--new-password-file` | File from which to read the new password file. | + +**Format:** + +```bash +kubectl stash key add [flags] +``` + +**Example:** + +```bash +$ kubectl stash key list my-repo --namespace=demo --user root --host my-host --new-password-file password.txt +``` + +### Key Update + +This command is used to update the current key (password) of a restic repository. The available flags for this command are: + +| Flag | Description | +|-----------------------|---------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--new-password-file` | File from which to read the new password file. | + +**Format:** + +```bash +kubectl stash key update [flags] +``` + +**Example:** + +```bash +$ kubectl stash key list my-repo --namespace=demo --new-password-file password.txt +``` + +### Key Remove + +This command is used to remove a key (password) of a restic repository. The available flags for this command are: + +| Flag | Description | +|---------------|---------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--id` | ID of the restic key. | + +**Format:** + +```bash +kubectl stash key remove [flags] +``` + +**Example:** + +```bash +$ kubectl stash key remove my-repo --namespace=demo --id cdc89a7d +``` + +## Generate Rules + +`kubectl stash debug` command is used to create rules for a RestoreSession to recover the database and application backups. This command finds the nearest repository snapshots for a given timestamp and generates two rules: one for the snapshots just before the specified timestamp and another for those at or after the specified timestamp. The available flags for this command are: + +| Flag | Description | +|----------------------|-------------------------------------------------------------| +| `--namespace` | Indicates the namespace of the respective `Repository`. | +| `--timestamp` | Timestamp to find the closest snapshots. | +| `--group-interval` | Specifies the time gap between batches of backup snapshots. | +| `--request-timeout` | Request timeout duration for the kubectl command. | + +**Format:** + +```bash +kubectl stash gen rules [flags] +``` +**Example:** + +```bash +$ kubectl stash gen rules my-repo --namespace=demo --timestamp 2023-10-05T05:16:11Z +``` diff --git a/content/docs/v2024.8.27/guides/hooks/_index.md b/content/docs/v2024.8.27/guides/hooks/_index.md new file mode 100644 index 0000000000..c8276cd40c --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/_index.md @@ -0,0 +1,76 @@ +--- +title: Backup and Restore Hooks | Stash +menu: + docs_v2024.8.27: + identifier: hooks + name: Hooks + parent: guides + weight: 115 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_backup_hook_demo.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_backup_hook_demo.yaml new file mode 100644 index 0000000000..32cb2842a6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_backup_hook_demo.yaml @@ -0,0 +1,35 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: backup-hook-demo + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.14 + repository: + name: gcs-repo + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = ON;" + containerName: mysql # KubeDB uses "mysql" name for MySQL database container. If you haven't used KubeDB, change this according to your setup. + postBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = OFF;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_restore_hook_demo.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_restore_hook_demo.yaml new file mode 100644 index 0000000000..ff392303c2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/post_restore_hook_demo.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: post-restore-hook-demo + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + hooks: + postRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "RENAME TABLE companyRecord.employee TO companyRecord.salaryRecord;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_backup_hook_demo.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_backup_hook_demo.yaml new file mode 100644 index 0000000000..c444b5d338 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_backup_hook_demo.yaml @@ -0,0 +1,28 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: backup-hook-demo + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.14 + repository: + name: gcs-repo + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = ON;" + containerName: mysql # KubeDB uses "mysql" name for MySQL database container. If you haven't used KubeDB, change this according to your setup. + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_restore_hook_demo.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_restore_hook_demo.yaml new file mode 100644 index 0000000000..4b66781c8f --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/pre_restore_hook_demo.yaml @@ -0,0 +1,25 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: pre-restore-hook-demo + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + hooks: + preRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "DROP DATABASE companyRecord;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/repository.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/repository.yaml new file mode 100644 index 0000000000..00327bdc05 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/mysql/hook-example + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/sample-mysql.yaml b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/sample-mysql.yaml new file mode 100644 index 0000000000..c20ed4cf73 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/examples/sample-mysql.yaml @@ -0,0 +1,16 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: demo +spec: + version: 8.0.27 + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/index.md b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/index.md new file mode 100644 index 0000000000..2051fbd870 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/backup-and-restore-hooks/index.md @@ -0,0 +1,795 @@ +--- +title: Backup & Restore Hooks | Stash +menu: + docs_v2024.8.27: + identifier: backup-and-restore-hooks + name: Backup & Restore Hooks + parent: hooks + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup & Restore Hooks + +Stash hooks let you perform some actions before and after the backup or restore process. This is particularly helpful when you want to prepare your application before backup or restore. + +Here, we are going to demonstrate how you can perform different actions before and after backup and restore a MySQL database. Some of the examples might not reflect the real-world use cases but it serves the sole purpose of demonstrating what is possible. + +> Note that, this is an advanced concept. If you haven't tried the normal backup restore processes yet, we will recommend to try them first. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running production-grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MySQL databases, please check the following guide [here](/docs/v2024.8.27/addons/mysql/overview/). +- Also, if you haven't read about how hooks work in Stash, please check it from [here](/docs/v2024.8.27/guides/hooks/overview/). + +You should be familiar with the following `Stash` concepts: + +- [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Prepare Database + +At first, let's deploy a MySQL database. Here, we are going to deploy MySQL `8.0.14` using KubeDB. We are going to insert some sample data into the database so that we can verify that the backup and restore process is working properly. + +**Deploy Database:** + +Below is the `MySQL` CR(Custom Resource) that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: demo +spec: + version: 8.0.27 + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Let's create the above `MySQL` CR, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/sample-mysql.yaml +mysql.kubedb.com/sample-mysql created +``` + +KubeDB will deploy a MySQL database according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Wait for the database to go into `Running` state, + +```bash +$ kubectl get mysql -n demo -w +NAME VERSION STATUS AGE +sample-mysql 8.0.14 Creating 5s +sample-mysql 8.0.14 Running 2m7s +``` + +**Verify Database Secret:** + +Verify that KubeDB has created a Secret for the database. + +```bash +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=sample-mysql +NAME TYPE DATA AGE +sample-mysql-auth Opaque 2 5m7s +``` + +**Verify AppBinding:** + +KubeDB creates an `AppBinding` CR that holds the necessary information to connect with the database. Verify that the `AppBinding` has been created for the above database: + +```bash +$ kubectl get appbindings -n demo -l=app.kubernetes.io/instance=sample-mysql +NAME TYPE VERSION AGE +sample-mysql kubedb.com/mysql 8.0.14 66s +``` + +If you check the YAML of the `AppBinding`, you will see the connection information and respective Secret reference to access the database is presents in `spec` section. + +```bash +$ kubectl get appbindings sample-mysql -n demo -o yaml +``` + +```yaml +apiVersion: appcatalog.appscode.com/v1alpha1 +kind: AppBinding +metadata: + creationTimestamp: "2020-01-16T10:28:00Z" + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: sample-mysql + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mysql + app.kubernetes.io/version: 8.0.14 + kubedb.com/kind: MySQL + app.kubernetes.io/instance: sample-mysql + name: sample-mysql + namespace: demo +spec: + clientConfig: + service: + name: sample-mysql + path: / + port: 3306 + scheme: mysql + url: tcp(sample-mysql:3306)/ + secret: + name: sample-mysql-auth + type: kubedb.com/mysql + version: 8.0.14 +``` + +**Insert Sample Data:** + +Now, let's insert some sample data into the above database. Here, we are going to `exec` into the database pod and create a database named `companyRecord`. Then, we are going to create a table named `employee` which will store employee's id, name and salary information. Then, we are going to insert a sample row in the table. + +At first, let's export the database credentials as environment variables in our current shell so that we can use those variables to access the database instead of typing username and password every time. + +```bash +# export username from the database secret +$ export MYSQL_USER=$(kubectl get secret -n demo sample-mysql-auth -o jsonpath='{.data.username}'| base64 -d) + +# verify that the username has been exported properly +$ echo $MYSQL_USER +root + +# export the password from the database secret +$ export MYSQL_PASSWORD=$(kubectl get secret -n demo sample-mysql-auth -o jsonpath='{.data.password}'| base64 -d) + +# verify that the password has been exported properly +$ echo $MYSQL_PASSWORD +CWg2hru8b0Yu7dzS +``` + +Now, let's identify the database pod, + +```bash +$ kubectl get pods -n demo --selector="app.kubernetes.io/instance=sample-mysql" +NAME READY STATUS RESTARTS AGE +sample-mysql-0 1/1 Running 0 6m50s +``` + +Let's `exec` into the database pod and insert sample data, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD + +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 131 +Server version: 8.0.14 MySQL Community Server - GPL + +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# create database named "companyRecord" +mysql> CREATE DATABASE companyRecord; +Query OK, 1 row affected (0.01 sec) + +# verify that the database has been created +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| companyRecord | +| information_schema | +| mysql | +| performance_schema | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +# create a table called "employee" in "companyRecord" database +mysql> CREATE TABLE companyRecord.employee (id INT, name VARCHAR(50), salary INT, PRIMARY KEY(id)); +Query OK, 0 rows affected (0.05 sec) + +# insert a demo data into the table +mysql> INSERT INTO companyRecord.employee (id, name, salary) VALUES (1, "John Doe", 5000); +Query OK, 1 row affected (0.01 sec) + +# verify that the data has been inserted +mysql> SELECT * FROM companyRecord.employee; ++----+----------+--------+ +| id | name | salary | ++----+----------+--------+ +| 1 | John Doe | 5000 | ++----+----------+--------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CR. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of Repository CR we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/mysql/hook-example + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our database into our desired backend. + +## Backup + +In this section, we are going to demonstrate `preBackup` hook and `postBackup` hook. We are going to make MySQL database read-only in `preBackup` hook so that no write operation happens in the database during backup. Then, we are going to make the database writable in `postBackup` hook so that the application can write again into the database. + +### PreBackup Hook + +At first, we are going to set `super_read_only` flag `ON` in `preBackup` hook which will make the database read-only. However, we won't set this flag `OFF` in `postBackup` so that we can verify that the hook has been executed. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` CR with `preBackup` hook configured to make the database read-only before backup, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: backup-hook-demo + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.14 + repository: + name: gcs-repo + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = ON;" + containerName: mysql # KubeDB uses "mysql" name for MySQL database container. If you haven't used KubeDB, change this according to your setup. + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Let's create the above `BackupConfiguration`, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/pre_backup_hook_demo.yaml +backupconfiguration.stash.appscode.com/backup-hook-demo created +``` + +**Verify CronJob:** + +If everything goes well, Stash will create a CronJob with the schedule specified in `spec.schedule` field of the `BackupConfiguration` CR. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-backup-hook-demo */5 * * * * False 0 74s +``` + +**Wait for BackupSession:** + +The `stash-backup-backup-hook-demo` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` CR. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` CR, + +```bash +$ kubectl get backupsession -n demo -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +backup-hook-demo-1579179002 BackupConfiguration backup-hook-demo Running 10s +backup-hook-demo-1579179002 BackupConfiguration backup-hook-demo Running 52s +backup-hook-demo-1579179002 BackupConfiguration backup-hook-demo Succeeded 86s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +**Verify Backup:** + +Once a backup is completed, Stash will update the respective `Repository` CR to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1 75s 55m +``` + +Here, `SNAPSHOT-COUNT` 1 indicates that one snapshot has been taken for the targeted database. + +**Verify PreBackup Hook Executed:** + +If the `preBackup` hook executes successfully, the database will be marked as read-only. In this situation, if we try to make a write operation into the database, it should reject the operation. However, the database should serve the read operations without any problem. + +Let's verify that the database is read-only by trying to execute a write operation, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "CREATE DATABASE read-OnlyTest;" +mysql: [Warning] Using a password on the command line interface can be insecure. +ERROR 1290 (HY000) at line 1: The MySQL server is running with the --super-read-only option so it cannot execute this statement +command terminated with exit code 1 +``` + +Here, the error message clearly states the database is now read-only. Let's try to execute a read operation. + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SELECT * FROM companyRecord.employee;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++----+----------+--------+ +| id | name | salary | ++----+----------+--------+ +| 1 | John Doe | 5000 | ++----+----------+--------+ +``` + +So, we can see that the database can serve read-only queries without any problem. + +### PostBackup Hook + +Now, let's update the `BackupConfiguration` CR and add a `postBackup` hook that set `super_read_only` flag to `OFF`. So, the database should be writable again from the next backup. + +**Update BackupConfiguration:** + +Below is the YAML for the updated `BackupConfiguration` CR with `postBackup` hook. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: backup-hook-demo + namespace: demo +spec: + schedule: "*/5 * * * *" + task: + name: mysql-backup-8.0.14 + repository: + name: gcs-repo + hooks: + preBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = ON;" + containerName: mysql # KubeDB uses "mysql" name for MySQL database container. If you haven't used KubeDB, change this according to your setup. + postBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = OFF;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Let's apply the update, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/post_backup_hook_demo.yaml +backupconfiguration.stash.appscode.com/backup-hook-demo configured +``` + +**Wait for Next BackupSession:** + +Now, wait for the next backup slot, + +```bash +$ kubectl get backupsession -n demo -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +backup-hook-demo-1579179002 BackupConfiguration backup-hook-demo Succeeded 7m8s +backup-hook-demo-1579179905 BackupConfiguration backup-hook-demo Running 12s +backup-hook-demo-1579179905 BackupConfiguration backup-hook-demo Running 8s +backup-hook-demo-1579179905 BackupConfiguration backup-hook-demo Succeeded 63s +``` + +**Verify PostBackup Hook Executed:** + +If the `postBackup` hook has been executed successfully, the database should be writable again. Let's try to execute a write operation to verify that the database writable, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "CREATE DATABASE postBackupHookTest;" +mysql: [Warning] Using a password on the command line interface can be insecure. +``` + +Verify the test database has been created successfully, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=CWg2hru8b0Yu7dzS -e "SHOW DATABASES;" + +mysql: [Warning] Using a password on the command line interface can be insecure. ++--------------------+ +| Database | ++--------------------+ +| companyRecord | +| information_schema | +| mysql | +| performance_schema | +| postBackupHookTest | +| sys | ++--------------------+ +``` + +So, we can see the database is writable again after the backup. + +## Restore + +In this section, we are going to demonstrate `preRestore` and `postRestore` hooks. Here, we are going to delete corrupted data in `preRestore` hook and apply some migration on the database in `postRestore` hook. + +**Pause Backup:** + +At first, let stop the backup so that no new backup happens during the restore process. Let's set `spec.paused` section of `BackupConfiguration` to `true` which will stop taking further scheduled backup. + +```bash +$ kubectl patch backupconfiguration -n demo backup-hook-demo --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/backup-hook-demo patched +``` + +It should suspend the respective CronJob which is responsible for triggering backup at a scheduled slot. Let's verify that the CronJob has been suspended. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-backup-hook-demo */5 * * * * True 0 5m13s 29m +``` + +**Simulate Disaster Scenario:** + +Now, let's simulate a disaster scenario. Here, we are going to delete the `companyRecord` database before restoring so that we can verify that the data has been restored from backup. + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "DROP DATABASE companyRecord;" +mysql: [Warning] Using a password on the command line interface can be insecure. +``` + +Verify that the database has been deleted, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SHOW DATABASES;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| postBackupHookTest | +| sys | ++--------------------+ +``` + +So, we can see from the above output that the database `companyRecord` has been deleted from the MySQL server. + +### PreRestore Hook + +Here, we are going to configure `preRestore` hook to delete the corrupted database. Stash will remove the corrupted database first, then it will restore the database from the backup. + +**Create RestoreSession:** + +Below is the YAML for `RestoreSession` with `preRestore` hook configured to drop the `companyRecord` database before restoring from backup. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: pre-restore-hook-demo + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + hooks: + preRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "DROP DATABASE companyRecord;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + rules: + - snapshots: [latest] +``` + +Let's create the above `RestoreSession`, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/pre_restore_hook_demo.yaml +restoresession.stash.appscode.com/pre-restore-hook-demo created +``` + +**Wait for Restore to Complete:** + +Now, wait for the restore process to complete, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +pre-restore-hook-demo gcs-repo Running 10s +pre-restore-hook-demo gcs-repo Running 42s +pre-restore-hook-demo gcs-repo Succeeded 42s +``` + +Here, `RestoreSession` phase `Succeeded` means the restore process has been completed successfully. + +**Verify Restored Data:** + +Verify that the data has been restored successfully, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SELECT * FROM companyRecord.employee;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++----+----------+--------+ +| id | name | salary | ++----+----------+--------+ +| 1 | John Doe | 5000 | ++----+----------+--------+ +``` + +So, we can see that the data we had deleted from the `employee` table has been restored. + +### PostRestore Hook + +Now, let's consider that you want to perform some migration on the database during the restore process. You want to rename the `employee` table into `salaryRecord` as it holds the employee's salary information. You can configure a `postRestore` hook to perform the task automatically. + +**Drop Old Database:** + +Let's delete the old database `companyRecord` before restoring so that we can verify that the data has been restored from backup. + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "DROP DATABASE companyRecord;" +mysql: [Warning] Using a password on the command line interface can be insecure. +``` + +Verify that the database has been deleted, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SHOW DATABASES;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| postBackupHookTest | +| sys | ++--------------------+ +``` + +**Create RestoreSession:** + +Below is the YAML of the `RestoreSession` with `postRestore` hook configured to rename the `employee` table into `salaryRecord`. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: post-restore-hook-demo + namespace: demo +spec: + task: + name: mysql-restore-8.0.14 + repository: + name: gcs-repo + hooks: + postRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "RENAME TABLE companyRecord.employee TO companyRecord.salaryRecord;" + containerName: mysql + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + rules: + - snapshots: [latest] +``` + +Let's create the above `RestoreSession`, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/backup-and-restore-hooks/examples/post_restore_hook_demo.yaml +restoresession.stash.appscode.com/post-restore-hook-demo created +``` + +**Wait for Restore process to Complete:** + +Now, wait for the restore process to complete, + +```bash +$ kubectl get restoresession -n demo post-restore-hook-demo -w +NAME REPOSITORY PHASE AGE +post-restore-hook-demo gcs-repo Running 12s +post-restore-hook-demo gcs-repo Running 29s +post-restore-hook-demo gcs-repo Succeeded 29s +``` + +**Verify Restored Data:** + +Verify that the `companyRecord` database has been restored and the `employee` table has been renamed to `salaryRecord`. + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SHOW TABLES IN companyRecord;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++-------------------------+ +| Tables_in_companyRecord | ++-------------------------+ +| salaryRecord | ++-------------------------+ +``` + +Let's check `salaryRecord` table contains the original data of the `employee` table, + +```bash +$ kubectl exec -it -n demo sample-mysql-0 -- mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SELECT * FROM companyRecord.salaryRecord;" +mysql: [Warning] Using a password on the command line interface can be insecure. ++----+----------+--------+ +| id | name | salary | ++----+----------+--------+ +| 1 | John Doe | 5000 | ++----+----------+--------+ +``` + +So, we can see that the `postRestore` hook successfully performed migration on the restored database. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo restoresession pre-restore-hook-demo post-restore-hook-demo +kubectl delete -n demo backupconfiguration backup-hook-demo +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo secret gcs-secret +kubectl delete -n demo mysql sample-mysql +``` diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/repository.yaml b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/repository.yaml new file mode 100644 index 0000000000..7354160da4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/batch-backup/hook-example + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-backup.yaml b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-backup.yaml new file mode 100644 index 0000000000..a8995a297c --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-backup.yaml @@ -0,0 +1,77 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: wordpress-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/3 * * * *" + members: + - target: + alias: db + ref: + apiVersion: apps/v1 + kind: AppBinding + name: wordpress-mysql + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-deployment + volumeMounts: + - name: web + mountPath: /var/www/html + paths: + - /var/www/html + hooks: + preBackup: + httpPost: + host: hooks.slack.com + path: /services/TXXXXX/BXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: '{ + "blocks": [ + { + "type": "divider" + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Backup started for *wordpress-backup*.\n *Targets:*\n- deployment/wordpress-deployment\n- mysql/wordpress-mysql" + } + } + ] + }' + postBackup: + httpPost: + host: hooks.slack.com + path: /services/TXXXXX/BXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: '{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Backup has been completed for *wordpress-backup*." + } + } + ] + }' + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-deployment.yaml b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-deployment.yaml new file mode 100644 index 0000000000..8fb48e262f --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-deployment.yaml @@ -0,0 +1,60 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wordpress-pvc + namespace: demo + labels: + app: wordpress +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-deployment + namespace: demo + labels: + app: wordpress +spec: + selector: + matchLabels: + app: wordpress + tier: frontend + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress + tier: frontend + spec: + containers: + - image: wordpress:5.3.2-apache + name: wordpress + env: + - name: WORDPRESS_DB_HOST + value: wordpress-mysql + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: wordpress-mysql-auth + key: password + - name: WORDPRESS_DB_USER + valueFrom: + secretKeyRef: + name: wordpress-mysql-auth + key: username + ports: + - containerPort: 80 + name: wordpress + volumeMounts: + - name: web + mountPath: /var/www/html + volumes: + - name: web + persistentVolumeClaim: + claimName: wordpress-pvc diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-mysql.yaml b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-mysql.yaml new file mode 100644 index 0000000000..99f8057a1d --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/batch-backup/examples/wordpress-mysql.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: wordpress-mysql + namespace: demo +spec: + version: 8.0.27 + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + podTemplate: + spec: + args: + - --default-authentication-plugin=mysql_native_password # without this flag the wordpress will not connect with newer version of MySQL + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/images/notification.png b/content/docs/v2024.8.27/guides/hooks/batch-backup/images/notification.png new file mode 100644 index 0000000000..64a3ab4d4d Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/batch-backup/images/notification.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/batch-backup/index.md b/content/docs/v2024.8.27/guides/hooks/batch-backup/index.md new file mode 100644 index 0000000000..0cf8919d7d --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/batch-backup/index.md @@ -0,0 +1,475 @@ +--- +title: Hooks in Batch Backup | Stash +menu: + docs_v2024.8.27: + identifier: backup-batch-hooks + name: BackupBatch Hooks + parent: hooks + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Hooks in Batch Backup + +Stash 0.9.0+ supports taking backup of multiple co-related stateful workloads using a single configuration named `BackupBatch`. Combining with backup hooks, this can be very powerful. For example, you can prepare your application stack before backup to ensure backup integrity or you can send a notification to a webhook (i.e. in a Slack channel via slack incoming webhook) before or after the backup of all the resources of your application stack. + +Here, we are going to demonstrate how to send a notification to a Slack channel before and after the backup of a WordPress application. WordPress application consists of two different workloads. One is for WordPress itself and another for a MySQL database. + +> Note that, this is an advanced concept. If you haven't tried the normal backup restore processes yet, we will recommend to try them first. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running production-grade databases on private and public clouds. +- If you are not familiar with how Stash backup and restore MySQL databases, please check the following guide [here](/docs/v2024.8.27/addons/mysql/overview/). +- Also, if you haven't read about how hooks work in Stash, please check it from [here](/docs/v2024.8.27/guides/hooks/overview/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) +- [AppBinding](/docs/v2024.8.27/concepts/crds/appbinding/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Prepare Application + +At first, let's deploy a WordPress application. Here, we are going to deploy WordPress `5.3.2` with MySQL `8.0.14`. We are going to deploy the database first. Then, we are going to deploy the Deployment for WordPress once the database is ready. + +### Deploy Database + +Here, we are using KubeDB to deploy MySQL `8.0.14`. You can deploy the database without KubeDB but you have to create some resources manually to ensure it works with Stash. + +**Create MySQL:** + +Below is the YAML of the `MySQL` CR that we are going to create. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: wordpress-mysql + namespace: demo +spec: + version: 8.0.27 + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + podTemplate: + spec: + args: + - --default-authentication-plugin=mysql_native_password # without this flag wordpress will not connect with newer version of MySQL + terminationPolicy: WipeOut +``` + +>Notice the `spec.podTemplate` part. We are providing `--default-authentication-plugin=mysql_native_password` flag to `mysqd`. Otherwise, WordPress won't be able to connect with this database. + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/batch-backup/examples/wordpress-mysql.yaml +mysql.kubedb.com/wordpress-mysql created +``` + +KubeDB will deploy a MySQL database according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Wait for the database to go into `Running` state, + +```bash +$ kubectl get mysql -n demo -w +NAME VERSION STATUS AGE +wordpress-mysql 8.0.14 Creating 17s +wordpress-mysql 8.0.14 Running 3m10s +``` + +**Verify Database Secret:** + +Verify that KubeDB has created a Secret for the database. + +```bash +$ kubectl get secret -n demo -l=app.kubernetes.io/instance=wordpress-mysql +NAME TYPE DATA AGE +wordpress-mysql-auth Opaque 2 4m1s +``` + +**Verify AppBinding:** + +KubeDB creates an `AppBinding` CR that holds the necessary information to connect with the database. Verify that the `AppBinding` has been created for the above database: + +```bash +$ kubectl get appbindings -n demo -l=app.kubernetes.io/instance=wordpress-mysql +NAME TYPE VERSION AGE +wordpress-mysql kubedb.com/mysql 8.0.14 2m10s +``` + +### Deploy Wordpress + +Now, let's deploy WordPress itself. Below is the YAML of the respective resources that we are going to create for WordPress. + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wordpress-pvc + namespace: demo + labels: + app: wordpress +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wordpress-deployment + namespace: demo + labels: + app: wordpress +spec: + selector: + matchLabels: + app: wordpress + tier: frontend + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress + tier: frontend + spec: + containers: + - image: wordpress:5.3.2-apache + name: wordpress + env: + - name: WORDPRESS_DB_HOST + value: wordpress-mysql + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: wordpress-mysql-auth + key: password + - name: WORDPRESS_DB_USER + valueFrom: + secretKeyRef: + name: wordpress-mysql-auth + key: username + ports: + - containerPort: 80 + name: wordpress + volumeMounts: + - name: web + mountPath: /var/www/html + volumes: + - name: web + persistentVolumeClaim: + claimName: wordpress-pvc +``` + +Let's create the above resources, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/batch-backup/examples/wordpress-deployment.yaml + +persistentvolumeclaim/wordpress-pvc created +deployment.apps/wordpress-deployment created +``` + +Verify that WordPress pod ready + +```bash +$ kubectl get pod -n demo -l=app=wordpress,tier=frontend +NAME READY STATUS RESTARTS AGE +wordpress-deployment-586f94487c-nm8p5 1/1 Running 0 2m26s +``` + +## Prepare for Backup + +Now, let's prepare for the backup. Here, we are going to prepare the backend where we will store our backed up data and we are going to setup a [Slack Incoming Webhook](https://api.slack.com/messaging/webhooks) where we will send the notifications for backup. Configure a Slack incoming webhook following the guides from [here](/docs/v2024.8.27/guides/hooks/slack-notification/). + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CR. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` CR we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /demo/batch-backup/hook-example + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/batch-backup/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +## Backup + +Let's schedule a backup for our WordPress application stack. Here, we are going to configure a `preBackup` hook of a `BatchBackup` CR to send a notification when the backup starts and a `postBackup` hook to send another notification when the backup ends. + +**Create BackupBatch:** + +Below is the YAML of the `BackupBatch` CR with `preBackup` and `postBackup` hooks configured to send a notification into a slack channel before and after a backup respectively. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBatch +metadata: + name: wordpress-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/3 * * * *" + members: + - target: + alias: db + ref: + apiVersion: apps/v1 + kind: AppBinding + name: wordpress-mysql + task: + name: mysql-backup-8.0.14 + - target: + alias: app + ref: + apiVersion: apps/v1 + kind: Deployment + name: wordpress-deployment + volumeMounts: + - name: web + mountPath: /var/www/html + paths: + - /var/www/html + hooks: + preBackup: + httpPost: + host: hooks.slack.com + path: /services/TXXXXX/BXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: '{ + "blocks": [ + { + "type": "divider" + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Backup started for *wordpress-backup*.\n *Targets:*\n- deployment/wordpress-deployment\n- mysql/wordpress-mysql" + } + } + ] + }' + postBackup: + httpPost: + host: hooks.slack.com + path: /services/TXXXXX/BXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: '{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Backup has been completed for *wordpress-backup*." + } + } + ] + }' + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we have used `hooks.slack.com` part of the webhook URL in `host` field and the rest of the path in `path` field. + +You can customize the `body` section of `httpPost` hook to change the visual representation of your notification. You can use slack's official [Block Kit Builder](https://api.slack.com/tools/block-kit-builder) to build a beautiful notification layout. + +Let's create the above `BackupBatch` object, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/batch-backup/examples/wordpress-backup.yaml +backupbatch.stash.appscode.com/wordpress-backup created +``` + +### Verify CronJob + +If everything goes well, Stash will create a CronJob with the schedule specified in `spec.schedule` field of the `BackupBatch` CR. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-wordperss-backup */3 * * * * False 0 27s +``` + +### Wait for BackupSession + +The `stash-backup-wordpress-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` CR. + +Wait for a schedule to appear. Run the following command to watch `BackupSession` CR, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +wordpress-backup-1579526461 BackupBatch wordpress-backup Running 0s +wordpress-backup-1579526461 BackupBatch wordpress-backup Running 24s +wordpress-backup-1579526461 BackupBatch wordpress-backup Running 37s +wordpress-backup-1579526461 BackupBatch wordpress-backup Succeeded 38s +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +### Verify Backup + +Once a backup is completed, Stash will update the respective `Repository` CR to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 2 72s 18m +``` + +Here, `SNAPSHOT-COUNT` 2 indicates that one snapshot for each target has been taken successfully. + +### Verify Backup Hooks Executed + +Now, go to your slack channel. You should see that Stash has sent notification before and after the backup of WordPress application. + +
+  Backup Notification +
+ +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl -n demo delete backupbatch wordpress-backup +kubectl -n demo delete repository gcs-repo +kubectl -n demo delete secret gcs-secret + +kubectl -n demo delete deployment wordpress-deployment +kubectl -n demo delete mysql wordpress-mysql +``` diff --git a/content/docs/v2024.8.27/guides/hooks/configuring-hooks/index.md b/content/docs/v2024.8.27/guides/hooks/configuring-hooks/index.md new file mode 100644 index 0000000000..1a93ae973f --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/configuring-hooks/index.md @@ -0,0 +1,281 @@ +--- +title: Hooks Examples | Stash +menu: + docs_v2024.8.27: + identifier: configuring-hooks + name: Configuring Hooks + parent: hooks + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Configuring Different Types of Hooks + +In this guide, we are going to discuss how to configure different types of hooks. Here, we will give some examples of different configurations. + +## HTTPGet + +`httpGet` hook allows sending an HTTP GET request to an HTTP server before and after the backup/restore process. The following configurable fields are available for `httpGet` hook. + +| Field | Field Type | Data Type | Usage | +| ------------- | ---------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host` | `Optional` | `String` | Specify the name of the host where the GET request will be sent. If you don't specify this field, Stash will use the hook executor Pod IP as host. | +| `port` | `Required` | `Integer` or `String` | Specify the port where the HTTP server is listening. You can specify a numeric port or the name of the port in case of the HTTP server is running in the same pod where the hook will be executed. If you specify the port name, you must specify the `containerName` field of the hook. | +| `path` | `Required` | `String` | Specify the path to access on the HTTP server. | +| `scheme` | `Required` | `String` | Specify the scheme to use to connect with the host. | +| `httpHeaders` | `Optional` | Array of Objects | Specify a list of custom headers to set in the request. | + +**Examples:** + +- Hook with `host` and `port` are specified: + +```yaml +preBackup: + httpGet: + host: my-host.demo.svc + port: 8080 + path: "/" + scheme: HTTP +``` + +- Hook to extract `host` and `port` from the hook executor pod: + +```yaml +preBackup: + httpGet: + port: my-port + path: "/" + scheme: HTTP + containerName: my-container +``` + +- Hook for sending custom header in the HTTP request: + +```yaml +preBackup: + httpGet: + host: my-host.demo.svc + port: 8080 + path: "/" + scheme: HTTP + httpHeaders: + - name: "User-Agent" + value: "stash/0.9.x" +``` + +## HTTPPost + +`httpPost` hook allows sending an HTTP POST request to an HTTP server before and after the backup/restore process. The following configurable fields are available for `httpPost` hook. + +| Field | Field Type | Data Type | Usage | +| ------------- | ---------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host` | `Optional` | `String` | Specify the name of the host where the POST request will be sent. If you don't specify this field, Stash will use the hook executor Pod IP as host. | +| `port` | `Required` | `Integer` or `String` | Specify the port where the HTTP server is listening. You can specify a numeric port or the name of the port if your HTTP server is running in the same pod where the hook will be executed. If you specify the port name, you must specify the `containerName` field of the hook. | +| `path` | `Required` | `String` | Specify the path to access on the HTTP server. | +| `scheme` | `Required` | `String` | Specify the scheme to use to connect with the host. | +| `httpHeaders` | `Optional` | Array of Objects | Specify a list of custom headers to set in the request. | +| `body` | `Optional` | `String` | Specify the data to send in the request body. | +| `form` | `Optional` | Array of Objects | Specify the data to send as URL encoded form with the request. | + +**Examples:** + +- Send JSON data in the request body: + +```yaml +preBackup: + httpPost: + host: my-service.mynamespace.svc + path: /demo + port: 8080 + scheme: HTTP + httpHeaders: + - name: Content-Type + value: application/json + body: '{ + "name": "john doe", + "age": "28" + }' +``` + +- Send URL encoded form in the request: + +```yaml +preBackup: + httpPost: + host: my-service.mynamespace.svc + path: /demo + port: 8080 + scheme: HTTP + form: + - key: "name" + values: ["john doe"] + - key: "age" + values: ["28"] +``` + +## TCPSocket + +`tcpSocket` hook allows running a check against a TCP port to verify whether it is open or not. The following configurable fields are available for `tcpSocket` hook. + +| Field | Field Type | Data Type | Usage | +| ------ | ---------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host` | `Optional` | `String` | Specify the name of the host where the server is running. If you don't specify this field, Stash will use the hook executor Pod IP as host. | +| `port` | `Required` | `Integer` or `String` | Specify the port to check. You can specify a numeric port or the name of the port when your server is running in the same pod where the hook will be executed. If you specify the port name, you must specify the `containerName` field of the hook. | + +**Examples:** + +- Hook with `host` and `port` field specified. + +```yaml +preBackup: + tcpSocket: + host: my-host.demo.svc + port: 8080 +``` + +- Hook to extract `host` and `port` from the hook executor pod. + +```yaml +preBackup: + tcpSocket: + port: my-port + containerName: my-container +``` + +## Exec + +`exec` hook allows running commands inside a container before or after the backup/restore process. The following configurable fields are available for `exec` hook. + +| Field | Field Type | Data Type | Usage | +| --------- | ---------- | ---------------- | -------------------------------------- | +| `command` | `Required` | Array of Strings | Specify a list of commands to execute. | + +> If you don't specify `containerName` for `exec` hook, the command will be executed into the 0th container of the respective pod. + +**Examples:** + +- Hook to remove old corrupted data before restore: + +```yaml +preRestore: + exec: + command: ["/bin/sh","-c","rm -rf /corrupted/data/directory"] + containerName: my-container +``` + +- Hook to make a MySQL database read-only before backup: + +```yaml +preBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = ON;" + containerName: mysql +``` + +- Hook to make a MySQL database writable after backup: + +```yaml +postBackup: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL super_read_only = OFF;" + containerName: mysql +``` + +- Hook to remove corrupted MySQL database before restoring: + +```yaml +preRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "DROP DATABASE companyRecord;" + containerName: mysql +``` + +- Hook to apply some migration after restoring a MySQL database: + +```yaml +postRestore: + exec: + command: + - /bin/sh + - -c + - mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "RENAME TABLE companyRecord.employee TO companyRecord.salaryRecord;" + containerName: mysql +``` + +If the above hooks do not cover your use cases or you have any questions regarding the hooks, please feel free to open an issue [here](https://github.com/stashed/stash/issues). diff --git a/content/docs/v2024.8.27/guides/hooks/overview/images/batch-backup.svg b/content/docs/v2024.8.27/guides/hooks/overview/images/batch-backup.svg new file mode 100644 index 0000000000..c9c8b9d23c --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/overview/images/batch-backup.svg @@ -0,0 +1,721 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/hooks/overview/images/job-model.svg b/content/docs/v2024.8.27/guides/hooks/overview/images/job-model.svg new file mode 100644 index 0000000000..f31032cd4d --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/overview/images/job-model.svg @@ -0,0 +1,1058 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/hooks/overview/images/sidecar-model.svg b/content/docs/v2024.8.27/guides/hooks/overview/images/sidecar-model.svg new file mode 100644 index 0000000000..8f1a9fdbe5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/overview/images/sidecar-model.svg @@ -0,0 +1,290 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/hooks/overview/index.md b/content/docs/v2024.8.27/guides/hooks/overview/index.md new file mode 100644 index 0000000000..7abfaab29b --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/overview/index.md @@ -0,0 +1,232 @@ +--- +title: Hooks Overview | Stash +menu: + docs_v2024.8.27: + identifier: hooks-overview + name: Overview + parent: hooks + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Backup and Restore Hooks + +Stash `v0.9.0+` supports executing custom commands before and after backup or restore process. This is called `hook` in Stash. This guide will give you an overview of what kind of hooks you can execute, how the hooks get executed, and how the hooks behave in different scenarios. + +## Types of Hooks + +We can categorize Stash backup and restore hooks based on the action they perform and based on their execution order. + +### Based on Action + +Based on the action of a hook, we can categorize them into four different categories. These are the followings: + +- **HTTPGet:** Executes an HTTP GET request before/after the backup/restore process. The hook is considered successful if the return code is between `200` and `400`. + +- **HTTPPost:** Executes an HTTP POST request before/after the backup/restore process. Like `HTTPGet`, the hook is considered successful if the return code is between `200` and `400`. + +- **TCPSocket:** Performs a TCP check against the provided URL on a specific port before/after the backup/restore process. The hook is considered successful if the targeted port is open. + +- **Exec:** Executes commands inside a targeted container before/after the backup/restore process. The hook is considered successful if the command executes with exit code 0. + +### Execution Phases + +Based on the execution order, we can categorize the hooks into two different phases. These are the followings: + +- **Pre-Task Hook:** Pre task hooks are executed before the backup or restore process. `preBackup` and `preRestore` are the pre-task hooks. + +- **Post-Task Hook:** Post task hooks are executed after the backup or restore process. `postBackup` and `postRestore` are the post-task hooks. + +However, there is one more type of hooks for [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) object. We call them **Global Hooks**. They get executed before any other individual target's hooks get executed (for the pre-task hooks) or after all the individual target's hooks has executed (for the post-task hooks). + +## Who Executes the Hooks + +You might be familiar that Stash uses two different models to take backup of the target based on their type. For Kubernetes workloads (i.e. Deployment, DaemonSet, StatefulSet etc.), Stash injects a sidecar into the workload that takes backup. However, for databases and standalone PVC backup, Stash creates a job for the task. The hooks are executed differently for these two different models. + +Furthermore, we have introduced [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) which allows to specify multiple target simultaneously. The individual targets may follow the sidecar model or the job model. The `BackupBatch` object allows specifying a global hook for all the targets as well as some local hooks for individual targets. This type of hooks also handled differently. + +Here, we are going to discuss how Stash executes the hooks in different scenarios. + +- **Sidecar Model:** In sidecar model, hooks are executed by the backup sidecar or restore init-container. The hook execution flow by sidecar/init-container is shown in the following diagram: + +
+   Hook Execution flow in sidecar model +
Fig: Hook Execution flow in sidecar model
+
+ +- **Job Model:** In Job model, `httpGet`, `httpPost` and `tcpSocket` are executed by the backup/restore job. However, the `exec` hook is executed in the targeted application pod. In order to determine the targeted application pod, Stash uses the `Service` specified in the respective `AppBinding` crd. It first determines the endpoints of the Service. Then, it executes the hook into one of the pod pointed by those endpoints. Hence, if the `AppBinding` points to an external URL, it is not possible for Stash to execute the `exec` hook. The hook execution flow in job model is shown in the following diagram: + +
+   Hook Execution flow in job model +
Fig: Hook Execution flow in job model
+
+ +- **Batch Backup:** In batch backup using `BackupBatch` object, the global hooks are executed by the Stash operator itself. When Stash operator completes executing the global pre-task hook, the individual targets start executing their local pre-task hook. Then, they complete their backup process and executes their local post-task hook. Finally, the Stash operator executes global post-task hooks. The hook execution flow in batch backup is shown in the following diagram: + +
+  Hook Execution flow in batch backup +
Fig: Hook Execution flow in batch backup
+
+ +## Hook's Behaviors + +Now, we are going to discuss what will happen when a hook fails or backup/restore process fails. + +### `preBackup` or `preRestore` hook + +If a `preBackup` or `preRestore` hook fails to execute, the rest of the backup/restore process will be skipped and the respective `BackupSession`/`RestoreSession` will be marked as `Failed`. You may see the following things happen in addition to skipping the backup process: + +- **Backup Sidecar:** If the `preBackup` hook fails in the backup sidecar, the sidecar will just log the failure and continue watching for `BackupSession` for the next backup. +- **Restore Init-Container:** If the `preRestore` hook fails in restore init-container, the container will crash. Hence, your workload will be stuck in the initialization phase. +- **Backup or Restore Job:** If the `preBackup` or `preRestore` hook fails in backup/restore job, the container will fail. Hence, the job will never go into completed stage. You may see the job creating multiple pods to retry. + +### `postBackup` or `postRestore` hook + +If the backup or restore process fails then the respective `postBackup` or `postRestore` hook will be executed according to the policy specified in the `executionPolicy` field of the respective hook. The current acceptable values and behaviors are: + +- `Always`: The hook will be executed after the backup/restore process no matter the backup/restore has failed or succeeded. This is the default behavior. +- `OnSuccess`: The hook will be executed after the backup/restore process only if the backup/restore has succeeded. +- `OnFailure`: The hook will be executed after the backup/restore process only if the backup/restore has failed. +- `OnFinalRetryFailure`: The hook will be executed after the backup process only if the backup has failed with no more retry attempts left. + +If the `postBackup` or `postRestore` hook fails, the respective BackupSession or RestoreSession will be marked as `Failed`. + +## Templating Support in Hook + +Stash support [Go template](https://pkg.go.dev/text/template) in hook. This is particularly helpful when you want to send custom message to a Slack webhook with information about the backup/restore session. + +Stash exposes a summary for a backup/restore process. The Go template variables are then resolved from the summary. Here, is an example of a summary exposed by Stash: + +```json +{ + "name": "deployment-backup-1646741400", + "namespace": "demo", + "invoker":{ + "apiGroup": "stash.appscode.com", + "kind": "BackupConfiguration", + "name": "deployment-backup" + }, + "target":{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "name": "stash-demo" + }, + "status":{ + "phase": "Failed", + "duration": "10s", + "error": "failed to backup host-0. Reason: path not found" + } +} +``` + +The summary contains the following fields: + +- **name:** Name of the respective BackupSession or RestoreSession. You can access it in your template as `.Name` variable. +- **namespace:** Namespace of the respective BackupSession or RestoreSession. You can access it in your template as `.Namespace` variable. +- **invoker:** Contains the respective BackupConfiguration or RestoreSession information which is responsible for triggering this backup or restore process. It has the following fields: + - **apiVersion:** API version of the invoker. You can access it in your template as `.Invoker.ApiVersion` variable. + - **kind:** Kind of the invoker. You can access it in your template as `.Invoker.Kind` variable. + - **name:** Name of the invoker. You can access it in your template as `.Invoker.Name` variable. + +- **target:** Contains respective backup/restore target information. It has the following fields: + - **apiVersion:** API version of the target. You can access it in your template as `.Target.ApiVersion` variable. + - **kind:** Kind of the target. You can access it in your template as `.Target.Kind` variable. + - **name:** Name of the target. You can access it in your template as `.Target.Name` variable. + +- **status:** Specifies the backup/restore status. It has the following fields: + - **phase:** Phase of the backup/restore process. You can access it in your template as `.Status.Phase` variable. + - **duration:** Specifies how long it took to complete the backup/restore process. You can access it in your template as `Status.Duration` variable. + - **error:** If the backup/restore process fail, this field contains the reason why it failed. You can access it in your template as `.Status.Error` variable. + +Below is an example of using Go template in hook. Here, we are sending a message to a slack incoming webhook if the backup process fails. + +```yaml +hooks: + postBackup: + executionPolicy: OnFailure + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf ":x: Backup failed for %s/%s Reason: %s." .Namespace .Target.Name .Status.Error) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } +``` diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/all_backup_notification.yaml b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/all_backup_notification.yaml new file mode 100644 index 0000000000..61c6ebba8d --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/all_backup_notification.yaml @@ -0,0 +1,44 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + hooks: + postBackup: + executionPolicy: Always + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf "Backup completed for %s/%s Status: %s." .Namespace .Target.Name .Status.Phase) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/deployment.yaml b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/deployment.yaml new file mode 100644 index 0000000000..c6d57ee0b1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/deployment.yaml @@ -0,0 +1,44 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/failed_backup_notification.yaml b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/failed_backup_notification.yaml new file mode 100644 index 0000000000..9a4968f0c9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/failed_backup_notification.yaml @@ -0,0 +1,44 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /path/does/not/exist + hooks: + postBackup: + executionPolicy: OnFailure + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf ":x: Backup failed for %s/%s Reason: %s." .Namespace .Target.Name .Status.Error) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/repository.yaml b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/repository.yaml new file mode 100644 index 0000000000..af2c76e664 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /webinar/slack-notification + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/restoresession.yaml new file mode 100644 index 0000000000..bbb7cf87f4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/examples/restoresession.yaml @@ -0,0 +1,41 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ + # - /path/does/not/exist + hooks: + postRestore: + executionPolicy: OnFailure + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf ":x: Restore failed for %s/%s Reason: %s." .Namespace .Target.Name .Status.Error) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/all_notification.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/all_notification.png new file mode 100644 index 0000000000..44d5bb6ac3 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/all_notification.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/failed_notification.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/failed_notification.png new file mode 100644 index 0000000000..592f75f787 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/failed_notification.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_1.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_1.png new file mode 100644 index 0000000000..13561b88af Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_1.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_2.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_2.png new file mode 100644 index 0000000000..85c79b4f56 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_2.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_3.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_3.png new file mode 100644 index 0000000000..6b34ffd028 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_3.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_4.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_4.png new file mode 100644 index 0000000000..079c877355 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_4.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_5.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_5.png new file mode 100644 index 0000000000..4609e57df8 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_5.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_6.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_6.png new file mode 100644 index 0000000000..ef981ffc2d Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_6.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_7.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_7.png new file mode 100644 index 0000000000..0a85361d30 Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_7.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_8.png b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_8.png new file mode 100644 index 0000000000..40bac914be Binary files /dev/null and b/content/docs/v2024.8.27/guides/hooks/slack-notification/images/step_8.png differ diff --git a/content/docs/v2024.8.27/guides/hooks/slack-notification/index.md b/content/docs/v2024.8.27/guides/hooks/slack-notification/index.md new file mode 100644 index 0000000000..40d7103047 --- /dev/null +++ b/content/docs/v2024.8.27/guides/hooks/slack-notification/index.md @@ -0,0 +1,469 @@ +--- +title: Sending Backup Notification to Slack | Stash +menu: + docs_v2024.8.27: + identifier: hoooks-slack-notification + name: Slack Notification + parent: hooks + weight: 25 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Sending Backup Notification to Slack Channel + +In this guide, we are going to show you how to send backup notifications to a Slack channel. Here, we are going to use [Slack Incoming Webook](https://api.slack.com/messaging/webhooks) to send the notification. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install Stash in your cluster following the steps [here](/docs/v2024.8.27/setup/install/stash/). +- If you haven't read about how hooks work in Stash, please check it from [here](/docs/v2024.8.27/guides/hooks/overview/). + +You should be familiar with the following `Stash` concepts: + +- [BackupBatch](/docs/v2024.8.27/concepts/crds/backupbatch/) +- [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) +- [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- [Function](/docs/v2024.8.27/concepts/crds/function/) +- [Task](/docs/v2024.8.27/concepts/crds/task/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Configure Slack Incoming Webhook + +At first, let's configure a Slack incoming webhook. We are going to send the notifications to a channel named `notification-test`. Now, follow the steps below: + +- Go to https://api.slack.com/messaging/webhooks and click the `Create an app` button as highlighted in the red rectangle in the following image. + +
+ Step 1 +
+ +- We are going to build a new app. So, select the `From scratch` option as below. + +
+ Step 2 +
+ +- Now, give your app a name and select your workspace. + +
+ Step 3 +
+ +- Then, select your application type as `Incoming Webhooks`. + +
+ Step 4 +
+ +- Now, activate your incoming webhook. + +
+ Step 5 +
+ +- Scroll down and click on the `Add New Webhook to Workspace` button. + +
+ Step 6 +
+ +- Now, select your desired Slack channel where you want to send the notifications. Then, click on the `Allow` button. + +
+ Step 7 +
+ +- Finally, copy the webhook path starting from `/service/****`. We will use this path in our hook specification. + +
+ Step 8 +
+ +Our Slack incoming webhook is ready to receive notifications. In the next section, we are going to configure a Stash webhook to send backup notifications to this incoming webhook. + +## Prepare Application + +Now, let's deploy a sample application and generate some sample data for it. Here, is the YAML of a Deployment along with its PVC that we are going to deploy: + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data +``` + +Let's deploy the above deployment. + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/slack-notification/examples/deployment.yaml +persistentvolumeclaim/stash-sample-data created +deployment.apps/stash-demo created +``` + +Once the deployment is running, lets exec into its pod and create some sample file in `/source/data` directory. + +```bash +❯ kubectl exec -n demo stash-demo-669d77dfc4-nhdgg -- touch /source/data/file-1.txt +❯ kubectl exec -n demo stash-demo-669d77dfc4-nhdgg -- touch /source/data/file-2.txt +❯ kubectl exec -n demo stash-demo-669d77dfc4-nhdgg -- touch /source/data/file-3.txt +``` + +Let's verify that the files have been created successfully: + +```bash +❯ kubectl exec -n demo stash-demo-669d77dfc4-nhdgg -- ls /source/data +file-1.txt +file-2.txt +file-3.txt +``` + +Our application is ready with some sample data. In the next section, we are going to setup a backup for this application. + +## Prepare Backend + +We are going to store our backed-up data into a GCS bucket. At first, we need to create a secret with GCS credentials then we need to create a `Repository` CR. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Storage Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of Repository CR we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /webinar/slack-notification + storageSecretName: gcs-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/slack-notification/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our application into our desired backend. + +## Backup + +In this section, we are going to setup a backup for the application we deployed earlier. We are going to configure a `postBackup` hook to send a notification to our Slack incoming webhook when a backup session completes. + +Here, is the YAML of the BackupConfiguration that we are going to create: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + hooks: + postBackup: + executionPolicy: Always + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf "Backup completed for %s/%s Status: %s." .Namespace .Target.Name .Status.Phase) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Notice the `hooks` section. We have setup a `postBackup` hook which sends an HTTP POST request. In the `path` field of the `httpPost` section, we have specified the Slack incoming webhook path that we copied in the last step of configuring Slack incoming webhook. + +Also, notice the `body` field of the `httpPost` section. We have used Go template to include information about the backup target and status. + +Let's create the BackupConfiguration we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/slack-notification/examples/all_backup_notification.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Wait for BackupSession:** + +Now, let's wait for a BackupSession. Run the following command to watch for BackupSession. + +```bash +❯ kubectl get backupsession --all-namespaces -w +NAMESPACE NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +demo deployment-backup-1650277200 BackupConfiguration deployment-backup 0s +demo deployment-backup-1650277200 BackupConfiguration deployment-backup Pending 0s +demo deployment-backup-1650277200 BackupConfiguration deployment-backup Running 0s +demo deployment-backup-1650277200 BackupConfiguration deployment-backup Succeeded 31s 30s +``` + +We can see from the above output that the backup session has succeeded. + +**Verify Notification:** + +Now, if we go to the Slack channel we have configured for notification. We should see a notification similar to this: + +
+ Successfull backup notification +
+ +### Sending Only Backup Failure Notification + +We can also use the `executionPolicy` to send notification only for the failed backups. Check the following BackupConfiguration: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /path/does/not/exist + hooks: + postBackup: + executionPolicy: OnFailure + httpPost: + host: hooks.slack.com + path: /services/XX/XXX/XXXX + port: 443 + scheme: HTTPS + httpHeaders: + - name: Content-Type + value: application/json + body: | + {{- $msg := dict "type" "mrkdwn" "text" (printf ":x: Backup failed for %s/%s Reason: %s." .Namespace .Target.Name .Status.Error) -}} + { + "blocks": [ + { + "type": "section", + "text": {{ toJson $msg }} + } + ] + } + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, we have provided an invalid path in the `paths` field of the `target` section. This will force the backup to fail. + +Notice that, this time we have specified the `executionPolicy` field to `OnFailure`. This will tell Stash to send the notification only if the backup fail. In the message body, we have included information about target and reason of failure. + +Let's apply the above BackupConfiguration: + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/hooks/slack-notification/examples/failed_backup_notification.yaml +backupconfiguration.stash.appscode.com/deployment-backup configured +``` + +**Wait for BackupSession:** + +Again, let's wait for a scheduled backup. Run the following command to watch for a BackupSession: + +```bash +❯ kubectl get backupsession --all-namespaces -w +NAMESPACE NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +demo deployment-backup-1650277554 BackupConfiguration deployment-backup 0s +demo deployment-backup-1650277554 BackupConfiguration deployment-backup Pending 0s +demo deployment-backup-1650277554 BackupConfiguration deployment-backup Running 5s +demo deployment-backup-1650277554 BackupConfiguration deployment-backup Failed 6s 5s +``` + +As we can see that the backup has failed this time. Let's verify the failure notification. + +**Verify Notification:** + +If we go to the Slack channel, we should see a new notification has been sent. This time it indicates a failure and also contains the failure reason. + +
+ Failed backup notification +
+ +## Cleanup + +To clean up the test resources we have created throughout this tutorial, run the following commands: + +```bash +# Delete BackupConfiguration +kubectl delete backupconfiguration -n demo deployment-backup +# Delete Repository +kubectl delete repository -n demo gcs-repo +# Delete storage Secret +kubectl delete secret -n demo gcs-secret + +# Delete Deployment and it's PVC +kubectl delete deployment -n demo stash-demo +kubectl delete pvc -n demo stash-sample-data +``` diff --git a/content/docs/v2024.8.27/guides/managed-backup/_index.md b/content/docs/v2024.8.27/guides/managed-backup/_index.md new file mode 100644 index 0000000000..3f078c487b --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/_index.md @@ -0,0 +1,76 @@ +--- +title: Managed Backup | Stash +menu: + docs_v2024.8.27: + identifier: managed-backup + name: Managed Backup + parent: guides + weight: 85 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/backup-bluprint.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/backup-bluprint.yaml new file mode 100644 index 0000000000..85e318c720 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/backup-bluprint.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: mysql-backup +spec: + backupNamespace: backup + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + schedule: "*/5 * * * *" + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/clusterrole_clusterrolebinding.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/clusterrole_clusterrolebinding.yaml new file mode 100644 index 0000000000..4ad52fe5b6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/clusterrole_clusterrolebinding.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cross-namespace-target-reader +rules: + - apiGroups: [""] + resources: ["secrets","pods","endpoints"] + verbs: ["get", "list"] + - apiGroups: ["appcatalog.appscode.com"] + resources: ["appbindings"] + verbs: ["get", "list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cross-namespace-target-reader +subjects: + - kind: ServiceAccount + name: cross-namespace-target-reader + namespace: backup +roleRef: + kind: ClusterRole + name: cross-namespace-target-reader + apiGroup: rbac.authorization.k8s.io diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/mysql.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/mysql.yaml new file mode 100644 index 0000000000..62245c13df --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/mysql.yaml @@ -0,0 +1,56 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-1 + namespace: prod-1 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut +--- +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-2 + namespace: prod-2 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut +--- +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-3 + namespace: prod-3 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/serviceaccount.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/serviceaccount.yaml new file mode 100644 index 0000000000..0a3e3f8934 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/serviceaccount.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cross-namespace-target-reader + namespace: backup diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-1.png b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-1.png new file mode 100644 index 0000000000..a4133ffdac Binary files /dev/null and b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-1.png differ diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-2.png b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-2.png new file mode 100644 index 0000000000..b7aaa07bc1 Binary files /dev/null and b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-2.png differ diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-3.png b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-3.png new file mode 100644 index 0000000000..bb360f6331 Binary files /dev/null and b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/images/gcs-prod-3.png differ diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/index.md b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/index.md new file mode 100644 index 0000000000..010c3797de --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace-auto-backup/index.md @@ -0,0 +1,480 @@ +--- +title: Define Cluster Wide Backup Policy using Stash Auto-backup +description: A guide on how to define cluster wide backup policy using Stash auto-backup. +menu: + docs_v2024.8.27: + identifier: managed-backup-auto-backup + name: Managed Auto-Backup + parent: managed-backup + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Define Cluster Wide Backup Policy using Stash Auto-backup + +This guide will show you how you can define cluster wide backup policy using Stash Auto-backup. Here, we are going to define a backup policy for MySQL databases. Then, we will demonstrate how users from different namespaces can use that policy to backup their own MySQL instances. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +We are going to take backup from the `prod-1`, `prod-2` and `prod-3` namespaces. We want to create our backup resources in `backup` namespace. + +Let's create the above mentioned namespaces, + +```bash +$ kubectl create ns prod-1 +namespace/prod-1 created + +$ kubectl create ns prod-2 +namespace/prod-2 created + +$ kubectl create ns prod-3 +namespace/prod-3 created + +$ kubectl create ns backup +namespace/backup created + +``` + +>**Note:** YAML files used in this tutorial can be found [here](https://github.com/stashed/docs/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples). + +## Prepare Backup Blueprint + +Stash allows defining a backup template using `BackupBlueprint` CR. In this section, we are going to configure a `BackupBlueprint` for taking backup of MySQL databases. + +### Prepare Backend + +We are going to use [GCS Backend](/docs/v2024.8.27/guides/backends/gcs/) to store the backed up data. You can use any supported backend you prefer. You just have to configure Storage Secret and `spec.backend` section of `BackupBlueprint` to match your backend. To learn which backends are supported by Stash and how to configure them, please visit [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Storage Secret:** + +At first, let's create a Storage Secret for the GCS backend in the `backup` namespace, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ mv downloaded-sa-json.key GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n backup gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +### Prepare RBAC + +Stash does not grant necessary RBAC permissions to the backup job for taking backup from a different namespace. In this case, we have to provide the RBAC permissions manually. This helps to prevent unauthorized namespaces from getting access to a database via Stash. + +**Create ServiceAccount:** + +At first, we are going to create a `ServiceAccount` in the `backup` namespace. We will grant necessary RBAC permissions to this ServiceAccount and use it in the backup job. Here is the YAML of the ServiceAccount, + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cross-namespace-target-reader + namespace: backup +``` + +Let's create the ServiceAccount, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/serviceaccount.yaml +serviceaccount/cross-namespace-target-reader created +``` + +**Create ClusterRole and ClusterRoleBinding** + +We are going to create a ClusterRole and ClusterRoleBinding with the necessary permissions to perform the backup. Here are the YAMLs of the ClusterRole and ClusterRoleBinding, + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cross-namespace-target-reader +rules: +- apiGroups: [""] + resources: ["secrets","pods","endpoints"] + verbs: ["get","list"] +- apiGroups: ["appcatalog.appscode.com"] + resources: ["appbindings"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cross-namespace-target-reader +subjects: +- kind: ServiceAccount + name: cross-namespace-target-reader + namespace: backup +roleRef: + kind: ClusterRole + name: cross-namespace-target-reader + apiGroup: rbac.authorization.k8s.io +``` + +Let's create the ClusterRole and ClusterRoleBinding we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/clusterrole_clusterrolebinding.yaml +clusterrole.rbac.authorization.k8s.io/cross-namespace-target-reader created +clusterrolebinding.rbac.authorization.k8s.io/cross-namespace-target-reader created +``` + +The above RBAC permissions will allow the ServiceAccounts to perform backup of targets from any namespace. + +Alternatively, you can create Role and RoleBinding with the same permissions in case you want to restrict the ServiceAccounts to backup targets from only a specific namespace. + +### Create BackupBlueprint + +Now, we have to create a `BackupBlueprint` crd with a blueprint for `Repository` and `BackupConfiguration` object. + +Below is the YAML of the `BackupBlueprint` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupBlueprint +metadata: + name: mysql-backup +spec: + backupNamespace: backup + # ============== Blueprint for Repository ========================== + backend: + gcs: + bucket: stash-testing + prefix: stash-backup/${TARGET_NAMESPACE}/${TARGET_NAME} + storageSecretName: gcs-secret + # ============== Blueprint for BackupConfiguration ================= + schedule: "*/5 * * * *" + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader +``` + +Here, + +- `spec.backupNamespace` refers to the namepspace where the backup resources will be created. +- `spec.runtimeSettings.pod.serviceAccountName` refers to the name of the `ServiceAccount` to use in the backup pod. + +Note that we have used some variables (format: `${}`) in `spec.backend.gcs.prefix` field. Stash will substitute these variables with values from the respective target. Since the resolved prefix will be different for different target, the backed up data will be stored in different directory inside the bucket. To know which variable you can use in this `prefix` field, please visit [here](/docs/v2024.8.27/concepts/crds/backupblueprint/#repository-blueprint). + +Let's create the `BackupBlueprint` that we have shown above, + +```bash +kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/backupblueprint.yaml +backupblueprint.stash.appscode.com/mysql-backup created +``` + +Now, automatic backup is configured for MySQL database. We just have to add some annotations to the targeted databases to enable periodic backup. + +## Backup + +In this section, we are going to backup three MySQL databases from the `prod-1`, `prod-2`, and `prod-3` namespaces. + +### Deploy MySQL Databases + +We are going to use KubeDB for deploying sample MySQL Databases. Let's deploy three different MySQL databases in `prod-1`, `prod-2`, and `prod-3` namespaces, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-1 + namespace: prod-1 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut +--- +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-2 + namespace: prod-2 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut +--- +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql-3 + namespace: prod-3 + annotations: + stash.appscode.com/backup-blueprint: mysql-backup +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi + terminationPolicy: WipeOut + +``` + +Notice the `metadata.annotations` field. We have specified to use `mysql-backup` BackupBlueprint for creating `Repository` and `BackupConfiguration` for the MySQL databases. BackupBlueprint is a non-namespaced resource, so we just need to specify the name of the blueprint. + +Let's create the above `MySQL` objects, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace-auto-backup/examples/mysql.yaml +mysql.kubedb.com/sample-mysql-1 created +mysql.kubedb.com/sample-mysql-2 created +mysql.kubedb.com/sample-mysql-3 created +``` + +If everything goes well, Stash will create a Repository and a BackupConfiguration for each MySQL database with the name in the following format: + +```bash +-- +```` + +**Verify Repository:** + +Verify that the Repositories has been created successfully by the following command, + +```bash +$ kubectl get repository -n backup +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +prod-1-app-sample-mysql-1 31s +prod-2-app-sample-mysql-2 31s +prod-3-app-sample-mysql-3 30s +``` + +**Verify BackupConfiguratoin:** + +If everything goes well, Stash should create a `BackupConfiguration` for each of the MySQL database and the phase of the `BackupConfiguration` should be `Ready`. Verify that the `BackupConfiguration`s have been created by the following command, + +```bash +$ kubectl get backupconfiguration -n backup +NAME TASK SCHEDULE PAUSED PHASE AGE +prod-1-app-sample-mysql-1 */5 * * * * Ready 11m +prod-2-app-sample-mysql-2 */5 * * * * Ready 11m +prod-3-app-sample-mysql-3 */5 * * * * Ready 11m +``` + +Let's check the YAML of one of these `BackupConfiguration`s, + +```bash +$ kubectl get backupconfiguration -n backup prod-1-app-sample-mysql-1 -o yaml +``` + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: prod-1-app-sample-mysql-1 + namespace: backup + ... +spec: + driver: Restic + repository: + name: prod-1-app-sample-mysql-1 + namespace: backup + retentionPolicy: + keepLast: 5 + name: keep-last-5 + prune: true + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader + schedule: '*/5 * * * *' + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql-1 + namespace: prod-1 + task: {} + tempDir: {} +``` + +Notice that the `spec.target.ref` is pointing to the AppBinding of the database `sample-mysql-1` in the `prod-1` namespace. + +**Wait for BackupSession:** + +Run the following command to watch `BackupSession` crd: + +```bash +$ watch -n 1 kubectl get backupsession -n backup +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +prod-1-app-sample-mysql-1-1650885602 BackupConfiguration prod-1-app-sample-mysql-1 Succeeded 45s 5m25s +prod-1-app-sample-mysql-1-1650885906 BackupConfiguration prod-1-app-sample-mysql-1 Running 21s +prod-2-app-sample-mysql-2-1650885310 BackupConfiguration prod-2-app-sample-mysql-2 Succeeded 40s 10m +prod-2-app-sample-mysql-2-1650885602 BackupConfiguration prod-2-app-sample-mysql-2 Succeeded 41s 5m25s +prod-2-app-sample-mysql-2-1650885906 BackupConfiguration prod-2-app-sample-mysql-2 Running 21s +prod-3-app-sample-mysql-3-1650885310 BackupConfiguration prod-3-app-sample-mysql-3 Succeeded 38s 10m +prod-3-app-sample-mysql-3-1650885602 BackupConfiguration prod-3-app-sample-mysql-3 Succeeded 41s 5m25s + +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +**Verify Backup:** + +When backup session is completed, Stash will update the respective `Repository` to reflect the latest state of backed up data. + +Run the following command to check if the snapshots are stored in the backend, + +```bash +$ kubectl get repository -n backup +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +prod-1-app-sample-mysql-1 true 4.174 MiB 5 2m50s 50m +prod-2-app-sample-mysql-2 true 7.283 MiB 5 2m50s 50m +prod-3-app-sample-mysql-3 true 4.701 MiB 5 2m50s 50m +``` + +If we navigate to `stash-backup/prod-1/sample-mysql-1`, `stash-backup/prod-2/sample-mysql-2`, and `stash-backup/prod-3/sample-mysql-3` directories of our GCS bucket, we are going to see that the snapshots of the databases `sample-mysql-1`, `sample-mysql-2` and`sample-mysql-3` have been stored there respectively. + +
+  Backup data of sample-mysql-1 GCS backend +
Fig: Backup data of sample-mysql-1 in GCS backend
+
+ +
+  Backup data of sample-mysql-2 GCS backend +
Fig: Backup data of sample-mysql-2 in GCS backend
+
+ +
+  Backup data of sample-mysql-3 GCS backend +
Fig: Backup data of sample-mysql-3 in GCS backend
+
+ + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete backupblueprint mysql-backup +backupblueprint.stash.appscode.com "mysql-backup" deleted +$ kubectl delete backupconfiguration -n backup --all +backupconfiguration.stash.appscode.com "prod-1-app-sample-mysql-1" deleted +backupconfiguration.stash.appscode.com "prod-2-app-sample-mysql-2" deleted +backupconfiguration.stash.appscode.com "prod-3-app-sample-mysql-3" deleted +$ kubectl delete repository -n backup --all +repository.stash.appscode.com "prod-1-app-sample-mysql-1" deleted +repository.stash.appscode.com "prod-2-app-sample-mysql-2" deleted +repository.stash.appscode.com "prod-3-app-sample-mysql-3" deleted +$ kubectl delete secret -n backup gcs-secret +secret "gcs-secret" deleted +$ kubectl delete sa -n backup cross-namespace-target-reader +serviceaccount "mysql-sa" deleted +$ kubectl delete clusterrole cross-namespace-target-reader +role.rbac.authorization.k8s.io "mysql-role" deleted +$ kubectl delete clusterrolebinding cross-namespace-target-reader +rolebinding.rbac.authorization.k8s.io "mysql-rolebinding" deleted +$ kubectl delete my -n prod-1 sample-mysql-1 +mysql.kubedb.com "sample-mysql-1" deleted +$ kubectl delete my -n prod-2 sample-mysql-2 +mysql.kubedb.com "sample-mysql-2" deleted +$ kubectl delete my -n prod-3 sample-mysql-3 +mysql.kubedb.com "sample-mysql-3" deleted +``` diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..6a5c3e60fb --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/backupconfiguration.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mysql-backup + namespace: backup +spec: + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + namespace: prod + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/clusterrole_clusterrolebinding.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/clusterrole_clusterrolebinding.yaml new file mode 100644 index 0000000000..7128b45e76 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/clusterrole_clusterrolebinding.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cross-namespace-target-clusterrole +rules: +- apiGroups: [""] + resources: ["secrets","pods","endpoints"] + verbs: ["get","list"] +- apiGroups: ["appcatalog.appscode.com"] + resources: ["appbindings"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cross-namespace-target-clusterrolebinding +subjects: +- kind: ServiceAccount + name: cross-namespace-target-reader + namespace: backup +roleRef: + kind: ClusterRole + name: cross-namespace-target-clusterrole + apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql.yaml new file mode 100644 index 0000000000..5f44852e15 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: prod +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql_recovery.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql_recovery.yaml new file mode 100644 index 0000000000..a13bbe30ac --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/mysql_recovery.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: mysql-recovery + namespace: staging +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/repository.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/repository.yaml new file mode 100644 index 0000000000..9ce1f7a85c --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: backup +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-namespace-target/data/sample-mysql + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/restoresession.yaml new file mode 100644 index 0000000000..2c54f28116 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/restoresession.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mysql-restore + namespace: backup +spec: + task: + name: mysql-restore-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: mysql-recovery + namespace: staging + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/serviceaccount.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/serviceaccount.yaml new file mode 100644 index 0000000000..70a991220c --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/examples/serviceaccount.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cross-namespace-target-reader + namespace: backup \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/index.md b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/index.md new file mode 100644 index 0000000000..75d09d24f9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-backup-namespace/index.md @@ -0,0 +1,660 @@ +--- +title: Dedicated Backup Namespace | Stash +description: A guide on how to manage backup and restore from a dedicated namespace for targets of different namespaces using Stash. +menu: + docs_v2024.8.27: + identifier: managed-backup-dedicated-backup-namespace + name: Dedicated Backup Namespace + parent: managed-backup + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Manage Backup and Restore from a Dedicated Namespace + +This guide will show you how you can use a dedicated backup namespace to keep your backup resources isolated from your workloads. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +Here, we are going to take a backup from the `prod` namespace and restore it to the `staging` namespace. We are going to manage the backup and restore from a separate `backup` namespace. + +Let's create the above-mentioned namespaces, + +```bash +$ kubectl create ns prod +namespace/prod created + +$ kubectl create ns backup +namespace/backup created + +$ kubectl create ns staging +namespace/staging created +``` + +>**Note:** YAML files used in this tutorial can be found [here](https://github.com/stashed/docs/guides/managed-backup/dedicated-backup-namespace/examples). + +## Backup + +In this section, we are going to backup a MySQL database from the `prod` namespace. We are going to use `backup` namespace for our backup resources. + +### Deploy Sample MySQL Database + +We are going to use KubeDB for deploying a sample MySQL Database. Let's deploy the following sample MySQL database in `prod` namespace, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: sample-mysql + namespace: prod +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +To create the above `MySQL` object, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/mysql.yaml +mysql.kubedb.com/sample-mysql created +``` + +KubeDB will deploy a MySQL database according to the above specification. It will also create the necessary Secrets and Services to access the database. + +Let's check if the database is ready to use, + +```bash +$ kubectl get my -n prod sample-mysql +NAME VERSION STATUS AGE +sample-mysql 8.0.27 Ready 3m32s +``` +We can see that the database is `Ready`. + +**Verify AppBinding:** + +Verify that the AppBinding has been created successfully using the following command, + +```bash +$ kubectl get appbindings -n prod +NAME TYPE VERSION AGE +sample-mysql kubedb.com/mysql 8.0.27 11m +``` +Stash uses the AppBinding CRD to connect with the target database. + +> If you are not using KubeDB to deploy the database, create the AppBinding manually. + +**Insert Sample Data:** + +Now, we are going to exec into the database pod and create some sample data. At first, find out the database Pod using the following command, + +```bash +$ kubectl get pods -n prod --selector="app.kubernetes.io/instance=sample-mysql" +NAME READY STATUS RESTARTS AGE +sample-mysql-0 1/1 Running 0 33m +``` + +And copy the user name and password of the `root` user to access the `mysql` shell. + +```bash +$ kubectl get secret -n prod sample-mysql-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n prod sample-mysql-auth -o jsonpath='{.data.password}'| base64 -d +vTSh3ZQxDBRm7dzl⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n prod sample-mysql-0 -- mysql --user=root --password="vTSh3ZQxDBRm7dzl" +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 10 +Server version: 8.0.14 MySQL Community Server - GPL + +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> CREATE DATABASE playground; +Query OK, 1 row affected (0.01 sec) + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id)); +Query OK, 0 rows affected (0.01 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.01 sec) + +mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue"); +Query OK, 1 row affected (0.01 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +Now, we are ready to backup the database. + +### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. We have to create a Secret with the necessary credentials and a Repository CRD to use this backend. + +If you want to use a different backend, please read the doc [here](/docs/v2024.8.27/guides/backends/overview/). + +> For the GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a Secret called `gcs-secret` in `backup` namespace with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n backup gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a Repository using this Secret. Below is the YAML of Repository object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: backup +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-namespace-target/data/sample-mysql + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` +Now, we are ready to backup our sample data into this backend. + +### Configure Backup + +We are going to create a `BackupConfiguration` object in the `backup` namespace targetting the `sample-mysql` database of the `prod` namespace. Stash does not grant necessary RBAC permissions to the backup job for taking backup from a different namespace. In this case, we have to provide the RBAC permissions manually. This helps to prevent unauthorized namespaces from getting access to a database via Stash. + +**Create ServiceAccount:** + +At first, we are going to create a ServiceAccount in the `backup` namespace. We will grant necessary RBAC permissions to this ServiceAccount and use it in the backup job. + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cross-namespace-target-reader + namespace: backup +``` + +Let's create the ServiceAccount, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/serviceaccount.yaml +serviceaccount/cross-namespace-target-reader created +``` + +**Create ClusterRole and ClusterRoleBinding** + +We are going to create a ClusterRole and ClusterRoleBinding with the necessary permissions to perform the backup. Here are the YAMLs of the ClusterRole and ClusterRoleBinding, + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cross-namespace-target-reader +rules: +- apiGroups: [""] + resources: ["secrets","pods","endpoints"] + verbs: ["get","list"] +- apiGroups: ["appcatalog.appscode.com"] + resources: ["appbindings"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cross-namespace-target-reader +subjects: +- kind: ServiceAccount + name: cross-namespace-target-reader + namespace: backup +roleRef: + kind: ClusterRole + name: cross-namespace-target-reader + apiGroup: rbac.authorization.k8s.io +``` + +Let's create the ClusterRole and ClusterRoleBinding we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/clusterrole_clusterrolebinding.yaml +clusterrole.rbac.authorization.k8s.io/cross-namespace-target-reader created +clusterrolebinding.rbac.authorization.k8s.io/cross-namespace-target-reader created +``` + +The above RBAC permissions will allow the ServiceAccounts to perform backup targets from any namespace. + +Alternatively, you can create Role and RoleBinding with the same permissions in case you want to restrict the ServiceAccounts to backup targets from only a specific namespace. + +**Create BackupConfiguration:** + +Now, we are going to create the BackupConfiguration to backup our MySQL database of `prod` namespace. Below is the YAML of the `BackupConfiguration` object, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mysql-backup + namespace: backup +spec: + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mysql + namespace: prod + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` +Note that, we have mentioned the ServiceAccount name we have created earlier in the `spec.runtimeSettings.pod.serviceAccountName` field of the BackupConfiguration object. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mysql-backup +``` + +**Verify BackupConfiguration Ready:** + +If everything goes well, the phase of the BackupConfiguration should be `Ready`. Let's check the BackupConfiguration Phase, + +```bash +❯ kubectl get backupconfiguration -n backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mysql-backup */5 * * * * Ready 13s +``` + +### Verify Backup + +The `sample-mysql-backup` BackupConfiguration will create a CronJob in the `dev` namespace and that will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Wait for the next schedule for the backup. Run the following command to watch the `BackupSession` object, + +```bash +$ kubectl get backupsession -n backup -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +sample-mysql-backup-1650452100 BackupConfiguration sample-mysql-backup Running 0s +sample-mysql-backup-1650452100 BackupConfiguration sample-mysql-backup Running 16s +sample-mysql-backup-1650452100 BackupConfiguration sample-mysql-backup Running 32s +sample-mysql-backup-1650452100 BackupConfiguration sample-mysql-backup Succeeded 33s 32s +``` + +We can see from the above that the Phase of the BackupSession is Succeeded. It indicates that Stash has successfully taken a backup of our target. + +## Restore + +In this section, we are going to restore the database into the `staging` namespace from the backup we have taken in the previous section. + +**Stop Taking Backup of the Old Database:** + +At first, let's stop taking any further backup of the old database so that no backup is taken during the restore process. + +Let's pause the `sample-mysql-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n backup sample-mysql-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mysql-backup patched +``` + +Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n backup sample-mysql-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mysql-backup mysql-backup-8.0.21 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +### Deploy Recovery MySQL Database + +Now, we are going to deploy a new MySQL database in the `staging` namespace. + +Below is the YAML for the MySQL database, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MySQL +metadata: + name: mysql-recovery + namespace: staging +spec: + version: "8.0.27" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +Let's create the above database, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/mysql_recovery.yaml +mysql.kubedb.com/mysql-recovery created +``` + +Let's check the database status, + +```bash +$ kubectl get my -n staging mysql-recovery +NAME VERSION STATUS AGE +mysql-recovery 8.0.27 Ready 36s +``` + +**Verify AppBinding:** + +Check that the AppBinding object has been created for the `mysql-recovery` database, + +```bash +$ kubectl get appbindings -n staging +NAME TYPE VERSION AGE +mysql-recovery kubedb.com/mysql 8.0.27 2m +``` + +> If you are not using KubeDB to deploy database, create the AppBinding manually. + +### Configure Restore + +We are going to create a `RestoreSession` object in the `backup` namespace targeting the `mysql-recovery` database of `staging` namespace. Similar to BackupConfiguration, we need to grant the necessary RBAC permissions through a ServiceAccount to the RestoreSession as well. + +**Create RestoreSession:** + +Here is the YAML of the RestoreSession, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mysql-restore + namespace: backup +spec: + task: + name: mysql-restore-8.0.21 + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: mysql-recovery + namespace: staging + runtimeSettings: + pod: + serviceAccountName: cross-namespace-target-reader + rules: + - snapshots: [latest] +``` + +Note that, similarly to the BackupConfiguration we have mentioned the ServiceAccount here in the `spec.runtimeSettings.pod.serviceAccountName` field to grant necessary RBAC permissions to the RestoreSession. + +Let's create the RestoreSession object, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-backup-namespace/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mysql-restore created +``` + +Let's run the following command to watch the phase of the RestoreSession object, + +```bash +$ kubectl get restoresession -n backup sample-mysql-restore -w + +NAME REPOSITORY PHASE DURATION AGE +sample-mysql-restore gcs-repo Running 2s +sample-mysql-restore gcs-repo Running 20s +sample-mysql-restore gcs-repo Succeeded 20s 20s +``` + +Here, we can see that the restore process has succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify whether the desired data has been restored successfully. + +Let's find out the database Pod by the following command, + +```bash +$ kubectl get pods -n staging --selector="app.kubernetes.io/instance=mysql-recovery" +NAME READY STATUS RESTARTS AGE +mysql-recovery-0 1/1 Running 0 39m +``` + +Copy the username and password of the `root` user to access into `mysql` shell. + +```bash +$ kubectl get secret -n staging mysql-recovery-auth -o jsonpath='{.data.username}'| base64 -d +root⏎ + +$ kubectl get secret -n staging mysql-recovery-auth -o jsonpath='{.data.password}'| base64 -d +XLy)x86brw)oVy0N⏎ +``` + +Now, let's exec into the Pod to enter into `mysql` shell and create a database and a table, + +```bash +$ kubectl exec -it -n staging mysql-recovery-0 -- mysql --user=root --password="XLy)x86brw)oVy0N" +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 9 +Server version: 8.0.14 MySQL Community Server - GPL + +Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| playground | +| sys | ++--------------------+ +5 rows in set (0.00 sec) + +mysql> SHOW TABLES IN playground; ++----------------------+ +| Tables_in_playground | ++----------------------+ +| equipment | ++----------------------+ +1 row in set (0.00 sec) + +mysql> SELECT * FROM playground.equipment; ++----+-------+-------+-------+ +| id | type | quant | color | ++----+-------+-------+-------+ +| 1 | slide | 2 | blue | ++----+-------+-------+-------+ +1 row in set (0.00 sec) + +mysql> exit +Bye +``` + +So, from the above output, we can see that the `playground` database and the `equipment` table we created earlier are restored in the `mysql-recovery` database successfully. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete backupconfiguration -n backup sample-mysql-backup +backupconfiguration.stash.appscode.com "sample-mysql-backup" deleted +$ kubectl delete restoresession -n backup sample-mysql-restore +restoresession.stash.appscode.com "sample-mysql-restore" deleted +$ kubectl delete repository -n backup gcs-repo +repository.stash.appscode.com "gcs-repo" deleted +$ kubectl delete secret -n backup gcs-secret +secret "gcs-secret" deleted +$ kubectl delete sa -n backup cross-namespace-target-reader +serviceaccount "cross-namespace-target-reader" deleted +$ kubectl delete clusterrole cross-namespace-target-reader +role.rbac.authorization.k8s.io "cross-namespace-target-reader" deleted +$ kubectl delete clusterrolebinding cross-namespace-target-reader +rolebinding.rbac.authorization.k8s.io "cross-namespace-target-reader" deleted +$ kubectl delete my -n staging mysql-recovery +mysql.kubedb.com "mysql-recovery" deleted +$ kubectl delete my -n prod sample-mysql +mysql.kubedb.com "sample-mysql" deleted +``` diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..4cd6c39548 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/backupconfiguration.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: prod +spec: + repository: + name: gcs-repo + namespace: demo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/repository.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/repository.yaml new file mode 100644 index 0000000000..e599abd4d3 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/repository.yaml @@ -0,0 +1,14 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-namespace/data/sample-statefulset + storageSecretName: gcs-secret + usagePolicy: + allowedNamespaces: + from: All \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/restoresession.yaml new file mode 100644 index 0000000000..848c7c62b6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/restoresession.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: staging +spec: + repository: + name: gcs-repo + namespace: demo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset.yaml new file mode 100644 index 0000000000..569054369c --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: prod +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: prod + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset_recovered.yaml b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset_recovered.yaml new file mode 100644 index 0000000000..5a1552d120 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/examples/statefulset_recovered.yaml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: staging +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered + namespace: staging + labels: + app: stash-recovered +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + serviceName: re-headless + template: + metadata: + labels: + app: stash-recovered + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/index.md b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/index.md new file mode 100644 index 0000000000..dcb3612f05 --- /dev/null +++ b/content/docs/v2024.8.27/guides/managed-backup/dedicated-storage-namespace/index.md @@ -0,0 +1,553 @@ +--- +title: Dedicated Storage Namespace | Stash +description: A guide on how to use backup and restore by keeping the storage resources in a separate namespace in Stash. +menu: + docs_v2024.8.27: + identifier: managed-backup-dedicated-storage-namespace + name: Dedicated Storage Namespace + parent: managed-backup + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Dedicated Namespace for Storage + +This guide will show you how to take backup and restore by keeping the storage resources (Repository and backend Secret) in a dedicated namespace using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +We are going to take a backup from the `prod` namespace and restore it to the `staging` namespace. We are going to keep our Repository and the backend Secret in the `storage` namespace. + +Let's create the above-mentioned namespaces, + +```bash +$ kubectl create ns prod +namespace/prod created + +$ kubectl create ns staging +namespace/staging created + +$ kubectl create ns storage +namespace/storage created +``` + +>**Note:** YAML files used in this tutorial can be found [here](https://github.com/stashed/docs/guides/managed-backup/dedicated-storage-namespace/examples). + +## Backup from `prod` Namespace + +This section will demonstrate taking backup of the volumes of a StatefulSet from the `prod` namespace using Stash. + +### Deploy Workload + +Let's deploy a StatefulSet in the `prod` namespace at the beginning. This StatefulSet will automatically generate sample data in the `/source/data` directory. + +Here is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: prod +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: prod + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Let's create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-storage-namespace/examples/statefulset.yaml +service/headless created +statefulset.apps/stash-demo created +``` + +Now, wait for the pods of the StatefulSet to go into the `Running` state. You can verify the `Status` of the pods by executing the following command, + +```bash +$ kubectl get pod -n prod +NAME READY STATUS RESTARTS AGE +stash-demo-0 1/1 Running 0 42s +stash-demo-1 1/1 Running 0 40s +stash-demo-2 1/1 Running 0 36s +``` + +Verify that the sample data has been generated in `/source/data` directory for `stash-demo-0` , `stash-demo-1` and `stash-demo-2` pod respectively using the following commands, + +```bash +$ kubectl exec -n prod stash-demo-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n prod stash-demo-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n prod stash-demo-2 -- cat /source/data/data.txt +stash-demo-2 +``` + +### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. We have to create a Secret with the necessary credentials and a Repository object to use this backend. + +If you want to use a different backend, please read the doc [here](/docs/v2024.8.27/guides/backends/overview/). + +> For the GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a secret called `gcs-secret` in `storage` namespace with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n storage gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a Repository using the above Secret in the `storage` namespace. Below is the YAML of Repository object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: storage +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-namespace/data/sample-statefulset + storageSecretName: gcs-secret + usagePolicy: + allowedNamespaces: + from: All +``` + +Notice the `spec.usagePolicy` section. Here, we are allowing all namespaces to refer to this repository. You can restrict this capability to a particular namespace or a group of namespaces. For more details, please follow the guide from [here](/docs/v2024.8.27/concepts/crds/repository/). + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-storage-namespace/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Configure Backup + +We are going to create a `BackupConfiguration` object in the `prod` namespace targeting the `stash-demo` StatefulSet. This `BackupConfiguration` will refer to the `gcs-repo` repository of the `storage` namespace. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of the `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: prod +spec: + repository: + name: gcs-repo + namespace: storage + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository.name` refers to the Repository object that holds backend information. +- `spec.repository.namespace` refers to the namespace of the Repository object. +- `spec.schedule` is a cron expression that indicates BackupSession will be created at 5 minutes intervals. +- `spec.target.ref` refers to the `stash-demo` StatefulSet. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-storage-namespace/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/ss-backup created +``` + +**Verify BackupConfiguration Ready:** + +If everything goes well, the phase of the BackupConfiguration should be `Ready`. Let's check the BackupConfiguration Phase, + +```bash +❯ kubectl get backupconfiguration -n prod +NAME TASK SCHEDULE PAUSED PHASE AGE +ss-backup */5 * * * * Ready 13s +``` + +**Verify CronJob:** + +Stash will also create a `CronJob` with the schedule specified in the `spec.schedule` field of the `BackupConfiguration` object. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n prod +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-ss-backup */5 * * * * False 0 4m55s 3m14s +``` + +### Verify Backup + +The `stash-trigger-ss-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. The sidecar container watches for the `BackupSession` object. When it finds one, it will take backup immediately. + +Wait for the next schedule for the backup. Run the following command to watch the `BackupSession` object, + +```bash +$ kubectl get backupsession -n prod -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +ss-backup-1644562803 BackupConfiguration ss-backup Running 18s +ss-backup-1644562803 BackupConfiguration ss-backup Running 34s +ss-backup-1644562803 BackupConfiguration ss-backup Succeeded 1m21s 81s +``` + +We can see from the above output that the backup session has succeeded. + +## Restore into `staging` Namespace + +This section will demonstrate restoring the backed-up volumes into the `staging` namespace using Stash. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's stop taking any further backup of the old StatefulSet. We are going to pause the `BackupConfiguration` that we created earlier. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `ss-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n prod ss-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/ss-backup patched +``` + +You can also use the Stash kubectl plugin to pause the backup like the following, + +```bash +$ kubectl stash pause backup --backupconfig=ss-backup -n prod +BackupConfiguration demo/deployment-backup has been paused successfully. +``` + +Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n prod +NAME TASK SCHEDULE PAUSED PHASE AGE +ss-backup */5 * * * * true Ready 53m +``` + +Notice the `PAUSED` column. Value `true` indicates that the BackupConfiguration has been paused. + +### Deploy Restore Workload + +We are going to create a new StatefulSet named `stash-recovered` and restore the backed-up data inside it. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: staging +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered + namespace: staging + labels: + app: stash-recovered +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + serviceName: re-headless + template: + metadata: + labels: + app: stash-recovered + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Let's create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-storage-namespace/examples/statefulset_recovered.yaml +service/re-headless created +statefulset.apps/stash-recovered created +``` + +### Configure Restore + +Now, we need to create a `RestoreSession` object targeting the `stash-recovered` StatefulSet to restore the backed-up data inside it. Similar to the BackupConfiguration, we will use the Repository of `storage` namespace here. + +**Create RestoreSession:** + +Below is the YAML of the `RestoreSesion` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: staging +spec: + repository: + name: gcs-repo + namespace: storage + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data +``` + +Here, + +- `spec.repository.name` specifies the name of the Repository. +- `spec.repository.namespace` refers to the namespace of the Repository. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be the same mountPath as the original volume because Stash stores the absolute path of the backed-up files. If you use a different mountPath for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/managed-backup/dedicated-storage-namespace/examples/restoresession.yaml +restoresession.stash.appscode.com/ss-restore created +``` + +Now, wait for the RestoreSession phase to go into the `Succeeded` state. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch the RestoreSession phase, + +```bash +$ kubectl get restoresession -n staging -w + +NAME REPOSITORY PHASE DURATION AGE +ss-restore gcs-repo Succeeded 3m6s 4m +``` + +So, we can see from the output of the above command that the restore process succeeded. + +### Verify Restored Data + +In this section, we are going to verify that the desired data has been restored successfully. + +Get the pods of the `stash-recovered` StatefulSet, + +```bash +$ kubectl get pod -n staging +NAME READY STATUS RESTARTS AGE +stash-recovered-0 1/1 Running 0 10m +stash-recovered-1 1/1 Running 0 11m +stash-recovered-2 1/1 Running 0 12m +``` + +Verify that the backed-up data has been restored in `/source/data` directory of the `stash-recovered` pods of a StatefulSet using the following commands, + +```bash +$ kubectl exec -n staging stash-recovered-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n staging stash-recovered-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n staging stash-recovered-2 -- cat /source/data/data.txt +stash-demo-2 +``` + +## Cleaning Up + +To clean up the resources created by this tutorial, run: + +```bash +kubectl delete -n prod statefulset stash-demo +kubectl delete -n prod backupconfiguration ss-backup +kubectl delete -n prod pvc --all +kubectl delete -n staging statefulset stash-recovered +kubectl delete -n staging restoresession ss-restore +kubectl delete -n staging pvc --all +kubectl delete -n storage repository gcs-repo +kubectl delete -n storage secret gcs-secret +``` \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/monitoring/_index.md b/content/docs/v2024.8.27/guides/monitoring/_index.md new file mode 100644 index 0000000000..7f3349507d --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/_index.md @@ -0,0 +1,76 @@ +--- +title: Monitoring | Stash +menu: + docs_v2024.8.27: + identifier: monitoring + name: Monitoring + parent: guides + weight: 100 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_1.png b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_1.png new file mode 100644 index 0000000000..1a26acec1b Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_1.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_2.png b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_2.png new file mode 100644 index 0000000000..11d2020579 Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_2.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_3.png b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_3.png new file mode 100644 index 0000000000..9e9c3257ef Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/grafana/images/import_dashboard_3.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/grafana/images/stash_grafana_dashboard.png b/content/docs/v2024.8.27/guides/monitoring/grafana/images/stash_grafana_dashboard.png new file mode 100644 index 0000000000..d62118aa5c Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/grafana/images/stash_grafana_dashboard.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/grafana/index.md b/content/docs/v2024.8.27/guides/monitoring/grafana/index.md new file mode 100644 index 0000000000..07d78c9735 --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/grafana/index.md @@ -0,0 +1,168 @@ +--- +title: Stash Grafana Dashboard | Stash +description: Using Stash Grafana Dashboard +menu: + docs_v2024.8.27: + identifier: monitoring-grafana-dashboard + name: Grafana Dashboard + parent: monitoring + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash Grafana Dashboard + +Grafana provides an elegant graphical user interface to visualize data. You can create a beautiful dashboard easily with a meaningful representation of your Prometheus metrics. + +We provide a pre-built Grafana dashboard to our **Stash** users. In this guide, we are going to show you how you can import this dashboard from your Grafana UI. + +>Some basic metrics are also available for Stash Community Edition. You can create your dashboard using those metrics. + +## Before You Begin + +- At first, you need to setup a Prometheus monitoring stack in your cluster. Please, follow the [Prometheus Operator](/docs/v2024.8.27/guides/monitoring/prom-operator/) guide to setup your monitoring stack if you haven't done already. +- Then, install Stash with monitoring enabled. Please, follow [this guide](/docs/v2024.8.27/guides/monitoring/prom-operator/#enable-monitoring-in-stash) if you haven't done already. +- You must have `stash_dashboard.json` file. Please, contact us to get the dashboard JSON file. + +## Install Panopticon + +Stash Grafana dashboard depends on our another product called [Panopticon](https://blog.byte.builders/post/introducing-panopticon/). It is a Kubernetes state metric exporter similar to [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) but generic for all Kubernetes resources including CRDs. In this section, we are going to show the installation procedure for Panopticon. + +**Issue License:** + +Like other AppsCode products, [Panopticon](https://blog.byte.builders/post/introducing-panopticon/) also need a license to run. You can grab a 30 days trial license for Panopticon from [here](https://license-issuer.appscode.com/?p=panopticon-enterprise). + +>**If you already have a license for KubeDB or Stash, you do not need to issue a new license for Panopticon. Your existing KubeDB or Stash license will work with Panopticon.** + +**Install Panopticon:** + +Now, install Panopticon using the following commands: + +```bash +$ helm repo add appscode https://charts.appscode.com/stable/ +$ helm repo update + +$ helm install panopticon appscode/panopticon -n kubeops \ + --create-namespace \ + --set monitoring.enabled=true \ + --set monitoring.agent=prometheus.io/operator \ + --set monitoring.serviceMonitor.labels.release=prometheus-stack \ + --set-file license=/path/to/license-file.txt +``` + +Make sure to use the appropriate label in `monitoring.serviceMonitor.labels` field according to your setup. This label is used by the Prometheus server to select the desired ServiceMonitor. + +## Import Stash Garafana Dashboard + +At first, let's port-forward the respective service for the Grafana dashboard so that we can access it through our browser locally. + +```bash +❯ kubectl port-forward -n monitoring service/prometheus-stack-grafana 3000:80 +Forwarding from 127.0.0.1:3000 -> 3000 +Forwarding from [::1]:3000 -> 3000 +``` + +Now, go to [http://localhost:3000](http://localhost:3000/) in your browser and login to your Grafana UI. If you followed the [Prometheus Operator](/docs/v2024.8.27/guides/monitoring/prom-operator/) guide to deploy your Prometheus stack, then the default username and password should be `admin`, and `prom-operator` respectively. + +Then, on the Grafana UI, click the `+` icon from the left sidebar and then click on `Import` button as below, + +
+ Import Stash Grafana Dashboard: Step 1 +
Fig: Import Stash Grafana Dashboard (Step 1)
+
+ +Then, on the import UI, you can either upload the `stash_dashboard.json` file by clicking the `Upload JSON file` button or you can paste the content of the JSON file in the text area labeled as `Import via panel json`. + +
+ Import Stash Grafana Dashboard: Step 2 +
Fig: Import Stash Grafana Dashboard (Step 2)
+
+ +Then, on the next step click the `Import` button as below. + +
+ Import Stash Grafana Dashboard: Step 3 +
Fig: Import Stash Grafana Dashboard (Step 3)
+
+ +Once, you have successfully imported the dashboard, you should see the Stash dashboard similar to this. + +
+ Stash Grafana Dashboard +
Fig: Stash Grafana Dashboard
+
+ +>If your cluster does not have any backup configured, you may see the dashboard panels are empty. Nothing to worry about here. Just, run some backups and your dashboard should be populated automatically. + +## Dashboard Tour + +The following video gives a tour of the different components of the Stash Grafana dashboard. + +{{< youtube b5r9PDwl--U >}} diff --git a/content/docs/v2024.8.27/guides/monitoring/overview/images/monitoring-structure.svg b/content/docs/v2024.8.27/guides/monitoring/overview/images/monitoring-structure.svg new file mode 100644 index 0000000000..db271dd23f --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/overview/images/monitoring-structure.svg @@ -0,0 +1,1456 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/monitoring/overview/index.md b/content/docs/v2024.8.27/guides/monitoring/overview/index.md new file mode 100644 index 0000000000..0832ddf249 --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/overview/index.md @@ -0,0 +1,373 @@ +--- +title: Monitoring Overview | Stash +description: A general overview of monitoring Stash +menu: + docs_v2024.8.27: + identifier: monitoring-overview + name: Overview + parent: monitoring + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +> New to Stash? Please start [here](/docs/v2024.8.27/concepts/README). + +# Monitoring Stash + +Stash has native support for monitoring via [Prometheus](https://prometheus.io/). You can use builtin [Prometheus](https://github.com/prometheus/prometheus) scraper or [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) to monitor Stash. This tutorial will show you how Prometheus monitoring works with Stash, what metrics Stash exports, and how to enable monitoring. + +## How Prometheus monitoring works + +Stash monitoring metrics comes from two sources. The first one is [Prometheus PushGateway](https://github.com/prometheus/pushgateway) that running as sidecar of Stash operator pod. The backup and restore processes pushes their metrics in this pushgateway. The second metrics source is [Panopticon](https://blog.byte.builders/post/introducing-panopticon/) which is a generic state metric exporter for Kubernetes developed by AppsCode. It watches Stash CRDs and export necessary metrics. + +The following diagram shows the logical structure of the Stash monitoring flow. + +
+ Stash Monitoring Flow +
Fig: Monitoring process in Stash
+
+ +Stash operator runs two containers. The `operator` container runs controllers and other necessary stuff and the `pushgateway` container runs [prom/pushgateway](https://hub.docker.com/r/prom/pushgateway) image. Stash sidecar from different workloads and backup/restore jobs pushes its metrics to this pushgateway. The pushgateway exposes the metrics at `/metrics` path of `:56789` port. Then, a Prometheus server scrapes these metrics through `stash` or `stash-enterprise` Service and acts as a data source of [Grafana](https://grafana.com/) dashboard. Stash operator itself also provides some valuable metrics at `/metrics` path of `:8443` port. + +The Panopticon tool runs as a separate workload. It watches for Stash CRDs and exports relevant metrics. + +## Available Metrics + +Stash exports metrics for the backup process, restore process, repository status, etc. This section will list the metrics exported by Stash for different processes. + +### Backup Metrics + +This section lists the metrics available for Stash. + +**Backup Session Metrics:** + +A backup session represents a backup run. Stash exports the following metrics regarding the overall backup session. + +| Metric Name | Usage | Community | Enterprise | +| ---------------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- | +| `stash_backupsession_created` | Indicates the timestamp when the BackupSession was created | ✗ | ✓ | +| `stash_backupsession_info` | Metrics about the BackupSession owner, phase etc. | ✗ | ✓ | +| `stash_backup_session_success` | Indicates whether the entire backup session was succeeded or not | ✓ | ✓ | +| `stash_backup_target_count_total` | Indicates the total number of targets that were backed up in this backup session | ✓ | ✓ | +| `stash_backup_session_duration_seconds` | Indicates total time taken to complete the entire backup session | ✓ | ✓ | +| `stash_backup_last_success_time_seconds` | Indicates the time(in Unix epoch) when the last backup session was succeeded | ✓ | ✓ | + +**Backup Target Metrics:** +In each backup session, Stash takes backup of one or more targets. Stash exports the following metrics for the individual backup target. + +| Metric Name | Usage | Community | Enterprise | +| ----------------------------------------------- | -------------------------------------------------------------------------------------- | --------- | ---------- | +| `stash_backupconfiguration_created` | Indicates the timestamp when the BackupConfiguration was created | ✗ | ✓ | +| `stash_backupconfiguration_info` | Metrics about backup target, schedule, driver etc. | ✗ | ✓ | +| `stash_backupconfiguration_conditions` | Metric about condition of backup setup | ✗ | ✓ | +| `stash_backup_target_success` | Indicates whether the backup for a target has succeeded or not | ✓ | ✓ | +| `stash_backup_target_host_count_total` | Indicates the total number of hosts that was backed up for this target | ✓ | ✓ | +| `stash_backup_target_last_success_time_seconds` | Indicates the time (in Unix epoch) when the last backup was successful for this target | ✓ | ✓ | + + +**Backup Host Metrics:** + +Stash may take a backup of multiple hosts for a single target. The following metrics are available for the individual backup hosts. + +| Metric Name | Usage | Community | Enterprise | +| ------------------------------------------------ | ---------------------------------------------------------------------------- | --------- | ---------- | +| `stash_backup_host_backup_success` | Indicates whether the backup for a host succeeded or not | ✓ | ✓ | +| `stash_backup_host_data_size_bytes` | Total size of the target data to backup for a host (in bytes) | ✓ | ✓ | +| `stash_backup_host_data_uploaded_bytes` | Amount of data uploaded to the repository for a host (in bytes) | ✓ | ✓ | +| `stash_backup_host_files_total` | Total number of files that has been backed up for a host | ✓ | ✓ | +| `stash_backup_host_files_new` | Total number of new files that has been created since last backup for a host | ✓ | ✓ | +| `stash_backup_host_files_modified` | Total number of files that has been modified since last backup for a host | ✓ | ✓ | +| `stash_backup_host_files_unmodified` | Total number of files that has not been changed since last backup for a host | ✓ | ✓ | +| `stash_backup_host_backup_duration_seconds` | Indicates total time taken to complete the backup process for a host | ✓ | ✓ | +| `stash_backup_host_data_processing_time_seconds` | Total time taken to process the target data for a host | ✓ | ✓ | + +### Repository Metrics + +Stash exports the following metrics for a repository. + +| Metric Name | Usage | Community | Enterprise | +| ----------------------------------- | ----------------------------------------------------------------------------------------------------- | --------- | ---------- | +| `stash_repository_created` | Indicates the timestamp when the Repository has been created | ✗ | ✓ | +| `stash_repository_integrity` | Result of repository integrity check after the last backup | ✓ | ✓ | +| `stash_repository_size_bytes` | Indicates size of repository after last backup (in bytes) | ✓ | ✓ | +| `stash_repository_snapshot_count` | Indicates the number of snapshots stored in the repository | ✓ | ✓ | +| `stash_repository_snapshot_cleaned` | Indicates the number of old snapshots cleaned up according to retention policy on last backup session | ✓ | ✓ | + +### Restore Metrics + +This section lists the metrics Stash exports for the restore process. + +**Restore Session Metrics:** + +A restore session represents a restore run. Stash exports the following metrics regarding the overall restore process. + +| Metric Name | Usage | Community | Enterprise | +| ---------------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- | +| `stash_restoresession_created` | Indicates the timestamp when the RestoreSession has been created | ✗ | ✓ | +| `stash_restoresession_info` | Metrics about RestoreSession's target, phase etc | ✗ | ✓ | +| `stash_restore_session_success` | Indicates whether the entire restore session was succeeded or not | ✓ | ✓ | +| `stash_restore_session_duration_seconds` | Indicates the total time taken to complete the entire restore session | ✓ | ✓ | +| `stash_restore_target_count_total` | Indicates the total number of targets that were restored in this restore session | ✓ | ✓ | + +**Restore Target Metrics:** + +Stash restore one or more targets in each restore run. Stash exports the following metrics regarding a restore target. + +| Metric Name | Usage | Community | Enterprise | +| --------------------------------------- | ------------------------------------------------------------------------------ | --------- | ---------- | +| `stash_restore_target_success` | Indicates whether the restore for a target has succeeded or not | ✓ | ✓ | +| `stash_restore_target_host_count_total` | Indicates the total number of hosts that were restored for this restore target | ✓ | ✓ | + +**Restore Host Metrics:** + +Stash may restore multiple hosts for a single target. The following metrics are available for the individual restore host. + +| Metric Name | Usage | Community | Enterprise | +| --------------------------------------------- | ------------------------------------------------------------------------- | --------- | ---------- | +| `stash_restore_host_restore_success` | Indicates whether the restore process was succeeded for a host | ✓ | ✓ | +| `stash_restore_host_restore_duration_seconds` | Indicates the total time taken to complete the restore process for a host | ✓ | ✓ | + +### Operator Metrics + +Following metrics are available for the Stash operator. These metrics are accessible through `api` endpoint of `stash` service. + +| Metric Name | Usage | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `apiserver_audit_event_total` | Counter of audit events generated and sent to the audit backend. | +| `apiserver_client_certificate_expiration_seconds` | Distribution of the remaining lifetime on the certificate used to authenticate a request. | +| `apiserver_current_inflight_requests` | Maximal number of currently used inflight request limit of this apiserver per request kind in last second. | +| `apiserver_request_count` | Counter of apiserver requests broken out for each verb, API resource, client, and HTTP response contentType and code. | +| `apiserver_request_latencies` | Response latency distribution in microseconds for each verb, resource, and subresource. | +| `apiserver_request_latencies_summary` | Response latency summary in microseconds for each verb, resource, and subresource. | +| `authenticated_user_requests` | Counter of authenticated requests broken out by username. | + +### Pushgateway Metrics + +The Pushgateway itself also exports some metrics related to Pushgateway build info, HTTP requests handled by it, Go process that running inside it, and CPU & Memory consumed by it, etc. + +**Build and Last Activity:** + +| Metric Name | Usage | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `pushgateway_build_info` | A metric with a constant '1' value labeled by version, revision, branch, and goversion from which pushgateway was built. | +| `push_time_seconds` | Last Unix time when this group was changed in the Pushgateway. | + +**CPU & Memory Related Metrics:** + +| Metric Name | Usage | +| ------------------------------- | ------------------------------------------------------ | +| `process_cpu_seconds_total` | Total user and system CPU time spent in seconds. | +| `process_max_fds` | Maximum number of open file descriptors. | +| `process_open_fds` | Number of open file descriptors. | +| `process_resident_memory_bytes` | Resident memory size in bytes. | +| `process_start_time_seconds` | Start time of the process since unix epoch in seconds. | +| `process_virtual_memory_bytes` | Virtual memory size in bytes. | + +**Go Environment Related Metrics:** + +| Metric Name | Usage | +| --------------------------------------- | ------------------------------------------------------------------------------------------- | +| `go_gc_duration_seconds` | A summary of the GC invocation durations. | +| `go_goroutines` | Number of goroutines that currently exist. | +| `go_info` | Information about the Go environment. | +| `go_memstats_alloc_bytes` | Number of bytes allocated and still in use. | +| `go_memstats_alloc_bytes_total` | Total number of bytes allocated, even if freed. | +| `go_memstats_buck_hash_sys_bytes` | Number of bytes used by the profiling bucket hash table. | +| `go_memstats_frees_total` | Total number of frees. | +| `go_memstats_gc_cpu_fraction` | The fraction of this program's available CPU time used by the GC since the program started. | +| `go_memstats_gc_sys_bytes` | Number of bytes used for garbage collection system metadata. | +| `go_memstats_heap_alloc_bytes` | Number of heap bytes allocated and still in use. | +| `go_memstats_heap_idle_bytes` | Number of heap bytes waiting to be used. | +| `go_memstats_heap_inuse_bytes` | Number of heap bytes that are in use. | +| `go_memstats_heap_objects` | Number of allocated objects. | +| `go_memstats_heap_released_bytes_total` | Total number of heap bytes released to OS. | +| `go_memstats_heap_sys_bytes` | Number of heap bytes obtained from system. | +| `go_memstats_last_gc_time_seconds` | Number of seconds since 1970 of last garbage collection. | +| `go_memstats_lookups_total` | Total number of pointer lookups. | +| `go_memstats_mallocs_total` | Total number of mallocs. | +| `go_memstats_mcache_inuse_bytes` | Number of bytes in use by mcache structures. | +| `go_memstats_mcache_sys_bytes` | Number of bytes used for mcache structures obtained from system. | +| `go_memstats_mspan_inuse_bytes` | Number of bytes in use by mspan structures. | +| `go_memstats_mspan_sys_bytes` | Number of bytes used for mspan structures obtained from system. | +| `go_memstats_next_gc_bytes` | Number of heap bytes when next garbage collection will take place. | +| `go_memstats_other_sys_bytes` | Number of bytes used for other system allocations. | +| `go_memstats_stack_inuse_bytes` | Number of bytes in use by the stack allocator. | +| `go_memstats_stack_sys_bytes` | Number of bytes obtained from system for stack allocator. | +| `go_memstats_sys_bytes` | Number of bytes obtained by system. Sum of all system allocations. | +| `go_threads` | Number of OS threads created. | + +**HTTP Request Related Metrics:** + +| Metric Name | Usage | +| ------------------------------------ | ------------------------------------------- | +| `http_request_duration_microseconds` | The HTTP request latencies in microseconds. | +| `http_request_size_bytes` | The HTTP request sizes in bytes. | +| `http_requests_total` | Total number of HTTP requests made. | +| `http_response_size_bytes` | The HTTP response sizes in bytes. | + +## How to Enable Monitoring + +You have to enable Prometheus monitoring during installing / upgrading Stash. The following parameters are available to configure monitoring in Stash. + +| Helm Values | Acceptable Values | Default | Usage | +| --------------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `stash-enterprise.monitoring.agent` | `prometheus.io/builtin` or `prometheus.io/operator` | `none` | Specify which monitoring agent to use for monitoring Stash. | +| `stash-enterprise.monitoring.backup` | `true` or `false` | `false` | Specify whether to monitor Stash backup and restore. | +| `stash-enterprise.monitoring.operator` | `true` or `false` | `false` | Specify whether to monitor Stash operator. | +| `stash-enterprise.monitoring.serviceMonitor.labels` | any label | `app: ` and `release: `. | Specify the labels for ServiceMonitor. Prometheus crd will select ServiceMonitor using these labels. Only usable when monitoring agent is `prometheus.io/operator`. | + +>Use `stash-community` instead of `stash-enterprise` if you are using Stash Community edition. + +The following instruction show example of enabling monitoring in Stash for the Prometheus server deployed with Prometheus Operator. You can check the [Builtin Prometheus](/docs/v2024.8.27/guides/monitoring/prom-builtin/) scraper guide if you are managing your Prometheus server manually. + + +
+
+ +### New Installation + +If you haven't installed Stash yet, run the following command to enable Prometheus monitoring during installation + +**Helm 3:** + +```bash +$ helm install stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise. monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack \ + --set-file global.license=/path/to/license-file.txt \ + --wait --burst-limit=10000 --debug +``` + +**YAML (with Helm 3):** + +```bash +$ helm template stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --no-hooks \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack \ + --set-file global.license=/path/to/license-file.txt | kubectl apply -f - +``` + +
+
+ +### Existing Installation + +If you have installed Stash already in your cluster but didn't enable monitoring during installation, you can use `helm upgrade` command to enable monitoring in the existing installation. + +**Helm 3:** + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --reuse-values \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack \ + --wait --burst-limit=10000 --debug +``` + +**YAML (with Helm 3):** + +```bash +$ helm template stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --no-hooks \ + --reuse-values \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack | kubectl apply -f - +``` + +
+
diff --git a/content/docs/v2024.8.27/guides/monitoring/profiler.yaml b/content/docs/v2024.8.27/guides/monitoring/profiler.yaml new file mode 100644 index 0000000000..3c61478e40 --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/profiler.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: appscode-system-profiler +rules: +- nonResourceURLs: ["/debug/pprof/", "/debug/pprof/*"] + verbs: ["get", "post"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: appscode-system-profiler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: appscode:system:profiler +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: User + name: system:anonymous diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-config.yaml b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-config.yaml new file mode 100644 index 0000000000..e203171276 --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-config.yaml @@ -0,0 +1,103 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-prometheus-server-conf + labels: + name: stash-prometheus-server-conf + namespace: monitoring +data: + prometheus.yml: |- + global: + scrape_interval: 30s + scrape_timeout: 10s + evaluation_interval: 30s + scrape_configs: + - job_name: stash-pushgateway + scrape_interval: 30s + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + honor_labels: true + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_instance] + regex: stash # default label for stash Service is "app.kubernetes.io/instance: stash". customize this field according to label of stash Service of your setup. + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + regex: true + action: keep + - source_labels: [__meta_kubernetes_endpoint_port_name] + regex: pushgateway + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_pushgateway_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_pushgateway_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_pushgateway_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + - job_name: stash-operator + scrape_interval: 30s + scrape_timeout: 10s + metrics_path: /metrics + scheme: https + kubernetes_sd_configs: + - role: endpoints + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + tls_config: + ca_file: /etc/prometheus/secret/stash-apiserver-cert/tls.crt + server_name: stash.kube-system.svc + relabel_configs: + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_instance] + regex: stash # default label for stash Service is "app.kubernetes.io/instance: stash". customize this field according to label of stash Service of your setup. + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + regex: true + action: keep + - source_labels: [__meta_kubernetes_endpoint_port_name] + regex: api + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_operator_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_operator_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_operator_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-deployment.yaml b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-deployment.yaml new file mode 100644 index 0000000000..b509dc7e4b --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-deployment.yaml @@ -0,0 +1,45 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stash-prometheus-server + namespace: monitoring +spec: + replicas: 1 + selector: + matchLabels: + app: prometheus + template: + metadata: + labels: + app: prometheus + spec: + serviceAccountName: stash-prometheus-server + containers: + - name: prometheus + image: prom/prometheus:v2.23.0 + args: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus/" + ports: + - containerPort: 9090 + volumeMounts: + - name: prometheus-config-volume + mountPath: /etc/prometheus/ + - name: prometheus-storage-volume + mountPath: /prometheus/ + - name: stash-apiserver-cert + mountPath: /etc/prometheus/secret/stash-apiserver-cert + volumes: + - name: prometheus-config-volume + configMap: + defaultMode: 420 + name: stash-prometheus-server-conf + - name: prometheus-storage-volume + emptyDir: {} + - name: stash-apiserver-cert + secret: + defaultMode: 420 + secretName: stash-apiserver-cert + items: # avoid mounting private key + - key: tls.crt + path: tls.crt diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-rbac.yaml b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-rbac.yaml new file mode 100644 index 0000000000..08fdc1282b --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/examples/prom-rbac.yaml @@ -0,0 +1,39 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: stash-prometheus-server +rules: +- apiGroups: [""] + resources: + - nodes + - nodes/proxy + - services + - endpoints + - pods + verbs: ["get", "list", "watch"] +- apiGroups: + - extensions + resources: + - ingresses + verbs: ["get", "list", "watch"] +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: stash-prometheus-server + namespace: monitoring +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: stash-prometheus-server +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: stash-prometheus-server +subjects: +- kind: ServiceAccount + name: stash-prometheus-server + namespace: monitoring diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-builtin/images/prom_builtin_target.png b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/images/prom_builtin_target.png new file mode 100644 index 0000000000..f22df73162 Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/images/prom_builtin_target.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-builtin/index.md b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/index.md new file mode 100644 index 0000000000..8eaa79881f --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/prom-builtin/index.md @@ -0,0 +1,502 @@ +--- +title: Builtin Prometheus | Stash +description: Monitor Stash using official Prometheus server +menu: + docs_v2024.8.27: + identifier: monitoring-builtin + name: Builtin Prometheus + parent: monitoring + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Monitoring Stash with builtin Prometheus + +This tutorial will show you how to configure builtin [Prometheus](https://github.com/prometheus/prometheus) scraper to monitor Stash backup and restore operations as well as the Stash operator. + +To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy the Prometheus server and its respective resources. Create the namespace as below if you haven't done already. + +```bash +$ kubectl create ns monitoring +namespace/monitoring created +``` + +## Enable Monitoring in Stash + +At first, we have to enable Prometheus monitoring in Stash during installation. We have to use `prometheus.io/builtin` as the agent for monitoring via built-in Prometheus. + +Here, we are going to enable monitoring for both backup metrics and operator metrics using Helm 3. + + +
+
+ +### New Installation + +If you haven't installed Stash yet, run the following command to enable Prometheus monitoring during installation + +```bash +$ helm install stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/builtin \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set-file global.license=/path/to/license-file.txt \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +### Existing Installation + +If you have installed Stash already in your cluster but didn't enable monitoring during installation, you can use `helm upgrade` command to enable monitoring in the existing installation. + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --reuse-values \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/builtin \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +>Use `stash-community` instead of `stash-enterprise` if you are using Stash Community edition. + +This will add the necessary annotations to `stash-stash-enterprise` Service. Prometheus server will discover the respective endpoints using those annotations. + +Let's verify the annotations has been added to the Service, + +```bash +$ kubectl get service -n kube-system stash-stash-enterprise -o yaml +``` + +```yaml +apiVersion: v1 +kind: Service +metadata: + annotations: + meta.helm.sh/release-name: stash-stash-enterprise + meta.helm.sh/release-namespace: kube-system + prometheus.io/operator_path: /metrics + prometheus.io/operator_port: "8443" + prometheus.io/operator_scheme: https + prometheus.io/pushgateway_path: /metrics + prometheus.io/pushgateway_port: "56789" + prometheus.io/pushgateway_scheme: http + prometheus.io/scrape: "true" + labels: + app.kubernetes.io/instance: stash + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: stash-enterprise + app.kubernetes.io/version: v0.15.0 + helm.sh/chart: stash-enterprise-v0.15.0 + name: stash-stash-enterprise + namespace: kube-system +spec: + clusterIP: 10.96.101.136 + clusterIPs: + - 10.96.101.136 + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: api + port: 443 + protocol: TCP + targetPort: 8443 + - name: pushgateway + port: 56789 + protocol: TCP + targetPort: 56789 + selector: + app.kubernetes.io/instance: stash + app.kubernetes.io/name: stash-enterprise + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} +``` + +The `stash-stash-enterprise` Service has two endpoints. The `pushgateway` endpoint exports backup, restore, and repository metrics and the `api` endpoint exports Stash operator metrics. + +If you look at the annotations section of the above Service, you should see that Stash has added Prometheus specific annotations (prefixed with `prometheus.io`) to the Service. + +Here, `prometheus.io/scrape: "true"` annotation indicates that Prometheus should scrape metrics for this service. + +The following three annotations point to `pushgateway` endpoint which provides backup and restore metrics. + +```ini +prometheus.io/pushgateway_path: /metrics +prometheus.io/pushgateway_port: "56789" +prometheus.io/pushgateway_scheme: http +``` + +The following three annotations point to `api` endpoint which provides operator metrics. + +```ini +prometheus.io/builtin_path: /metrics +prometheus.io/builtin_port: "8443" +prometheus.io/builtin_scheme: https +``` + +Now, we are ready to configure our Prometheus server to scrape those metrics. + +## Deploy Prometheus Server + +In this section, we are going to configure & deploy a Prometheus server to scrape Stash metrics using the `stash` Service. We are going to deploy the Prometheus server in `monitoring` namespace. + +**Copy Certificate Secret:** + +We have deployed Stash in `kube-system` namespace. Stash exports operator metrics via TLS secured `api` endpoint. So, the Prometheus server needs to provide the respective certificate during scraping the metrics from this endpoint. Stash should create a secret named `stash-stash-enterprise-apiserver-certs` with the certificate in `kube-system`. + +Let's verify that the Secret has been created in `kube-system` namespace. + +```bash +❯ kubectl get secret -n kube-system -l app.kubernetes.io/instance=stash +NAME TYPE DATA AGE +stash-stash-enterprise-apiserver-cert Opaque 2 45m +stash-stash-enterprise-license Opaque 1 45m +``` + +Now, we have to copy this Secret in `monitoring` namespace so that we can mount the certificate into our Prometheus server. + +Let's copy the `stash-stash-enterprise-apiserver-cert` Secret into `monitoring` namespace using the following command, + +```bash +❯ kubectl get secret stash-stash-enterprise-apiserver-cert --namespace=kube-system -oyaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace=monitoring -f - +``` + +Verify that the Secret has been copied successfully in the `monitoring` namespace, + +```bash +❯ kubectl get secret -n monitoring -l app.kubernetes.io/instance=stash +NAME TYPE DATA AGE +stash-stash-enterprise-apiserver-cert Opaque 2 21s +``` + +**Create RBAC:** + +Now, let's create the necessary RBAC stuffs for the Prometheus server, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/monitoring/prom-builtin/examples/prom-rbac.yaml +clusterrole.rbac.authorization.k8s.io/stash-prometheus-server created +serviceaccount/stash-prometheus-server created +clusterrolebinding.rbac.authorization.k8s.io/stash-prometheus-server created +``` + +**Create ConfigMap:** + +Now, create a ConfigMap with the necessary scraping configuration. Bellow, the YAML of the ConfigMap that we are going to create for scrapping metrics from Stash. + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: stash-prometheus-server-conf + labels: + name: stash-prometheus-server-conf + namespace: monitoring +data: + prometheus.yml: |- + global: + scrape_interval: 30s + scrape_timeout: 10s + evaluation_interval: 30s + scrape_configs: + - job_name: stash-pushgateway + scrape_interval: 30s + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + honor_labels: true + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_instance] + regex: stash # default label for stash Service is "app.kubernetes.io/instance: stash". customize this field according to label of stash Service of your setup. + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + regex: true + action: keep + - source_labels: [__meta_kubernetes_endpoint_port_name] + regex: pushgateway + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_pushgateway_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_pushgateway_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_pushgateway_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + - job_name: stash-operator + scrape_interval: 30s + scrape_timeout: 10s + metrics_path: /metrics + scheme: https + kubernetes_sd_configs: + - role: endpoints + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + tls_config: + ca_file: /etc/prometheus/secret/stash-stash-enterprise-apiserver-cert/tls.crt + server_name: stash-stash-enterprise.kube-system.svc + relabel_configs: + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_instance] + regex: stash # default label for stash Service is "app.kubernetes.io/instance: stash". customize this field according to label of stash Service of your setup. + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + regex: true + action: keep + - source_labels: [__meta_kubernetes_endpoint_port_name] + regex: api + action: keep + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_operator_path] + regex: (.+) + target_label: __metrics_path__ + action: replace + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_operator_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_operator_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace +``` + +Here, we have two scraping jobs. The `stash-pushgateway` job scrapes the backup and restore metrics and the `stash-operator` job scrapes operator metrics. + +Notice the `tls_config` field of `stash-operator` job. We have provided the certificate file through `ca_file` field. This certificate comes from `stash-stash-enterprise-apiserver-cert` that we are going to mount in the Prometheus Deployment. Here, `server_name` is used to verify hostname. In our case, the certificate is valid for hostname `server` and `stash-stash-enterprise.kube-system.svc`. + +Also, note that we have provided a bearer-token file through `bearer_token_file` field. This file is a token for `stash-prometheus-server` ServiceAccount that we have created during creating the RBAC stuffs. This is required for authorizing Prometheus to Stash API Server. + +Let's create the ConfigMap we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/monitoring/prom-builtin/examples/prom-config.yaml +configmap/stash-prometheus-server-conf created +``` + +**Deploy Prometheus:** + +Now, we are ready to deploy our Prometheus server. YAML for the Deployment that we are going to create is shown below. + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stash-prometheus-server + namespace: monitoring +spec: + replicas: 1 + selector: + matchLabels: + app: prometheus + template: + metadata: + labels: + app: prometheus + spec: + serviceAccountName: stash-prometheus-server + containers: + - name: prometheus + image: prom/prometheus:v2.23.0 + args: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus/" + ports: + - containerPort: 9090 + volumeMounts: + - name: prometheus-config-volume + mountPath: /etc/prometheus/ + - name: prometheus-storage-volume + mountPath: /prometheus/ + - name: stash-stash-enterprise-apiserver-cert + mountPath: /etc/prometheus/secret/stash-stash-enterprise-apiserver-cert + volumes: + - name: prometheus-config-volume + configMap: + defaultMode: 420 + name: stash-prometheus-server-conf + - name: prometheus-storage-volume + emptyDir: {} + - name: stash-stash-enterprise-apiserver-cert + secret: + defaultMode: 420 + secretName: stash-stash-enterprise-apiserver-cert + items: # avoid mounting private key + - key: tls.crt + path: tls.crt +``` + +Notice that, we have mounted `stash-stash-enterprise-apiserver-cert` secret as a volume at `/etc/prometheus/secret/stash-stash-enterprise-apiserver-cert` directory. We have also mounted the ConfigMap `stash-prometheus-server-conf` that we have created earlier with the necessary configuration to scrape metrics from Stash. + +Let's create the Deployment we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/monitoring/prom-builtin/examples/prom-deployment.yaml +deployment.apps/stash-prometheus-server created +``` + +Now, wait for the Prometheus server to go into `Running` state, + +```bash +$ kubectl get pods -n monitoring +NAME READY STATUS RESTARTS AGE +stash-prometheus-server-77d6bc8b68-wtxlt 1/1 Running 0 66s +``` + +Once the Prometheus server Pod goes into the `Running` state, it should automatically discover the Stash endpoints using the configuration we have provided in the ConfigMap. + +### Verify Monitoring Metrics + +Now, we are going to verify whether the Prometheus server has discovered the Stash endpoints or not. The Prometheus server we have deployed above is running on port `9090`. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access the Prometheus web UI. + +Run following command on a separate terminal to port-forward the Prometheus server Pod, + +```bash +$ kubectl port-forward -n monitoring stash-prometheus-server-77d6bc8b68-wtxlt 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, we can access the web UI at `localhost:9090`. Open [http://localhost:9090/targets](http://localhost:9090/targets) in your browser. You should see `pushgateway` and `api` endpoints of `stash` service as targets. + +
+ Stash Monitoring Flow +
Fig: Prometheus dashboard
+
+ +As you can see from the above image that the Prometheus server has successfully discovered the Stash endpoints. Now, if you perform backup and restore operations, you should see the respective metrics have been scrapped by the Prometheus server. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete clusterrole stash-prometheus-server +kubectl delete clusterrolebinding stash-prometheus-server + +kubectl delete serviceaccount/stash-prometheus-server -n monitoring +kubectl delete configmap/stash-prometheus-server-conf -n monitoring +kubectl delete deployment stash-prometheus-server -n monitoring +kubectl delete secret stash-stash-enterprise-apiserver-cert -n monitoring + +kubectl delete ns monitoring +``` + +To uninstall Stash follow this [guide](/docs/v2024.8.27/setup/README). diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-operator/images/prom_operator_web_ui.png b/content/docs/v2024.8.27/guides/monitoring/prom-operator/images/prom_operator_web_ui.png new file mode 100644 index 0000000000..9d8e506d10 Binary files /dev/null and b/content/docs/v2024.8.27/guides/monitoring/prom-operator/images/prom_operator_web_ui.png differ diff --git a/content/docs/v2024.8.27/guides/monitoring/prom-operator/index.md b/content/docs/v2024.8.27/guides/monitoring/prom-operator/index.md new file mode 100644 index 0000000000..d870a7c603 --- /dev/null +++ b/content/docs/v2024.8.27/guides/monitoring/prom-operator/index.md @@ -0,0 +1,369 @@ +--- +title: Prometheus Operator | Stash +description: Monitor Stash using Prometheus operator +menu: + docs_v2024.8.27: + identifier: monitoring-prometheus-operator + name: Prometheus Operator + parent: monitoring + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Monitoring Using Prometheus Operator + +[Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) provides a simple and Kubernetes native way to deploy and configure a Prometheus server. This tutorial will show you how to use the Prometheus operator for monitoring Stash. + +To keep Prometheus resources isolated, we are going to use a separate namespace `monitoring` to deploy the Prometheus operator and respective resources. Create the namespace if you haven't created it yet, + +```bash +$ kubectl create ns monitoring +namespace/monitoring created +``` + +## Install Prometheus Stack + +At first, you have to install Prometheus operator in your cluster. In this section, we are going to install Prometheus operator from [prometheus-community/kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack). You can skip this section if you already have Prometheus operator running. + +Install `prometheus-community/kube-prometheus-stack` chart as below, + +- Add necessary helm repositories. + +```bash +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm repo add stable https://charts.helm.sh/stable +helm repo update +``` + +- Install `kube-prometheus-stack` chart. + +```bash +helm install prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring +``` + +This chart will install [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator), [kubernetes/kube-state-metrics](https://github.com/kubernetes/kube-state-metrics), [prometheus/node_exporter](https://github.com/prometheus/node_exporter), and [grafana/grafana](https://github.com/grafana/grafana) etc. + +The above chart will also deploy a Prometheus server. Verify that the Prometheus server has been deployed by the following command: + +```bash +❯ kubectl get prometheus -n monitoring +NAME VERSION REPLICAS AGE +prometheus-stack-kube-prom-prometheus v2.28.1 1 69m +``` + +Let's check the YAML of the above Prometheus object, + +```bash +❯ kubectl get prometheus -n monitoring prometheus-stack-kube-prom-prometheus -o yaml +``` + +```yaml +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + annotations: + meta.helm.sh/release-name: prometheus-stack + meta.helm.sh/release-namespace: monitoring + creationTimestamp: "2021-09-27T04:49:18Z" + generation: 1 + labels: + app: kube-prometheus-stack-prometheus + app.kubernetes.io/instance: prometheus-stack + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: kube-prometheus-stack + app.kubernetes.io/version: 18.1.0 + chart: kube-prometheus-stack-18.1.0 + heritage: Helm + release: prometheus-stack + name: prometheus-stack-kube-prom-prometheus + namespace: monitoring + resourceVersion: "1406" + uid: e3100f51-1e17-41fd-81a3-a8f2fb7b6a70 +spec: + alerting: + alertmanagers: + - apiVersion: v2 + name: prometheus-stack-kube-prom-alertmanager + namespace: monitoring + pathPrefix: / + port: web + enableAdminAPI: false + externalUrl: http://prometheus-stack-kube-prom-prometheus.monitoring:9090 + image: quay.io/prometheus/prometheus:v2.28.1 + listenLocal: false + logFormat: logfmt + logLevel: info + paused: false + podMonitorNamespaceSelector: {} + podMonitorSelector: + matchLabels: + release: prometheus-stack + portName: web + probeNamespaceSelector: {} + probeSelector: + matchLabels: + release: prometheus-stack + replicas: 1 + retention: 10d + routePrefix: / + ruleNamespaceSelector: {} + ruleSelector: + matchLabels: + app: kube-prometheus-stack + release: prometheus-stack + securityContext: + fsGroup: 2000 + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + serviceAccountName: prometheus-stack-kube-prom-prometheus + serviceMonitorNamespaceSelector: {} + serviceMonitorSelector: + matchLabels: + release: prometheus-stack + shards: 1 + version: v2.28.1 +``` + +Notice the following ServiceMonitor related sections, + +```yaml +serviceMonitorNamespaceSelector: {} # select from all namespaces +serviceMonitorSelector: + matchLabels: + release: prometheus-stack +``` + +Here, you can see the Prometheus server is selecting the ServiceMonitors from all namespaces that have `release: prometheus-stack` label. + +The above chart will also create a Service for the Prometheus server so that we can access the Prometheus Web UI. Let's verify the Service has been created, + +```bash +$ kubectl get service -n monitoring +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +alertmanager-operated ClusterIP None 9093/TCP,9094/TCP,9094/UDP 10m +prometheus-operated ClusterIP None 9090/TCP 10m +prometheus-stack-grafana ClusterIP 10.105.244.221 80/TCP 11m +prometheus-stack-kube-prom-alertmanager ClusterIP 10.97.172.208 9093/TCP 11m +prometheus-stack-kube-prom-operator ClusterIP 10.97.94.139 443/TCP 11m +prometheus-stack-kube-prom-prometheus ClusterIP 10.105.123.218 9090/TCP 11m +prometheus-stack-kube-state-metrics ClusterIP 10.96.52.8 8080/TCP 11m +prometheus-stack-prometheus-node-exporter ClusterIP 10.107.204.248 9100/TCP 11m +``` + +Here, we can use the `prometheus-stack-kube-prom-prometheus` Service to access the Web UI of our Prometheus Server. + +## Enable Monitoring in Stash + +In this section, we are going to enable Prometheus monitoring in Stash. We have to enable Prometheus monitoring during installing Stash. You have to use `prometheus.io/operator` as the agent for monitoring via Prometheus operator. + +Here, we are going to enable monitoring for both backup metrics and operator metrics using Helm 3. We are going to tell Stash to create ServiceMonitor with `release: prometheus-stack` label so that the Prometheus server we have deployed in the previous section can collect Stash metrics without any further configuration. + + +
+
+ +### New Installation + +If you haven't installed Stash yet, run the following command to enable Prometheus monitoring during installation + +```bash +$ helm install stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack \ + --set-file global.license=/path/to/license-file.txt \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +### Existing Installation + +If you have installed Stash already in your cluster but didn't enable monitoring during installation, you can use `helm upgrade` command to enable monitoring in the existing installation. + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --reuse-values \ + --set features.enterprise=true \ + --set stash-enterprise.monitoring.agent=prometheus.io/operator \ + --set stash-enterprise.monitoring.backup=true \ + --set stash-enterprise.monitoring.operator=true \ + --set stash-enterprise.monitoring.serviceMonitor.labels.release=prometheus-stack \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +>Use `stash-community` instead of `stash-enterprise` if you are using Stash Community edition. + +This will create a `ServiceMonitor` object with the same name and namespace as the Stash operator. The `ServiceMonitor` will have the label `release: prometheus-stack` as we have provided it through the `--set monitoring.serviceMonitor.labels` parameter. + +Let's verify that the ServiceMonitor has been created in the Stash operator namespace. + +```bash +❯ kubectl get servicemonitor -n kube-system +NAME AGE +stash-stash-enterprise 94s +``` + +Let's check the YAML of the `ServiceMonitor` object, + +```bash +❯ kubectl get servicemonitor -n kube-system stash-stash-enterprise -o yaml +``` + +```yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + annotations: + meta.helm.sh/release-name: stash + meta.helm.sh/release-namespace: kube-system + creationTimestamp: "2021-09-27T05:49:05Z" + generation: 1 + labels: + app.kubernetes.io/managed-by: Helm + release: prometheus-stack + name: stash-stash-enterprise + namespace: kube-system + resourceVersion: "8312" + uid: 6b51920d-9cf2-4604-ba2b-b77c30d8f0d3 +spec: + endpoints: + - honorLabels: true + port: pushgateway + - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + port: api + scheme: https + tlsConfig: + ca: + secret: + key: tls.crt + name: stash-stash-enterprise-apiserver-cert + serverName: stash-stash-enterprise.kube-system.svc + namespaceSelector: + matchNames: + - kube-system + selector: + matchLabels: + app.kubernetes.io/instance: stash + app.kubernetes.io/name: stash-enterprise +``` + +Here, we have two endpoints in `spec.endpoints` section. The `pushgateway` endpoint exports backup and recovery metrics and the `api` endpoint exports the operator metrics. + +## Verify Monitoring + +As soon as the Stash operator pod goes into the `Running` state, the Prometheus server we have deployed in the first section should discover the endpoints exposed by Stash for metrics. + +Now, we are going to [forward port](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) of `prometheus-stack-kube-prom-prometheus` Service to access the Prometheus web UI. Run the following command on a separate terminal, + +```bash +$ kubectl port-forward -n monitoring service/prometheus-stack-kube-prom-prometheus 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, you can access the Web UI at `localhost:9090`. Open [http://localhost:9090/targets](http://localhost:9090/targets) in your browser. You should see `pushgateway` and `api` endpoints of the Stash operator are among the targets. This verifies that the Prometheus server is scrapping Stash metrics. + +
+ Stash Monitoring Flow +
Fig: Prometheus Web UI
+
+ +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +# cleanup Prometheus resources +helm delete prometheus-stack -n monitoring + +# delete namespace +kubectl delete ns monitoring +``` + +To uninstall Stash follow this [guide](/docs/v2024.8.27/setup/README). diff --git a/content/docs/v2024.8.27/guides/platforms/_index.md b/content/docs/v2024.8.27/guides/platforms/_index.md new file mode 100644 index 0000000000..bd3e29a2da --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/_index.md @@ -0,0 +1,76 @@ +--- +title: Platforms | Stash +menu: + docs_v2024.8.27: + identifier: platforms + name: Platforms + parent: guides + weight: 90 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..859039c0c8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: azure-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/deployment.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/deployment.yaml new file mode 100644 index 0000000000..bd465037e8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/pvc.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/pvc.yaml new file mode 100644 index 0000000000..41e2ef50a3 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/recovered_deployment.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/recovered_deployment.yaml new file mode 100644 index 0000000000..ae126526fe --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/recovered_deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/repository.yaml new file mode 100644 index 0000000000..4c8fdbe9ee --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: azure-repo + namespace: demo +spec: + backend: + azure: + container: stashqa + prefix: /source/data + storageSecretName: azure-secret diff --git a/content/docs/v2024.8.27/guides/platforms/aks/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/aks/examples/restoresession.yaml new file mode 100644 index 0000000000..866d75dd58 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: azure-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ diff --git a/content/docs/v2024.8.27/guides/platforms/aks/images/aks.png b/content/docs/v2024.8.27/guides/platforms/aks/images/aks.png new file mode 100644 index 0000000000..b4293304af Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/aks/images/aks.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/aks/index.md b/content/docs/v2024.8.27/guides/platforms/aks/index.md new file mode 100644 index 0000000000..7a2c9cd8e7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/aks/index.md @@ -0,0 +1,741 @@ +--- +title: AKS | Stash +description: Using Stash in Azure Kubernetes Service +menu: + docs_v2024.8.27: + identifier: platforms-aks + name: AKS + parent: platforms + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Stash with Azure Kubernetes Service (AKS) + +This guide will show you how to use Stash to backup and restore volumes of a Kubernetes workload running in [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/). Here, we are going to backup a volume of a Deployment into [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/). Then, we are going to show how to restore this backed up data into a volume of another Deployment. + +## Before You Begin + +- At first, you need to have an AKS cluster. If you don't already have a cluster, create one from [here](https://azure.microsoft.com/en-us/services/kubernetes-service/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- You will need access to [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) to store the backup snapshots. + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +**Choosing StorageClass:** + +Stash works with any `StorageClass`. Check available `StorageClass` in your cluster using the following command: + +```bash +$ kubectl get storageclass -n demo +NAME PROVISIONER AGE +standard kubernetes.io/azure-disk 3m +``` + +Here, we have `standard` StorageClass in our cluster. + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/platforms/aks/examples](/docs/v2024.8.27/guides/platforms/aks/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Backup the Volume of a Deployment + +Here, we are going to deploy a Deployment with a PVC. This Deployment will automatically generate some sample data into the PVC. Then, we are going to backup this sample data using Stash. + +### Prepare Workload + +At first, let's deploy the workload whose volumes we are going to backup. Here, we are going create a PVC and deploy a Deployment with this PVC. + +**Create PVC:** + +Below is the YAML of the sample PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +``` + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/pvc.yaml +persistentvolumeclaim/stash-sample-data created +``` + +**Deploy Deployment:** + +Now, we are going to deploy a Deployment that uses the above PVC. This Deployment will automatically generate sample data (`data.txt` file) in `/source/data` directory where we have mounted the PVC. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data +``` + +Let's create the Deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/deployment.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-8685fb5478-4psw8 1/1 Running 0 4m47s +stash-demo-8685fb5478-89flr 1/1 Running 0 4m47s +stash-demo-8685fb5478-fjggh 1/1 Running 0 4m47s +``` + +To verify that the sample data has been created in `/source/data` directory, use the following command: + +```bash +$ kubectl exec -n demo stash-demo-8685fb5478-4psw8 -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed up data into an [Azure Blob Container](https://azure.microsoft.com/en-us/services/storage/blobs/). At first, we need to create a secret with the access credentials to our Azure blob storage account. Then, we have to create a `Repository` crd that will hold the information about our backend storage. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Secret:** + +Let's create a secret called `azure-secret` with access credentials to our desired [Azure Blob Container](https://azure.microsoft.com/en-us/services/storage/blobs/), + +```bash +$ echo -n 'changeit' >RESTIC_PASSWORD +$ echo -n '' > AZURE_ACCOUNT_NAME +$ echo -n '' > AZURE_ACCOUNT_KEY +$ kubectl create secret generic -n demo azure-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AZURE_ACCOUNT_NAME \ + --from-file=./AZURE_ACCOUNT_KEY +secret/azure-secret created +``` + +Verify that the secret has been created successfully, + +```bash +$ kubectl get secret -n demo azure-secret -o yaml +``` + +```yaml +apiVersion: v1 +data: + AZURE_ACCOUNT_KEY: dXNlIHlvdXIgb3duIGNyZWRlbnRpYWxz # + AZURE_ACCOUNT_NAME: dXNlIHlvdXIgb3duIGNyZWRlbnRpYWxz # + RESTIC_PASSWORD: Y2hhbmdlaXQ= +kind: Secret +metadata: + creationTimestamp: "2019-07-18T04:22:58Z" + name: azure-secret + namespace: demo + resourceVersion: "68336" + selfLink: /api/v1/namespaces/demo/secrets/azure-secret + uid: b8c0685d-a913-11e9-9330-ea541341590e +type: Opaque +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired blob container. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: azure-repo + namespace: demo +spec: + backend: + azure: + container: stashqa + prefix: /source/data + storageSecretName: azure-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/repository.yaml +repository.stash.appscode.com/azure-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take a periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: azure-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `azure-repo` that holds backend [Azure Blob Container](https://azure.microsoft.com/en-us/services/storage/blobs/) information. +- `spec.target.ref` refers to the `stash-demo` Deployment for backup target. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-5bdc545845-45smg 2/2 Running 0 45s +stash-demo-5bdc545845-dw4dn 2/2 Running 0 54s +stash-demo-5bdc545845-ncrhw 2/2 Running 0 61s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-5bdc545845-45smg -o yaml +apiVersion: v1 +kind: Pod +metadata: + labels: + app: stash-demo + pod-template-hash: 5bdc545845 + name: stash-demo-5bdc545845-45smg + namespace: demo +... +spec: + containers: + - args: + - echo sample_data > /source/data/data.txt && sleep 3000 + command: + - /bin/sh + - -c + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-h6sqd + readOnly: true + - args: + - run-backup + - --backup-configuration=deployment-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: suaas21/stash:volumeTemp_linux_amd64 + imagePullPolicy: IfNotPresent + name: stash + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-h6sqd + readOnly: true + dnsPolicy: ClusterFirst + nodeName: aks-agentpool-72468344-0 + priority: 0 + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +deployment-backup */1 * * * * False 0 35s 64s +``` + +**Wait for BackupSession:** + +The `deployment-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. The sidecar container will watch for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 2 kubectl get backupsession -n demo +Every 1.0s: kubectl get backupsession -n demo suaas-appscode: Mon Jun 24 10:23:08 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-1561350125 BackupConfiguration deployment-backup Succeeded 63s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `azure-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +azure-repo true 8 B 1 2s 1m10s +``` + +Now, if we navigate to the Azure blob container, we are going to see backed up data has been stored in `/source/data` directory as specified by `spec.backend.azure.prefix` field of `Repository` crd. + +
+  Backup data in Azure Blob Storage Container +
Fig: Backup data in Azure Blob Storage Container
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore the Backed up Data + +This section will show you how to restore the backed up data from [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) we have taken in the earlier section. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` Deployment. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Deployment:** + +We are going to create a new Deployment named `stash-recovered` with a new PVC and restore the backed up data inside it. + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc +``` + +Let's create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/recovered_deployment.yaml +persistentvolumeclaim/restore-pvc created +deployment.apps/stash-recovered created +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` Deployment. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: azure-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. + +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/aks/examples/restoresession.yaml +restoresession.stash.appscode.com/deployment-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` Deployment. The Deployment will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` Deployment. Let’s describe the Deployment to verify that the `init-container` has been injected successfully. + +```yaml +$ kubectl describe deployment -n demo stash-recovered +Name: stash-recovered +Namespace: demo +CreationTimestamp: Thu, 18 Jul 2019 11:59:41 +0600 +Labels: app=stash-recovered +Selector: app=stash-recovered +Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 15483804576325149444 + Init Containers: + stash-init: + Image: suaas21/stash:volumeTemp_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=deployment-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from restore-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Args: + sleep + 3600 + Environment: + Mounts: + /restore/data from restore-data (rw) + Volumes: + restore-data: + Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) + ClaimName: restore-pvc + ReadOnly: false + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: azure-secret + Optional: false + ... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Now, wait for the restore process to complete. You can watch the `RestoreSession` phase using the following command, + +```bash +$ watch -n 2 kubectl get restoresession -n demo +Every 3.0s: kubectl get restore -n demo suaas-appscode: Thu Jul 18 12:02:10 2019 + +NAME REPOSITORY-NAME PHASE AGE +deployment-restore azure-repo Succeeded 1m +``` + +So, we can see from the output of the above command that the restore process has succeeded. + +> **Note:** If you want to restore the backed up data inside the same Deployment whose volumes were backed up, you have to remove the corrupted data from the Deployment. Then, you have to create a RestoreSession targeting the Deployment. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. At first, check if the `stash-recovered` pod of the Deployment has gone into `Running` state by the following command, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-6669c8bcfd-7pz9m 1/1 Running 0 76s +stash-recovered-6669c8bcfd-dfppw 1/1 Running 0 85s +stash-recovered-6669c8bcfd-qkllx 1/1 Running 0 51s +``` + +Verify that the sample data has been restored in `/restore/data` directory of the `stash-recovered` pod of the Deployment using the following command, + +```bash +$ kubectl exec -n demo stash-recovered-6669c8bcfd-7pz9m -- cat /restore/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment stash-recovered +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo restoresession deployment-restore +kubectl delete -n demo repository azure-repo +kubectl delete -n demo secret azure-secret +kubectl delete -n demo pvc --all +``` + +## Next Steps + +1. See a step by step guide to backup/restore volumes of a StatefulSet [here](/docs/v2024.8.27/guides/workloads/statefulset/). +2. See a step by step guide to backup/restore volumes of a DaemonSet [here](/docs/v2024.8.27/guides/workloads/daemonset/). +3. See a step by step guide to Backup/restore Stand-alone PVC [here](/docs/v2024.8.27/guides/volumes/pvc/) diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..8f161e5dfe --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/backupconfiguration.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + schedule: "*/5 * * * *" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/mariadb.yaml b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/mariadb.yaml new file mode 100644 index 0000000000..be5cbc2045 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/mariadb.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "gp2" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + cpu: 100m + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/repository.yaml new file mode 100644 index 0000000000..4ba7c7d365 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/repository.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: "s3.amazonaws.com" + bucket: stash-qa + region: us-east-1 + prefix: /demo/mariadb + storageSecretName: s3-secret diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/restoresession.yaml new file mode 100644 index 0000000000..3eb36b3d6f --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-irsa/examples/restoresession.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-1.png b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-1.png new file mode 100644 index 0000000000..327522f7ad Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-2.png b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-2.png new file mode 100644 index 0000000000..31f60dee59 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/create-bucket-policy-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/eks.png b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/eks.png new file mode 100644 index 0000000000..ea92b06171 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/eks.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/gcs.png b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/gcs.png new file mode 100644 index 0000000000..8ec12b62b6 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-irsa/images/gcs.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-irsa/index.md b/content/docs/v2024.8.27/guides/platforms/eks-irsa/index.md new file mode 100644 index 0000000000..d191354c96 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-irsa/index.md @@ -0,0 +1,712 @@ +--- +title: Using IRSA with Stash on Amazon EKS +description: A guide on how to use EKS IRSA with Stash +menu: + docs_v2024.8.27: + identifier: platforms-eks-irsa + name: EKS IRSA + parent: platforms + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using IRSA with Stash on Amazon EKS + +This guide will show you how to use IRSA(IAM Roles for Service Accounts) of [Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/) with Stash. Here, we are going to backup a MariaDB database and store the backed up data into a [AWS S3 bucket](https://aws.amazon.com/s3/).Then, we are going to show how to restore this backed up data. + +## Before You Begin + +- At first, you need to have an EKS cluster with [IRSA](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-enable-IAM.html) enabled. If you don't already have a cluster, create one from [here](https://aws.amazon.com/eks/). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install `KubeDB` operator in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- You will need a [AWS S3 Bucket](https://aws.amazon.com/s3/) to store the backup snapshots. +- Install `eksctl` following the steps [here](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html). + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Prepare MariaDB + +In this section, we are going to deploy a MariaDB database using KubeDB. Then, we are going to insert some sample data into it. + +### Deploy MariaDB using KubeDB + +At first, let’s deploy a MariaDB standalone database named `sample-mariadb` using KubeDB, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-irsa/examples/mariadb.yaml +mariadb.kubedb.com/sample-mariadb created +``` + +Now, wait for the database pod `sample-mariadb-0` to go into Running state, + +```bash +$ kubectl get pod -n demo sample-mariadb-0 +NAME READY STATUS RESTARTS AGE +sample-mariadb-0 1/1 Running 0 29m +``` + +Once the database pod is in Running state, verify that the database is ready to accept the connections. + +```bash +$ kubectl logs -n demo sample-mariadb-0 +2021-02-22 9:41:37 0 [Note] Reading of all Master_info entries succeeded +2021-02-22 9:41:37 0 [Note] Added new Master_info '' to hash table +2021-02-22 9:41:37 0 [Note] mysqld: ready for connections. +Version: '10.5.8-MariaDB-1:10.5.8+maria~focal' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +``` + +From the above log, we can see the database is ready to accept connections. + +### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. The sample-mariadb object creates a secret containing the credentials of MariaDB and set them as pod’s Environment varibles `MYSQL_ROOT_USERNAME` and `MYSQL_ROOT_PASSWORD`. + +Here, we are going to use the root user (`MYSQL_ROOT_USERNAME`) credential `MYSQL_ROOT_PASSWORD` to insert the sample data. Let’s exec into the database pod and insert some sample data, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Let's create a database named "company" +MariaDB [(none)]> create database company; +Query OK, 1 row affected (0.000 sec) + +# Verify that the database has been created successfully +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Now, let's create a table called "employee" in the "company" table +MariaDB [(none)]> create table company.employees ( name varchar(50), salary int); +Query OK, 0 rows affected (0.018 sec) + +# Verify that the table has been created successfully +MariaDB [(none)]> show tables in company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.007 sec) + +# Now, let's insert a sample row in the table +MariaDB [(none)]> insert into company.employees values ('John Doe', 5000); +Query OK, 1 row affected (0.003 sec) + +# Insert another sample row +MariaDB [(none)]> insert into company.employees values ('James William', 7000); +Query OK, 1 row affected (0.002 sec) + +# Verify that the rows have been inserted into the table successfully +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.001 sec) + +MariaDB [(none)]> exit +Bye +``` + +We have successfully deployed a MariaDB database and inserted some sample data into it. + +## Prepare Backup + +In this section, we are going to prepare the necessary resources (i.e. database connection information, backend information, etc.) before backup. + +### Verify Stash MariaDB Addon Installed + +When you install the Stash, it automatically installs all the official database addons. Verify that it has installed the MariaDB addons using the following command. + +```bash +$ kubectl get tasks.stash.appscode.com | grep mariadb +mariadb-backup-10.5.8 35s +mariadb-restore-10.5.8 35s +``` + +### Ensure AppBinding + +Stash needs to know how to connect with the database. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the database. You have to point to the respective `AppBinding` as a target of backup instead of the database itself. + +Stash expect your database Secret to have `username` and `password` keys. If your database secret does not have them, the `AppBinding` can also help here. You can specify a `secretTransforms` section with the mapping between the current keys and the desired keys. + +You don’t need to worry about appbindings if you are using KubeDB. It creates an appbinding containing the necessary informations when you deploy the database. Let’s ensure the appbinding create by `KubeDB` operator. + +```bash +$ kubectl get appbinding -n demo +NAME TYPE VERSION AGE +sample-mariadb kubedb.com/mariadb 10.5.8 62m +``` + +We have a appbinding named same as database name sample-mariadb. We will use this later for connecting into this database. + +### Prepare Backend + +We are going to store our backed up data into a [S3 bucket](https://aws.amazon.com/s3/). As we are using IRSA, we don't need the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` to access the S3 bucket. + +At first, we need to create a secret with a Restic password. Then, we have to create a `Repository` crd that will hold the information about our backend storage. + +**Create Secret:** + +Let's create a secret called `encryption-secret` with the Restic password, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ kubectl create secret generic -n demo encryption-secret \ + --from-file=./RESTIC_PASSWORD \ +secret "encryption-secret" created +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired S3 bucket. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: 's3.amazonaws.com' + bucket: stash-qa + region: us-east-1 + prefix: /demo/mariadb + storageSecretName: encryption-secret + +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-irsa/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Create IAM Policy + +We need a IAM policy for accessing S3 buckets. Below is the `JSON`of the IAM policy we are going to create, + +```bash +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": "s3:*", + "Resource": "*" + } + ] +} +``` + +Let's navigate to the IAM management console to create a policy `bucket-accessor` with full access permission to S3 bucket. + +
+  Create IAM policy (Step: 1) +
Fig: Create IAM policy (Step: 1)
+
+ +
+  Create IAM policy (Step: 2) +
Fig: Create IAM policy (Step: 2
+
+ +### Create ServiceAccount + +We need a IAM role with the policy `bucket-accessor` attached and a Kubernetes service account annotated with that IAM role. Use the following command to do all these steps at once. + +```bash +eksctl create iamserviceaccount \ + --name bucket-user \ + --namespace demo \ + --cluster irsa-demo \ + --attach-policy-arn arn:aws:iam::452618475015:policy/bucket-accessor\ + --approve +``` + +This command will create a IAM role with the `bucket-accessor` policy attaced and a service account `bucket-acessor-ksa` annotated with that IAM role in the demo namespace. We will use the service account in the `BackupConfiguration` and `RestoreSession` to enable backup and restore using IRSA. + +## Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective AppBinding of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the `YAML` for BackupConfiguration object we are going to use to backup the sample-mariadb database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + schedule: "*/5 * * * *" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.runtimeSettins.pod.serviceAccountName` refers to the name of the `ServiceAccount` to use in the backup pod. +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend [GCS bucket](https://cloud.google.com/storage/) information. +- `spec.target.ref`refers to the AppBinding object that holds the connection information of our targeted database. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-irsa/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mariadb-backup created +``` + +**Verify Backup Setup Successful:** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let’s verify the Phase of the `BackupConfiguration`, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 15s 17s +``` + +**Wait for BackupSession:** + +The `sample-mariadb-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 24s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 75s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Succeeded 103s + +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +**Verify Backup:** + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.327 MiB 1 60s 8m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/mariadb/sample-mariadb` directory as specified by `.spec.backend.gcs.prefix` field of the Repository object. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +**Temporarily Pause Backup:** + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-mariadb-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup--type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup patched +``` + +Or you can use the Stash `kubectl` plugin to pause the `BackupConfiguration`, + +```bash +$ kubectl stash pause backup -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been paused successfully. +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * True 0 2m59s 20m +``` + +**Simulate Disaster:** + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the database pod and delete the `company` database we had created earlier. + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# View current databases +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Let's delete the "company" database +MariaDB [(none)]> drop database company; +Query OK, 1 row affected (0.268 sec) + +# Verify that the "company" database has been deleted +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +3 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +**Create RestoreSession:** + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the `YAML` of the `RestoreSession` object that we are going to use for restoring our `sample-mariadb` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] + +``` + +Here, + +- `spec.runtimeSettins.pod.serviceAccountName` refers to the name of the `ServiceAccount` to use in the restore pod. +- `spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the respective AppBinding of the `sample-mariadb` database. +- `spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-irsa/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mariadb-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-mariadb-restore gcs-repo Running 15s +sample-mariadb-restore gcs-repo Succeeded 18s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +**Verify Restored Data:** + +Now, let's exec into the database pod and verify whether data actual data was restored or not, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Verify that the "company" database has been restored +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Verify that the tables of the "company" database have been restored +MariaDB [(none)]> show tables from company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.000 sec) + +# Verify that the sample data of the "employees" table has been restored +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +**Resume Backup** + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-mariadb-backup patched +``` + +Or you can use the Stash `kubectl` plugin to resume the `BackupConfiguration`, + +```bash +$ kubectl stash resume -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been resumed successfully. +``` + +Verify that the `BackupConfiguration` has been resumed, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * false Ready 29m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 2m59s 29m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Allow Operator to List Snapshots + +When you list Snapshots using `kubectl get snapshot` command, Stash operator itself read the Snapshots directly from the backend. So, the operator needs permission to access the bucket. Stash operator has it own's `ServiceAccount`. Therefore, this `ServiceAccount` should be binded with a IAM role with access to S3 as well. + +Run the following command to get the service account used by the Stash operator, + +```bash +$ kubectl get serviceaccount -n stash stash-stash-enterprise +NAME SECRETS AGE +stash-stash-enterprise 1 9m52s +``` + +Run the following command to create a IAM role bound to the operator service account, + +```bash +eksctl create iamserviceaccount \ + --name stash-stash-enterprise \ + --namespace stash \ + --cluster irsa-demo \ + --attach-policy-arn arn:aws:iam::452618475015:policy/bucket-accessor\ + --approve + --override-existing-serviceaccounts +``` + +### Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-mariadb-backup +kubectl delete -n demo restoresession sample-mariadb-restore +kubectl delete -n demo secret encryption-secret +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo mariadb sample-mariadb +kubectl delete ns demo +``` diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..0d167e8e2c --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/backupconfiguration.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + podAnnotations: + iam.amazonaws.com/role: arn:aws:iam::452618475015:role/bucket-accessor + schedule: "*/5 * * * *" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/kube2iam.yaml b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/kube2iam.yaml new file mode 100644 index 0000000000..0cdd17f4fc --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/kube2iam.yaml @@ -0,0 +1,80 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kube2iam +rules: + - apiGroups: + - "" + resources: + - namespaces + - pods + verbs: + - get + - watch + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kube2iam +subjects: + - kind: ServiceAccount + name: kube2iam + namespace: default +roleRef: + kind: ClusterRole + name: kube2iam + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kube2iam + namespace: default +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: kube2iam + namespace: default + labels: + app: kube2iam +spec: + selector: + matchLabels: + name: kube2iam + updateStrategy: + type: RollingUpdate + template: + metadata: + labels: + name: kube2iam + spec: + serviceAccountName: kube2iam + hostNetwork: true + containers: + - image: jtblin/kube2iam:0.10.7 + imagePullPolicy: Always + name: kube2iam + args: + - "--auto-discover-base-arn" + - "--auto-discover-default-role=true" + - "--iptables=true" + - "--host-ip=$(HOST_IP)" + - "--node=$(NODE_NAME)" + - "--host-interface=eni+" + env: + - name: HOST_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + ports: + - containerPort: 8181 + hostPort: 8181 + name: http + securityContext: + privileged: true diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/mariadb.yaml b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/mariadb.yaml new file mode 100644 index 0000000000..be5cbc2045 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/mariadb.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "gp2" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + cpu: 100m + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/repository.yaml new file mode 100644 index 0000000000..4ba7c7d365 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/repository.yaml @@ -0,0 +1,13 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: "s3.amazonaws.com" + bucket: stash-qa + region: us-east-1 + prefix: /demo/mariadb + storageSecretName: s3-secret diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/restoresession.yaml new file mode 100644 index 0000000000..1391145be1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + podAnnotations: + iam.amazonaws.com/role: "arn:aws:iam::452618475015:role/bucket-accessor" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-1.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-1.png new file mode 100644 index 0000000000..adfd9efa91 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-2.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-2.png new file mode 100644 index 0000000000..5f8cb17a71 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/attach-policy-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-1.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-1.png new file mode 100644 index 0000000000..282a76dd28 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-2.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-2.png new file mode 100644 index 0000000000..3a3a86c2b5 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-assume-policy-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-1.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-1.png new file mode 100644 index 0000000000..327522f7ad Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-2.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-2.png new file mode 100644 index 0000000000..31f60dee59 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-bucket-policy-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-1.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-1.png new file mode 100644 index 0000000000..4086b973fd Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-2.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-2.png new file mode 100644 index 0000000000..0b1008ebd5 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-3.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-3.png new file mode 100644 index 0000000000..d0417ccea2 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/create-role-3.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/eks.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/eks.png new file mode 100644 index 0000000000..ea92b06171 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/eks.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/gcs.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/gcs.png new file mode 100644 index 0000000000..8ec12b62b6 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/gcs.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-1.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-1.png new file mode 100644 index 0000000000..cbba8595a3 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-1.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-2.png b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-2.png new file mode 100644 index 0000000000..360322eb8a Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/images/trust-policy-2.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/index.md b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/index.md new file mode 100644 index 0000000000..17be20a962 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/eks-kube2iam/index.md @@ -0,0 +1,794 @@ +--- +title: Using Kube2iam with Stash on Amazon EKS +description: A guide on how to use EKS Kube2iam with Stash +menu: + docs_v2024.8.27: + identifier: platforms-eks-kube2iam + name: EKS Kub2iam + parent: platforms + weight: 15 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Kube2iam with Stash on Amazon EKS + +This guide will show you how to use Kube2iam of [Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/) with Stash. Here, we are going to backup a MariaDB database and store the backed up data into a [AWS S3 bucket](https://aws.amazon.com/s3/).Then, we are going to show how to restore this backed up data. + +## Before You Begin + +- At first, you need to have an EKS cluster. If you don't already have a cluster, create one from [here](https://aws.amazon.com/eks/). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install `KubeDB` operator in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). +- Install [Kube2iam](https://github.com/jtblin/kube2iam) in your cluster. +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- You will need a [AWS S3 Bucket](https://aws.amazon.com/s3/) to store the backup snapshots. +- Install `eksctl` following the steps [here](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html). + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Setting up the Roles and Policies in AWS + +### Create IAM Policy + +We need an IAM policy for accessing S3 buckets. Below is the `JSON`of the IAM policy we are going to create, + +```bash +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": "s3:*", + "Resource": "*" + } + ] +} +``` + +Let's navigate to the IAM management console to create a policy `bucket-accessor` with full access permission to S3 buckets. + +
+  Create IAM policy +
Fig: Create IAM policy
+
+ +
+  Review IAM policy +
Fig: Review IAM policy
+
+ +### Create Role + +Now, let's create an IAM role `bucket-accessor` attaching the above IAM policy, + +
+  Create IAM role (Step: 1) +
Fig: Create IAM Role (Step: 1)
+
+ +
+  Create IAM role (Step: 2) +
Fig: Create IAM Role (Step: 2)
+
+ +
+  Create IAM role (Step: 3) +
Fig: Create IAM Role (Step: 3)
+
+ +### Configure Roles + +We need to add the policy to allow our Kubernete worker nodes to assume roles that are not in their default role. We are going to create a new IAM policy `assume-policy` and attach it with the existing node role so that it can assume the role for accessing the bucket. Below is the `JSON` of the IAM policy we are going to create, + +```bash +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "sts:AssumeRole" + ], + "Effect": "Allow", + "Resource": "arn:aws:iam::123456789012:role/bucket-accessor" + } + ] +} +``` + +Let's navigate to the IAM management console to create `assume-policy`, + +
+  Create IAM policy (Step: 1) +
Fig: Create IAM policy (Step: 1)
+
+ +
+  Create IAM policy(Step: 2) +
Fig: Create IAM policy (Step: 2)
+
+ +Now, let's attach the IAM policy to our exisiting node role, +
+  Attach IAM policy(Step: 1 +
Fig: Attach Policy (Step: 1)
+
+ +
+  Attach IAM policy(Step: 2 +
Fig: Attach Policy (Step: 2)
+
+ +The `bucket-accessor` role needs the trust policy to trust the node role. Below is the `JSON` of the trust policy we are going to use, + +```bash +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + }, + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::123456789012:role/kubernetes-node" + }, + "Action": "sts:AssumeRole" + } + ] +} +``` + +Lets update the trust policy of `bucket-accessor` role, + +
+  Update Trust policy(Step: 1 +
Fig: Update Trust Policy (Step: 1)
+
+ +
+  Update Trust policy(Step: 2 +
Fig: Update Trust Policy (Step: 2)
+
+ +## Prepare MariaDB + +In this section, we are going to deploy a MariaDB database using KubeDB. Then, we are going to insert some sample data into it. + +### Deploy MariaDB using KubeDB + +At first, let’s deploy a MariaDB standalone database named `sample-mariadb` using KubeDB, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "gp2" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-kube2iam/examples/mariadb.yaml +mariadb.kubedb.com/sample-mariadb created +``` + +Now, wait for the database pod `sample-mariadb-0` to go into Running state, + +```bash +$ kubectl get pod -n demo sample-mariadb-0 +NAME READY STATUS RESTARTS AGE +sample-mariadb-0 1/1 Running 0 29m +``` + +Once the database pod is in Running state, verify that the database is ready to accept the connections. + +```bash +$ kubectl logs -n demo sample-mariadb-0 +2021-02-22 9:41:37 0 [Note] Reading of all Master_info entries succeeded +2021-02-22 9:41:37 0 [Note] Added new Master_info '' to hash table +2021-02-22 9:41:37 0 [Note] mysqld: ready for connections. +Version: '10.5.8-MariaDB-1:10.5.8+maria~focal' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +``` + +From the above log, we can see the database is ready to accept connections. + +### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. The sample-mariadb object creates a secret containing the credentials of MariaDB and set them as pod’s Environment varibles `MYSQL_ROOT_USERNAME` and `MYSQL_ROOT_PASSWORD`. + +Here, we are going to use the root user (`MYSQL_ROOT_USERNAME`) credential `MYSQL_ROOT_PASSWORD` to insert the sample data. Let’s exec into the database pod and insert some sample data, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Let's create a database named "company" +MariaDB [(none)]> create database company; +Query OK, 1 row affected (0.000 sec) + +# Verify that the database has been created successfully +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Now, let's create a table called "employee" in the "company" table +MariaDB [(none)]> create table company.employees ( name varchar(50), salary int); +Query OK, 0 rows affected (0.018 sec) + +# Verify that the table has been created successfully +MariaDB [(none)]> show tables in company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.007 sec) + +# Now, let's insert a sample row in the table +MariaDB [(none)]> insert into company.employees values ('John Doe', 5000); +Query OK, 1 row affected (0.003 sec) + +# Insert another sample row +MariaDB [(none)]> insert into company.employees values ('James William', 7000); +Query OK, 1 row affected (0.002 sec) + +# Verify that the rows have been inserted into the table successfully +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.001 sec) + +MariaDB [(none)]> exit +Bye +``` + +We have successfully deployed a MariaDB database and inserted some sample data into it. + +## Prepare Backup + +In this section, we are going to prepare the necessary resources (i.e. database connection information, backend information, etc.) before backup. + +### Verify Stash MariaDB Addon Installed + +When you install the Stash, it automatically installs all the official database addons. Verify that it has installed the MariaDB addons using the following command. + +```bash +$ kubectl get tasks.stash.appscode.com | grep mariadb +mariadb-backup-10.5.8 35s +mariadb-restore-10.5.8 35s +``` + +### Ensure AppBinding + +Stash needs to know how to connect with the database. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the database. You have to point to the respective `AppBinding` as a target of backup instead of the database itself. + +Stash expect your database Secret to have `username` and `password` keys. If your database secret does not have them, the `AppBinding` can also help here. You can specify a `secretTransforms` section with the mapping between the current keys and the desired keys. + +You don’t need to worry about appbindings if you are using KubeDB. It creates an appbinding containing the necessary informations when you deploy the database. Let’s ensure the appbinding create by `KubeDB` operator. + +```bash +$ kubectl get appbinding -n demo +NAME TYPE VERSION AGE +sample-mariadb kubedb.com/mariadb 10.5.8 62m +``` + +We have a appbinding named same as database name sample-mariadb. We will use this later for connecting into this database. + +### Prepare Backend + +We are going to store our backed up data into a [S3 bucket](https://aws.amazon.com/s3/). As we are using Kube2iam, we don't need the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` to access the S3 bucket. + +At first, we need to create a secret with a Restic password. Then, we have to create a `Repository` crd that will hold the information about our backend storage. + +**Create Secret:** + +Let's create a secret called `encryption-secret` with the Restic password, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ kubectl create secret generic -n demo encryption-secret \ + --from-file=./RESTIC_PASSWORD \ +secret "encryption-secret" created +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired S3 bucket. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: s3-repo + namespace: demo +spec: + backend: + s3: + endpoint: 's3.amazonaws.com' + bucket: stash-qa + region: us-east-1 + prefix: /demo/mariadb + storageSecretName: encryption-secret + +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-kube2iam/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +## Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective AppBinding of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the `YAML` for BackupConfiguration object we are going to use to backup the sample-mariadb database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + podAnnotations: + iam.amazonaws.com/role: arn:aws:iam::452618475015:role/bucket-accessor + schedule: "*/5 * * * *" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.runtimeSettins.pod.podAnnotations` refers to the annotations that will be attached with the respective pod. +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend [GCS bucket](https://cloud.google.com/storage/) information. +- `spec.target.ref`refers to the AppBinding object that holds the connection information of our targeted database. + +> Notice the `spec.runtimeSettings.pod` section. We are now passing the respective IAM annotation via `podAnnotations` field. Stash will pass this annotation to the respective backup pod. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-kube2iam/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mariadb-backup created +``` + +**Verify Backup Setup Successful:** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let’s verify the Phase of the `BackupConfiguration`, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 15s 17s +``` + +**Wait for BackupSession:** + +The `sample-mariadb-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 24s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 75s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Succeeded 103s + +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +**Verify Backup:** + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.327 MiB 1 60s 8m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/mariadb/sample-mariadb` directory as specified by `.spec.backend.gcs.prefix` field of the Repository object. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +**Temporarily Pause Backup:** + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-mariadb-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup--type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup patched +``` + +Or you can use the Stash `kubectl` plugin to pause the `BackupConfiguration`, + +```bash +$ kubectl stash pause backup -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been paused successfully. +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * True 0 2m59s 20m +``` + +**Simulate Disaster:** + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the database pod and delete the `company` database we had created earlier. + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# View current databases +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Let's delete the "company" database +MariaDB [(none)]> drop database company; +Query OK, 1 row affected (0.268 sec) + +# Verify that the "company" database has been deleted +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +3 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +**Create RestoreSession:** + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the `YAML` of the `RestoreSession` object that we are going to use for restoring our `sample-mariadb` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + podAnnotations: + iam.amazonaws.com/role: "arn:aws:iam::452618475015:role/bucket-accessor" + repository: + name: s3-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] + +``` + +> Notice the `spec.runtimeSettings.pod` section. We are now passing the respective IAM annotation via `podAnnotations` field. Stash will pass this annotation to the respective backup pod. + +Here, + +- `spec.runtimeSettins.pod.podAnnotations` refers to the annotations that will be attached with the respective pod. +- `spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the respective AppBinding of the `sample-mariadb` database. +- `spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/eks-kube2iam/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mariadb-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-mariadb-restore gcs-repo Running 15s +sample-mariadb-restore gcs-repo Succeeded 18s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +**Verify Restored Data:** + +Now, let's exec into the database pod and verify whether data actual data was restored or not, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Verify that the "company" database has been restored +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Verify that the tables of the "company" database have been restored +MariaDB [(none)]> show tables from company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.000 sec) + +# Verify that the sample data of the "employees" table has been restored +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +**Resume Backup** + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-mariadb-backup patched +``` + +Or you can use the Stash `kubectl` plugin to resume the `BackupConfiguration`, + +```bash +$ kubectl stash resume -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been resumed successfully. +``` + +Verify that the `BackupConfiguration` has been resumed, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * false Ready 29m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 2m59s 29m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Allow Operator to List Snapshots + +When you list Snapshots using `kubectl get snapshot` command, Stash operator itself read the Snapshots directly from the backend. So, the operator needs permission to access the bucket. Therefore, stash operator pod should be annotated with the IAM Role. Run the following command to annotate the Stash operator pod using Helm, + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set-file global.license=/home/sayem/Downloads/stash.txt \ + --set stash-enterprise.podAnnotations.'iam\.amazonaws\.com/role'=arn:aws:iam::452618475015:role/bucket-accessor \ + --wait --burst-limit=10000 --debug +``` + +### Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-mariadb-backup +kubectl delete -n demo restoresession sample-mariadb-restore +kubectl delete -n demo secret encryption-secret +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo mariadb sample-mariadb +kubectl delete ns demo +``` diff --git a/content/docs/v2024.8.27/guides/platforms/gke/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/gke/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..9a57e3214b --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/gke/examples/backupconfiguration.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/gke/examples/mariadb.yaml b/content/docs/v2024.8.27/guides/platforms/gke/examples/mariadb.yaml new file mode 100644 index 0000000000..e2fa2b4d69 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/gke/examples/mariadb.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut diff --git a/content/docs/v2024.8.27/guides/platforms/gke/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/gke/examples/repository.yaml new file mode 100644 index 0000000000..58b383a307 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/gke/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: demo/mariadb/sample-mariadb + storageSecretName: encryption-secret diff --git a/content/docs/v2024.8.27/guides/platforms/gke/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/gke/examples/restoresession.yaml new file mode 100644 index 0000000000..790186bed9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/gke/examples/restoresession.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] diff --git a/content/docs/v2024.8.27/guides/platforms/gke/images/gke.png b/content/docs/v2024.8.27/guides/platforms/gke/images/gke.png new file mode 100644 index 0000000000..8ec12b62b6 Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/gke/images/gke.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/gke/index.md b/content/docs/v2024.8.27/guides/platforms/gke/index.md new file mode 100644 index 0000000000..f62eabbcc2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/gke/index.md @@ -0,0 +1,715 @@ +--- +title: Using Workload Idenity with Stash on GKE +description: A guide on how to use GKE workload identity with Stash +menu: + docs_v2024.8.27: + identifier: platforms-gke + name: GKE Workload Identity + parent: platforms + weight: 18 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Workload Identity with Stash on Google Kubernetes Engine (GKE) + +This guide will show you how to use workload identity of [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine/) with Stash. Here, we are going to backup a MariaDB database and store the backed up data into a [GCS Bucket](https://cloud.google.com/storage/). Then, we are going to show how to restore this backed up data. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster in the Google Cloud Platform with [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) enabled. If you don’t already have a cluster, create one from [here](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#console). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install `KubeDB` operator in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- Install Google Cloud CLI following the steps [here](https://cloud.google.com/sdk/downloads). +- You will need a [GCS Bucket](https://console.cloud.google.com/storage/). + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +## Prepare IAM Service Account + +At first, let's create a IAM service account which will contain the roles for accessing GCS Bucket, + +```bash +$ gcloud iam service-accounts create bucket-accessor \ + --project=sample-project +``` + +Let's add the required roles to this service account for accessing the GCS bucket. + +```bash +$ gcloud projects add-iam-policy-binding sample-project \ + --member "serviceAccount:bucket-accessor@sample-project.iam.gserviceaccount.com" \ + --role "roles/storage.objectAdmin" +``` + +```bash +$ gcloud projects add-iam-policy-binding sample-project \ + --member "serviceAccount:bucket-accessor@sample-project.iam.gserviceaccount.com" \ + --role "roles/storage.admin" +``` + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +## Prepare MariaDB + +In this section, we are going to deploy a MariaDB database using KubeDB. Then, we are going to insert some sample data into it. + +### Deploy MariaDB using KubeDB + +At first, let’s deploy a MariaDB standalone database named `sample-mariadb` using KubeDB, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MariaDB +metadata: + name: sample-mariadb + namespace: demo +spec: + version: "10.5.8" + replicas: 1 + storageType: Durable + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + terminationPolicy: WipeOut +``` + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/gke/examples/mariadb.yaml +mariadb.kubedb.com/sample-mariadb created +``` + +Now, wait for the database pod `sample-mariadb-0` to go into Running state, + +```bash +$ kubectl get pod -n demo sample-mariadb-0 +NAME READY STATUS RESTARTS AGE +sample-mariadb-0 1/1 Running 0 29m +``` + +Once the database pod is in Running state, verify that the database is ready to accept the connections. + +```bash +$ kubectl logs -n demo sample-mariadb-0 +2021-02-22 9:41:37 0 [Note] Reading of all Master_info entries succeeded +2021-02-22 9:41:37 0 [Note] Added new Master_info '' to hash table +2021-02-22 9:41:37 0 [Note] mysqld: ready for connections. +Version: '10.5.8-MariaDB-1:10.5.8+maria~focal' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution +``` + +From the above log, we can see the database is ready to accept connections. + +### Insert Sample Data + +Now, we are going to exec into the database pod and create some sample data. The sample-mariadb object creates a secret containing the credentials of MariaDB and set them as pod’s Environment varibles `MYSQL_ROOT_USERNAME` and `MYSQL_ROOT_PASSWORD`. + +Here, we are going to use the root user (`MYSQL_ROOT_USERNAME`) credential `MYSQL_ROOT_PASSWORD` to insert the sample data. Let’s exec into the database pod and insert some sample data, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Let's create a database named "company" +MariaDB [(none)]> create database company; +Query OK, 1 row affected (0.000 sec) + +# Verify that the database has been created successfully +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Now, let's create a table called "employee" in the "company" table +MariaDB [(none)]> create table company.employees ( name varchar(50), salary int); +Query OK, 0 rows affected (0.018 sec) + +# Verify that the table has been created successfully +MariaDB [(none)]> show tables in company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.007 sec) + +# Now, let's insert a sample row in the table +MariaDB [(none)]> insert into company.employees values ('John Doe', 5000); +Query OK, 1 row affected (0.003 sec) + +# Insert another sample row +MariaDB [(none)]> insert into company.employees values ('James William', 7000); +Query OK, 1 row affected (0.002 sec) + +# Verify that the rows have been inserted into the table successfully +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.001 sec) + +MariaDB [(none)]> exit +Bye +``` + +We have successfully deployed a MariaDB database and inserted some sample data into it. + +## Prepare Backup + +In this section, we are going to prepare the necessary resources (i.e. database connection information, backend information, etc.) before backup. + +### Verify Stash MariaDB Addon Installed + +When you install the Stash, it automatically installs all the official database addons. Verify that it has installed the MariaDB addons using the following command. + +```bash +$ kubectl get tasks.stash.appscode.com | grep mariadb +mariadb-backup-10.5.8 35s +mariadb-restore-10.5.8 35s +``` + +### Ensure AppBinding + +Stash needs to know how to connect with the database. An `AppBinding` exactly provides this information. It holds the Service and Secret information of the database. You have to point to the respective `AppBinding` as a target of backup instead of the database itself. + +Stash expect your database Secret to have `username` and `password` keys. If your database secret does not have them, the `AppBinding` can also help here. You can specify a `secretTransforms` section with the mapping between the current keys and the desired keys. + +You don’t need to worry about appbindings if you are using KubeDB. It creates an appbinding containing the necessary informations when you deploy the database. Let’s ensure the appbinding create by `KubeDB` operator. + +```bash +$ kubectl get appbinding -n demo +NAME TYPE VERSION AGE +sample-mariadb kubedb.com/mariadb 10.5.8 62m +``` + +We have a appbinding named same as database name sample-mariadb. We will use this later for connecting into this database. + +### Prepare Backend + +We are going to store our backed up data into a [GCS bucket](https://cloud.google.com/storage/). As we are using workload identity enabled cluster, we don't need the `GOOGLE_PROJECT_ID` and `GOOGLE_SERVICE_ACCOUNT_JSON_KEY` to access the GCS bucket. + +At first, we need to create a secret with a Restic password. Then, we have to create a `Repository` crd that will hold the information about our backend storage. + +**Create Secret:** + +Let's create a secret called `encryption-secret` with the Restic password, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ kubectl create secret generic -n demo encryption-secret \ + --from-file=./RESTIC_PASSWORD \ +secret "encryption-secret" created +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired GCS bucket. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/mariadb/sample-mariadb + storageSecretName: encryption-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/gke/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Prepare ServiceAccount + +Now we are going create a Kubernetes service account and bind it with the IAM service account `bucket-accessor` that we have created earlier. This binding allows the Kubernetes service account to act as the IAM service account. + +Lets create a `ServiceAccount`, + +```bash +$ kubectl create serviceaccount -n demo bucket-user +``` + +Let's add the IAM annotations to the `ServiceAccount`, + +```bash +$ kubectl annotate sa -n demo bucket-user iam.gke.io/gcp-service-account="bucket-accessor@appscode-testing.iam.gserviceaccount.com" +``` + +Now Let's bind it with the IAM service account, + +```bash +$ gcloud iam service-accounts add-iam-policy-binding bucket-accessor@sample-project.iam.gserviceaccount.com \ + --role roles/iam.workloadIdentityUser \ + --member "serviceAccount:sample-project.svc.id.goog[demo/bucket-user]" +``` + +## Backup + +To schedule a backup, we have to create a `BackupConfiguration` object targeting the respective AppBinding of our desired database. Then Stash will create a CronJob to periodically backup the database. + +**Create BackupConfiguration:** + +Below is the `YAML` for BackupConfiguration object we are going to use to backup the sample-mariadb database we have deployed earlier, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mariadb-backup + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.runtimeSettins.pod.serviceAccountName` refers to the name of the `ServiceAccount` to use in the backup pod. +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend [GCS bucket](https://cloud.google.com/storage/) information. +- `spec.target.ref`refers to the AppBinding object that holds the connection information of our targeted database. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/gke/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/sample-mariadb-backup created +``` + +**Verify Backup Setup Successful:** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let’s verify the Phase of the `BackupConfiguration`, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` object. + +Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 15s 17s +``` + +**Wait for BackupSession:** + +The `sample-mariadb-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` object. + +Now, wait for a schedule to appear. Run the following command to watch for a `BackupSession` object, + +```bash +$ kubectl get backupsession -n demo -w +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 24s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Running 75s +sample-mariadb-backup-1606994706 BackupConfiguration sample-mariadb-backup Succeeded 103s + +``` + +Here, the phase `Succeeded` means that the backup process has been completed successfully. + +**Verify Backup:** + +Now, we are going to verify whether the backed up data is present in the backend or not. Once a backup is completed, Stash will update the respective `Repository` object to reflect the backup completion. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 1.327 MiB 1 60s 8m +``` + +Now, if we navigate to the GCS bucket, we will see the backed up data has been stored in `demo/mariadb/sample-mariadb` directory as specified by `.spec.backend.gcs.prefix` field of the Repository object. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore + +In this section, we are going to show you how to restore in the same database which may be necessary when you have accidentally deleted any data from the running database. + +**Temporarily Pause Backup:** + +At first, let's stop taking any further backup of the database so that no backup runs after we delete the sample data. We are going to pause the `BackupConfiguration` object. Stash will stop taking any further backup when the `BackupConfiguration` is paused. + +Let's pause the `sample-mariadb-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup--type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/sample-mgo-rs-backup patched +``` + +Or you can use the Stash `kubectl` plugin to pause the `BackupConfiguration`, + +```bash +$ kubectl stash pause backup -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been paused successfully. +``` + +Verify that the `BackupConfiguration` has been paused, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +Stash will also suspend the respective CronJob. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * True 0 2m59s 20m +``` + +**Simulate Disaster:** + +Now, let's simulate an accidental deletion scenario. Here, we are going to exec into the database pod and delete the `company` database we had created earlier. + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# View current databases +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Let's delete the "company" database +MariaDB [(none)]> drop database company; +Query OK, 1 row affected (0.268 sec) + +# Verify that the "company" database has been deleted +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +3 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +**Create RestoreSession:** + +To restore the database, you have to create a `RestoreSession` object pointing to the `AppBinding` of the targeted database. + +Here, is the YAML of the `RestoreSession` object that we are going to use for restoring our `sample-mariadb` database. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mariadb-restore + namespace: demo +spec: + runtimeSettings: + pod: + serviceAccountName: bucket-user + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mariadb + rules: + - snapshots: [latest] +``` + +Here, + +- `spec.runtimeSettins.pod.serviceAccountName` refers to the name of the `ServiceAccount` to use in the restore pod. +- `spec.repository.name` specifies the Repository object that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the respective AppBinding of the `sample-mariadb` database. +- `spec.rules` specifies that we are restoring data from the latest backup snapshot of the database. + +Let's create the `RestoreSession` object object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/gke/examples/restoresession.yaml +restoresession.stash.appscode.com/sample-mariadb-restore created +``` + +Once, you have created the `RestoreSession` object, Stash will create a restore Job. Run the following command to watch the phase of the `RestoreSession` object, + +```bash +$ kubectl get restoresession -n demo -w +NAME REPOSITORY PHASE AGE +sample-mariadb-restore gcs-repo Running 15s +sample-mariadb-restore gcs-repo Succeeded 18s +``` + +The `Succeeded` phase means that the restore process has been completed successfully. + +**Verify Restored Data:** + +Now, let's exec into the database pod and verify whether data actual data was restored or not, + +```bash +$ kubectl exec -it -n demo sample-mariadb-0 -c mariadb -- bash +root@sample-mariadb-0:/ mysql -u${MYSQL_ROOT_USERNAME} -p${MYSQL_ROOT_PASSWORD} +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 341 +Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +# Verify that the "company" database has been restored +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| company | +| information_schema | +| mysql | +| performance_schema | ++--------------------+ +4 rows in set (0.001 sec) + +# Verify that the tables of the "company" database have been restored +MariaDB [(none)]> show tables from company; ++-------------------+ +| Tables_in_company | ++-------------------+ +| employees | ++-------------------+ +1 row in set (0.000 sec) + +# Verify that the sample data of the "employees" table has been restored +MariaDB [(none)]> select * from company.employees; ++---------------+--------+ +| name | salary | ++---------------+--------+ +| John Doe | 5000 | +| James William | 7000 | ++---------------+--------+ +2 rows in set (0.000 sec) + +MariaDB [(none)]> exit +Bye +``` + +Hence, we can see from the above output that the deleted data has been restored successfully from the backup. + +**Resume Backup** + +Since our data has been restored successfully we can now resume our usual backup process. Resume the `BackupConfiguration` using following command, + +```bash +$ kubectl patch backupconfiguration -n demo sample-mariadb-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/sample-mariadb-backup patched +``` + +Or you can use the Stash `kubectl` plugin to resume the `BackupConfiguration`, + +```bash +$ kubectl stash resume -n demo --backupconfig=sample-mariadb-backup +BackupConfiguration demo/sample-mariadb-backup has been resumed successfully. +``` + +Verify that the `BackupConfiguration` has been resumed, + +```bash +$ kubectl get backupconfiguration -n demo sample-mariadb-backup +NAME TASK SCHEDULE PAUSED PHASE AGE +sample-mariadb-backup mariadb-backup-10.5.8 */5 * * * * false Ready 29m +``` + +Here, `false` in the `PAUSED` column means the backup has been resume successfully. The CronJob also should be resumed now. + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-backup-sample-mariadb-backup */5 * * * * False 0 2m59s 29m +``` + +Here, `False` in the `SUSPEND` column means the CronJob is no longer suspended and will trigger in the next schedule. + +## Allow Operator to List Snapshots + +When you list Snapshots using `kubectl get snapshot` command, Stash operator itself read the Snapshots directly from the backend. So, the operator needs permission to access the bucket. +Stash operator has it own's `ServiceAccount`. Therefore, this `ServiceAccount` should be binded with the IAM service account as well. Run the following command to get the service account used by the Stash operator, + +```bash +$ kubectl get serviceaccount -n stash stash-stash-enterprise +NAME SECRETS AGE +stash-stash-enterprise 1 9m52s +``` + +Let's add the IAM annotations to the `ServiceAccount`, + +```bash +$ kubectl annotate sa -n stash stash-stash-enterprise iam.gke.io/gcp-service-account="bucket-accessor@appscode-testing.iam.gserviceaccount.com" +``` + +Now Let's bind it with the IAM service account, + +```bash +$ gcloud iam service-accounts add-iam-policy-binding bucket-accessor@sample-project.iam.gserviceaccount.com \ + --role roles/iam.workloadIdentityUser \ + --member "serviceAccount:sample-project.svc.id.goog[stash/stash-stash-enterprise]" +``` + +### Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo backupconfiguration sample-mariadb-backup +kubectl delete -n demo restoresession sample-mariadb-restore +kubectl delete -n demo sa bucket-user +kubectl delete -n demo secret encryption-secret +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo mariadb sample-mariadb +kubectl delete ns demo +``` diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..1a075b8f89 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: minio-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/deployment.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/deployment.yaml new file mode 100644 index 0000000000..b919066312 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-deployment.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-deployment.yaml new file mode 100644 index 0000000000..8e700e5a8f --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-deployment.yaml @@ -0,0 +1,58 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: minio-deployment + namespace: storage + labels: + app: minio +spec: + selector: + matchLabels: + app: minio + template: + metadata: + labels: + app: minio + spec: + containers: + - name: minio + image: minio/minio + args: + - server + - --address + - ":443" + - /storage + env: + # credentials to access minio server. use from secret "minio-server-secret" + - name: MINIO_ACCESS_KEY + valueFrom: + secretKeyRef: + name: minio-server-secret + key: MINIO_ACCESS_KEY + - name: MINIO_SECRET_KEY + valueFrom: + secretKeyRef: + name: minio-server-secret + key: MINIO_SECRET_KEY + ports: + - name: https + containerPort: 443 + volumeMounts: + - name: storage # mount the "storage" volume into the pod + mountPath: "/storage" + - name: minio-certs # mount the certificates in "/root/.minio/certs" directory + mountPath: "/root/.minio/certs" + volumes: + - name: storage # use "minio-pvc" to store data + persistentVolumeClaim: + claimName: minio-pvc + - name: minio-certs # use secret "minio-server-secret" as volume to mount the certificates + secret: + secretName: minio-server-secret + items: + - key: public.crt + path: public.crt + - key: private.key + path: private.key + - key: public.crt + path: CAs/public.crt # mark self signed certificate as trusted diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-nodeport-svc.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-nodeport-svc.yaml new file mode 100644 index 0000000000..cdb26bff6b --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-nodeport-svc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: minio-nodeport-svc + namespace: storage +spec: + type: NodePort + ports: + - name: https + port: 443 + targetPort: https + protocol: TCP + selector: + app: minio # must match with the label used in minio deployment diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-pvc.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-pvc.yaml new file mode 100644 index 0000000000..84b796e1b1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/minio-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: minio-pvc + namespace: storage +spec: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/pvc.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/pvc.yaml new file mode 100644 index 0000000000..5c526ee424 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/recovered_deployment.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/recovered_deployment.yaml new file mode 100644 index 0000000000..ae126526fe --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/recovered_deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/repository.yaml new file mode 100644 index 0000000000..fa0d958075 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/repository.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: minio-repo + namespace: demo +spec: + backend: + s3: + endpoint: 'https://minio-nodeport-svc.storage.svc' + bucket: minio-bucket + prefix: /source/data + storageSecretName: minio-secret diff --git a/content/docs/v2024.8.27/guides/platforms/minio/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/minio/examples/restoresession.yaml new file mode 100644 index 0000000000..ac8613ec72 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: minio-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ diff --git a/content/docs/v2024.8.27/guides/platforms/minio/images/minio.png b/content/docs/v2024.8.27/guides/platforms/minio/images/minio.png new file mode 100644 index 0000000000..9a2507942d Binary files /dev/null and b/content/docs/v2024.8.27/guides/platforms/minio/images/minio.png differ diff --git a/content/docs/v2024.8.27/guides/platforms/minio/index.md b/content/docs/v2024.8.27/guides/platforms/minio/index.md new file mode 100644 index 0000000000..1cca5f2ab8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/minio/index.md @@ -0,0 +1,773 @@ +--- +title: Minio | Stash +description: Using Stash with TLS secured Minio Server +menu: + docs_v2024.8.27: + identifier: platforms-minio + name: Minio + parent: platforms + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Stash with TLS secured Minio Server + +Minio is an open-source object storage server compatible with [AWS S3](https://aws.amazon.com/s3/) cloud storage service. This guide will show you how to use Stash to backup and restore volumes of a Kubernetes workload in [Minio](https://min.io/) backend. Here, we are going to backup a volume of a Deployment into a Minio bucket. Then, we are going to show how to restore this backed up data into a volume of another Deployment. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster. If you don't already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- You will need a TLS secured Minio server to store backed up data. If you already do not have a Minio server running, deploy one following the tutorial from [here](https://github.com/appscode/third-party-tools/blob/master/storage/minio/README.md). For this tutorial, we have deployed Minio server in `storage` namespace and it is accessible through `minio.storage.svc` dns. + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +**Choosing StorageClass:** + +Stash works with any `StorageClass`. Check available `StorageClass` in your cluster using the following command: + +```bash +$ kubectl get storageclass -n demo +NAME PROVISIONER AGE +standard (default) k8s.io/minikube-hostpath 130m +``` + +Here, we have `standard` StorageClass in our cluster. + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/platforms/minio/examples](/docs/v2024.8.27/guides/platforms/minio/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Backup the Volume of a Deployment + +Here, we are going to deploy a Deployment with a PVC. This Deployment will automatically generate some sample data into the PVC. Then, we are going to backup this sample data using Stash. + +### Prepare Workload + +At first, let's deploy the workload whose volumes we are going to backup. Here, we are going create a PVC and deploy a Deployment with this PVC. + +**Create PVC:** + +Below is the YAML of the sample PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +``` + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/pvc.yaml +persistentvolumeclaim/source-pvc created +``` + +**Deploy Deployment:** + +Now, we are going to deploy a Deployment that uses the above PVC. This Deployment will automatically generate sample data (`data.txt` file) in `/source/data` directory where we have mounted the PVC. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc +``` + +Let's create the Deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/deployment.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-69f9ffbbf7-6wwtr 1/1 Running 0 60s +stash-demo-69f9ffbbf7-88kgj 1/1 Running 0 60s +stash-demo-69f9ffbbf7-q8qld 1/1 Running 0 60s +``` + +To verify that the sample data has been created in `/source/data` directory, use the following command: + +```bash +$ kubectl exec -n demo stash-demo-69f9ffbbf7-6wwtr -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed up data into an [Minio Bucket](https://min.io/). At first, we need to create a secret with the access credentials to our Minio bucket. Then, we have to create a `Repository` crd that will hold the information about our backend storage. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Secret:** + +Let's create a secret called `minio-secret` with access credentials to our desired [Minio bucket](https://min.io/), + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > AWS_ACCESS_KEY_ID +$ echo -n '' > AWS_SECRET_ACCESS_KEY +$ cat ./directory/of/root/certificate/ca.crt > CA_CERT_DATA +$ kubectl create secret generic -n demo minio-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AWS_ACCESS_KEY_ID \ + --from-file=./AWS_SECRET_ACCESS_KEY \ + --from-file=./CA_CERT_DATA +secret/minio-secret created +``` + +Verify that the secret has been created successfully, + +```bash +$ kubectl get secret -n demo minio-secret -o yaml +``` + +```yaml +apiVersion: v1 +data: + AWS_ACCESS_KEY_ID: YWRtaW4= + AWS_SECRET_ACCESS_KEY: Y2hhbmdlaXQ= + CA_CERT_DATA: dXNlIHlvdXIgb3duIGNyZWRlbnRpYWxz # + RESTIC_PASSWORD: Y2hhbmdlaXQ= +kind: Secret +metadata: + creationTimestamp: "2019-07-23T05:32:40Z" + name: minio-secret + namespace: demo + resourceVersion: "7824" + selfLink: /api/v1/namespaces/demo/secrets/minio-secret + uid: 31c9310d-dc31-42a3-bc42-f9318290b091 +type: Opaque +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired Minio bucket. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: minio-repo + namespace: demo +spec: + backend: + s3: + endpoint: 'https://minio-nodeport-svc.storage.svc' + bucket: minio-bucket + prefix: /source/data + storageSecretName: minio-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/repository.yaml +repository.stash.appscode.com/minio-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take a periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: minio-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `minio-repo` that holds backend [Minio bucket](https://min.io/) information. +- `spec.target.ref` refers to the `stash-demo` Deployment for backup target. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-6548cf5cc-7qx9d 2/2 Running 0 42s +stash-demo-6548cf5cc-d26sx 2/2 Running 0 37s +stash-demo-6548cf5cc-f2xbl 2/2 Running 0 40s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-6548cf5cc-7qx9d -o yaml +apiVersion: v1 +kind: Pod +metadata: + annotations: + stash.appscode.com/last-applied-backupconfiguration-hash: "17185792379662025862" + creationTimestamp: "2019-07-23T08:52:42Z" + generateName: stash-demo-6548cf5cc- + labels: + app: stash-demo + pod-template-hash: 6548cf5cc + name: stash-demo-6548cf5cc-7qx9d + namespace: demo + ... +spec: + containers: + - args: + - echo sample_data > /source/data/data.txt && sleep 3000 + command: + - /bin/sh + - -c + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-95xvp + readOnly: true + - args: + - run-backup + - --backup-configuration=deployment-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: suaas21/stash:volumeTemp_linux_amd64 + imagePullPolicy: IfNotPresent + name: stash + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-95xvp + readOnly: true + dnsPolicy: ClusterFirst + enableServiceLinks: true + nodeName: minikube + priority: 0 + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc + - emptyDir: {} + name: tmp-dir + - downwardAPI: + defaultMode: 420 + items: + - fieldRef: + apiVersion: v1 + fieldPath: metadata.labels + path: labels + name: stash-podinfo + - name: stash-secret-volume + secret: + defaultMode: 420 + secretName: minio-secret + - name: default-token-95xvp + secret: + defaultMode: 420 + secretName: default-token-95xvp + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +deployment-backup */1 * * * * False 0 13s 1m50s +``` + +**Wait for BackupSession:** + +The `deployment-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. The sidecar container will watch for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 3 kubectl get backupsession -n demo +Every 3.0s: kubectl get backupsession -n demo suaas-appscode: Mon Jul 22 15:01:21 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-1563786061 BackupConfiguration deployment-backup Succeeded 18s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `minio-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +minio-repo true 32 B 2 3m40s 5m18s +``` + +Now, if we navigate to the Minio Bucket, we are going to see backed up data has been stored in `/source/data` directory as specified by `spec.backend.s3.prefix` field of `Repository` crd. + +
+  Backup data in Minio Bucket +
Fig: Backup data in Minio Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore the Backed up Data + +This section will show you how to restore the backed up data from [Minio bucket](https://min.io/) we have taken in earlier section. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` Deployment. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Deployment:** + +We are going to create a new Deployment named `stash-recovered` with a new PVC and restore the backed up data inside it. + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc +``` + +Let's create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/recovered_deployment.yaml +persistentvolumeclaim/restore-pvc created +deployment.apps/stash-recovered created +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` Deployment. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: minio-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/minio/examples/restoresession.yaml +restoresession.stash.appscode.com/deployment-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` Deployment. The Deployment will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` Deployment. Let’s describe the Deployment to verify that `init-container` has been injected successfully. + +```yaml +$ kubectl describe deployment -n demo stash-recovered +Name: stash-recovered +Namespace: demo +CreationTimestamp: Tue, 23 Jul 2019 15:05:11 +0600 +Labels: app=stash-recovered +Selector: app=stash-recovered +Replicas: 3 desired | 2 updated | 4 total | 3 available | 1 unavailable +StrategyType: RollingUpdate +... +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 9375001205249667775 + Init Containers: + stash-init: + Image: suaas21/stash:volumeTemp_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=deployment-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from restore-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Args: + sleep + 3600 + Environment: + Mounts: + /restore/data from restore-data (rw) + Volumes: + restore-data: + Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) + ClaimName: restore-pvc + ReadOnly: false + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: minio-secret + Optional: false +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Now, wait for the restore process to complete. You can watch the `RestoreSession` phase using the following command, + +```bash +$ watch -n 2 kubectl get restoresession -n demo +Every 3.0s: kubectl get restoresession --all-namespaces suaas-appscode: Mon Jul 22 18:17:26 2019 + +NAMESPACE NAME REPOSITORY-NAME PHASE AGE +demo deployment-restore minio-repo Succeeded 110s +``` + +So, we can see from the output of the above command that the restore process has succeeded. + +> **Note:** If you want to restore the backed up data inside the same Deployment whose volumes were backed up, you have to remove the corrupted data from the Deployment. Then, you have to create a RestoreSession targeting the Deployment. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. At first, check if the `stash-recovered` pod of the Deployment has gone into `Running` state by the following command, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-6f5c46fdbf-lfthv 1/1 Running 0 2m39s +stash-recovered-6f5c46fdbf-s7rrq 1/1 Running 0 2m15s +stash-recovered-6f5c46fdbf-vn2z8 1/1 Running 0 2m35s +``` + +Verify that the sample data has been restored in `/restore/data` directory of the `stash-recovered` pod of the Deployment using the following command, + +```bash +$ kubectl exec -n demo stash-recovered-6f5c46fdbf-s7rrq -- cat /restore/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment stash-recovered +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo restoresession deployment-restore +kubectl delete -n demo repository minio-repo +kubectl delete -n demo secret minio-secret +kubectl delete -n demo pvc --all +``` + +## Next Steps + +1. See a step by step guide to backup/restore volumes of a StatefulSet [here](/docs/v2024.8.27/guides/workloads/statefulset/). +2. See a step by step guide to backup/restore volumes of a DaemonSet [here](/docs/v2024.8.27/guides/workloads/daemonset/). +3. See a step by step guide to Backup/restore Stand-alone PVC [here](/docs/v2024.8.27/guides/volumes/pvc/) diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..d22931164c --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: rook-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/deployment.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/deployment.yaml new file mode 100644 index 0000000000..93f0c38eba --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/deployment.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc + strategy: + rollingUpdate: + maxSurge: "0%" + maxUnavailable: "100%" diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/pvc.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/pvc.yaml new file mode 100644 index 0000000000..e917671c5e --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: "rook-ceph-block" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/recovered_deployment.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/recovered_deployment.yaml new file mode 100644 index 0000000000..b9ff8b0ae9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/recovered_deployment.yaml @@ -0,0 +1,50 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: "rook-ceph-block" + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc + strategy: + rollingUpdate: + maxSurge: "0%" + maxUnavailable: "100%" diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/repository.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/repository.yaml new file mode 100644 index 0000000000..60f22f7856 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/repository.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: rook-repo + namespace: demo +spec: + backend: + s3: + endpoint: 'http://rook-ceph-rgw-my-store-external.rook-ceph.svc' + bucket: rook-bucket + prefix: /source/data + storageSecretName: rook-secret diff --git a/content/docs/v2024.8.27/guides/platforms/rook/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/platforms/rook/examples/restoresession.yaml new file mode 100644 index 0000000000..3d1bcc509b --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: rook-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ diff --git a/content/docs/v2024.8.27/guides/platforms/rook/index.md b/content/docs/v2024.8.27/guides/platforms/rook/index.md new file mode 100644 index 0000000000..176c0314a5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/platforms/rook/index.md @@ -0,0 +1,772 @@ +--- +title: Rook | Stash +description: Using Stash with Rook Storage Service +menu: + docs_v2024.8.27: + identifier: platforms-rook + name: Rook + parent: platforms + weight: 50 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Using Stash with Rook Managed Ceph Storage + +This guide will show you how to use Stash to backup and restore volumes of a Kubernetes workload in [Rook](https://rook.io/) managed Ceph storage. Here, we are going to backup a volume of a Deployment into [AWS S3](https://aws.amazon.com/s3/) compatible [Ceph Object Storage](https://rook.io/docs/rook/v1.0/ceph-object.html). Then, we are going to show how to restore this volume into a PersistentVolumeClaim of [Ceph Object Storage](https://rook.io/docs/rook/v1.0/ceph-object.html). We are going to also re-deploy deployment using this recovered volume. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster. If you don't already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) +- You will need a [Rook](https://rook.io/docs/rook/v1.7/quickstart.html) deployment with [Ceph Object Storage](https://rook.io/docs/rook/v1.7/ceph-object.html) and [Ceph Block Storage](https://rook.io/docs/rook/v1.7/ceph-block.html) configured. If you do not already have a Rook Storage Service configured, you can create one by following this [quickstart](https://rook.io/docs/rook/v1.7/quickstart.html) guide. + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/platforms/rook/examples](/docs/v2024.8.27/guides/platforms/rook/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +**Choosing StorageClass:** + +[Ceph Block Storage](https://rook.io/docs/rook/v1.0/ceph-block.html) allows mounting Rook storage into pod using a PersistentVolumeClaim. In order to do that, we have to create a PersistentVolumeClaim with `rook-ceph-block`[StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/). Verify the StorageClass exist by the following command: + +```bash +$ kubectl get storageclass +NAME PROVISIONER AGE +rook-ceph-block ceph.rook.io/block 89m +standard (default) k8s.io/minikube-hostpath 104m +``` + +## Backup the Volume of a Deployment + +Here, we are going to deploy a Deployment with a PVC. This Deployment will automatically generate some sample data into the PVC. Then, we are going to backup this sample data using Stash. + +### Prepare Workload + +At first, let's deploy the workload whose volumes we are going to backup. Here, we are going create a PVC and deploy a Deployment with this PVC. + +**Create PVC:** + +Below is the YAML of the sample PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: "rook-ceph-block" + resources: + requests: + storage: 1Gi +``` + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/pvc.yaml +persistentvolumeclaim/source-pvc created +``` + +**Deploy Deployment:** + +Now, we are going to deploy a Deployment that uses the above PVC. This Deployment will automatically generate sample data (`data.txt` file) in `/source/data` directory where we have mounted the PVC. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc + strategy: + rollingUpdate: + maxSurge: "0%" + maxUnavailable: "100%" +``` + +Let's create the Deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/deployment.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-69f9ffbbf7-98lth 1/1 Running 0 13s +``` + +To verify that the sample data has been created in `/source/data` directory, use the following command: + +```bash +$ kubectl exec -n demo stash-demo-69f9ffbbf7-98lth -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed up data into an [Ceph Storage Bucket](https://rook.io/docs/rook/v1.0/ceph-storage.html). At first, we need to create a secret with the access credentials to our Ceph storage bucket. Then, we have to create a `Repository` crd that will hold the information about our backend storage. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +**Create Secret:** + +Let's create a secret called `rook-secret` with access credentials to our desired [Ceph Storage Bucket](https://rook.io/docs/rook/v1.0/ceph-storage.html), + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > AWS_ACCESS_KEY_ID +$ echo -n '' > AWS_SECRET_ACCESS_KEY +$ kubectl create secret generic -n demo rook-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./AWS_ACCESS_KEY_ID \ + --from-file=./AWS_SECRET_ACCESS_KEY +secret/rook-secret created +``` + +Verify that the secret has been created successfully, + +```bash +$ kubectl get secret -n demo rook-secret -o yaml +``` + +```yaml +apiVersion: v1 +data: + AWS_ACCESS_KEY_ID: Tk5HTkcwUVowS1lVOEhKMEFQVEQ= + AWS_SECRET_ACCESS_KEY: alExVHJFNU9oa2QzUEk0QzlQbkYwTjVaV0hvd2Yycm9BS2U1MEVsdA== + RESTIC_PASSWORD: Y2hhbmdlaXQ= +kind: Secret +metadata: + creationTimestamp: "2019-07-25T10:34:25Z" + name: rook-secret + namespace: demo + resourceVersion: "43037" + selfLink: /api/v1/namespaces/demo/secrets/rook-secret + uid: 49f412a4-f1e7-4eb1-92f5-49c0a96cc18d +type: Opaque +``` + +**Create Repository:** + +Now, let's create a `Repository` with the information of our desired Ceph storage bucket. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: rook-repo + namespace: demo +spec: + backend: + s3: + endpoint: 'http://rook-ceph-rgw-my-store-external.rook-ceph.svc' + bucket: rook-bucket + prefix: /source/data + storageSecretName: rook-secret +``` + +Let's create the `Repository` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/repository.yaml +repository.stash.appscode.com/rook-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take a periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: rook-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `rook-repo` that holds backend information. +- `spec.target.ref` refers to the `stash-demo` Deployment for backup target. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-76d78d8966-nbkrl 2/2 Running 0 39s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-76d78d8966-nbkrl -o yaml +apiVersion: v1 +kind: Pod +metadata: + generateName: stash-demo-76d78d8966- + labels: + app: stash-demo + pod-template-hash: 76d78d8966 + name: stash-demo-76d78d8966-nbkrl + namespace: demo + ... +spec: + containers: + - args: + - echo sample_data > /source/data/data.txt && sleep 3000 + command: + - /bin/sh + - -c + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-2njxz + readOnly: true + - args: + - run-backup + - --backup-configuration=deployment-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: suaas21/stash:volumeTemp_linux_amd64 + imagePullPolicy: IfNotPresent + name: stash + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-2njxz + readOnly: true + dnsPolicy: ClusterFirst + enableServiceLinks: true + nodeName: minikube + priority: 0 + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + tolerations: + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 300 + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 300 + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc + - emptyDir: {} + name: tmp-dir + - downwardAPI: + defaultMode: 420 + items: + - fieldRef: + apiVersion: v1 + fieldPath: metadata.labels + path: labels + name: stash-podinfo + - name: stash-secret-volume + secret: + defaultMode: 420 + secretName: rook-secret + - name: default-token-2njxz + secret: + defaultMode: 420 + secretName: default-token-2njxz + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +deployment-backup */1 * * * * False 0 13s 1m50s +``` + +**Wait for BackupSession:** + +The `deployment-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. The sidecar container will watch for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 3 kubectl get backupsession -n demo +Every 3.0s: kubectl get backupsession -n demo suaas-appscode: Mon Jul 22 15:01:21 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-1663786062 BackupConfiguration deployment-backup Succeeded 21s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `rook-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +rook-repo true 30 B 2 3m10s 5m20s +``` + +Here, `BACKUPCOUNT` field indicates the number of backup snapshots has taken in this repository. + +## Restore the Backed up Data + +This section will show you how to restore the backed up data from [Ceph Storage Bucket](https://rook.io/docs/rook/v1.0/ceph-storage.html) we have taken in the earlier section. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` Deployment. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Deployment:** + +We are going to create a new Deployment named `stash-recovered` with a new PVC and restore the backed up data inside it. + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: restore-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: "rook-ceph-block" + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-pvc + strategy: + rollingUpdate: + maxSurge: "0%" + maxUnavailable: "100%" +``` + +Let's create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/recovered_deployment.yaml +persistentvolumeclaim/restore-pvc created +deployment.apps/stash-recovered created +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` Deployment. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: rook-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: restore-data + mountPath: /source/data + rules: + - paths: + - /source/data/ +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/platforms/rook/examples/restoresession.yaml +restoresession.stash.appscode.com/deployment-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` Deployment. The Deployment will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` Deployment. Let’s describe the Deployment to verify that `init-container` has been injected successfully. + +```yaml +$ kubectl describe deployment -n demo stash-recovered +Name: stash-recovered +Namespace: demo +CreationTimestamp: Thu, 25 Jul 2019 19:14:18 +0600 +Labels: app=stash-recovered +Selector: app=stash-recovered +Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable +StrategyType: RollingUpdate +MinReadySeconds: 0 +RollingUpdateStrategy: 100% max unavailable, 0% max surge +... +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 10604314699482840900 + Init Containers: + stash-init: + Image: suaas21/stash:volumeTemp_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=deployment-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from restore-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Args: + sleep + 3600 + Environment: + Mounts: + /restore/data from restore-data (rw) + Volumes: + restore-data: + Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) + ClaimName: restore-pvc + ReadOnly: false + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: rook-secret + Optional: false +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Now, wait for the restore process to complete. You can watch the `RestoreSession` phase using the following command, + +```bash +$ watch -n 2 kubectl get restoresession -n demo +Every 3.0s: kubectl get restoresession --all-namespaces suaas-appscode: Mon Jul 28 18:17:22 2019 + +NAMESPACE NAME REPOSITORY-NAME PHASE AGE +demo deployment-restore rook-repo Succeeded 100s +``` + +So, we can see from the output of the above command that the restore process has succeeded. + +> **Note:** If you want to restore the backed up data inside the same Deployment whose volumes were backed up, you have to remove the corrupted data from the Deployment. Then, you have to create a RestoreSession targeting the Deployment. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. At first, check if the `stash-recovered` pod of the Deployment has gone into `Running` state by the following command, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-5c59587895-76tsx 1/1 Running 0 73s +``` + +Verify that the sample data has been restored in `/restore/data` directory of the `stash-recovered` pod of the Deployment using the following command, + +```bash +$ kubectl exec -n demo stash-recovered-5c59587895-76tsx -- cat /restore/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment stash-recovered +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo restoresession deployment-restore +kubectl delete -n demo repository rook-repo +kubectl delete -n demo secret rook-secret +kubectl delete -n demo pvc --all +``` + +# Next Steps + +1. See a step by step guide to backup/restore volumes of a StatefulSet [here](/docs/v2024.8.27/guides/workloads/statefulset/). +2. See a step by step guide to backup/restore volumes of a DaemonSet [here](/docs/v2024.8.27/guides/workloads/daemonset/). +3. See a step by step guide to Backup/restore Stand-alone PVC [here](/docs/v2024.8.27/guides/volumes/pvc/) diff --git a/content/docs/v2024.8.27/guides/security/_index.md b/content/docs/v2024.8.27/guides/security/_index.md new file mode 100644 index 0000000000..7b75c35b8c --- /dev/null +++ b/content/docs/v2024.8.27/guides/security/_index.md @@ -0,0 +1,76 @@ +--- +title: Security | Stash +menu: + docs_v2024.8.27: + identifier: security + name: Security + parent: guides + weight: 130 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/security/psp/index.md b/content/docs/v2024.8.27/guides/security/psp/index.md new file mode 100644 index 0000000000..0cb20118b9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/security/psp/index.md @@ -0,0 +1,215 @@ +--- +title: PSP | Stash +description: Using Stash in PSP enabled cluster +menu: + docs_v2024.8.27: + identifier: security-psp + name: PSP + parent: security + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash with PSP Enabled Cluster + +Stash comes with built-in support for [Pod Security Policy (PSP)](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled cluster. Stash may use two different [Kubernets recommended PSP](https://kubernetes.io/docs/concepts/security/pod-security-standards) based on your setup. + +### Baseline PSP + + By default Stash uses minimally restrictive [baseline](https://kubernetes.io/docs/concepts/security/pod-security-standards/#baseline-default) PSP. Stash uses baseline PSP. Here, is the YAML of the baseline PSP that uses by Stash operator. + +```yaml +# ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/#policy-instantiation +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: baseline + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-delete-policy": before-hook-creation + {{- if .Values.security.apparmor.enabled }} + # Optional: Allow the default AppArmor profile, requires setting the default. + apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' + apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' + {{- end }} + {{- if .Values.security.seccomp.enabled }} + # Optional: Allow the default seccomp profile, requires setting the default. + seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default,unconfined' + seccomp.security.alpha.kubernetes.io/defaultProfileName: 'unconfined' + {{- end }} +spec: + privileged: false + # The moby default capability set, defined here: + # https://github.com/moby/moby/blob/0a5cec2833f82a6ad797d70acbf9cbbaf8956017/oci/caps/defaults.go#L6-L19 + allowedCapabilities: + - 'CHOWN' + - 'DAC_OVERRIDE' + - 'FSETID' + - 'FOWNER' + - 'MKNOD' + - 'NET_RAW' + - 'SETGID' + - 'SETUID' + - 'SETFCAP' + - 'SETPCAP' + - 'NET_BIND_SERVICE' + - 'SYS_CHROOT' + - 'KILL' + - 'AUDIT_WRITE' + # Allow all volume types except hostpath + volumes: + # 'core' volume types + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + # Assume that persistentVolumes set up by the cluster admin are safe to use. + - 'persistentVolumeClaim' + # Allow all other non-hostpath volume types. + - 'awsElasticBlockStore' + - 'azureDisk' + - 'azureFile' + - 'cephFS' + - 'cinder' + - 'csi' + - 'fc' + - 'flexVolume' + - 'flocker' + - 'gcePersistentDisk' + - 'gitRepo' + - 'glusterfs' + - 'iscsi' + - 'nfs' + - 'photonPersistentDisk' + - 'portworxVolume' + - 'quobyte' + - 'rbd' + - 'scaleIO' + - 'storageos' + - 'vsphereVolume' + hostNetwork: false + hostIPC: false + hostPID: false + readOnlyRootFilesystem: false + runAsUser: + rule: 'RunAsAny' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'RunAsAny' + fsGroup: + rule: 'RunAsAny' +``` + +### Privileged PSP + +If you are using an NFS server as backend with Stash, you may need to give Stash operator privileged permission. In this case, Stash will use [privileged](https://kubernetes.io/docs/concepts/security/pod-security-standards/#privileged) PSP. Here, is the YAML of privileged PSP that is used by Stash when you uses NFS server as backend, + +```yaml +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: privileged + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' +spec: + privileged: true + allowPrivilegeEscalation: true + allowedCapabilities: + - '*' + volumes: + - '*' + hostNetwork: true + hostPorts: + - min: 0 + max: 65535 + hostIPC: true + hostPID: true + runAsUser: + rule: 'RunAsAny' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'RunAsAny' + fsGroup: + rule: 'RunAsAny' +``` + +You can use your own PodSecurityPolicy with Stash. In this case, you have to create the PSP manually and provide the PSP names during installation. You can provide the custom PSP names during installation as below, + +```bash +$ helm install stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set podSecurityPolicies[0]=abc \ + --set podSecurityPolicies[1]=xyz +``` diff --git a/content/docs/v2024.8.27/guides/security/rbac/index.md b/content/docs/v2024.8.27/guides/security/rbac/index.md new file mode 100644 index 0000000000..e402fab8a8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/security/rbac/index.md @@ -0,0 +1,126 @@ +--- +title: RBAC | Stash +description: Using Stash in RBAC enabled cluster +menu: + docs_v2024.8.27: + identifier: security-rbac + name: RBAC + parent: security + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stash with RBAC Enabled Cluster + +Stash comes with built-in support for RBAC enabled cluster. Stash installer create a `ClusterRole` and `RoleBinding` giving necessary permission to the operator. + +## Operator Permissions + +Stash operator needs the following RBAC permissions, + +| API Groups | Resources | Permissions | +| ---------------------------- | -------------------------------------------------------------- | ------------------------------------------- | +| apiextensions.k8s.io | customresourcedefinitions | * | +| apiextensions.k8s.io | apiservices | get, patch, delete | +| admissionregistration.k8s.io | mutatingwebhookconfigurations, validatingwebhookconfigurations | get, list, watch, patch, delete | +| stash.appscode.com | * | * | +| appcatalog.appscode.com | * | * | +| apps | daemonsets, deployments, replicasets, statefulsets | get, list, watch, patch | +| batch | jobs, cronjobs | get, list, watch, create, patch, delete | +| "" | namespaces, replicationcontrollers | get, list, watch, patch | +| "" | configmaps | get, list, watch,create, update, delete | +| "" | persistentvolumeclaims | get, list, watch, create, patch | +| "" | services, endpoints | get | +| "" | secrets, events | get, list, create, patch | +| "" | nodes | list | +| "" | pods, pods/exec | get, list, create, delete, deletecollection | +| "" | serviceaccounts | get, create, patch, delete | +| rbac.authorization.k8s.io | clusterroles, roles, rolebindings, clusterrolebindings | get, create, delete, patch | +| apps.openshift.io | deploymentconfigs | get, list, watch, patch | +| policy | podsecuritypolicies | use | +| snapshot.storage.k8s.io | volumesnapshots, volumesnapshotcontents, volumesnapshotclasses | get, list, watch, create, patch, delete | +| storage.k8s.io | storageclasses | get | + +Here, + +- `""` in API Group column means `core` API groups. +- `*` in Resources colum means all resources. +- `*` in Permission colum means all permissions. + +## User facing ClusterRoles + +Stash introduces custom resources, such as, `BackupConfiguration`,`BackupBatch`, `BackupSession`, `Repository`, `RestoreSession`, `RestoreBatch`, `Function`, and `Task` etc. Stash installer will create 2 user facing cluster roles: + +| ClusterRole | Aggregates To | Desription | +| ------------------- | ------------- | ----------------------------------------------------------------------------------------------------- | +| appscode:stash:edit | admin, edit | Allows edit access to Stash CRDs, intended to be granted within a namespace using a RoleBinding. | +| appscode:stash:view | view | Allows read-only access to Stash CRDs, intended to be granted within a namespace using a RoleBinding. | + +These user facing roles supports [ClusterRole Aggregation](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles) feature in Kubernetes 1.9 or later clusters. diff --git a/content/docs/v2024.8.27/guides/troubleshooting/_index.md b/content/docs/v2024.8.27/guides/troubleshooting/_index.md new file mode 100644 index 0000000000..f26719d50a --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/_index.md @@ -0,0 +1,76 @@ +--- +title: Troubleshooting | Stash +menu: + docs_v2024.8.27: + identifier: troubleshooting + name: Troubleshooting + parent: guides + weight: 125 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/images/gcs_lifecycle_policy.png b/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/images/gcs_lifecycle_policy.png new file mode 100644 index 0000000000..5205de1095 Binary files /dev/null and b/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/images/gcs_lifecycle_policy.png differ diff --git a/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/index.md b/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/index.md new file mode 100644 index 0000000000..f7e4c1c036 --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/ciphertext-verification-failed/index.md @@ -0,0 +1,110 @@ +--- +title: Ciphertext Verification Failed| Stash +description: Troubleshooting "ciphertext verification failed" issue +menu: + docs_v2024.8.27: + identifier: troubleshooting-ciphertext-verification-failed + name: Ciphertext verification failed + parent: troubleshooting + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Troubleshooting "ciphertext verification failed" issue + +Sometimes, the backup starts failing after a few days with an error indicating `ciphertext verification failed`. In this guide, we are going to explain what might cause the issue and how to solve it. + +## Identifying the issue + +The backup should run successfully for a few days. Suddenly, it will start failing. Any subsequent backups will fail too. If you describe the respective `BackupSession` or view the log from the respective backup sidecar/job, you should see the following error: + +```bash +Fatal: ciphertext verification failed +``` + +## Possible reasons + +This can happen if the backed-up data get corrupted for any of these reasons. + +- Someone deleted some files/folders from the backend manually. +- The respective bucket has a policy configured to delete the old data automatically. + +## Solution + +At first, check if the bucket has any policy configured to delete the old data automatically. If this is the case, please remove that policy and depend only on the retention policy provided by Stash Repository to cleanup the old data. + +For example, if you are using a GCS bucket, you can check for such policy in the `LIFECYCLE` tab. + +
+ Object deletion policy in GCS +
Fig: Object deletion policy in GCS
+
+ +Unfortunately, there is no known way to fix the corrupted repository. You have to delete all the corrupted data from the backend. Only then, the subsequent backups will succeed again. diff --git a/content/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/index.md b/content/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/index.md new file mode 100644 index 0000000000..9d0b8b7bdf --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/how-to-troubleshoot/index.md @@ -0,0 +1,266 @@ +--- +title: How to Troubleshoot Stash issues | Stash +description: Troubleshooting backup/restore issues +menu: + docs_v2024.8.27: + identifier: troubleshooting-how-to + name: How to Troubleshoot + parent: troubleshooting + weight: 5 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# How to Troubleshoot Stash Issues + +This guide will give you an overview of how you can gather the necessary information to identify the issue that causes the backup/restore failure. + +## Troubleshoot Backup Issues + +In this section, we are going to explain how to troubleshoot backup issues. + +### Backup was Never Triggered + +If you have created the desired `BackupConfiguration` but the respective backup triggering CronJob was never created or any `BackupSession` was not created in the scheduled time, in this case, follow the following steps: + +#### Describe the `BackupConfiguration` + +At first, you should describe the respective `BackupConfiguration` as below: + +```bash +kubectl describe backupconfiguration -n +``` + +Now, check the `Status` section of `BackupConfiguration`. Make sure all the `conditions` are `True`. If there is any issue during backup setup, you should see the error in the respective condition. + +Also, check the event to see if there is any indication of an error. + +#### Check Stash operator log + +If you don't notice any error in the previous step, you should check the Stash operator log. + +Run the following command to view the Stash operator log: + +```bash +# Identify the Stash operator pod +kubectl get pods --all-namespaces | grep stash + +# View log of Stash operator pod +kubectl logs -n -c operator +``` + +Now, inspect the log carefully. You should see the respective error in the log. + +### BackupConfiguration NotReady + +If the phase of the `BackupConfiguration` is `NotReady`, you should describe the respective `BackupConfiguration`, + +```bash +kubectl describe backupconfiguration -n +``` + +Now, check the `Status` section of `BackupConfiguration`. Make sure all the `conditions` are `True`. If there is any issue during backup setup, you should see the error in the respective condition. If any of the conditions is `False`, the backup stays in the `NotReady` phase. The conditions that may cause a `BackupConfiguration` to become `NotReady` are given bellow: + +| Reason | Message | +| ------------------------- | ----------------------------- | +| RepositoryNotAvailable | Repository does not exist | +| BackendSecretNotAvailable | Backend Secret does not exist | +| TargetNotAvailable | Backup target does not exist | + +### Backup Failed + +If a backup fails, follow the following steps to identify the root cause. + +#### Describe the `BackupSession` + +At first, describe the failing `BackupSession`. You should see the respective error in the `Status` section. + +```bash +kubectl describe backupsession -n +``` + +Also, check the `Events` section. Sometimes, it can be helpful to identify the issue. + +#### View Backup Job/Sidecar log + +If you don't see any error in the previous step, you should try checking the log of the respective backup job/sidecar. + +If you are trying to backup a workload, run the following command to inspect the log: + +```bash +kubectl logs -n -c stash +``` + +If you are trying to backup using Stash addons, run the following command to inspect the log: + +```bash +# Identify the backup pod +kubectl get pods -n | grep stash-backup + +# View the log of the backup pod +kubectl logs -n --all-containers +``` + +Inspect the log carefully. You should notice the respective error that leads to backup failure. + +## Troubleshoot Restore Issues + +In this section, we are going to explain how to troubleshoot restore issues. + +### Restore Pending + +If the phase of the `RestoreSession` is `pending`, you should describe the respective `RestoreSession`, + +```bash +kubectl describe restoresession -n +``` + +Now, check the `Status` section of `RestoreSession`. Make sure all the `conditions` are `True`. If there is any issue during restore setup, you should see the error in the respective condition. If any of the conditions is `False`, the `RestoreSession` stays in the `Pending` phase. The conditions that may cause a `RestoreSession` to stay in `Pending` phase are given bellow: + +| Reason | Message | +| ------------------------- | ----------------------------- | +| RepositoryNotAvailable | Repository does not exist | +| BackendSecretNotAvailable | Backend Secret does not exist | +| TargetNotAvailable | Backup target does not exist | + +### Restore Failed + +If a restore fails, follow the following steps to identify the root cause. + +#### Describe the `RestoreSession` + +At first, describe the failing `RestoreSession`. You should see the respective error in the `Status` section. + +```bash +kubectl describe restoresession -n +``` + +Also, check the `Events` section. Sometimes, it can be helpful to identify the issue. + +#### View Restore Job/Init-Container log + +If you don't see any error in the previous step, you should try checking the log of the respective restore job / init-container. + +If you are trying to restore a workload, run the following command to inspect the log: + +```bash +kubectl logs -n -c stash-init +``` + +If you are trying to restore using Stash addons, run the following command to inspect the log: + +```bash +# Identify the restore pod +kubectl get pods -n | grep stash-restore + +# View the log of the restore pod +kubectl logs -n --all-containers +``` + +Inspect the log carefully. You should notice the respective error that leads to restore failure. + +## Debug with Stash `kubectl` Plugin + +You can use the Stash `kubectl` plugin to debug any backup/restore issue. + +### Debug Backup + +Run the following command to inspect any backup issue, + +```bash +kubectl stash debug backup -n --backupconfig +``` + +The above command will: + +- Show version information of Kubernetes and Stash +- Describe relevent `BackupConfiguration`, `BackupSessions`, and `Pods` +- Show logs from the relevent `Pods` + +### Debug Restore + +Run the following command to inspect any restore issue, + +```bash +kubectl stash debug restore -n --restoresession +``` + +The above command will: + +- Show version information of Kubernetes and Stash +- Describe relevent `RestoreSession` and `Pods` +- Show logs from the relevent `Pods` + +### Debug Operator + +Run the following command to view the Stash operator log: + +```bash +kubectl stash debug operator +``` diff --git a/content/docs/v2024.8.27/guides/troubleshooting/permission-denided/index.md b/content/docs/v2024.8.27/guides/troubleshooting/permission-denided/index.md new file mode 100644 index 0000000000..1e4fbf409a --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/permission-denided/index.md @@ -0,0 +1,331 @@ +--- +title: Permission denied | Stash +description: Troubleshooting "Permission denied" issue +menu: + docs_v2024.8.27: + identifier: troubleshooting-permission-denied + name: Permission denied + parent: troubleshooting + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Troubleshooting `"permission denied"` issue + +Sometimes the backup or restore fails due to permission issues. This can happen for various reasons. In this guide, we are going to explain the known scenarios when this issue can arise and what you can do to solve it. + +## Identifying the issue + +If you describe the respective `BackupSession` / `RestoreSession` or view the log from the respective backup/restore sidecar/job, you should see a message pointing to the `permission denied` error. + +## Possible reasons + +The issue can happen during both backup and restore. Here, are a few possible scenarios when you can face the issue. + +### During Backup + +You may see the permission issue during backup in the following cases. + +#### Using Local Backend + +If you are using local volumes such as `NFS`, `hostPath`, `PVC` etc. as your backend, you may face this issue. + +### Using InterimVolume during backup + +If you are using an addon that needs `interimVolume` for storing the data temporarily during backup (i.e. Elasticsearch addon), you may face this issue. + +### During Restore + +You may see the permission issue during the restore process in the following scenarios. + +### Backup was taken as a particular user + +By default, Stash runs the backup as user `nobody`. However, you may need to run the backup as a particular (i.e. `root` user) user in various scenarios. In this case, if the user id of the restore process does not match with the user id that was used during backup, the restore process will fail to read data from the backend repository. + +### Using InterimVolume during restore + +If you are using an addon that needs `interimVolume` for storing the data temporarily during restore (i.e. Elasticsearch addon), you may face this issue. + +## Solutions + +Here, are a few actions you can take to solve the issue in the scenarios mentioned above. + +### For local volume as backend + +If you are facing the issue while using local volume as a backend, you can take any of the following actions to solve the issue. + +#### Run the backup/restore as `root` user + +You can run the backup process as `root` by adding `runtimeSettings.container.securityContext` in the `BackupConfiguration` or `RestoreSession` spec. + +Here, is an example of running backup as `root` user: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: demo +spec: + repository: + name: local-repo + schedule: "*/3 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: data-volume + mountPath: /my/data + paths: + - /my/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, is an example of running restores as `root` user: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-mongodb-restore + namespace: kubedb +spec: + repository: + name: local-repo-with-hostpath + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: restored-mongodb + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +#### Provide `fsGroup` during backup/restore + +If you don't want to run the backup/restore as `root` user, you can provide `fsGroup` of Stash default user `65534` in `runtimeSettings.pod.securityContext` section. + +Here, is an example of setting `fsGroup`: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-mongodb-backup + namespace: kubedb +spec: + schedule: "*/5 * * * *" + repository: + name: local-repo-with-pvc + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-mongodb + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +> If you are taking backup of workload (i.e. StatefulSet, Deployment, etc.) volumes, you have to provide the `fsGroup` in your workload spec instead of `BackupConfiguration` / `RestoreSession`. + +#### Give read, write permissions to all users + +You can also use `chmod` to give read, write permissions to all users for the directory you are using as backend. + +### For using InterimVolume + +If you are facing the issue because of using `interimVolume` in your backup/restore process, you can either run the backup/restore process as `root` user or you can provide the storage access permission to Stash using `fsGroup`. + +Here, is an example of running backup as `root` user: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/5 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, is an example of using `fsGroup`: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-elasticsearch-backup + namespace: demo +spec: + schedule: "*/2 * * * *" + repository: + name: gcs-repo + target: + ref: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + name: sample-elasticsearch + interimVolumeTemplate: + metadata: + name: stash-tmp-backup-storage + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + runtimeSettings: + pod: + securityContext: + fsGroup: 65534 + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### For user id mismatch during restore + +If your restore fails because it does not have the necessary permission to read backed up data from the repository, you have to run the restore process as the same user as the backup process or `root` user using the `runtimeSettings.container.securityContext` section. + +Here, is an example of running restore as a particular user: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-statefulset-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 2000 + runAsGroup: 2000 +``` diff --git a/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/images/repo_lock.png b/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/images/repo_lock.png new file mode 100644 index 0000000000..8140bec7a9 Binary files /dev/null and b/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/images/repo_lock.png differ diff --git a/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/index.md b/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/index.md new file mode 100644 index 0000000000..588c6c99d1 --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/repo-locked/index.md @@ -0,0 +1,145 @@ +--- +title: Repository Locked | Stash +description: Troubleshooting "repository is already locked" issue +menu: + docs_v2024.8.27: + identifier: troubleshooting-repo-locked + name: Repository Locked + parent: troubleshooting + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Troubleshooting `"repository is already locked "` issue + +Sometimes, the backend repository gets locked and the subsequent backup fails. In this guide, we are going to explain why this can happen and what you can do to solve the issue. + +## Identifying the issue + +If the repository gets locked, the new backup will fail. If you describe the `BackupSession`, you should see an error message indicating that the repository is already locked by another process. + +```bash +kubectl describe -n backupsession +``` + +You will also see the error message in the backup sidecar/job log. + +```bash +# For backup that uses sidecar (i.e. Deployment, StatefulSet etc.) +kubectl logs -n -c stash + +# For backup that uses job (i.e. Database, PVC, etc.) +kubectl logs -n --all-containers +``` + +## Possible reasons + +A restic process that modifies the repository, creates a lock at the beginning of its operation. When it completes the operation, it removes the lock so that other restic processes can use the repository. Now, if the process is killed unexpectedly, it can not remove the lock. As a result, the repository remains locked and becomes unusable for other processes. + +### Possible scenarios when a repository can get locked + +The repository can get locked in the following scenarios. + +#### 1. The backup job/pod containing the sidecar has been terminated. + +If the workload pod that has the `stash` sidecar or backup job's pod gets terminated while a backup is running, the repository can get locked. In this case, you have to find out why the pod was terminated. + +#### 2. The temp-dir is set too low + +Stash uses an `emptyDir` as a temporary volume where it stores cache for improving backup performance. By default, the `emptyDir` does not have any size limit. However, if you set the limit manually using `spec.tempDir` section of `BackupConfiguration` make sure you have set it to a reasonable size based on your targeted data size. If the `tempDir` limit is too low, cache size may cross the limit resulting in the backup pod getting evicted by Kubernetes. This is a tricky case because you may not notice that the backup pod has been evicted. You can describe the respective workload/job to check if it was the case. + +In such a scenario, make sure that you have set the `tempDir` size to a reasonable amount. You can also disable caching by setting `spec.tempDir.disableCaching: true`. However, this might impact the backup performance significantly. + +## Solutions + +If your repository gets locked, you have to unlock it manually. You can use one of the following methods. + +### Use Stash kubectl plugin + +At first, install the Stash `kubectl` plugin by following the instruction [here](https://stash.run/docs/{{< param "info.version" >}}/setup/install/kubectl-plugin/). + +Then, run the following command to unlock the repository: + +```bash +kubectl stash unlock --namespace= +``` + +### Delete the locks folder from the backend + +If you are using a cloud bucket that provides a UI to browse the storage, you can go to the repository directory and delete the `locks` folder. + +
+ Locks in the backend repository +
Fig: Locks in the backend repository
+
+ +## Further Action + +Once you have found the issue of why the repository got locked in the first place, take the necessary measure to prevent it from occurring in the future. diff --git a/content/docs/v2024.8.27/guides/troubleshooting/source-data-read-failed/index.md b/content/docs/v2024.8.27/guides/troubleshooting/source-data-read-failed/index.md new file mode 100644 index 0000000000..8e2f09c029 --- /dev/null +++ b/content/docs/v2024.8.27/guides/troubleshooting/source-data-read-failed/index.md @@ -0,0 +1,133 @@ +--- +title: Source data read failed | Stash +description: Troubleshooting "failed to read all source data" issue +menu: + docs_v2024.8.27: + identifier: troubleshooting-source-data-read-failed + name: Source data read failed + parent: troubleshooting + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Troubleshooting `"failed to read all source data"` issue + +Sometimes, the backup fails due to Stash being unable to read the targeted data. In this guide, we are going to explain the possible scenario when this error can happen and what you can do to solve the issue. + +## Identifying the issue + +If you describe the respective `BackupSession` or view the log from the respective backup sidecar/job, you should see the following error: + +```bash +Warning: failed to read all source data during backup +``` + +## Possible reason + +By default, Stash runs backup as a non-root user. If the target data directory is not readable to all users, then Stash will fail to read the targeted data. + +## Solution + +Run the backup process as the same user as the targeted application or run the backup process as the root user. + +Here is an example of `BackupConfiguration` for running backup as the root user: + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: sample-statefulset-backup + namespace: demo +spec: + repository: + name: s3-repo + schedule: "*/3 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: data-volume + mountPath: /my/data + paths: + - /my/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +If you don't want to run the backup as root user, then set the `runAsUser` and `runAsGroup` to match with your application user and group id. diff --git a/content/docs/v2024.8.27/guides/use-cases/_index.md b/content/docs/v2024.8.27/guides/use-cases/_index.md new file mode 100644 index 0000000000..278b961420 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/_index.md @@ -0,0 +1,76 @@ +--- +title: Different Use Cases | Stash +menu: + docs_v2024.8.27: + identifier: use-cases + name: Different Use Cases + parent: guides + weight: 80 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/dep-backupconfiguration.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/dep-backupconfiguration.yaml new file mode 100644 index 0000000000..55fcc0f1cd --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/dep-backupconfiguration.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "* * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + - name: source-config + mountPath: /source/config + paths: + - /source/data + - /source/config + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/deployment.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/deployment.yaml new file mode 100644 index 0000000000..1b47a97bee --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/deployment.yaml @@ -0,0 +1,63 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-config + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt; echo config_data > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /source/config + name: source-config + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + - name: source-config + persistentVolumeClaim: + claimName: source-config diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restore-deployment.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restore-deployment.yaml new file mode 100644 index 0000000000..72af01085c --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restore-deployment.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: restore-demo + name: restore-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: restore-demo + template: + metadata: + labels: + app: restore-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + - mountPath: /restore/config + name: restore-config + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + - name: restore-config + persistentVolumeClaim: + claimName: restore-config diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restoresession.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restoresession.yaml new file mode 100644 index 0000000000..1632f23443 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/deployment/restoresession.yaml @@ -0,0 +1,35 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: + rules: + - paths: + - /source/data + - /source/config + volumeMounts: + - name: restore-data + mountPath: /source/data + - name: restore-config + mountPath: /source/config + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/repository.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/repository.yaml new file mode 100644 index 0000000000..a0f1c42ec4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/restore-pvc-in-temp + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restore-statefulset.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restore-statefulset.yaml new file mode 100644 index 0000000000..b22f8b840a --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restore-statefulset.yaml @@ -0,0 +1,64 @@ +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: restore-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: restore-demo + namespace: demo + labels: + app: restore-demo +spec: + replicas: 3 + selector: + matchLabels: + app: restore-demo + serviceName: re-headless + template: + metadata: + labels: + app: restore-demo + spec: + containers: + - command: + - sleep + - '3600' + name: busybox + image: busybox + ports: + - containerPort: 80 + name: http + volumeMounts: + - name: restore-data + mountPath: "/restore/data" + - name: restore-config + mountPath: "/restore/config" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restoresession.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restoresession.yaml new file mode 100644 index 0000000000..69a9f36d3b --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/restoresession.yaml @@ -0,0 +1,36 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-statefulset + namespace: demo +spec: + repository: + name: gcs-repo + target: + rules: + - paths: + - /source/data + - /source/config + replicas: 3 + volumeMounts: + - name: restore-data-restore-demo + mountPath: /source/data + - name: restore-config-restore-demo + mountPath: /source/config + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config-restore-demo-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/ss-backupconfiguration.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/ss-backupconfiguration.yaml new file mode 100644 index 0000000000..49f10743c6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/ss-backupconfiguration.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/3 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + - name: source-config + mountPath: /source/config + paths: + - /source/data + - /source/config + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/statefulset.yaml b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/statefulset.yaml new file mode 100644 index 0000000000..f7e3bc849b --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/examples/statefulset/statefulset.yaml @@ -0,0 +1,68 @@ +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - args: ["echo $(POD_NAME) > /source/data/data.txt; echo $(POD_NAME) > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + name: busybox + image: busybox + ports: + - containerPort: 80 + name: http + volumeMounts: + - name: source-data + mountPath: "/source/data" + - name: source-config + mountPath: "/source/config" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: source-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/clone-pvc/index.md b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/index.md new file mode 100644 index 0000000000..14aceccff7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/clone-pvc/index.md @@ -0,0 +1,974 @@ +--- +title: Clone Data Volumes | Stash +description: An step by step guide on how to clone data volumes using Stash. +menu: + docs_v2024.8.27: + identifier: use-cases-clone-pvc + name: Clone Data Volumes + parent: use-cases + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Clone Data Volumes using Stash + +Using Stash you can clone data volumes of a workload into a different namespace in a cluster. You can provide a template for PVC in `RestoreSession`. Stash will create PVCs according to the template, then it will restore data in that PVC. Then you can use the cloned PVCs to deploy your desired workload. This guide will show you how to clone backed up data into new PVCs using Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [/docs/guides/use-cases/clone-pvc/examples](https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Clone the Volumes of a Deployment + +Here we are going to clone the volumes of a Deployment. At first, we are going to back up the volumes of a Deployment, then we are going to restore these volumes into new PVCs. + +### Backup + +We are going to deploy a Deployment with two PVCs and generate some sample data in it. Then, we are going to back up these PVCs. + +**Deploy Deployment:** + +Below is the YAML of the Deployment and PVCs that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-config + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt; echo config_data > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /source/config + name: source-config + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + - name: source-config + persistentVolumeClaim: + claimName: source-config +``` + +The above Deployment will automatically create `data.txt` and `config.cfg` file in `/source/data` and `/source/config` directory respectively and write some sample data in it. + +Let's create the Deployment and PVCs we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/deployment/deployment.yaml +persistentvolumeclaim/source-data created +persistentvolumeclaim/source-config created +deployment.apps/stash-demo created +``` + +Now, wait for the pod of the Deployment to go into `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-67ccdfbbc7-z97rd 1/1 Running 0 77s +``` + +Verify that the sample data has been created in `/source/data` and `/source/config` directory using the following commands, + +```bash +$ kubectl exec -n demo stash-demo-67ccdfbbc7-z97rd -- cat /source/data/data.txt +sample_data +$ kubectl exec -n demo stash-demo-67ccdfbbc7-z97rd -- cat /source/config/config.cfg +config_data +``` + +**Create Repository:** + +We are going to store our backed up data into a GCS bucket. We have to create a Secret and a Repository object with access credentials and backend information respectively. + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +Let's create a secret called `gcs-secret` with access credentials of our desired GCS backend, + + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded/sa_key_file.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/restore-pvc-in-temp + storageSecretName: gcs-secret +``` + +Let's create the `Repository` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our volumes to our desired backend. + +**Create BackupConfiguration:** + +Now, create a `BackupConfiguration` crd to take periodic backup of the PVCs of `stash-demo` Deployment. + +Below is the YAML of the `BackupConfiguration` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "* * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + - name: source-config + mountPath: /source/config + paths: + - /source/data + - /source/config + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Let's create the `BackupConfiguration` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/deployment/dep-backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +If everything goes well, Stash will create a `CronJob` to trigger backup periodically. + +**Verify CronJob:** + +Verify that Stash has created a `CronJob` to trigger a periodic backup of volumes of the Deployment by the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup * * * * * 36s +``` + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. You can watch for `BackupSession` crd using the following command, + +```bash +$ watch -n 3 kubectl get backupconfiguration -n demo +Every 3.0s: kubectl get backupconfiguration -n demo suaas-appscode: Mon Jul 8 18:20:47 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-1562588351 BackupConfiguration deployment-backup Succeeded 96s +``` + +We can see from the above output that the backup session has succeeded. This indicates that the volumes of the Deployment have been backed up in the backend successfully. + +### Restore + +Now, we are going to clone the volumes that we have backed up in the previous section. To do that, we have to create a `RestoreSession` object with `volumeClaimTemplates`. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's pause the scheduled backup of the old Deployment so that no backup is taken during the restore process. To pause the `deployment-backup` BackupConfiguration, run: + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Create RestoreSession:** + +Below is the YAML of the `RestoreSession` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: + rules: + - paths: + - /source/data + - /source/config + volumeMounts: + - name: restore-data + mountPath: /source/data + - name: restore-config + mountPath: /source/config + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi +``` + +Here, + +- `spec.target.volumeMounts` specifies the directory where the newly created PVC will be mounted inside the restore job. +- `spec.target.rules[*].paths` specifies the file paths that will be restored from the backed up data. +- `spec.target.volumeClaimTemplates:` a list of PVC templates that will be created by Stash to restore the respective backed up data. + - `name` specifies the name of the volume mountPath. This name must be the same as the volumeClaimTemplate name. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/deployment/restoresession.yaml +restoresession.stash.appscode.com/restore-deployment created +``` + +**Wait for RestoreSession to Succeed:** + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore PVCs. We can watch the `RestoreSession` phase to check if the restore process has succeeded or not. + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 3 kubectl get restoresession -n demo +Every 3.0s: kubectl get restoresession -n demo suaas-appscode: Mon Jul 8 18:39:58 2019 + +NAME REPOSITORY-NAME PHASE AGE +restore-deployment gcs-repo Succeeded 3m27s +``` + +So, we can see from the output of the above command that the restore process has completed successfully. + +**Verify Restored PVC:** + +Once the restore process is complete, we are going to see that new PVCs with the name `restore-data` and `restore-config` have been created. + +Verify that the PVCs have been created by the following command, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-config Bound pvc-6aab94dc-10b2-4c36-8768-89b20a7a24ed 2Gi RWO standard 32s +restore-data Bound pvc-8296da99-b813-466a-b9f2-efff1faeee17 2Gi RWO standard 32s +``` + +**Verify Restored Data:** + +Let's create a new Deployment with the restored PVCs to verify whether the backed up data have been restored. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: restore-demo + name: restore-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: restore-demo + template: + metadata: + labels: + app: restore-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + - mountPath: /restore/config + name: restore-config + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + - name: restore-config + persistentVolumeClaim: + claimName: restore-config +``` + +Create the deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/deployment/restore-deployment.yaml +deployment.apps/restore-demo created +``` + +Now, wait for the pod of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restore-demo-85fbcb5dcf-vpbt8 1/1 Running 0 2m50s +``` + +Verify that the backed up data has been restored in `/source/data` and `/source/config` directory using the following command, + +```bash +$ kubectl exec -n demo restore-demo-85fbcb5dcf-vpbt8 -- cat /restore/data/data.txt +sample_data +$ kubectl exec -n demo restore-demo-85fbcb5dcf-vpbt8 -- cat /restore/config/config.cfg +config_data +``` + +## Clone the Volumes of a SatefulSet + +Here we are going to clone the volumes of a StatefulSet. At first, we are going to back up the volumes of a StatefulSet, then we are going to restore these volumes into new PVCs. + +### Backup + +Now, we are going to deploy a StatefulSet and generate some sample data in its volume. Then, we are going to back up these volumes. + +**Deploy StatefulSet:** + +Below is the YAML of the Statefulset that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - args: ["echo $(POD_NAME) > /source/data/data.txt; echo $(POD_NAME) > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + name: busybox + image: busybox + ports: + - containerPort: 80 + name: http + volumeMounts: + - name: source-data + mountPath: "/source/data" + - name: source-config + mountPath: "/source/config" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: source-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi +``` + +The above StatefulSet will automatically create `data.txt` and `config.cfg` file in `/source/data` and `/source/config` directory respectively and write some sample data in it. + +Let's create the Statefulset we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/statefulset/statefulset.yaml +service/headless configured +statefulset.apps/stash-demo created +``` + +Now, wait for the pod of the Statefulset to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-0 1/1 Running 0 47s +stash-demo-1 1/1 Running 0 43s +stash-demo-2 1/1 Running 0 33s +``` + +Verify that the sample data has been created in `/source/data` and `/source/config` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n demo stash-demo-0 -- cat /source/config/config.cfg +stash-demo-0 +$ kubectl exec -n demo stash-demo-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-demo-1 -- cat /source/config/config.cfg +stash-demo-1 +$ kubectl exec -n demo stash-demo-2 -- cat /source/data/data.txt +stash-demo-2 +$ kubectl exec -n demo stash-demo-2 -- cat /source/config/config.cfg +stash-demo-2 +``` + +**Create Repository:** + +We are going to store our backed up data into a GCS bucket. Let’s create a secret called `gcs-secret` with access credentials of our desired GCS backend, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded/sa_key_file.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/restore-pvc-in-temp + storageSecretName: gcs-secret +``` + +Let’s create the Repository object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our volumes to our desired backend. + +**Create BackupConfiguration:** + +Now, create a `BackupConfiguration` crd to take periodic backup of the PVCs of `stash-demo` Statefulset. + +Below is the YAML of the `BackupConfiguration` that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/3 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + - name: source-config + mountPath: /source/config + paths: + - /source/data + - /source/config + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Let’s create the `BackupConfiguration` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/statefulset/ss-backupconfiguration.yaml +backupconfiguration.stash.appscode.com/ss-backup created +``` + +If everything goes well, Stash will create a `CronJob` to trigger backup periodically. + +**Verify CronJob:** + +Verify that Stash has created a `CronJob` to trigger a periodic backup of the volumes of the Statefulset by the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +ss-backup * * * * * 2m +``` + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. You can watch for `BackupSession` crd using the following command, + +```bash +$ watch -n 3 kubectl get backupsession -n demo +Every 3.0s: kubectl get backupsession -n demo suaas-appscode: Tue Jul 9 17:09:43 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +ss-backup-1562670004 BackupConfiguration ss-backup Succeeded 9m39s +``` + +We can see from the above output that the backup session has succeeded. This indicates that the volumes of the Deployment have been backed up in the backend successfully. + +### Restore + +Now, we are going to restore the volumes that we have backed up in the previous section. To do that, we have to create a `RestoreSession` object with `volumeClaimTemplates`. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's pause the scheduled backup of the old StatefulSet so that no backup is taken during the restore process. To pause the `ss-backup` BackupConfiguration, run: + +```bash +$ kubectl patch backupconfiguration -n demo ss-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/ss-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +ss-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the `BackupConfiguration` has been paused. + +**Create RestoreSession:** + +Below is the YAML of the `RestoreSession` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-statefulset + namespace: demo +spec: + repository: + name: gcs-repo + target: + rules: + - paths: + - /source/data + - /source/config + replicas: 3 + volumeMounts: + - name: restore-data-restore-demo + mountPath: /source/data + - name: restore-config-restore-demo + mountPath: /source/config + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config-restore-demo-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi +``` + +- `spec.target.replicas` `spec.target.replicas` specify the number of replicas of a StatefulSet whose volumes were backed up and Stash uses this field to dynamically create the desired number of PVCs and initialize them from respective Volumes. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `name` specifies the name of the volume mountPath. This name must be the same as the volumeClaimTemplate name without the `POD_ORDINAL` part. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. +- `spec.target.volumeClaimTemplates:` a list of PVC templates that will be created by Stash to restore the respective backed up data. + - `metadata.name` is a template for the name of the restored PVC that will be created by Stash. You have to provide this named template to match with your desired StatefulSet's PVC. For example, if you want to deploy a StatefulSet named `stash-demo` with `volumeClaimTemplate` name `my-volume`, your StatefulSet's PVC will be`my-volume-stash-demo-0`, `my-volume-stash-demo-1` and so on. In this case, you have to provide `volumeClaimTemplate` name in RestoreSession in the following format: + + ```bash + --${POD_ORDINAL} + ``` + + So for the above example, `volumeClaimTemplate` name for `RestoreSession` will be `my-volume-restore-demo-${POD_ORDINAL}`. + The `${POD_ORDINAL}` variable is resolved by Stash. + +Let’s create the `RestoreSession` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/statefulset/restoresession.yaml +restoresession.stash.appscode.com/restore-statefulset created +``` + +**Wait for RestoreSession to Succeed:** + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process has succeeded or not. + +Run the following command to watch `RestoreSession` phase, + +```bash +$ watch -n 3 kubectl get restoresession -n demo +Every 3.0s: kubectl get restoresession -n demo suaas-appscode: Tue Jul 9 18:14:44 2019 + +NAME REPOSITORY-NAME PHASE AGE +restore-statefulset gcs-repo Succeeded 2m2s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored PVC:** + +Once the restore process is complete, verify that new PVCs have been created successfully by the following command, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-config-restore-demo-0 Bound pvc-c575f88a-79c9-4d25-9aab-5f9822ced239 2Gi RWO standard 19s +restore-config-restore-demo-1 Bound pvc-09d8e1dc-9b51-4a74-983e-8ef2ecde88b5 2Gi RWO standard 19s +restore-config-restore-demo-2 Bound pvc-45fe4050-12dc-46cb-a797-63f8ea420e28 2Gi RWO standard 19s +restore-data-restore-demo-0 Bound pvc-d27485e6-5377-4009-b2e2-9ddc2f9afaf3 2Gi RWO standard 19s +restore-data-restore-demo-1 Bound pvc-ae605285-ef6c-4b02-958c-d34352972ff0 2Gi RWO standard 19s +restore-data-restore-demo-2 Bound pvc-bd087508-9d9c-4ee0-955f-4cd822ab85f7 2Gi RWO standard 19s +``` + +**Verify Restored Data:** + +Let's create a new Statefulset with the restored PVCs to verify whether the backed up data have been restored. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: restore-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: restore-demo + namespace: demo + labels: + app: restore-demo +spec: + replicas: 3 + selector: + matchLabels: + app: restore-demo + serviceName: re-headless + template: + metadata: + labels: + app: restore-demo + spec: + containers: + - command: + - sleep + - '3600' + name: busybox + image: busybox + ports: + - containerPort: 80 + name: http + volumeMounts: + - name: restore-data + mountPath: "/restore/data" + - name: restore-config + mountPath: "/restore/config" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi + - metadata: + name: restore-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 2Gi +``` + +Create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/clone-pvc/examples/statefulset/restore-statefulset.yaml +service/re-headless created +statefulset.apps/restore-demo created +``` + +Now, wait for the pod of the StatefulSet to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restore-demo-0 1/1 Running 0 34s +restore-demo-1 1/1 Running 0 31s +restore-demo-2 1/1 Running 0 26s +``` + +Verify that the backed up data has been restored in `/restore/data` and `/restore/config` directory using the following command, + +```bash +$ kubectl exec -n demo restore-demo-0 -- cat /restore/data/data.txt +stash-demo-0 +$ kubectl exec -n demo restore-demo-0 -- cat /restore/config/config.cfg +stash-demo-0 +$ kubectl exec -n demo restore-demo-1 -- cat /restore/data/data.txt +stash-demo-1 +$ kubectl exec -n demo restore-demo-1 -- cat /restore/config/config.cfg +stash-demo-1 +$ kubectl exec -n demo restore-demo-2 -- cat /restore/data/data.txt +stash-demo-2 +$ kubectl exec -n demo restore-demo-2 -- cat /restore/config/config.cfg +stash-demo-2 +``` + +## Cleanup + +To clean up the Kubernetes resources created by this tutorial, run: + +```yaml +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment restore-demo +kubectl delete -n demo statefulset stash-demo +kubectl delete -n demo statefulset restore-demo +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo backupconfiguration ss-backup +kubectl delete -n demo restoresession restore-deployment +kubectl delete -n demo restoresession restore-statefulset +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo secret gcs-secret +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/backupconfiguration_prod.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/backupconfiguration_prod.yaml new file mode 100644 index 0000000000..5d6fb8ecb7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/backupconfiguration_prod.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_prod.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_prod.yaml new file mode 100644 index 0000000000..147eaf289d --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_prod.yaml @@ -0,0 +1,45 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_staging.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_staging.yaml new file mode 100644 index 0000000000..a023c9a6ba --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/deployment_staging.yaml @@ -0,0 +1,46 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: demo-pvc \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_prod.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_prod.yaml new file mode 100644 index 0000000000..aab32219a0 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_prod.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_staging.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_staging.yaml new file mode 100644 index 0000000000..19f5e5141d --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/pvc_staging.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: demo-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_prod.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_prod.yaml new file mode 100644 index 0000000000..4340e0e05f --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_prod.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-cluster/deployment/sample-deployment + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_staging.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_staging.yaml new file mode 100644 index 0000000000..4340e0e05f --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/repository_staging.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-cluster/deployment/sample-deployment + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/restoresession_staging.yaml b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/restoresession_staging.yaml new file mode 100644 index 0000000000..4355686ccb --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/examples/restoresession_staging.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/index.md b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/index.md new file mode 100644 index 0000000000..d77bf21bf4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/cross-cluster-backup/index.md @@ -0,0 +1,668 @@ +--- +title: Cross-Cluster Backup and Restore | Stash +description: A guide on how to use backup and restore across clusters using Stash. +menu: + docs_v2024.8.27: + identifier: use-cases-cross-cluster-backup + name: Cross-Cluster Backup and Restore + parent: use-cases + weight: 60 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Cross-Cluster Backup and Restore + +This guide will show you how to take backup and restore across clusters using Stash. + +## Before You Begin + +- At first, you need to have running Kubernetes clusters, and the `kubectl` command-line tool must be configured to communicate with your clusters. We will use kind clusters throughout this tutorial. To know more about kind clusters, follow this doc [here](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +## Backup from `prod` Cluster + +To demonstrate the cross-clusters backup and restore capabilities, we will use the `prod` cluster for taking backup and restoring the backup into the `staging` cluster. + +### Prepare Cluster + +Let's create a cluster named `prod`, + +```bash +$ kind create cluster --name prod +Creating cluster "prod" ... + ✓ Ensuring node image (kindest/node:v1.23.0) 🖼 + ✓ Preparing nodes 📦 + ✓ Writing configuration 📜 + ✓ Starting control-plane 🕹️ + ✓ Installing CNI 🔌 + ✓ Installing StorageClass 💾 +Set kubectl context to "kind-prod" +You can now use your cluster with: + +kubectl cluster-info --context kind-prod + +Have a nice day! 👋 +``` + +To verify your current cluster, + +```bash +$ kubectl config current-context +kind-prod +``` + +if you are currently not in the `prod` cluster, you can switch your cluster by the following command, + +```bash +$ kubectl config use-context kind-prod +Switched to context "kind-prod". +``` + +We are going to create a namespace named `demo` in the `prod` cluster, + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +>**Note:** YAML files used in this tutorial can be found [here](https://github.com/stashed/docs/guides/use-cases/cross-cluster-backup/examples). + +Install `Stash` in your `prod` cluster following the steps [here](/docs/v2024.8.27/setup/README). + +### Deploy Workload + +Let's deploy a Deployment and an associated PVC in the `prod` cluster at the beginning. This Deployment will automatically generate sample data in the `/source/data` directory. + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data +``` + +Let's create the Deployment and PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/deployment_prod.yaml +persistentvolumeclaim/stash-sample-data created +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. You can verify the `Status` of the pods by executing the following command, + +```bash +$ kubectl get pods -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-7678679bcb-2s927 1/1 Running 0 29s +stash-demo-7678679bcb-b849l 1/1 Running 0 29s +stash-demo-7678679bcb-p62vn 1/1 Running 0 29s +``` + +Verify that the sample data has been created in `/source/data` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-7678679bcb-2s927 -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed-up data into a GCS bucket. We have to create a Secret with the necessary credentials and a Repository CRD to use this backend. + +If you want to use a different backend, please read the respective backend configuration doc [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a secret called `gcs-secret` in `demo` namespace with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, we are ready to backup our workload's data to our desired backend. + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of the `Repository` object we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-cluster/deployment/sample-deployment + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/repository_prod.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Configure Backup + +We are going to create a `BackupConfiguration` object in the `demo` namespace targeting the `stash-demo` Deployment that we have deployed earlier. This `BackupConfiguration` will refer to the `gcs-repo` repository. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of the `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository.name` refers to the Repository object that holds backend information. +- `spec.schedule` is a cron expression that indicates BackupSession will be created at 5 minutes intervals. +- `spec.target.ref` refers to the `stash-demo` Deployment. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` object we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/backupconfiguration_prod.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify BackupConfiguration Ready:** + +If everything goes well, the Phase of the BackupConfiguration should be `Ready`. Let's check the BackupConfiguration phase, + +```bash +❯ kubectl get backupconfiguration -n demo + +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-backup */5 * * * * Ready 48s +``` + +**Verify CronJob:** + +Stash will also create a `CronJob` with the schedule specified in the `spec.schedule` field of the `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n prod +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +stash-trigger-deployment-backup */5 * * * * False 0 28s 2m14s +``` + +### Verify Backup + +The `stash-trigger-deployment-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` crd. The sidecar container watches for the `BackupSession` object. When it finds one, it will take backup immediately. + +Wait for the next schedule for the backup. Run the following command to watch `BackupSession` crd, + +```bash +$ kubectl get backupsession -n prod -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE DURATION AGE +deployment-backup-1647238200 BackupConfiguration deployment-backup Running 5s +deployment-backup-1647238200 BackupConfiguration deployment-backup Running 16s +deployment-backup-1647238200 BackupConfiguration deployment-backup Running 27s +deployment-backup-1647238200 BackupConfiguration deployment-backup Succeeded 28s 27s +``` + +We can see from the above output that the backup session has succeeded. + +## Restore into `staging` Cluster + +This section will demonstrate restoring the backed-up data into the `staging` cluster. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created earlier. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +You can also use the Stash kubectl plugin to pause the backup like the following, + +```bash +$ kubectl stash pause backup --backupconfig=deployment-backup -n demo +BackupConfiguration demo/deployment-backup has been paused successfully. +``` + +Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-backup */5 * * * * true Ready 49m +``` + +Notice the `PAUSED` column. Value `true` indicates that the BackupConfiguration has been paused. + +### Prepare Cluster + +Let's create a cluster named `staging`, + +```bash +$ kind create cluster --name staging +Creating cluster "staging" ... + ✓ Ensuring node image (kindest/node:v1.23.0) 🖼 + ✓ Preparing nodes 📦 + ✓ Writing configuration 📜 + ✓ Starting control-plane 🕹️ + ✓ Installing CNI 🔌 + ✓ Installing StorageClass 💾 +Set kubectl context to "kind-staging" +You can now use your cluster with: + +kubectl cluster-info --context kind-staging + +Have a nice day! 👋 +``` + +To verify the current cluster you are working on, + +```bash +$ kubectl config current-context +kind-staging +``` + +If you are currently not in the `staging` cluster, you can switch your cluster by the following command, + +```bash +$ kubectl config use-context kind-staging +Switched to context "kind-staging". +``` + +We are going to create a namespace named `demo` in the `staging` cluster, + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +Install `Stash` in your `staging` cluster following the steps [here](/docs/v2024.8.27/setup/README). + +### Deploy Restore Workload + +We are going to create a new Deployment named `stash-recovered` and a PVC as a storage of the Deployment. We will restore the backed-up data inside it. + +Here is the YAML of the PVC and the Deployment, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: demo-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: demo-pvc +``` + +Let's create the Deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/deployment_staging.yaml +persistentvolumeclaim/demo-pvc created +deployment.apps/stash-recovered created +``` + +### Prepare Backend Info + +We have to re-create the Repository CR and the respective Secret that we have used in the `prod` cluster. + +**Create Secret:** + +Let's create a secret called `gcs-secret` in `demo` namespace with access credentials to our GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /cross-cluster/deployment/sample-deployment + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/repository_prod.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to restore our sample data from this specified backend. + +### Configure Restore + +Now, we need to create a `RestoreSession` object targeting the `stash-recovered` Deployment to restore the backed-up data inside it. + +**Create RestoreSession:** + +Below is the YAML of the `RestoreSesion` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ +``` + +Here, + +- `spec.repository.name` specifies the name of the Repository. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be the same mountPath as the original volume because Stash stores the absolute path of the backed-up files. If you use a different mountPath for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/cross-cluster-backup/examples/restoresession_staging.yaml +restoresession.stash.appscode.com/deployment-restore created +``` + +Now, wait for the RestoreSession phase to go into `Succeeded` state. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch the RestoreSession phase, + +```bash +$ kubectl get restoresession -n demo -w + +NAME REPOSITORY PHASE DURATION AGE +deployment-restore gcs-repo Succeeded 10s 35s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +### Verify Restored Data + +In this section, we are going to verify whether the desired data has been restored successfully or not. + +Get the pods of the `stash-recovered` Deployment, +```bash +$ kubectl get pods -n demo -l app='stash-recovered' +NAME READY STATUS RESTARTS AGE +stash-recovered-56547b7b57-scxl4 1/1 Running 0 16m +stash-recovered-56547b7b57-w4rf5 1/1 Running 0 16m +stash-recovered-56547b7b57-zxb2p 1/1 Running 0 16m +``` + +Verify that the backed-up data has been restored in `/source/data` directory of the `stash-recovered` pods of the Deployment using the following commands, + +```bash +$ kubectl exec -n demo stash-recovered-56547b7b57-scxl4 -- cat /source/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial in `prod` and `staging` clusters, run the following commands: + +**Cleanup `prod` Cluster** + +Switch your cluster to `prod`, + +```bash +$ kubectl config use-context kind-prod +Switched to context "kind-prod". +``` + +Clean up the Stash resources in the `prod` cluster, + +```bash +kubectl delete -n demo deployments stash-demo +kubectl delete -n demo pvc stash-sample-data +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo secret gcs-secret +``` + +**Cleanup `staging` Cluster** + +Switch your cluster to `staging`, + +```bash +$ kubectl config use-context kind-staging +Switched to context "kind-staging". +``` + +Clean up the Stash resources in the `staging` cluster, + +```bash +kubectl delete -n demo deployments stash-recovered +kubectl delete -n demo pvc demo-pvc +kubectl delete -n demo restoresession deployment-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo secret gcs-secret +``` \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/multiple_retention_policy.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/multiple_retention_policy.yaml new file mode 100644 index 0000000000..261e54ce08 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/multiple_retention_policy.yaml @@ -0,0 +1,27 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: sample-deployment-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/passing_args.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/passing_args.yaml new file mode 100644 index 0000000000..06a43d9bc2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/passing_args.yaml @@ -0,0 +1,24 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + args: ["--ignore-inode", "--tag=t1,t2"] + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/resource_limit.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/resource_limit.yaml new file mode 100644 index 0000000000..7b5cd02b9d --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/resource_limit.yaml @@ -0,0 +1,32 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/specific_user.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/specific_user.yaml new file mode 100644 index 0000000000..3e3da644bb --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/backup/specific_user.yaml @@ -0,0 +1,28 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/passing_args.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/passing_args.yaml new file mode 100644 index 0000000000..4a8e90d41b --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/passing_args.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/s + args: ["--tag=t1,t2"] \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/resource_limit.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/resource_limit.yaml new file mode 100644 index 0000000000..b4bbc45358 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/resource_limit.yaml @@ -0,0 +1,27 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_snapshot.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_snapshot.yaml new file mode 100644 index 0000000000..2ecce35ba2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_snapshot.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - snapshots: [4bc21d6f] \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_user.yaml b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_user.yaml new file mode 100644 index 0000000000..eb6afee7d6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/examples/restore/specific_user.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/index.md b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/index.md new file mode 100644 index 0000000000..edbfb545e7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/customize-backup-restore/index.md @@ -0,0 +1,370 @@ +--- +title: Backup/Restore Customization | Stash +description: A guide on how to customize backup/restore process in Stash. +menu: + docs_v2024.8.27: + identifier: use-cases-customize-backup-restore + name: Customize Backup/Restore + parent: use-cases + weight: 70 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Customizing the Backup and Restore Process + +This guide will show you how you can customize backup and restore processes in Stash according to your needs. + +> Note: YAML files used in this tutorial are stored [here](https://github.com/stashed/docs/tree/{{< param "info.version" >}}/docs/guides/use-cases/customize-backup-restore/examples). + +## Customizing Backup Process + +In this section, we are going to show you how to customize the backup process. Here, we are going to show some examples of providing arguments to the backup process, running the backup process as a specific user, etc. + +### Passing arguments to the backup process + +Stash uses `restic` during the backup process. You can pass optional arguments to the restic backup process via `spec.target.args` field of BackupConfiguration. + +Here is an example of passing `--ignore-inode` and `--tag=t1,t2` arguments to a Deployment backup process of Stash. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + args: ["--ignore-inode", "--tag=t1,t2"] + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true +``` + +> **WARNING**: Make sure that you have the specific workload created before taking backup. In this case, Deployment `sample-deployment` should exist before the backup sidecar starts. + +### Running backup Container as a specific user + +If your cluster requires running the backup job as a specific user, you can provide `securityContext` under `runtimeSettings.container` section. The below example shows how you can run the backup sidecar for a Deployment as the root user. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +### Specifying Memory/CPU limit/request for the backup + +If you want to specify the Memory/CPU limit/request for your backup process, you can specify `resources` field under `runtimeSettings.container` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +### Using multiple retention policies + +You can also specify multiple retention policies for your backed-up data. For example, you may want to keep few daily snapshots, few weekly snapshots, and few monthly snapshots, etc. You just need to pass the desired number with the respective key under the `retentionPolicy` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: sample-deployment-retention + keepLast: 5 + keepDaily: 10 + keepWeekly: 20 + keepMonthly: 50 + keepYearly: 100 + prune: true +``` + +To know more about the available options for retention policies, please visit [here](/docs/v2024.8.27/concepts/crds/backupconfiguration/#specretentionpolicy). + +## Customizing Restore Process + +Stash uses `restic` during the restore process also. In this section, we are going to show how you can pass arguments to the restore process, restore a specific snapshot, run restore job as a specific user, etc. + +### Passing arguments to the restore process + +Similar to the backup process, you can pass optional arguments to the restic via `spec.target.args` in the restore process. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: sample-deployment + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/s + args: ["--tag=t1,t2"] +``` + +### Restore specific snapshot + +You can also restore a specific snapshot. At first, list the available snapshots as below, + +```bash +❯ kubectl get snapshots -n demo +NAME ID REPOSITORY HOSTNAME CREATED AT +gcs-repo-4bc21d6f 4bc21d6f gcs-repo host-0 2022-01-12T14:54:27Z +gcs-repo-f0ac7cbd f0ac7cbd gcs-repo host-0 2022-01-12T14:56:26Z +gcs-repo-9210ebb6 9210ebb6 gcs-repo host-0 2022-01-12T14:58:27Z +gcs-repo-0aff8890 0aff8890 gcs-repo host-0 2022-01-12T15:00:28Z +``` + +>You can also filter the snapshots as shown in the guide [here](https://stash.run/docs/{{< param "info.version" >}}/concepts/crds/snapshot/#working-with-snapshot). + +You can use the respective ID of the snapshot to restore a specific snapshot. + +The below example shows how you can pass a specific snapshot ID through the `snapshots` field of `spec.target.rules` section. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - snapshots: [4bc21d6f] +``` + +>Please, do not specify multiple snapshots here. Each snapshot represents a complete backup of your database. Multiple snapshots are only usable during file/directory restore. + +### Running restore init-container as a specific user + +You can provide `securityContext` under `runtimeSettings.container` section to run the restore init-container as a specific user during workload restore. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 0 + runAsGroup: 0 + rules: + - snapshots: [latest] +``` + +### Specifying Memory/CPU limit/request for the restore process + +Similar to the backup process, you can also provide `resources` field under the `runtimeSettings.container` section to limit the Memory/CPU for your restore process. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: sample-deployment + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + runtimeSettings: + container: + resources: + requests: + cpu: "200m" + memory: "1Gi" + limits: + cpu: "200m" + memory: "1Gi" + rules: + - snapshots: [latest] +``` diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-exclude.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-exclude.yaml new file mode 100644 index 0000000000..5a16e78c94 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-exclude.yaml @@ -0,0 +1,27 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup-exclude + namespace: demo +spec: + repository: + name: gcs-repo-exclude + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + exclude: + - /source/data/not-important.txt # exclude only one file + - /source/data/*.html # exclude all the files that has a particular extension + - /source/data/tmp/* # exclude a directory + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-full.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-full.yaml new file mode 100644 index 0000000000..0775d1a5ee --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/backupconfiguration-full.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup-full + namespace: demo +spec: + repository: + name: gcs-repo-full + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-recovered.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-recovered.yaml new file mode 100644 index 0000000000..f9aea3d9ec --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-recovered.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: recovered-data diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-source.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-source.yaml new file mode 100644 index 0000000000..0bcfbd2ea0 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/deployment-source.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-recovered.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-recovered.yaml new file mode 100644 index 0000000000..462600cc09 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-recovered.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: recovered-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-source.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-source.yaml new file mode 100644 index 0000000000..163672b639 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/pvc-source.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-exclude.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-exclude.yaml new file mode 100644 index 0000000000..4a173085f9 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-exclude.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-exclude + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/stash-demo/exclude + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-full.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-full.yaml new file mode 100644 index 0000000000..9f5a7d0b79 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/repository-full.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-full + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/stash-demo/full + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-exclude.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-exclude.yaml new file mode 100644 index 0000000000..18ea000bad --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-exclude.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore-exclude + namespace: demo +spec: + repository: + name: gcs-repo-full + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ + exclude: + - /source/data/not-important.txt # don't restore this file + - /source/data/*.html # don't restore all files with .html extension + - /source/data/tmp/* # don't restore this directory diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-inlcude.yaml b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-inlcude.yaml new file mode 100644 index 0000000000..213940d122 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/examples/restoresession-inlcude.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore-include + namespace: demo +spec: + repository: + name: gcs-repo-full + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ + include: + - /source/data/data1.txt # restore this file + - /source/data/*.json # restore all files with .json extension + - /source/data/tmp/* # restore this directory diff --git a/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/index.md b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/index.md new file mode 100644 index 0000000000..dd70fe946c --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/exclude-include-files/index.md @@ -0,0 +1,652 @@ +--- +title: Exclude/Include Files | Stash +description: A guide on how to filter files during backup/restore process. +menu: + docs_v2024.8.27: + identifier: use-cases-exclude-include-files + name: Exclude/Include Files + parent: use-cases + weight: 12 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Filtering Files During Backup/Restore + +This guide will show you how to exclude/include subset of files during backup/restore process. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- Install Stash `kubectl` plugin following the steps [here](https://stash.run/docs/latest/setup/install/kubectl-plugin/). +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +❯ kubectl create ns demo +namespace/demo created +``` + +## Prepare Workload + +At first, we are going to create a `PVC` then we are going to create a `Deployment` that will use this `PVC`. + +### Create PVC + +Below is the YAML of the sample PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +``` + +Let’s create the PVC we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/pvc-source.yaml +persistentvolumeclaim/source-data created +``` + +### Create Deployment + +Now, we are going to deploy a Deployment that uses the above PVC. Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data +``` + +Let’s create the `Deployment` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/deployment-source.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pod of the Deployment to go into `Running` state. + +```bash +❯ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-67576d874-2tj9d 1/1 Running 0 81s +``` + +### Insert Data + +```bash +# create sample data +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/data-1.txt" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/data-2.txt" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/not-important.txt" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/index.html" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/resp.json" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "mkdir /source/data/tmp" + +❯ kubectl exec -n demo -it stash-demo-67576d874-2tj9d -- /bin/sh -c "touch /source/data/tmp/tmp.txt" +``` + +## Prepare Backend + +We are going to store our backed up data into a GCS bucket. We have to create a Secret with necessary credentials and a Repository crd to use this backend. If you want to use a different backend, please read the respective backend configuration doc from [here](https://stash.run/docs/latest/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs Storage Object Admin role permissions to create the bucket. For more details, please check the following guide. + +### Create Secret + +Let’s create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +## Full Backup + +Stash automatically takes backup of all the data in the specified path. We are going to create a BackupConfiguration crd targeting the stash-demo Deployment that we have deployed earlier. Then, Stash will inject a sidecar container into the target. It will also create a CronJob to take periodic backup of `/source/data` directory of the target. + +We are going to use the following `Repository` to backup our data, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-full + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/stash-demo/full + storageSecretName: gcs-secret +``` + +Let’s create the `Repository`, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/repository-full.yaml +repository.stash.appscode.com/gcs-repo-full created +``` + +Bellow is the yaml of the `BackupConfiguration` we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup-full + namespace: demo +spec: + repository: + name: gcs-repo-full + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +The above `BackupConfiguration` will backup everything inside the `/source/data` directory. + +Let’s create the `BackupConfiguration` object that we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/backupconfiguration-full.yaml +backupconfiguration.stash.appscode.com/deployment-backup-full created +``` + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. + +### Trigger a Backup + +Lets trigger a backup using Stash `kubectl` plugin, + +```bash +❯ kubectl stash trigger -n demo deployment-backup-full +``` + +### Wait for BackupSession to Succeed + +Run the following command to watch `BackupSession` phase, + +```bash +❯ watch kubectl get -n demo backupsession -n demo +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-full-1647347700 BackupConfiguration deployment-backup Succeeded 21s +``` + +### Verify Backup + +Lets download the `latest` snapshot of the `Repository` in `/tmp/full-backup` directory using Stash `kubectl` plugin, + +```bash +❯ mkdir /tmp/full-backup +❯ kubectl stash download gcs-repo-full -n demo --destination=/tmp/full-backup --snapshots="latest" +``` + +List the files in `/tmp/full-backup/latest/source/data` directory to verify the backup data. + +```bash +❯ ls -R /tmp/full-backup/latest/source/data + +/tmp/full-backup/latest/source/data: +data-1.txt data-2.txt index.html not-important.txt resp.json tmp/ + +/tmp/full-backup/latest/source/data/tmp: +tmp.txt +``` + +## Filtering During Backup + +In this section, we are going to show how to filter files during a backup. + +### Exclude Subset of Files + +Here, we are going show how to exclude particular files during a backup. We can exclude a subset of files during backup using the `spec.target.exclude` section in the `BackupConfiguration`. + +We are going to use the following `Repository` to backup our data, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo-exclude + namespace: demo +spec: + backend: + gcs: + bucket: stash-testing + prefix: /demo/stash-demo/exclude + storageSecretName: gcs-secret + +``` + +Let’s create the `Repository` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/repository-exclude.yaml +repository.stash.appscode.com/gcs-repo-exclude created +``` + + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup-exclude + namespace: demo +spec: + repository: + name: gcs-repo-exclude + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + exclude: + - /source/data/not-important.txt # exclude only one file + - /source/data/*.html # exclude the files with .html extension + - /source/data/tmp/* # exclude a directory + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true + +``` + +The above BackupConfiguration will backup everything inside the `/source/data` directory except the file `source/data/not-important.txt`, all the `html` files, and the directory `source/data/tmp`. + + Let’s create the BackupConfiguration object that we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/backupconfiguration-exclude.yaml +backupconfiguration.stash.appscode.com/deployment-backup-exclude created +``` + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. + +#### Trigger a Backup + +Lets trigger a backup using Stash `kubectl` plugin, + +```bash +kubectl stash trigger -n demo deployment-backup-exclude +``` + +#### Wait for BackupSession to Succeed + +Run the following command to watch `BackupSession` phase, + +```bash +$ watch kubectl get -n demo backupsession -n demo +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-exclude-1647347700 BackupConfiguration deployment-backup Succeeded 21s +``` + +### Verify Backup + +Lets download the `latest` snapshot of the `Repository` in `/tmp/partial-backup` directory using Stash `kubectl` plugin, + +```bash +❯ mkdir /tmp/partial-backup +❯ kubectl stash download gcs-repo-full -n demo --destination=/tmp/partial-backup --snapshots="latest" +``` + +List the files in `/tmp/partial-backup/latest/source/data` directory to verify the backup data. + +```bash +❯ ls -R /tmp/partial-backup/latest/source/data + +/tmp/partial-backup/latest/source/data: +data-1.txt data-2.txt resp.json tmp/ + +/tmp/partial-backup/latest/source/data/tmp: +``` + +## Filtering During Restore + +In this section, we are going to show how to filter files during a backup. At first, we are going to deploy a new Deployment with a PVC . Then, we are going to restore the backed up data using Stash. + +### Prepare Workload + +Below is the YAML of the `PVC` that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: recovered-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi + +``` + +Let’s create the PVC we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/pvc-recovered.yaml +persistentvolumeclaim/recovered-data created +``` + +Below is the YAML of the `Deployment` that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: recovered-data + +``` + +Let’s create the `Deployment` we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/deployment-recovered.yaml +deployment.apps/stash-recovered created +``` + +Now, wait for the pod of the Deployment to go into `Running` state. + +```bash +❯ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-67576d874-2tj9d 1/1 Running 0 81s +``` + +### Exclude Subset of Files + +Here, we are going show how to exclude particular files during a restore. We can exclude a subset of files during a restore using the `spec.target.rules` section in the `RestoreSession`. + +Below is the YAML of the `RestoreSession` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore-exclude + namespace: demo +spec: + repository: + name: gcs-repo-full + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ + exclude: + - /source/data/not-important.txt # don't restore this file + - /source/data/*.html # don't restore the files with .html extension + - /source/data/tmp/* # don't restore this directory + +``` + +The above `RestoreSession` will restore everything inside the `/source/data` directory except `source/data/not-important.txt`, all the `html` files, and the directory `source/data/tmp`. + +Let’s create the `RestoreSession` object that we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/restoresession-exclude.yaml +restoresession.stash.appscode.com/deployment-restore-exclude created +``` + +Verify that the files have been restored in `/source/data` directory using the following command, + +```bash +❯ kubectl exec -n demo stash-recovered-67576d874-2tj9d -- ls -R /source/data + +/source/data: +data-1.txt +data-2.txt +resp.json +tmp/ + +/source/data/tmp: +``` + +### Restore Subset of Files + +Previously we have restored the backed up data excluding specific files or directory. You can also restore only the selected files or directory during a restore. + +Below is the YAML of the `RestoreSession` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore-include + namespace: demo +spec: + repository: + name: gcs-repo-full + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ + include: + - /source/data/data1.txt # restore this file + - /source/data/*.json # restore the files with .json extension + - /source/data/tmp/* # restore this directory +``` + +Let’s create the `RestoreSession` object that we have shown above, + +```bash +❯ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/exclude-include-files/examples/restoresession-include.yaml +restoresession.stash.appscode.com/deployment-restore-include created +``` + +Verify that the files have been restored in `/source/data` directory using the following command, + +```bash +❯ kubectl exec -n demo stash-recovered-7dd74d9ff7-h9t7x -- ls -R /source/data +/source/data: +resp.json +tmp + +/source/data/tmp: +tmp.txt +``` + +## Cleaning Up + +```bash +❯ kubectl delete -n demo deployment stash-demo +❯ kubectl delete -n demo deployment stash-recovered +❯ kubectl delete -n demo backupconfiguration deployment-backup-full +❯ kubectl delete -n demo backupconfiguration deployment-backup-exclude +❯ kubectl delete -n demo restoresession deployment-restore-include +❯ kubectl delete -n demo restoresession deployment-restore-exclude +❯ kubectl delete -n demo repository gcs-repo-full +❯ kubectl delete -n demo repository gcs-repo-exclude +❯ kubectl delete -n demo secret gcs-secret +❯ kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..bfda2051cb --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/40 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupsession.yaml b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupsession.yaml new file mode 100644 index 0000000000..7915aae348 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/backupsession.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + labels: + stash.appscode.com/backup-configuration: deployment-backup + name: deployment-backupsession + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupConfiguration + name: deployment-backup diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/deployment.yaml b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/deployment.yaml new file mode 100644 index 0000000000..557bf8f9a3 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/deployment.yaml @@ -0,0 +1,45 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/repository.yaml b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/repository.yaml new file mode 100644 index 0000000000..c8074c44fb --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/instant-backup/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /stash/instant/deployment + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/images/instant.png b/content/docs/v2024.8.27/guides/use-cases/instant-backup/images/instant.png new file mode 100644 index 0000000000..ecf2841fa7 Binary files /dev/null and b/content/docs/v2024.8.27/guides/use-cases/instant-backup/images/instant.png differ diff --git a/content/docs/v2024.8.27/guides/use-cases/instant-backup/index.md b/content/docs/v2024.8.27/guides/use-cases/instant-backup/index.md new file mode 100644 index 0000000000..b22feeb7e6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/instant-backup/index.md @@ -0,0 +1,372 @@ +--- +title: Instant Backup | Stash +description: An step by step guide on how to take instant backup using Stash. +menu: + docs_v2024.8.27: + identifier: use-cases-instant-backup + name: Instant Backup + parent: use-cases + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Instant Backup + +This guide will show you how to take an instant backup in Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +>**Note:** YAML files used in this tutorial are stored in [docs/guides/use-cases/instant-backup/examples](/docs/v2024.8.27/guides/use-cases/instant-backup/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Configure Backup + +Here, we are going to configure backup for a Deployment. At first, we are going to deploy a Deployment with a PVC and generate some sample data in it. Then, we are going to configure backup for the Deployment using Stash. + +**Deploy Deployment:** + +Below is the YAML of the Deployment and PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 2Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data +``` + +The above Deployment will automatically create a `data.txt` file in `/source/data` directory and write some sample data in it. + +Let’s create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/instant-backup/examples/deployment.yaml +persistentvolumeclaim/source-data created +deployment.apps/stash-demo created +``` + +Now, wait for the pod of the Deployment to go into `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-859d96f6bd-fxr7l 1/1 Running 0 81s +``` + +Verify that the sample data has been created in `/source/data` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-859d96f6bd-fxr7l -- cat /source/data/data.txt +sample_data +``` + +**Create Secret and Repository:** + +We are going to store our backed up data into a GCS bucket. We have to create a Secret and a Repository object with access credentials and backend information respectively. + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +Let’s create a secret called `gcs-secret` with access credentials of our desired GCS backend, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /stash/instant/deployment + storageSecretName: gcs-secret +``` + +Let’s create the `Repository` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/instant-backup/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +**Create BackupConfiguration:** + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Then, Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of `/source/data` directory of the target. + +Below is the YAML of the `BackupConfiguration` object that we are going to create and specify that this `BackupConfiguration` will take backup in every 40 minutes. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/40 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Let’s create the `BackupConfiguration` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/instant-backup/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-9bff9fd4f-xvt77 2/2 Running 0 57s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-backup */40 * * * * 6m41s +``` + +## Trigger Instant Backup + +Now, we are going to trigger an instant backup of the volumes of the Deployment that we have configured in the previous section. To do that, we have to create a `BackupSession` object pointing to the respective `BackupConfiguration` object. + +**Create BackupSession:** + +Below is the YAML of the `BackupSession` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + labels: + stash.appscode.com/backup-configuration: deployment-backup + name: deployment-backupsession + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupConfiguration + name: deployment-backup +``` + +- `metadata.labels` holds the respective `BackupConfiguration` name as a label. Stash backup sidecar container use this label to watch only the BackupSessions of that `BackupConfiguration`. You must provide the label in the following format: + ``` + stash.appscode.com/backup-configuration: + ``` +- `spec.invoker` section indicates the `BackupConfiguration` object whose target will be backed up instantly for this `BackupSession`. + +Let's create the `BackupSession` object that we have have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/instant-backup/examples/backupsession.yaml +backupsession.stash.appscode.com/deployment-backupsession created +``` + +If everything goes well, the stash sidecar inside the Deployment will take a backup instantly. + +**Wait for BackupSession to Succeed:** + +Run the following command to watch `BackupSession` phase, + +```bash +$ watch -n 3 kubectl get backupsession -n demo +Every 3.0s: kubectl get backupsession -n demo suaas-appscode: Wed Jul 10 17:18:52 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backupsession BackupConfiguration deployment-backup Succeeded 21s +``` + +We can see from the above output that the instant backup session has succeeded. Now, we are going to verify that the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 24 B 1 116s 10m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `stash/instant/deployment` directory as specified by `spec.backend.gcs.prefix` field of `Repository` crd. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +>**Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Cleanup + +```yaml +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo backupsession deployment-backupsession +kubectl delete -n demo repository gcs-secret +kubectl delete -n demo secret gcs-secret +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/use-cases/ownership/index.md b/content/docs/v2024.8.27/guides/use-cases/ownership/index.md new file mode 100644 index 0000000000..de384f3bd8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/ownership/index.md @@ -0,0 +1,159 @@ +--- +title: File Ownership | Stash +description: Handling Restored File Ownership in Stash +menu: + docs_v2024.8.27: + identifier: file-ownership-stash + name: File Ownership + parent: use-cases + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Handling Restored File Ownership in Stash + +Stash preserves permission bits of the restored files. However, it may change ownership (owner `uid` and `gid`) of the restored files in some cases. This tutorial will explain when and how ownership of the restored files can be changed. Then, we are going to explain how we can avoid or resolve this problem. + +## Understanding Backup and Restore Behaviour + +At first, let's understand how backup and restore behaves in different scenario. A table with some possible backup and restore scenario is given below. We have run the containers as different user in different scenario using [SecurityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/). + +| Case | Original File Owner | Backup `sidecar` User | Backup Succeed? | Restore `init-container` User | Restore Succeed? | Restored File Owner | Restored File Editable to Original Owner? | +| :---: | :-----------------: | :-------------------: | :-------------: | :---------------------------: | :-----------------------: | :-----------------: | :---------------------------------------: | +| 1 | root | stash (1005) | ✓ | stash(1005) | ✓ | 1005 | ✓ | +| 2 | 2000 | stash(1005) | ✓ | stash(1005) | ✓ | 1005 | ✗ | +| 3 | 2000 | root | ✓ | root | ✓ | 2000 | ✓ | +| 4 | 2000 | root | ✓ | stash(1005) | ✓ (remote backend) | 1005 | ✗ | +| 5 | 2000 | root | ✓ | stash(1005) | ✗ (local backend) | - | - | +| 6 | 2000 | 3000 | ✓ | stash(1005) | ✓ (remote backend) | 1005 | ✗ | +| 7 | 2000 | 3000 | ✓ | stash(1005) | ✗ (local backend) | - | - | +| 8 | 2000 | 3000 | ✓ | root | ✓ | 2000 | ✓ | +| 9 | 2000 | 3000 | ✓ | 3000 | ✓ | 3000 | ✗ | + +If we look at the table carefully, we are going to notice the following behaviors: + +1. The user of the backup `sidecar` does not have any effect on backup. It just needs read permission of the target files. +2. If the restore container runs as `root` user then original ownership of the restored files are preserved. +3. If the restore container runs as `non-root` user then the ownership of the restored files is changed to restore container's user and restored files become read-only to the original user unless it was `root` user. + +So, we can see when we run restore container as `non-root` user, it raises some serious concerns as the restored files become read-only to the original user. Next section will discuss how we can avoid or fix this problem. + +## Avoid or Fix Ownership Issue + +As we have seen when the ownership of the restored files gets changed, they can be unusable to the original user. We need to avoid or fix this issue. + +There could be two scenarios for the restored files user. + +1. Restored files user is the same as the original user. +2. Restored files user is different than the original user. + +### Restored files user is the same as the original user + +This is likely to be the most common scenario. Generally, the same application whose data was backed up will use the restored files after a restore. In this case, if your cluster supports running containers as `root` user, then it is fairly easy to avoid this issue. You just need to run the restore container as `root` user which Stash does by default. However, things get little more complicated when your cluster does not support running containers as `root` user. In this case, you can do followings: + +- Run restore container as the same user as the original container. +- Change the ownership of the restored files using `chown` after the restore is completed. + +For the first method, we can achieve this configuring SecurityContext under `RuntimeSetting` of `RestoreSession` object. A sample `RestoreSession` objects configured SecurityContext to run as the same user as the original user (let original user is 2000) is shown below. + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: local-repo + rules: + - paths: + - /source/data + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + runtimeSettings: + container: + securityContext: + runAsUser: 2000 + runAsGroup: 2000 +``` + +>If you are using [local](/docs/v2024.8.27/guides/backends/local/) backend to store backed up data, then the original container, backup container and restore container all of them must be run as same user. By default, Stash runs backup container as `stash(1005)` user. You can change this to match with the user of your original container using `securityContext` field under `runtimeSettings` of `BackupConfiguration` object. + +The second method is necessary when the backup container was not run as the same user as the original container. This is similar to the process when the restored files user is different than the original user. In this case, you have to change the ownership of restored files using `chown` after restore. + +### Restored file user is different than the original user + +If you want to use the restore files with a different user than the original one, then you have to change the ownership after restore. You can use an `init-container` in your workload that will run `chown` command to change the permissions to the desired owner or you can exec into workload pod to change ownership yourself. diff --git a/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..a066d83797 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: pause-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupsession.yaml b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupsession.yaml new file mode 100644 index 0000000000..932dee7896 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/backupsession.yaml @@ -0,0 +1,12 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + labels: + stash.appscode.com/backup-configuration: pause-backup + name: instant-backupsession + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupConfiguration + name: pause-backup diff --git a/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/deployment.yaml b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/deployment.yaml new file mode 100644 index 0000000000..2188c5c186 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/deployment.yaml @@ -0,0 +1,45 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc diff --git a/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/repository.yaml b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/repository.yaml new file mode 100644 index 0000000000..51a3f09067 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/pause-backup/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /sample/data + storageSecretName: gcs-secret \ No newline at end of file diff --git a/content/docs/v2024.8.27/guides/use-cases/pause-backup/index.md b/content/docs/v2024.8.27/guides/use-cases/pause-backup/index.md new file mode 100644 index 0000000000..16996b6573 --- /dev/null +++ b/content/docs/v2024.8.27/guides/use-cases/pause-backup/index.md @@ -0,0 +1,467 @@ +--- +title: Pause Backup | Stash +description: An step by step guide on how to pause a scheduled backup in Stash. +menu: + docs_v2024.8.27: + identifier: use-cases-pause-backup + name: Pause Backup + parent: use-cases + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Pause Backup + +Stash supports pausing backups without deleting respective `BackupConfiguration`. This guide will show you how to pause a scheduled backup in Stash. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/use-cases/pause-backup/examples](https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/pause-backup/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Configure Backup + +At first, we need to schedule a backup for a sample workload. Here, we are going to deploy a Deployment with a PVC. This Deployment will automatically generate some sample data into the PVC. Then, we are going to configure a scheduled backup for this Deployment. + +**Deploy Deployment:** + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-pvc +``` + +The above Deployment will automatically create a `data.txt` file in `/source/data` directory and write some sample data in it. + +Let's create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/pause-backup/examples/deployment.yaml +persistentvolumeclaim/source-pvc created +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. + +```bash +kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-69f9ffbbf7-bww24 1/1 Running 0 100s +stash-demo-69f9ffbbf7-r8wgh 1/1 Running 0 100s +stash-demo-69f9ffbbf7-rsj55 1/1 Running 0 100s +``` + +To verify that the sample data has been created in `/source/data` directory, use the following command: + +```bash +$ kubectl exec -n demo stash-demo-69f9ffbbf7-bww24 -- cat /source/data/data.txt +sample_data +``` + +**Create Secret and Repository:** + +We are going to store our backed up data into a [GCS bucket](https://cloud.google.com/storage/). We have to create a Secret and a Repository object with access credentials and backend information respectively. + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +Let’s create a secret called ` gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /sample/data + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/pause-backup/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +**Create BackupConfiguration:** + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take a periodic backup of `/source/data` directory of the target. + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: pause-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/pause-backup/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/pause-backup created +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-7489fcb7f5-jctj4 2/2 Running 0 117s +stash-demo-7489fcb7f5-mfqps 2/2 Running 0 112s +stash-demo-7489fcb7f5-zp8c5 2/2 Running 0 115s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ watch -n 1 kubectl get backupconfiguration -n demo +Every 3.0s: kubectl get backupconfiguration -n demo suaas-appscode: Thu Aug 1 17:08:08 2019 + +NAMESPACE NAME TASK SCHEDULE PAUSED AGE +demo pause-backup */1 * * * * 27s +``` + +**Wait for BackupSession Succeeded:** + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 1 kubectl get backupssession -n demo +Every 3.0s: kubectl get backupssession -n demo suaas-appscode: Thu Aug 1 17:43:57 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +pause-backup-1564659789 BackupConfiguration pause-backup Succeeded 49s +``` + +We can see from the above output that the backup session has succeeded. This indicates that the volumes of the Deployment have been backed up in the backend successfully. + +## Pause Scheduled Backup + +Now, we are going to pause the scheduled backup without deleting respective `BackupConfiguration`. In order to do that, we have to set `spec.paused: true` in the respective `BackupConfiguration` crd. + +When we set `spec.paused: true`, the following things are going to happen: + +- Respective CronJob will not be removed. However, it will skip creating any new BackupSession for next the schedules. +- Stash sidecar container which is responsible for taking backup will not be removed. So, your workload will not restart. However, it will skip taking backup even if a BackupSession is created to trigger an instant backup. + +Let's patch the BackupConfiguration crd `pause-backup` and set `spec.paused: true`, + +```bash +$ kubectl patch backupconfiguration -n demo pause-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/pause-backup patched +``` + +**Verify Scheduled Backup Get Skipped:** + +Now, wait for the next backup schedule. This time, the CronJob will not create any new BackupSession. Instead, it will write an event to the BackupConfiguration crd that it has skipped creating BackupSession because the backup is paused. + +Let's describe the `BackupConfiguration` to verify that the event has been created, + +```bash +$ kubectl describe backupconfiguration -n demo pause-backup +Name: pause-backup +Namespace: demo +Labels: +Annotations: kubectl.kubernetes.io/last-applied-configuration: + {"apiVersion":"stash.appscode.com/v1beta1","kind":"BackupConfiguration","metadata":{"annotations":{},"name":"pause-backup","namespace":"de... +API Version: stash.appscode.com/v1beta1 +Kind: BackupConfiguration +Metadata: + Creation Timestamp: 2019-08-02T06:13:05Z + Finalizers: + stash.appscode.com + Generation: 2 + Resource Version: 39756 + Self Link: /apis/stash.appscode.com/v1beta1/namespaces/demo/backupconfigurations/pause-backup + UID: 96ed2068-a1da-419b-bae3-478f1b876000 +Spec: + Paused: true + Repository: + Name: gcs-repo + Retention Policy: + Keep Last: 5 + Name: keep-last-5 + Prune: true + Schedule: */1 * * * * + Target: + Paths: + /source/data + Ref: + API Version: apps/v1 + Kind: Deployment + Name: stash-demo + Volume Mounts: + Mount Path: /source/data + Name: source-data +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Backup Skipped 29s Backup Triggering CronJob Skipping creating BackupSession. Reason: Backup Configuration demo/pause-backup is paused. +``` + +**Verify Instant Backup Get Skipped:** + +If we try to trigger an instant backup by creating a `BackupSession` manually, it will be ignored. The sidecar container will write an event to the BackupSession describing why it has skipped taking the backup. + +Below is the YAML of the `BackupSession` that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupSession +metadata: + labels: + stash.appscode.com/backup-configuration: pause-backup + name: instant-backupsession + namespace: demo +spec: + invoker: + apiGroup: stash.appscode.com + kind: BackupConfiguration + name: pause-backup +``` + +Let's create the `BackupSession` we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/use-cases/pause-backup/examples/backupsession.yaml +backupsession.stash.appscode.com/instant-backupsession created +``` + +Run the following command to watch the BackupSession phase, + +```bash +$ watch -n 1 kubectl get backupsession -n demo instant-backupsession +Every 1.0s: kubectl get backupsession -n demo instant-backupsession suaas-appscode: Fri Aug 2 11:56:24 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +instant-backupsession BackupConfiguration pause-backup Skipped 3m22s +``` + +Notice the `PHASE` column. It is showing that the `BackupSession` has been skipped. + +If you describe the `BackupSession` object you are going to see that there is an event explaining why it has been skipped. + +```bash +$ kubectl describe backupsession -n demo instant-backupsession +Name: instant-backupsession +Namespace: demo +Labels: stash.appscode.com/backup-configuration=pause-backup +Annotations: kubectl.kubernetes.io/last-applied-configuration: + {"apiVersion":"stash.appscode.com/v1beta1","kind":"BackupSession","metadata":{"annotations":{},"labels":{"stash.appscode.com/backup-config... +API Version: stash.appscode.com/v1beta1 +Kind: BackupSession +Metadata: + Creation Timestamp: 2019-08-02T06:16:53Z + Generation: 1 + Resource Version: 40010 + Self Link: /apis/stash.appscode.com/v1beta1/namespaces/demo/backupsessions/instant-backupsession + UID: 6a44adab-e44e-4020-9c23-7545e3b3f13b +Spec: + Invoker: + API Group: stash.appscode.com + Kind: BackupConfiguration + Name: pause-backup +Status: + Phase: Skipped +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning BackupSessionSkipped 5s BackupSession Controller Backup Configuration is paused + Warning BackupSessionSkipped 5s BackupSession Controller Backup Configuration is paused +``` + +## Resume Backup + +You can resume backup by setting `spec.paused: false` in BackupConfiguration crd. and applying the update or you can patch BackupConfiguration using, + +```bash +$ kubectl patch backupconfiguration -n demo pause-backup --type="merge" --patch='{"spec": {"paused": false}}' +backupconfiguration.stash.appscode.com/pause-backup patched +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo backupconfiguration pause-backup +kubectl delete -n demo repository gce-repo +kubectl delete -n demo backupsession deployment-backupsession +kubectl delete -n demo secret gce-secret +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/volumes/_index.md b/content/docs/v2024.8.27/guides/volumes/_index.md new file mode 100644 index 0000000000..7c089f0064 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/_index.md @@ -0,0 +1,76 @@ +--- +title: Volume Backup | Stash +menu: + docs_v2024.8.27: + identifier: volume-backup + name: Stand-alone Volumes + parent: guides + weight: 30 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/volumes/overview/images/volume_backup_overview.svg b/content/docs/v2024.8.27/guides/volumes/overview/images/volume_backup_overview.svg new file mode 100644 index 0000000000..8b13582e0a --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/overview/images/volume_backup_overview.svg @@ -0,0 +1,942 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/volumes/overview/images/volume_restore_overview.svg b/content/docs/v2024.8.27/guides/volumes/overview/images/volume_restore_overview.svg new file mode 100644 index 0000000000..65ce526ead --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/overview/images/volume_restore_overview.svg @@ -0,0 +1,822 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/volumes/overview/index.md b/content/docs/v2024.8.27/guides/volumes/overview/index.md new file mode 100644 index 0000000000..3e700e3932 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/overview/index.md @@ -0,0 +1,148 @@ +--- +title: Stand-alone Volume Backup Overview | Stash +description: An overview on how stand-alone volume backup works in Stash. +menu: + docs_v2024.8.27: + identifier: volume-backup-overview + name: How does it work? + parent: volume-backup + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Stand-alone Volume Backup Overview + +If you are using a volume that can be mounted in multiple workloads, aka `ReadWriteMany`/`RWX`, you might want to backup the volume independent of the workloads. Stash supports backup of stand-alone volumes. This guide will give you an overview of how stand-alone volume backup and restore process works in Stash. + +## How Backup Works + +The following diagram shows how Stash takes backup of a stand-alone volume. Open the image in a new tab to see the enlarged version. + +
+  Stand-alone Volume Backup Overview +
Fig: Stand-alone Volume Backup Overview
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a secret with access credentials of the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd that specifies the backend information along with the secret that holds the credentials to access the backend. + +3. Then, she creates a `BackupConfiguration` crd targeting the volume. The `BackupConfiguration` object also specifies the `Task` to use to backup the volume. + +4. Stash operator watches for `BackupConfiguration` crd. + +5. Once Stash operator finds a `BackupConfiguration` crd, it creates a CronJob with the schedule specified in `BackupConfiguration` object to trigger backup periodically. + +6. On next scheduled slot, the CronJob triggers a backup by creating a `BackupSession` crd. + +7. Stash operator also watches for `BackupSession` crd. + +8. When it finds a `BackupSession` object, it resolves the respective `Task` and `Function` and prepares a backup Job definition. + +9. Then, it mounts the targeted volume into the Job and creates it. + +10. The Job takes backup of the targeted volume. + +11. Finally, when 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. + +## How Restore Works + +The following diagram shows how Stash restores backed up data into a stand-alone volume. Open the image in a new tab to see the enlarged version. + +
+  Stand-alone Volume Restore Overview +
Fig: Stand-alone Volume Restore Overview
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd which specifies the targeted volume where the backed up data will be restored and the `Repository` crd which holds the backend information where the backed up data has been stored. It also specifies the `Task` to use to restore the target. + +2. Stash operator watches for `RestoreSession` object. + +3. Once it finds a `RestoreSession` object, it resolves the respective `Task` and `Function` and prepares a restore Job definition. + +4. Then, it mounts the targeted volume into the Job and creates it. + +5. The Job restores the backed up data into the volume. + +6. Finally, when the restore process is completed, the Job sends Prometheus metrics to the Pushgateway and update the `RestoreSession` status to reflect restore completion. + +### Why use Function-Task model to backup or restore a volume + +You might be wondering why we have used [Function](/docs/v2024.8.27/concepts/crds/function/) and [Task](/docs/v2024.8.27/concepts/crds/task/) to backup or restore a volume. Well, let us explain. + +`Function-Task` model gives you the flexibility to customize the backup/restore process. For example, it enables you to execute some logic to prepare your apps before backup or execute logic to delete corrupted data before restore. For more details about what are the others benefits of `Function-Task` model, please visit [here](/docs/v2024.8.27/concepts/crds/task/##why-function-and-task). + +## Next Steps + +- Learn how to backup and restore a stand-alone PVC from [here](/docs/v2024.8.27/guides/volumes/pvc/). diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..9e26b09a52 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/backupconfiguration.yaml @@ -0,0 +1,20 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: nfs-pvc-backup + namespace: demo +spec: + task: + name: pvc-backup + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: nfs-pvc + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-1.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-1.yaml new file mode 100644 index 0000000000..2c0929e070 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-1.yaml @@ -0,0 +1,18 @@ +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-1 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 1.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-1/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-2.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-2.yaml new file mode 100644 index 0000000000..b8a0ec7bae --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pod-2.yaml @@ -0,0 +1,18 @@ +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-2 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 2.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-2/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/pv.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pv.yaml new file mode 100644 index 0000000000..582bb70467 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pv.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-pv + labels: + app: nfs-demo +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteMany + nfs: + server: "nfs-service.storage.svc.cluster.local" + path: "/" diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/pvc.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pvc.yaml new file mode 100644 index 0000000000..5203a8033e --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/pvc.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-pvc + namespace: demo +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app: nfs-demo diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/repository.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/repository.yaml new file mode 100644 index 0000000000..3c4c337325 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/volumes/nfs-pvc + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/volumes/pvc/examples/restoresession.yaml new file mode 100644 index 0000000000..e7bd42eb5b --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/examples/restoresession.yaml @@ -0,0 +1,17 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: nfs-pvc-restore + namespace: demo +spec: + task: + name: pvc-restore + repository: + name: gcs-repo + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: nfs-pvc + rules: + - snapshots: ["latest"] diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/images/pvc_repo.png b/content/docs/v2024.8.27/guides/volumes/pvc/images/pvc_repo.png new file mode 100644 index 0000000000..908b51fbc1 Binary files /dev/null and b/content/docs/v2024.8.27/guides/volumes/pvc/images/pvc_repo.png differ diff --git a/content/docs/v2024.8.27/guides/volumes/pvc/index.md b/content/docs/v2024.8.27/guides/volumes/pvc/index.md new file mode 100644 index 0000000000..4b62dd70a2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumes/pvc/index.md @@ -0,0 +1,579 @@ +--- +title: Backup Stand-alone PVC | Stash +description: A step by step guide on how to backup a stand-alone PVC using Stash. +menu: + docs_v2024.8.27: + identifier: volume-backup-pvc + name: Backup & Restore a Stand-alone PVC + parent: volume-backup + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup Stand-alone PVC using Stash + +This guide will show you how to backup a stand-alone PersistentVolumeClaim (PVC) using Stash. Here, we are going to backup a PVC provisioned using an NFS server into a GCS bucket. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You will need to have a PVC with `ReadWriteMany` access mode. Here, we are going to use an NFS server to provision a PVC with `ReadWriteMany` access mode. If you don't have an NFS server running, deploy one by following the guide [here](https://github.com/appscode/third-party-tools/blob/master/storage/nfs/README.md). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Function](/docs/v2024.8.27/concepts/crds/function/) + - [Task](/docs/v2024.8.27/concepts/crds/task/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/volumes/pvc/examples](/docs/v2024.8.27/guides/volumes/pvc/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +**Verify necessary Function and Task:** + +Stash uses a `Function-Task` model to backup stand-alone volume. When you install Stash, it automatically creates the necessary `Function` and `Task` to backup a stand-alone volume. + +Let's verify that Stash has created the necessary `Function` to backup/restore PVC by the following command, + +```bash +$ kubectl get function +NAME AGE +pvc-backup 117m +pvc-restore 117m +update-status 117m +``` + +Also, verify that the necessary `Task` has been created, + +```bash +$ kubectl get task +NAME AGE +pvc-backup 118m +pvc-restore 118m +``` + +## Prepare Volume + +At first, let's prepare our desired PVC. Here, we are going to create a [PersistentVolume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) (PV) that will use an NFS server as storage. Then, we are going to create a PVC that will bind with the PV. Then, we are going to mount this PVC in two different pods. Each pod will generate a sample file into the PVC. + +**Create PersistentVolume:** + +We have deployed an NFS server in `storage` namespace and it is accessible through a Service named `nfs-service`. Now, we are going to create a PV that uses the NFS server as storage. + +Below is the YAML of the PV that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-pv + labels: + app: nfs-demo +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteMany + nfs: + server: "nfs-service.storage.svc.cluster.local" + path: "/" +``` + +Notice the `metadata.labels` section. Here, we have added `app: nfs-demo` label. We are going to use this label as selector in PVC so that the PVC binds with this PV. + +Let's create the PV we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/pv.yaml +persistentvolume/nfs-pv created +``` + +**Create PersistentVolumeClaim:** + +Now, create a PVC to bind with the PV we have just created. Below, is the YAML of the PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-pvc + namespace: demo +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app: nfs-demo +``` + +Notice the `spec.accessModes` section. We are using `ReadWriteMany` access mode so that multiple pods can use this PVC simultaneously. Without this access mode, Stash will fail to backup the volume if any other pod mount it during backup. + +Also, notice the `spec.selector` section. We have specified `app: nfs-demo` labels as a selector so that it binds with the PV that we have created earlier. + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/pvc.yaml +persistentvolumeclaim/nfs-pvc created +``` + +Verify that the PVC has bounded with our desired PV, + +```bash +$ kubectl get pvc -n demo nfs-pvc +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +nfs-pvc Bound nfs-pv 1Gi RWX 32s +``` + +Here, we can see that the PVC `nfs-pvc` has been bounded with PV `nfs-pv`. + +**Deploy Workload:** + +Now, we are going to deploy two sample pods `demo-pod-1` and `demo-pod-2` that will mount `pod-1/data` and `pod-2/data` [subPath](https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath) of the `nfs-pvc` respectively. Each of the pods will generate a sample file named `hello.txt` with some demo data. We are going to backup the entire PVC using Stash that contains the sample files. + +Below, is the YAML of the first pod that we are going to deploy, + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-1 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 1.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-1/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc +``` + +Here, we have mounted `pod-1/data` directory of the `nfs-pvc` into `/sample/data` directory of this pod. + +Let's deploy the pod we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/pod-1.yaml +pod/demo-pod-1 created +``` + +Verify that the sample data has been generated into `/sample/data/` directory, + +```bash +$ kubectl exec -n demo demo-pod-1 cat /sample/data/hello.txt +hello from pod 1. +``` + +Below is the YAML of the second pod that we are going to deploy, + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: demo-pod-2 + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo 'hello from pod 2.' > /sample/data/hello.txt && sleep 3000"] + volumeMounts: + - name: my-volume + mountPath: /sample/data + subPath: pod-2/data + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: nfs-pvc +``` + +Now, we have mounted `pod-2/data` directory of the `nfs-pvc` into `/sample/data` directory of this pod. + +Let's create the pod we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/pod-2.yaml +pod/demo-pod-2 created +``` + +Verify that the sample data has been generated into `/sample/data/` directory, + +```bash +$ kubectl exec -n demo demo-pod-2 cat /sample/data/hello.txt +hello from pod 2. +``` + +## Backup + +Now, we are going to backup the PVC `nfs-pvc` in a GCS bucket using Stash. We have to create a Secret and a `Repository` object with access credentials and backend information respectively. + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Storage Secret:** + +Let's create a Secret named `gcs-secret` with access credentials of our desired GCS backend, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded/sa_key_file.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` crd specifying the desired bucket, and directory inside the bucket where the backed up data will be stored. + +Below is the YAML of `Repository` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: stash-backup/volumes/nfs-pvc + storageSecretName: gcs-secret +``` + +Let's create the `Repository` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +We are ready to start taking backup. Now, we have to create a `BackupConfiguration` object targeting `nfs-pvc`. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: nfs-pvc-backup + namespace: demo +spec: + task: + name: pvc-backup + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: nfs-pvc + retentionPolicy: + name: keep-last-5 + keepLast: 5 + prune: true +``` + +Here, + +- `spec.task.name` specifies the name of the `Task` object that specifies the `Function` and their order of execution to perform a backup of a stand-alone PVC. +- `spec.repository.name` specifies the name of the `Repository` object that holds the backend information where the backed up data has been stored. +- `spec.target.ref` refers to the targeted PVC that will be backed up. + +Let's create the `BackupConfiguration` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/nfs-pvc-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be in `Ready` state. The `Ready` phase indicates that the backup setup is successful. Let's check the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +nfs-pvc-backup pvc-backup */5 * * * * Ready 11s +``` + +**Verify CronJob:** + +Verify that Stash has created a CronJob to trigger a periodic backup of the targeted PVC by the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +nfs-pvc-backup */5 * * * * False 0 28s +``` + +**Wait for BackupSession:** + +Now, wait for the next backup schedule. You can watch for `BackupSession` crd using the following command, + +```bash +$ watch -n 1 kubectl get backupsession -n demo -l=stash.appscode.com/backup-configuration=nfs-pvc-backup + +Every 1.0s: kubectl get backupsession -n demo -l=stash.appscode.com/backup-... workstation: Wed Jul 3 19:53:13 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +nfs-pvc-backup-1562161802 BackupConfiguration nfs-pvc-backup Succeeded 3m11s +``` + +> Note: Respective CronJob creates `BackupSession` crd with the following label: `stash.appscode.com/backup-configuration=`. We can use this label to watch only the `BackupSession` of our desired `BackupConfiguration`. + +**Verify Backup:** + +When backup session is completed, Stash will update the respective `Repository` to reflect the latest state of backed up data. + +Run the following command to check if a backup snapshot has been stored in the backend, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 80 B 1 25s 49m +``` + +From the output above, we can see that 1 snapshot has been stored in the backend specified by Repository `gcs-repo`. + +If we navigate to `stash-backup/volumes/nfs-pvc` directory of our GCS bucket, we are going to see that the snapshot has been stored there. + +
+  Backed up data of a stand-alone PVC in GCS backend +
Fig: Backed up data of a stand-alone PVC in GCS backend
+
+ +> Stash keeps all backup data encrypted. So, snapshot files in the bucket will not contain any meaningful data until they are decrypted. + +## Restore + +This section will show you how to restore the backed up data inside a stand-alone PVC using stash. Here, we are going to restore the data we have backed up in the previous section. + +**Stop Taking Backup of the PVC:** + +At first, let's stop taking any further backup of the PVC so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `nfs-pvc` PVC. Then, Stash will stop taking any further backup for this PVC. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/). + +Let's pause the `nfs-pvc-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo nfs-pvc-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/nfs-pvc-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo nfs-pvc-backup +NAME TASK SCHEDULE PAUSED AGE +nfs-pvc-backup */5 * * * * true 20m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Simulate Disaster:** + +At first, let's simulate a disaster scenario. Let's delete all the files from the PVC. + +Delete the data of pod `demo-pod-1`: + +```bash +# delete data +$ kubectl exec -n demo demo-pod-1 -- sh -c "rm /sample/data/*" + +# verify that data has been removed successfully +$ kubectl exec -n demo demo-pod-1 ls /sample/data/ +# empty output which means all the files have been deleted +``` + +Delete the data of pod `demo-pod-2`: + +```bash +# delete data +$ kubectl exec -n demo demo-pod-2 -- sh -c "rm /sample/data/*" + +# verify that data has been removed successfully +$ kubectl exec -n demo demo-pod-2 ls /sample/data/ +# empty output which means all the files have been deleted +``` + +**Create RestoreSession:** + +Now, we are going to create a `RestoreSession` object to restore the backed up data into the desired PVC. Below is the YAML of the `RestoreSession` object that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: nfs-pvc-restore + namespace: demo +spec: + task: + name: pvc-restore + repository: + name: gcs-repo + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: nfs-pvc + rules: + - snapshots: ["latest"] +``` + +- `spec.task.name` specifies the name of the `Task` object that specifies the `Function` and their order of execution to restore data inside a stand-alone PVC. +- `spec.target.ref` refers to the targeted PVC where the data will be restored. +- `spec.target.rules[*].snapshots` specifies that we want to restore the latest snapshot of the `nfs-pvc`. + +Let's create the `RestoreSession` object that we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumes/pvc/examples/restoresession.yaml +restoresession.stash.appscode.com/nfs-pvc-restore created +``` + +**Wait for RestoreSession to Succeed:** + +Now, wait for the restore process to complete. You can watch the `RestoreSession` phase using the following command, + +```bash +$ watch -n 1 kubectl get restoresession -n demo nfs-pvc-restore + +Every 1.0s: kubectl get restoresession -n demo nfs-pvc-restore workstation: Wed Jul 3 20:10:52 2019 +NAME REPOSITORY-NAME PHASE AGE +nfs-pvc-restore gcs-repo Succeeded 32s +``` + +From the output of the above command, we can see that restoration process has been completed successfully. + +**Verify Restored Data:** + +Let's verify if the deleted files have been restored successfully into the PVC. We are going to exec into individual pod and check whether the sample data exist or not. + +Verify that the data of `demo-pod-1` has been restored: + +```bash +$ kubectl exec -n demo demo-pod-1 cat /sample/data/hello.txt +hello from pod 1. +``` + +Verify that the data of `demo-pod-2` has been restored: + +```bash +$ kubectl exec -n demo demo-pod-2 cat /sample/data/hello.txt +hello from pod 2. +``` + +So, we can see from the above output that the files we had deleted in **Simulate Disaster** section have been restored successfully. + +## Cleanup + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete backupconfiguration -n demo nfs-pvc-backup +kubectl delete restoresession -n demo nfs-pvc-restore + +kubectl delete secret -n demo gcs-secret +kubectl delete repository -n demo gcs-repo + +kubectl delete pod -n demo demo-pod-1 +kubectl delete pod -n demo demo-pod-2 + +kubectl delete pvc -n demo nfs-pvc +kubectl delete pv -n demo nfs-pv +``` + +If you would like to uninstall Stash operator, please follow the steps [here](/docs/v2024.8.27/setup/README). diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/_index.md b/content/docs/v2024.8.27/guides/volumesnapshot/_index.md new file mode 100644 index 0000000000..68b4ce30d3 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/_index.md @@ -0,0 +1,76 @@ +--- +title: Volume Snapshot | Stash +menu: + docs_v2024.8.27: + identifier: volume-snapshot + name: Volume Snapshot + parent: guides + weight: 70 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..743416c868 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/backupconfiguration.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployments-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/deployment.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/deployment.yaml new file mode 100644 index 0000000000..98c57df827 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/deployment.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt; echo sample_config > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /source/config + name: source-config + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + - name: source-config + persistentVolumeClaim: + claimName: source-config diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/pvcs.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/pvcs.yaml new file mode 100644 index 0000000000..3a7e5211a4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/pvcs.yaml @@ -0,0 +1,25 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-config + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restored-deployment.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restored-deployment.yaml new file mode 100644 index 0000000000..72af01085c --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restored-deployment.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: restore-demo + name: restore-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: restore-demo + template: + metadata: + labels: + app: restore-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + - mountPath: /restore/config + name: restore-config + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + - name: restore-config + persistentVolumeClaim: + claimName: restore-config diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restoresession.yaml new file mode 100644 index 0000000000..b80e1e2219 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/restoresession.yaml @@ -0,0 +1,33 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-fnbwz + apiGroup: snapshot.storage.k8s.io + - metadata: + name: restore-config + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-config-fnbwz + apiGroup: snapshot.storage.k8s.io diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/storageclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/storageclass.yaml new file mode 100644 index 0000000000..e1fa0f0231 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/storageclass.yaml @@ -0,0 +1,9 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/volumesnapshotclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/volumesnapshotclass.yaml new file mode 100644 index 0000000000..382ba7d1d6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/volumesnapshotclass.yaml @@ -0,0 +1,6 @@ +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/images/gcp.png b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/images/gcp.png new file mode 100644 index 0000000000..363c0023bd Binary files /dev/null and b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/images/gcp.png differ diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/deployment/index.md b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/index.md new file mode 100644 index 0000000000..94a6cbc8ca --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/deployment/index.md @@ -0,0 +1,591 @@ +--- +title: Snapshot Deployment Volumes | Stash +description: An step by step guide showing how to snapshot the volumes of a Deployment +menu: + docs_v2024.8.27: + identifier: volume-snapshot-deployment + name: Snapshot Deployment Volumes + parent: volume-snapshot + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Snapshotting the volumes of a Deployment + +This guide will show you how to use Stash to snapshot the volumes of a Deployment and restore them from the snapshots using Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) API. In this guide, we are going to backup the volumes in Google Cloud Platform with the help of [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +## Before You Begin + +- You need to be familiar with the [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- If you don't know how VolumeSnapshot works in Stash, please visit [here](/docs/v2024.8.27/guides/volumesnapshot/overview/). + +## Prepare for VolumeSnapshot + +Here, we are going to create `StorageClass` that uses [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +Below is the YAML of the `StorageClass` we are going to use, + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate +``` + +Let's create the `StorageClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/storageclass.yaml +storageclass.storage.k8s.io/csi-standard created +``` + +We also need a `VolumeSnapshotClass`. Below is the YAML of the `VolumeSnapshotClass` we are going to use, + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete +``` + +Here, + +- `driver` field to point to the respective CSI driver that is responsible for taking snapshot. As we are using [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver), we are going to use `pd.csi.storage.gke.io` in this field. + +Let's create the `volumeSnapshotClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/volumesnapshotclass.yaml +volumesnapshotclass.snapshot.storage.k8s.io/csi-snapshot-class created +``` + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored in [/docs/guides/volumesnapshot/deployment/examples](/docs/v2024.8.27/guides/volumesnapshot/deployment/examples/) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Take Volume Snapshot + +Here, we are going to deploy a Deployment with two PVCs and generate some sample data in it. Then, we are going to take snapshot of these PVCs using Stash. + +**Create PersistentVolumeClaim :** + +At first, let's create two sample PVCs. We are going to mount these PVCs in our targeted Deployment. + +Below is the YAML of the sample PVCs, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-config + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi +``` + +:et's create the PVCs we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/pvcs.yaml +persistentvolumeclaim/source-data created +persistentvolumeclaim/source-config created +``` + +**Deploy Deployment :** + +Now, we are going to deploy a Deployment that uses the above PVCs. This Deployment will automatically create `data.txt` and `config.cfg` file in `/source/data` and `/source/config` directory. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt; echo sample_config > /source/config/config.cfg && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /source/config + name: source-config + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + - name: source-config + persistentVolumeClaim: + claimName: source-config +``` + +Let's create the deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/deployment.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pod of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-7fd48dd5b4-xqv5n 1/1 Running 0 2m10s +``` + +Verify that the sample data has been created in `/source/data` and `/source/config` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-7fd48dd5b4-xqv5n -- cat /source/data/data.txt +sample_data +$ kubectl exec -n demo stash-demo-7fd48dd5b4-xqv5n -- cat /source/config/config.cfg +config_data +``` + +**Create BackupConfiguration :** + +Now, create a `BackupConfiguration` object to take snapshot of the PVCs of `stash-demo` Deployment. + +Below is the YAML of the `BackupConfiguration` that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` is a [cron expression](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#schedule) that indicates `BackupSession` will be created at 5 minutes interval. + +- `spec.driver` indicates the name of the agent to use to back up the target. Currently, Stash supports `Restic` and `VolumeSnapshotter` drivers. The `VolumeSnapshotter` is used to backup/restore PVC using `VolumeSnapshot` API. + +- `spec.target.ref` refers to the backup target. `apiVersion`, `kind` and `name` refers to the `apiVersion`, `kind` and `name` of the targeted workload respectively. Stash will use this information to create a Volume Snapshotter Job for creating VolumeSnapshot. + +- `spec.target.snapshotClassName` indicates the [VolumeSnapshotClass](https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/) to be used for volume snapshotting. + +Let's create the `BackupConfiguration` object we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-volume-snapshot created +``` + +**Verify Backup Setup Successful**: + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let’s verify the Phase of the `BackupConfiguration`, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-volume-snapshot */5 * * * * Ready 11s +``` + +**Verify CronJob :** + +Stash will create a CronJob with the schedule specified in `spec.schedule` field of `BackupConfiguration` CRD. Verify that the CronJob has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +deployment-volume-snapshot */1 * * * * False 0 39s 2m41s +``` + +**Wait for BackupSession :** + +The `deployment-volume-snapshot` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 1 kubectl get backupsession -n demo +Every 1.0s: kubectl get backupsession -n demo + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-volume-snapshot-fnbwz BackupConfiguration deployment-volume-snapshot Succeeded 50s +``` + +We can see above that the BackupSession has been succeeded. Now, we are going to verify that the `VolumeSnapshot` has been created and the snapshots has been stored in the respective backend. + +**Verify Volume Snapshot :** + +Once a `BackupSession` crd is created, it creates volume snapshotter `Job`. Then the `Job` creates `VolumeSnapshot` crd for the targeted PVCs. + +Check that the `VolumeSnapshot` has been created Successfully. + +```bash +$ kubectl get volumesnapshot -n demo +NAME AGE +source-config-fnbwz 1m46s +source-data-fnbwz 1m46s +``` + +Let's find the name of the snapshot that has been saved in the Google Cloud by the following command, + +```bash +kubectl get volumesnapshot source-data-fnbwz -n demo -o yaml +``` + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshot +metadata: + creationTimestamp: "2019-07-15T06:14:09Z" + finalizers: + - snapshot.storage.kubernetes.io/volumesnapshot-protection + generation: 4 + name: source-data-fnbwz + namespace: demo + resourceVersion: "9220" + selfLink: /apis/snapshot.storage.k8s.io/v1/namespaces/demo/volumesnapshots/source-data-fnbwz + uid: c1bc3390-a6c7-11e9-9f3a-42010a800050 +spec: + source: + persistentVolumeClaimName: source-data + volumeSnapshotClassName: csi-snapshot-class +status: + boundVolumeSnapshotContentName: snapcontent-c1bc3390-a6c7-11e9-9f3a-42010a800050 + creationTime: "2019-07-15T06:14:10Z" + readyToUse: true + restoreSize: 1Gi +``` + +Here, `status.snapshotContentName` field specifies the name of the `VolumeSnapshotContent` crd. It also represents the actual snapshot name that has been saved in Google Cloud. If we navigate to the `Snapshots` tab in the GCP console, we are going to see the snapshot `snapcontent-c1bc3390-a6c7-11e9-9f3a-42010a800050` has been stored successfully. + +
+  Stash Backup Flow +
Fig: Snapshots in GCP
+
+ +## Restore PVC from VolumeSnapshot + +This section will show you how to restore the PVCs from the snapshots we have taken in the previous section. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` Deployment. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-volume-snapshot` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-volume-snapshot --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-volume-snapshot patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +deployment-volume-snapshot */1 * * * * true 18m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Create RestoreSession :** + +At first, we have to create a `RestoreSession` crd to restore the PVCs from the respective snapshot. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-fnbwz + apiGroup: snapshot.storage.k8s.io + - metadata: + name: restore-config + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-config-fnbwz + apiGroup: snapshot.storage.k8s.io +``` + +Here, + +- `spec.target.volumeClaimTemplates`: + - `metadata.name` is a template for the name of the restored PVC that will be created by Stash. You have to provide this named template to match with the desired PVC of your Deployment. + - `spec.dataSource`: `spec.dataSource` specifies the source of the data from where the newly created PVC will be initialized. It requires the following fields to be set: + - `apiGroup` is the group for resource being referenced. Now, Kubernetes supports only `snapshot.storage.k8s.io`. + - `kind` is resource of the kind being referenced. Now, Kubernetes supports only `VolumeSnapshot`. + - `name` is the `VolumeSnapshot` resource name. In `RestoreSession` crd, You must set the VolumeSnapshot name directly. + +Let's create the `RestoreSession` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/restoresession.yaml +restoresession.stash.appscode.com/restore-pvc created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process has been succeeded or not. + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 1 kubectl get -n demo restoresession -n +Every 1.0s: kubectl get restore -n demo + +NAME REPOSITORY-NAME PHASE AGE +restore-pvc Running 10s +restore-pvc Succeeded 1m +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored PVC :** + +Once the restore process is complete, we are going to see that new PVCs with the name `restore-data` and `restore-config` have been created. + +Verify that the PVCs have been created by the following command, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-config Bound pvc-26758eda-a6ca-11e9-9f3a-42010a800050 1Gi RWO standard 30s +restore-data Bound pvc-267335ff-a6ca-11e9-9f3a-42010a800050 1Gi RWO standard 30s +``` + +Notice the `STATUS` field. It indicates that the respective PV has been provisioned and initialized from the respective VolumeSnapshot by CSI driver and the PVC has been bound with the PV. + +> The [volumeBindingMode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode) field controls when volume binding and dynamic provisioning should occur. Kubernetes allows `Immediate` and `WaitForFirstConsumer` modes for binding volumes. The `Immediate` mode indicates that volume binding and dynamic provisioning occurs once the PVC is created and `WaitForFirstConsumer` mode indicates that volume binding and provisioning does not occur until a pod is created that uses this PVC. By default `volumeBindingMode` is `Immediate`. + +> If you use `volumeBindingMode: WaitForFirstConsumer`, respective PVC will be initialized from respective VolumeSnapshot after you create a workload with that PVC. In this case, Stash will mark the restore session as completed with phase `Unknown`. + +**Verify Restored Data :** + +We are going to create a new Deployment with the restored PVCs to verify whether the backed up data has been restored. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: restore-demo + name: restore-demo + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: restore-demo + template: + metadata: + labels: + app: restore-demo + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /restore/data + name: restore-data + - mountPath: /restore/config + name: restore-config + restartPolicy: Always + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + - name: restore-config + persistentVolumeClaim: + claimName: restore-config +``` + +Let's create the deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/deployment/examples/restored-deployment.yaml +deployment.apps/restore-demo created +``` + +Now, wait for the pod of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restore-demo-544db78b8b-tnzb2 1/1 Running 0 34s +``` + +Verify that the backed up data has been restored in `/restore/data` and `/restore/config` directory using the following command, + +```bash +$ kubectl exec -n demo restore-demo-544db78b8b-tnzb2 ls /restore/config/config.cfg +config_data +$ kubectl exec -n demo restore-demo-544db78b8b-tnzb2 ls /restore/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment restore-demo +kubectl delete -n demo backupconfiguration deployment-volume-snapshot +kubectl delete -n demo restoresession restore-pvc +kubectl delete -n demo storageclass csi-standard +kubectl delete -n demo volumesnapshotclass csi-snapshot-class +``` diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/restore-overview.svg b/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/restore-overview.svg new file mode 100644 index 0000000000..28b2f098e5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/restore-overview.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/volumesnapshot-overview.svg b/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/volumesnapshot-overview.svg new file mode 100644 index 0000000000..a859c04afc --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/overview/images/volumesnapshot-overview.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/overview/index.md b/content/docs/v2024.8.27/guides/volumesnapshot/overview/index.md new file mode 100644 index 0000000000..fb1b341039 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/overview/index.md @@ -0,0 +1,149 @@ +--- +title: VolumeSnapshot Overview | Stash +description: An overview of how VolumeSnapshot works in Stash +menu: + docs_v2024.8.27: + identifier: volume-snapshot-overview + name: How VolumeSnapshot works? + parent: volume-snapshot + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# VolumeSnapshot Using Stash + +This guide will give you an overview of how VolumeSnapshot process works in Stash. + +## 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. + +
+  Stash Backup Flow +
Fig: Volume Snapshotting Process in Stash
+
+ +The `VolumeSnapshot` process consists of the following steps: + +1. At first, a user creates a `BackupConfiguration` crd which specifies the targeted workload or targeted PVC. + +2. Stash operator watches for `BackupConfiguration` crd. + +3. When it finds a `BackupConfiguration` crd, it creates a `CronJob` to take a periodic backup of the target volumes. + +4. The `CronJob` triggers backup on each scheduled time slot by creating a `BackupSession` crd. + +5. Stash operator watches for `BackupSession` crd. + +6. When it finds a `BackupSession` crd, it creates a volume snapshotter `Job` to take snapshot of the targeted volumes. + +7. The volume snapshotter `Job` creates `VolumeSnapshot` crd for each PVC of the target and waits for the CSI driver to complete snapshotting. These `VolumeSnasphot` crd names follow the following format: +```bash + - +``` + +8. CSI `external-snapshotter` controller watches for `VolumeSnapshot`. + +9. When it finds a `VolumeSnapshot` object, it backups `VolumeSnapshot` in the respective cloud storage. + +10. Once the snapsotting is completed, Stash Operator updates the `status.phase` field of the `BackupSession` crd. + +## 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. + +
+  Stash Backup Flow +
Fig: Restore process from snapshot in Stash
+
+ +The restore process consists of the following steps: + +1. At first, a user creates a `RestoreSession` crd which specifies the `volumeClaimTemplates`. `VolumeClaimTemplates` hold the information about `VolumeSnapshot`. + +2. Stash operator watches for `RestoreSession` crd. + +3. When it finds a `RestoreSession` crd, it creates a Restore `Job`to restore PVC from the snapshot. + +4. The restore `Job` creates PVC with `spec.dataSource` field set to the respective VolumeSnapshot name. + +5. CSI `external-snapshotter` controller watches for PVC. + +6. When it finds a new PVC with `spec.dataSource` field set, it reads the information about the `VolumeSnapshot`. + +7. The controller downloads the respective data from the cloud and populate the PVC with it. + +8. Once restore process is completed, the Stash operator updates the `status.phase` field of the `BackupSession` crd. + +## Next Steps + +1. See a step by step guide to snapshot the volumes of a Deployment [here](/docs/v2024.8.27/guides/volumesnapshot/deployment/). +2. See a step by step guide to snapshot the volumes of a StatefulSet [here](/docs/v2024.8.27/guides/volumesnapshot/statefulset/). +3. See a step by step guide to snapshot a stand-alone PVC [here](/docs/v2024.8.27/guides/volumesnapshot/pvc/). diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..27eca4ac7a --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/backupconfiguration.yaml @@ -0,0 +1,18 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: pvc-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: source-data + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restored-pod.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restored-pod.yaml new file mode 100644 index 0000000000..4fee01c137 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restored-pod.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: restored-pod + namespace: demo +spec: + containers: + - name: busybox + image: busybox + args: + - sleep + - "3600" + volumeMounts: + - name: restore-data + mountPath: /restore/data + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + readOnly: false diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restoresession.yaml new file mode 100644 index 0000000000..7bab6ffea5 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/restoresession.yaml @@ -0,0 +1,21 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-fnbwz + apiGroup: snapshot.storage.k8s.io diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pod.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pod.yaml new file mode 100644 index 0000000000..fcf7aa7ed2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: source-pod + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c"] + args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + volumeMounts: + - name: source-data + mountPath: /source/data + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + readOnly: false diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pvc.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pvc.yaml new file mode 100644 index 0000000000..7af855c2a0 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/source-pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/storageclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/storageclass.yaml new file mode 100644 index 0000000000..e1fa0f0231 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/storageclass.yaml @@ -0,0 +1,9 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/volumesnapshotclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/volumesnapshotclass.yaml new file mode 100644 index 0000000000..382ba7d1d6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/volumesnapshotclass.yaml @@ -0,0 +1,6 @@ +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/images/gcp.png b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/images/gcp.png new file mode 100644 index 0000000000..2b65e5423a Binary files /dev/null and b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/images/gcp.png differ diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/pvc/index.md b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/index.md new file mode 100644 index 0000000000..f5d32b4e80 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/pvc/index.md @@ -0,0 +1,518 @@ +--- +title: Snapshot Stand-alone PVC | Stash +description: An step by step guide showing how to snapshot a stand-alone PVC +menu: + docs_v2024.8.27: + identifier: volume-snapshot-pvc + name: Snapshot Stand-alone PVC + parent: volume-snapshot + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Snapshotting a Standalone PVC + +This guide will show you how to use Stash to snapshot standalone PersistentVolumeClaims and restore it from the snapshot using Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) API. In this guide, we are going to backup the volumes in Google Cloud Platform with the help of [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +## Before You Begin + +- At first, you need to be familiar with the [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- If you don't know how VolumeSnapshot works in Stash, please visit [here](/docs/v2024.8.27/guides/volumesnapshot/overview/). + +## Prepare for VolumeSnapshot + +Here, we are going to create `StorageClass` that uses [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +Below is the YAML of the `StorageClass` we are going to use, + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate +``` + +Let's create the `StorageClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/storageclass.yaml +storageclass.storage.k8s.io/csi-standard created +``` + +We also need a `VolumeSnapshotClass`. Below is the YAML of the `VolumeSnapshotClass` we are going to use, + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete +``` + +Here, + +- `driver` field to point to the respective CSI driver that is responsible for taking snapshot. As we are using [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver), we are going to use `pd.csi.storage.gke.io` in this field. + +Let's create the `volumeSnapshotClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/volumesnapshotclass.yaml +volumesnapshotclass.snapshot.storage.k8s.io/csi-snapshot-class created +``` + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored in [/docs/guides/volumesnapshot/pvc/examples](/docs/v2024.8.27/guides/volumesnapshot/pvc/examples/) directory of [stashed/docs](https://github.com/stashed/docs) repository. + + +## Take Volume Snapshot + +Here, we are going to create a PVC and mount it with a pod and we are going to also generate some sample data on it. Then, we are going to take snapshot of this PVC using Stash. + +**Create PersistentVolumeClaim :** + +At first, let's create a PVC. We are going to mount this PVC in a pod. + +Below is the YAML of the sample PVC, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: source-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +``` + +Let's create the PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/source-pvc.yaml +persistentvolumeclaim/source-data created +``` + +**Create Pod :** + +Now, we are going to deploy a pod that uses the above PVC. This pod will automatically create `data.txt` file in `/source/data` directory and write some sample data in it and also mounted the desired PVC in `/source/data` directory. + +Below is the YAML of the pod that we are going to create, + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: source-pod + namespace: demo +spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c"] + args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + volumeMounts: + - name: source-data + mountPath: /source/data + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data + readOnly: false +``` + +Let's create the Pod we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/source-pod.yaml +pod/source-pod created +``` + +Now, wait for the Pod to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +source-pod 1/1 Running 0 25s +``` + +Verify that the sample data has been created in `/source/data` directory for `source-pod` pod +using the following command, + +```bash +$ kubectl exec -n demo source-pod -- cat /source/data/data.txt +sample_data +``` + +**Create BackupConfiguration :** + +Now, create a `BackupConfiguration` crd to take snapshot of the `source-data` PVC. + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: pvc-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: v1 + kind: PersistentVolumeClaim + name: source-data + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` is a [cron expression](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#schedule) indicates that `BackupSession` will be created at 5 minute interval. + +- `spec.driver` indicates the name of the agent to use to back up the target. Currently, Stash supports `Restic`, `VolumeSnapshotter` drivers. The `VolumeSnapshotter` is used to backup/restore PVC using `VolumeSnapshot` API. + +- `spec.target.ref` refers to the backup target. `apiVersion`, `kind` and `name` refers to the `apiVersion`, `kind` and `name` of the targeted workload respectively. Stash will use this information to create a Volume Snapshotter Job for creating VolumeSnapshot. + +- `spec.target.snapshotClassName` indicates the [VolumeSnapshotClass](https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/) to be used for volume snapshotting. + +Let's create the `BackupConfiguration` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/pvc-volume-snapshot created +``` + +**Verify CronJob :** + +If everything goes well, Stash will create a `CronJob` to take periodic snapshot of the PVC with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + + Check that the `CronJob` has been created using the following command, + + ```bash + $ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +pvc-volume-snapshot */1 * * * * False 0 39s 2m41s + ``` + +**Wait for BackupSession :** + +The `pvc-volume-snapshot` CronJob will trigger a backup on each scheduled time slot by creating a `BackupSession` crd. + +Wait for the next schedule of backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 1 kubectl get backupsession -n demo +Every 1.0s: kubectl get backupsession -n demo + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +pvc-volume-snapshot-fnbwz BackupConfiguration pvc-volume-snapshot Succeeded 1m32s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the `VolumeSnapshot` has been created and the snapshots have been stored in the respective backend. + +**Verify Volume Snapshot :** + +Once a `BackupSession` crd is created, it creates volume snapshotter `Job`. Then the `Job` creates `VolumeSnapshot` crd for the targeted PVC. + +Check that the `VolumeSnapshot` has been created Successfully. + +```bash +$ kubectl get volumesnapshot -n demo +NAME AGE +source-data-fnbwz 1m30s +``` + +Let's find out the actual snapshot name that will be saved in the Google Cloud by the following command, + +```bash +kubectl get volumesnapshot source-data-fnbwz -n demo -o yaml +``` + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshot +metadata: + creationTimestamp: "2019-07-15T10:31:09Z" + finalizers: + - snapshot.storage.kubernetes.io/volumesnapshot-protection + generation: 4 + name: source-data-fnbwz + namespace: demo + resourceVersion: "32098" + selfLink: /apis/snapshot.storage.k8s.io/v1/namespaces/demo/volumesnapshots/source-data-fnbwz + uid: a8e8faeb-a6eb-11e9-9f3a-42010a800050 +spec: + source: + persistentVolumeClaimName: source-data + volumeSnapshotClassName: csi-snapshot-class +status: + boundVolumeSnapshotContentName: snapcontent-a8e8faeb-a6eb-11e9-9f3a-42010a800050 + creationTime: "2019-07-15T10:31:10Z" + readyToUse: true + restoreSize: 1Gi +``` + +Here, `spec.snapshotContentName` field specifies the name of the `VolumeSnapshotContent` crd. It also represents the actual snapshot name that has been saved in Google Cloud. If we navigate to the `Snapshots` tab in the GCP console, we are going to see snapshot `snapcontent-a8e8faeb-a6eb-11e9-9f3a-42010a800050` has been stored successfully. + +
+  Stash Backup Flow +
Fig: Snapshots in GCP
+
+ +## Restore PVC from VolumeSnapshot + +This section will show you how to restore the PVC from the snapshot we have taken in the earlier section. + +**Stop Taking Backup of the Old PVC:** + +At first, let's stop taking any further backup of the old PVC so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `source-data` PVC. Then, Stash will stop taking any further backup for this PVC. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `pvc-volume-snapshot` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo pvc-volume-snapshot --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/pvc-volume-snapshot patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +pvc-volume-snapshot */1 * * * * true 22m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Create RestoreSession :** + +At first, we have to create a `RestoreSession` crd to restore the PVC from respective snapshot. + +Below is the YAML of the RestoreSesion crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + volumeClaimTemplates: + - metadata: + name: restore-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-fnbwz + apiGroup: snapshot.storage.k8s.io +``` + +Here, + +- `spec.target.volumeClaimTemplates`: + - `metadata.name` is the name of the restored `PVC` or prefix of the `VolumeSnapshot` name. + - `spec.dataSource`: `spec.dataSource` specifies the source of the data from where the newly created PVC will be initialized. It requires following fields to be set: + - `apiGroup` is the group for resource being referenced. Now, Kubernetes supports only `snapshot.storage.k8s.io`. + - `kind` is resource of the kind being referenced. Now, Kubernetes supports only `VolumeSnapshot`. + - `name` is the `VolumeSnapshot` resource name. In `RestoreSession` crd, You must set the VolumeSnapshot name directly. + +Let's create the `RestoreSession` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/restoresession.yaml +restoresession.stash.appscode.com/restore-pvc created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process has succeeded or not. + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 1 kubectl get restore -n demo +Every 1.0s: kubectl get restore -n demo + +NAME REPOSITORY-NAME PHASE AGE +restore-pvc Running 10s +restore-pvc Succeeded 1m +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored PVC :** + +Once the restore process is complete, we are going to see that new PVC with the name `restore-data` has been created. + +To verify that the PVC has been created, run by the following command, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-data Bound pvc-c5f0e7f5-a6ec-11e9-9f3a-42010a800050 1Gi RWO standard 52s +``` + +Notice the `STATUS` field. It indicates that the respective PV has been provisioned and initialized from the respective VolumeSnapshot by CSI driver and the PVC has been bound with the PV. + +>The [volumeBindingMode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode) field controls when volume binding and dynamic provisioning should occur. Kubernetes allows `Immediate` and `WaitForFirstConsumer` modes for binding volumes. The `Immediate` mode indicates that volume binding and dynamic provisioning occurs once the PVC is created and `WaitForFirstConsumer` mode indicates that volume binding and provisioning does not occur until a pod is created that uses this PVC. By default `volumeBindingMode` is `Immediate`. + +>If you use `volumeBindingMode: WaitForFirstConsumer`, respective PVC will be initialized from respective VolumeSnapshot after you create a workload with that PVC. In this case, Stash will mark the restore session as completed with phase `Unknown`. + +**Verify Restored Data :** + +We are going to create a new pod with the restored PVC to verify whether the backed up data has been restored. + +Below, the YAML for the Pod we are going to create. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: restored-pod + namespace: demo +spec: + containers: + - name: busybox + image: busybox + args: + - sleep + - "3600" + volumeMounts: + - name: restore-data + mountPath: /restore/data + volumes: + - name: restore-data + persistentVolumeClaim: + claimName: restore-data + readOnly: false +``` + +Let's create the Pod we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/pvc/examples/restored-pod.yaml +pod/restored-pod created +``` + +Now, wait for the Pod to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restored-pod 1/1 Running 0 34s +``` + +Verify that the backed up data has been restored in `/restore/data` directory for `restored-pod` pod using the following command, + +```bash +$ kubectl exec -n demo restored-pod -- cat /restore/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pod source-pod +kubectl delete -n demo pod restored-pod +kubectl delete -n demo backupconfiguration pvc-volume-snapshot +kubectl delete -n demo restoresession restore-pvc +kubectl delete -n demo storageclass csi-standard +kubectl delete -n demo volumesnapshotclass csi-snapshot-class +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration-single-replica.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration-single-replica.yaml new file mode 100644 index 0000000000..ecc9e46d92 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration-single-replica.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: statefulset-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + replicas: 1 + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..4e07cee882 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/backupconfiguration.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: statefulset-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + replicas: 3 + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restored-statefulset.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restored-statefulset.yaml new file mode 100644 index 0000000000..132b248e1f --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restored-statefulset.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +kind: Service +metadata: + name: restore-svc + labels: + app: restore-demo + namespace: demo +spec: + ports: + - port: 80 + name: web + clusterIP: None + selector: + app: restore-demo +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: restore-demo + namespace: demo +spec: + selector: + matchLabels: + app: restore-demo + serviceName: svc + replicas: 3 + template: + metadata: + labels: + app: restore-demo + spec: + containers: + - args: + - sleep + - "3600" + name: nginx + image: nginx + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: restore-data + mountPath: /restore/data + volumeClaimTemplates: + - metadata: + name: restore-data + namespace: demo + spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession-single-replica.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession-single-replica.yaml new file mode 100644 index 0000000000..0c5f799f4a --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession-single-replica.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + replicas: 3 + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-stash-demo-${POD_ORDINAL}-fnbwz + apiGroup: snapshot.storage.k8s.io diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession.yaml new file mode 100644 index 0000000000..0c5f799f4a --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/restoresession.yaml @@ -0,0 +1,22 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + replicas: 3 + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-stash-demo-${POD_ORDINAL}-fnbwz + apiGroup: snapshot.storage.k8s.io diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/statefulset.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/statefulset.yaml new file mode 100644 index 0000000000..ac66f2c920 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/statefulset.yaml @@ -0,0 +1,58 @@ +apiVersion: v1 +kind: Service +metadata: + name: svc + labels: + app: demo + namespace: demo +spec: + ports: + - port: 80 + name: web + clusterIP: None + selector: + app: stash +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo +spec: + selector: + matchLabels: + app: stash + serviceName: svc + replicas: 3 + template: + metadata: + labels: + app: stash + spec: + containers: + - args: ["echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + name: nginx + image: nginx + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: source-data + mountPath: /source/data + volumeClaimTemplates: + - metadata: + name: source-data + namespace: demo + spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/storageclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/storageclass.yaml new file mode 100644 index 0000000000..e1fa0f0231 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/storageclass.yaml @@ -0,0 +1,9 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/volumesnapshotclass.yaml b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/volumesnapshotclass.yaml new file mode 100644 index 0000000000..382ba7d1d6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/volumesnapshotclass.yaml @@ -0,0 +1,6 @@ +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp.png b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp.png new file mode 100644 index 0000000000..25a15360e5 Binary files /dev/null and b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp.png differ diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp2.png b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp2.png new file mode 100644 index 0000000000..aea779a6e2 Binary files /dev/null and b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/images/gcp2.png differ diff --git a/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/index.md b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/index.md new file mode 100644 index 0000000000..ed4bea39e7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/volumesnapshot/statefulset/index.md @@ -0,0 +1,915 @@ +--- +title: Snapshot StatefulSet Volumes | Stash +description: An step by step guide showing how to snapshot the volumes of a StatefulSet +menu: + docs_v2024.8.27: + identifier: volume-snapshot-statefulset + name: Snapshot StatefulSet Volumes + parent: volume-snapshot + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Snapshotting the volumes of a StatefulSet + +This guide will show you how to use Stash to snapshot the volumes of a StatefulSet and restore them from the snapshots using Kubernetes [VolumeSnapshot](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) API. In this guide, we are going to backup the volumes in Google Cloud Platform with the help of [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +## Before You Begin + +- At first, you need to be familiar with the [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). +- If you don't know how VolumeSnapshot works in Stash, please visit [here](/docs/v2024.8.27/guides/volumesnapshot/overview/). + +## Prepare for VolumeSnapshot + +Here, we are going to create `StorageClass` that uses [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver). + +Below is the YAML of the `StorageClass` we are going to use, + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-standard +parameters: + type: pd-standard +provisioner: pd.csi.storage.gke.io +reclaimPolicy: Delete +volumeBindingMode: Immediate +``` + +Let's create the `StorageClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/storageclass.yaml +storageclass.storage.k8s.io/csi-standard created +``` + +We also need a `VolumeSnapshotClass`. Below is the YAML of the `VolumeSnapshotClass` we are going to use, + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshotClass +metadata: + name: csi-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete +``` + +Here, + +- `driver` field to point to the respective CSI driver that is responsible for taking snapshot. As we are using [GCE Persistent Disk CSI Driver](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver), we are going to use `pd.csi.storage.gke.io` in this field. + +Let's create the `volumeSnapshotClass` we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/volumesnapshotclass.yaml +volumesnapshotclass.snapshot.storage.k8s.io/csi-snapshot-class created +``` + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +>Note: YAML files used in this tutorial are stored in [/docs/guides/volumesnapshot/statefulset/examples](/docs/v2024.8.27/guides/volumesnapshot/statefulset/examples/) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Take Volume Snapshot + +When you create a Statefulset, there is no need to create PVCs separately, because all replicas in Statefulset use different PVCs to store data. Kubernetes allows us to define a `volumeClaimTemplates` in Statefulset so that new PVC is created for each replica automatically. We are going to take snapshot of those PVCs using Stash. + +**Deploy StatefulSet :** + +Now, we are going to deploy a Statefulset. This Statefulset will automatically generate sample data in `/source/data` directory. + +Below is the YAML of the Statefulset that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: svc + labels: + app: demo + namespace: demo +spec: + ports: + - port: 80 + name: web + clusterIP: None + selector: + app: stash +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo +spec: + selector: + matchLabels: + app: stash + serviceName: svc + replicas: 3 + template: + metadata: + labels: + app: stash + spec: + containers: + - args: ["echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + name: nginx + image: nginx + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: source-data + mountPath: /source/data + volumeClaimTemplates: + - metadata: + name: source-data + namespace: demo + spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi +``` + +Let's create the Statefulset we have shown above. + +```bash +$ kubectl create -f ./docs/guides/volumesnapshot/statefulset/examples/statefulset.yaml +service/svc created +statefulset.apps/stash-demo created +``` + +Now, wait for the pod of Statefulset to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-0 1/1 Running 0 97s +stash-demo-1 1/1 Running 0 67s +stash-demo-2 1/1 Running 0 39s +``` + +Let's find out the PVCs created for these replicas, + +```bash +kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +source-data-stash-demo-0 Bound pvc-760c1734-a6cc-11e9-9f3a-42010a800050 1Gi RWO standard 70s +source-data-stash-demo-1 Bound pvc-86f5b3bd-a6cc-11e9-9f3a-42010a800050 1Gi RWO standard 42s +source-data-stash-demo-2 Bound pvc-9c9f542f-a6cc-11e9-9f3a-42010a800050 1Gi RWO standard 5s +``` + +Verify that the sample data has been created in `/source/data` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n demo stash-demo-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-demo-2 -- cat /source/data/data.txt +stash-demo-2 +``` + +**Create BackupConfiguration :** + +Now, create a `BackupConfiguration` crd to take snapshot of the PVCs of `stash-demo` Statefulset. + +Below is the YAML of the `BackupConfiguration` that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: statefulset-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + replicas : 3 + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.schedule` is a [cron expression](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#schedule) indicates that `BackupSession` will be created at 5 minute interval. + +- `spec.driver` indicates the name of the agent to use to back up the target. Currently, Stash supports `Restic`, `VolumeSnapshotter` drivers. The `VolumeSnapshotter` is used to backup/restore PVC using `VolumeSnapshot` API. + +- `spec.target.ref` refers to the backup target. `apiVersion`, `kind` and `name` refers to the `apiVersion`, `kind` and `name` of the targeted workload respectively. Stash will use this information to create a Volume Snapshotter Job for creating VolumeSnapshot. + +- `spec.target.snapshotClassName` indicates the [VolumeSnapshotClass](https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/) to be used for volume snapshotting. + +Let's create the `BackupConfiguration` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/statefulset-volume-snapshot created +``` + +**Verify CronJob :** + +If everything goes well, Stash will create a `CronJob` to take periodic snapshot of `stash-demo-0` , `stash-demo-1` and `stash-demo-2` volumes of the Statefulset with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + + Check that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +statefulset-volume-snapshot */1 * * * * False 0 18s +``` + +**Wait for BackupSession :** + +The `statefulset-volume-snapshot` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 1 kubectl get backupsession -n demo +Every 1.0s: kubectl get backupsession -n demo + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +statefulset-volume-snapshot-fnbwz BackupConfiguration statefulset-volume-snapshot Succeeded 57s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the VolumeSnapshot has been created and the snapshots has been stored in the respective backend. + +**Verify Volume Snapshot :** + +Once a `BackupSession` crd is created, it creates volume snapshotter `Job`. Then the `Job` creates `VolumeSnapshot` crd for the targeted PVC. + +Check that the `VolumeSnapshot` has been created Successfully. + +```bash +$ kubectl get volumesnapshot -n demo +NAME AGE +source-data-stash-demo-0-fnbwz 115s +source-data-stash-demo-1-fnbwz 115s +source-data-stash-demo-2-fnbwz 115s +``` + +Let's find out the actual snapshot name that has been saved in the Google Cloud by the following command, + +```bash +kubectl get volumesnapshot source-data-stash-demo-0-fnbwz -n demo -o yaml +``` + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshot +metadata: + creationTimestamp: "2019-07-15T07:59:13Z" + finalizers: + - snapshot.storage.kubernetes.io/volumesnapshot-protection + generation: 4 + name: source-data-stash-demo-0-fnbwz + namespace: demo + resourceVersion: "18764" + selfLink: /apis/snapshot.storage.k8s.io/v1/namespaces/demo/volumesnapshots/source-data-stash-demo-0-fnbwz + uid: 6f3b49a9-a6d6-11e9-9f3a-42010a800050 +spec: + source: + persistentVolumeClaimName: source-data-stash-demo-0 + volumeSnapshotClassName: csi-snapshot-class +status: + boundVolumeSnapshotContentName: snapcontent-6f3b49a9-a6d6-11e9-9f3a-42010a800050 + creationTime: "2019-07-15T07:59:14Z" + readyToUse: true + restoreSize: 1Gi +``` + +Here, `spec.snapshotContentName` field specifies the name of the `VolumeSnapshotContent` crd. It also represents the actual snapshot name that has been saved in Google Cloud. If we navigate to the `Snapshots` tab in the GCP console, we should see snapshot `snapcontent-6f3b49a9-a6d6-11e9-9f3a-42010a800050` has been stored successfully. + +
+  Stash Backup Flow +
Fig: Snapshots in GCP
+
+ +## Restore PVC from VolumeSnapshot + +This section will show you how to restore PVCs from the snapshots we have taken in the earlier section. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's stop taking any further backup of the old StatefulSet so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` StatefulSet. Then, Stash will stop taking any further backup for this StatefulSet. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `statefulset-volume-snapshot` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo statefulset-volume-snapshot --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/statefulset-volume-snapshot patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +statefulset-volume-snapshot */1 * * * * true 20m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Create RestoreSession :** + +At first, we have to create a `RestoreSession` crd to restore PVCs from respective the snapshots. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + replicas: 3 + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: "csi-standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-stash-demo-${POD_ORDINAL}-fnbwz + apiGroup: snapshot.storage.k8s.io +``` + +Here, + +- `spec.target.replicas`: `spec.target.replicas` specify the number of replicas of a StatefulSet whose volumes were backed up and Stash uses this field to dynamically create the desired number of PVCs and initialize them from respective or Specific VolumeSnapShots. +- `spec.target.volumeClaimTemplates`: + - `metadata.name` is a template for the name of the restored PVC that will be created by Stash. You have to provide this named template to match with the desired PVC of a StatefulSet. For example, if you want to deploy a StatefulSet named `stash-demo` with `volumeClaimTemplate` name `my-volume`, the PVCs of your StatefulSet will be `my-volume-stash-demo-0`, `my-volume-stash-demo-1` and so on. In this case, you have to provide `volumeClaimTemplate` name in `RestoreSession` in the following format: + + ```bash + --${POD_ORDINAL} + ``` + + So for the above example, `volumeClaimTemplate` name for `RestoreSession` will be `my-volume-stash-demo-${POD_ORDINAL}`. + - `spec.dataSource`: `spec.dataSource` specifies the source of the data from where the newly created PVC will be initialized. It requires following fields to be set: + - `apiGroup` is the group for resource being referenced. Now, Kubernetes supports only `snapshot.storage.k8s.io`. + - `kind` is resource of the kind being referenced. Now, Kubernetes supports only `VolumeSnapshot`. + - `name` is the `VolumeSnapshot` resource name. In `RestoreSession` crd, You must provide the name in the following format: + + ```bash + -${POD_ORDINAL}- + ``` + + The `${POD_ORDINAL}` variable is resolved by Stash. If you don't provide this variable and specify ordinal manually, all the PVC will be restored from the same VolumeSnapshot. + +Let's create the `RestoreSession` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/restoresession.yaml +restoresession.stash.appscode.com/restore-pvc created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process has succeeded or not. + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 1 kubectl get restore -n demo +Every 1.0s: kubectl get restore -n demo + +NAME REPOSITORY-NAME PHASE AGE +restore-pvc Running 10s +restore-pvc Succeeded 1m +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored PVC :** + +Once the restore process is complete, we are going to see that new PVCs with the name `restore-data-restore-demo-0` , `restore-data-restore-demo-1` and `restore-data-restore-demo-2` has been created. + +Verify that the PVCs has been created by the following command, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-data-restore-demo-0 Bound pvc-ed35c54d-a6dc-11e9-9f3a-42010a800050 1Gi RWO standard 13s +restore-data-restore-demo-1 Bound pvc-ed3bcb82-a6dc-11e9-9f3a-42010a800050 1Gi RWO standard 13s +restore-data-restore-demo-2 Bound pvc-ed3fed79-a6dc-11e9-9f3a-42010a800050 1Gi RWO standard 13s +``` + +Notice the `STATUS` field. It indicates that the respective PV has been provisioned and initialized from the respective VolumeSnapshot by CSI driver and the PVC has been bound with the PV. + +>The [volumeBindingMode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode) field controls when volume binding and dynamic provisioning should occur. Kubernetes allows `Immediate` and `WaitForFirstConsumer` modes for binding volumes. The `Immediate` mode indicates that volume binding and dynamic provisioning occurs once the PVC is created and `WaitForFirstConsumer` mode indicates that volume binding and provisioning does not occur until a pod is created that uses this PVC. By default `volumeBindingMode` is `Immediate`. + +>If you use `volumeBindingMode: WaitForFirstConsumer`, respective PVC will be initialized from respective VolumeSnapshot after you create a workload with that PVC. In this case, Stash will mark the restore session as completed with phase `Unknown`. + +**Verify Restored Data :** + +We are going to create a new Statefulset with the restored PVCs to verify whether the backed up data has been restored. + +Below, the YAML for the Statefulset we are going to create. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: restore-svc + labels: + app: restore-demo + namespace: demo +spec: + ports: + - port: 80 + name: web + clusterIP: None + selector: + app: restore-demo +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: restore-demo + namespace: demo +spec: + selector: + matchLabels: + app: restore-demo + serviceName: svc + replicas: 3 + template: + metadata: + labels: + app: restore-demo + spec: + containers: + - args: + - sleep + - "3600" + name: nginx + image: nginx + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: restore-data + mountPath: /restore/data + volumeClaimTemplates: + - metadata: + name: restore-data + namespace: demo + spec: + accessModes: + - ReadWriteOnce + storageClassName: csi-standard + resources: + requests: + storage: 1Gi +``` + +Let's create the Statefulset we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/restored-statefulset.yaml +service/svc created +statefulset.apps/restore-demo created +``` + +Now, wait for the pod of the Statefulset to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restore-demo-0 1/1 Running 0 65s +restore-demo-1 1/1 Running 0 46s +restore-demo-2 1/1 Running 0 26s +``` + +Verify that the backed up data has been restored in `/restore/data` directory using the following command, + +```bash +$ kubectl exec -n demo restore-demo-0 -- cat /restore/data/data.txt +stash-demo-0 +$ kubectl exec -n demo restore-demo-1 -- cat /restore/data/data.txt +stash-demo-1 +$ kubectl exec -n demo restore-demo-2 -- cat /restore/data/data.txt +stash-demo-2 +``` + +## Advance Use-Case + +Stash can also backup only single replica or restore same data on all replicas of a StatefulSet. This is particularly useful when all replicas of the StatefulSet contains same data. For example, in [MongoDB ReplicaSet](https://kubedb.com/docs/0.12.0/guides/mongodb/clustering/replication_concept/) all the pod contains same data. In this case backup only single replica is enough. Similarly, it might be useful in some cases where all the replicas need to be initialized with same data. + +### Backup only Single Replica + +This section will show you how to snapshot only a single replica of a Statefulset volume. + +**Create BackupConfiguration :** + +Now, create a `BackupConfiguration` crd to take snapshot of a single PVC of the `stash-demo` Statefulset. + +Below is the YAML of the `BackupConfiguration` that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: statefulset-volume-snapshot + namespace: demo +spec: + schedule: "*/5 * * * *" + driver: VolumeSnapshotter + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + replicas: 1 + snapshotClassName: csi-snapshot-class + retentionPolicy: + name: "keep-last-5" + keepLast: 5 + prune: true +``` + +Here, + +- `spec.replicas` specifies the number of replicas (starting from 0th) whose data should be backed up. If it is set to 1, Stash will take snapshot only the volumes of `--0` pod. For replica set to 2, Stash will take snapshot only the volumes of `--0` and `--1` pods and so on. + +Let's create the `BackupConfiguration` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/backupconfiguration-single-replica.yaml +backupconfiguration.stash.appscode.com/statefulset-volume-snapshot created +``` + +**Verify CronJob :** + +If everything goes well, Stash will create a `CronJob` to take periodic snapshot of `stash-demo-0` volume of the Statefulset with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + + Check that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +statefulset-volume-snapshot */1 * * * * False 0 18s +``` + +**Wait for BackupSession :** + +The `statefulset-volume-snapshot` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 1 kubectl get backupsession -n demo +Every 1.0s: kubectl get backupsession -n demo + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +statefulset-volume-snapshot-fnbwz BackupConfiguration statefulset-volume-snapshot Succeeded 57s +``` + +We can see above that the backup session has succeeded. Now, we are going to verify that the VolumeSnapshot has been created and the snapshot has been stored in the respective backend. + +**Verify Volume Snapshotting and Backup :** + +Once a `BackupSession` crd is created, Stash creates a volume snapshotter `Job`. Then the `Job` creates `VolumeSnapshot` crd for the targeted PVC. + +Check that the `VolumeSnapshot` has been created Successfully. + +```bash +$ kubectl get volumesnapshot -n demo +NAME AGE +source-data-stash-demo-0-fnbwz 67s +``` + +Let's find out the actual snapshot name that will be saved in the GCP by the following command, + +```bash +kubectl get volumesnapshot source-data-stash-demo-0-fnbwz -n demo -o yaml +``` + +```yaml +apiVersion: snapshot.storage.k8s.io/v1 +kind: VolumeSnapshot +metadata: + creationTimestamp: "2019-07-15T09:01:06Z" + finalizers: + - snapshot.storage.kubernetes.io/volumesnapshot-protection + generation: 4 + name: source-data-stash-demo-0-fnbwz + namespace: demo + resourceVersion: "24310" + selfLink: /apis/snapshot.storage.k8s.io/v1/namespaces/demo/volumesnapshots/source-data-stash-demo-0-fnbwz + uid: 14984cd3-a6df-11e9-9f3a-42010a800050 +spec: + source: + persistentVolumeClaimName: source-data-stash-demo-0 + volumeSnapshotClassName: csi-snapshot-class +status: + boundVolumeSnapshotContentName: snapcontent-14984cd3-a6df-11e9-9f3a-42010a800050 + creationTime: "2019-07-15T09:01:07Z" + readyToUse: true + restoreSize: 1Gi +``` + +Here, `spec.snapshotContentName` field specifies the name of the `VolumeSnapshotContent` crd. It also represents the actual snapshot name that has been saved in GCP. If we navigate to the `Snapshots` tab in the GCP console, we should see the snapshot `snapcontent-14984cd3-a6df-11e9-9f3a-42010a800050` has been stored successfully. + +
+  Stash Backup Flow +
Fig: Snapshot in GCP
+
+ +### Restore Same Data in all Replicas + +This section will show you how to restore PVCs from the snapshot that we have taken in the earlier section. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's stop taking any further backup of the old StatefulSet so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` StatefulSet. Then, Stash will stop taking any further backup for this StatefulSet. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `statefulset-volume-snapshot` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo statefulset-volume-snapshot --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/statefulset-volume-snapshot patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +statefulset-volume-snapshot */1 * * * * true 20m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Create RestoreSession :** + +At first, we have to create a `RestoreSession` crd to restore PVCs from the respective snapshot. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: restore-pvc + namespace: demo +spec: + driver: VolumeSnapshotter + target: + replicas : 3 + volumeClaimTemplates: + - metadata: + name: restore-data-restore-demo-${POD_ORDINAL} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi + dataSource: + kind: VolumeSnapshot + name: source-data-stash-demo-0-fnbwz + apiGroup: snapshot.storage.k8s.io +``` + +Here, + +- `spec.dataSource.name`: `spec.dataSource.name` is the `VolumeSnapshot` resource name. data will be restored in all replica from single VolumeSnapshot. + +Let's create the `BackupConfiguration` crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/restoresession-single-replica.yaml +restoresession.stash.appscode.com/restore-pvc created +``` + +Once, you have created the `RestoreSession` crd, Stash will create a job to restore. We can watch the `RestoreSession` phase to check if the restore process has succeeded or not. + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 1 kubectl get restore -n demo +Every 1.0s: kubectl get restore -n demo suaas-appscode: Tue Jun 18 18:35:41 2019 + +NAME REPOSITORY-NAME PHASE AGE +restore-pvc Running 10s +restore-pvc Succeeded 1m +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored PVC :** + +Once the restore process is complete, we are going to see that new PVCs with the name `restore-data-restore-demo-0` , `restore-data-restore-demo-1` and `restore-data-restore-demo-2` have been created successfully. + +check that the status of the PVCs are bound, + +```bash +$ kubectl get pvc -n demo +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +restore-data-restore-demo-0 Bound pvc-745e0f51-a6e0-11e9-9f3a-42010a800050 1Gi RWO standard 5m23s +restore-data-restore-demo-1 Bound pvc-746227e7-a6e0-11e9-9f3a-42010a800050 1Gi RWO standard 5m23s +restore-data-restore-demo-2 Bound pvc-74674656-a6e0-11e9-9f3a-42010a800050 1Gi RWO standard 5m23s +``` + +**Verify Restored Data :** + +We are going to create a new Statefulset to verify whether the restored data has been restored successfully. + +Below, the YAML for the Statefulset we are going to create. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: restore-svc + labels: + app: restore-demo + namespace: demo +spec: + ports: + - port: 80 + name: web + clusterIP: None + selector: + app: restore-demo +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: restore-demo + namespace: demo +spec: + selector: + matchLabels: + app: restore-demo + serviceName: svc + replicas: 3 + template: + metadata: + labels: + app: restore-demo + spec: + containers: + - args: + - sleep + - "3600" + name: nginx + image: nginx + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: restore-data + mountPath: /restore/data + volumeClaimTemplates: + - metadata: + name: restore-data + namespace: demo + spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +``` + +Let's create the Statefulset we have shown above. + +```bash + kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/volumesnapshot/statefulset/examples/restored-statefulset.yaml +service/svc created +statefulset.apps/restore-demo created +``` + +Now, wait for the pod of Statefulset to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +restore-demo-0 1/1 Running 0 3m9s +restore-demo-1 1/1 Running 0 2m50s +restore-demo-2 1/1 Running 0 2m30s +``` + +Verify that the backed up data has been restored in `/restore/data` directory using the following command, + +```bash +$ kubectl exec -n demo restore-demo-0 -- cat /restore/data/data.txt +stash-demo-0 +$ kubectl exec -n demo restore-demo-1 -- cat /restore/data/data.txt +stash-demo-0 +$ kubectl exec -n demo restore-demo-2 -- cat /restore/data/data.txt +stash-demo-0 +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo statefulset stash-demo +kubectl delete -n demo statefulset restore-demo +kubectl delete -n demo backupconfiguration statefulset-volume-snapshot +kubectl delete -n demo restoresession restore-pvc +kubectl delete -n demo storageclass csi-standard +kubectl delete -n demo volumesnapshotclass csi-snapshot-class +``` diff --git a/content/docs/v2024.8.27/guides/workloads/_index.md b/content/docs/v2024.8.27/guides/workloads/_index.md new file mode 100644 index 0000000000..8919c90191 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/_index.md @@ -0,0 +1,76 @@ +--- +title: Backup & Restore Volumes of Workloads | Stash +menu: + docs_v2024.8.27: + identifier: workload + name: Workload's Volumes + parent: guides + weight: 20 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..a702dc45e8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: dmn-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: DaemonSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/examples/daemon.yaml b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/daemon.yaml new file mode 100644 index 0000000000..986758d5db --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/daemon.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + hostPath: + path: /stash/source/data diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/examples/recovered_daemon.yaml b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/recovered_daemon.yaml new file mode 100644 index 0000000000..0ec9650bf4 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/recovered_daemon.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + hostPath: + path: /stash/recovered/data diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/examples/repository.yaml b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/repository.yaml new file mode 100644 index 0000000000..8746ae16ab --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-daemonset + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/restoresession.yaml new file mode 100644 index 0000000000..293724c6dd --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: dmn-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: DaemonSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/images/gcs_bucket_dmn.png b/content/docs/v2024.8.27/guides/workloads/daemonset/images/gcs_bucket_dmn.png new file mode 100644 index 0000000000..dc2b02782d Binary files /dev/null and b/content/docs/v2024.8.27/guides/workloads/daemonset/images/gcs_bucket_dmn.png differ diff --git a/content/docs/v2024.8.27/guides/workloads/daemonset/index.md b/content/docs/v2024.8.27/guides/workloads/daemonset/index.md new file mode 100644 index 0000000000..6ea68ddf9d --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/daemonset/index.md @@ -0,0 +1,665 @@ +--- +title: Backup and Restore Volumes of a DaemonSet | Stash +description: A step by step guide showing how to backup and restore volumes of a DaemonSet. +menu: + docs_v2024.8.27: + identifier: workload-daemonset + name: Backup & Restore Volumes of a DaemonSet + parent: workload + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Volumes of a DaemonSet + +This guide will show you how to use Stash to backup and restore volumes of a DaemonSet. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/workloads/daemonset/examples](/docs/v2024.8.27/guides/workloads/daemonset/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Backup Volumes of a DaemonSet + +This section will show you how to use Stash to backup volumes of a DaemonSet. Here, we are going to deploy a DaemonSet and generate some sample data in it. Then, we are going to backup this sample data using Stash. + +**Deploy DaemonSet:** + +At first, we are going to deploy a DaemonSet. This DaemonSet will automatically generate sample data (`data.txt` file) in `/source/data` directory. + +Below is the YAML of the DaemonSet that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + hostPath: + path: /stash/source/data +``` + +Let's create the DaemonSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/daemonset/examples/daemon.yaml +daemonset.apps/stash-demo created +``` + +Now, wait for the pod of the DaemonSet to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-c4nqw 1/1 Running 0 39s +``` + +Verify that the sample data has been created in `/source/data` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-c4nqw -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. We have to create a Secret with necessary credentials and a Repository crd to use this backend. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-daemonset + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/daemonset/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` DaemonSet that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: dmn-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: DaemonSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend information. +- `spec.schedule` is a cron expression that indicates `BackupSession` will be created at 5 minute interval. +- `spec.target.ref` refers to the `stash-demo` DaemonSet. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/daemonset/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/dmn-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +dmn-backup */5 * * * * Ready 11s +``` + +**Verify Sidecar:** + +Stash will inject a sidecar container into the `stash-demo` DaemonSet to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-6lnbp 2/2 Running 0 10s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-6lnbp -o yaml +apiVersion: v1 +kind: Pod +metadata: + name: stash-demo-6lnbp + namespace: demo + ... +spec: + containers: + - args: + - echo sample_data > /source/data/data.txt && sleep 3000 + command: + - /bin/sh + - -c + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + - args: + - run-backup + - --backup-configuration=dmn-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + name: stash + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data + - emptyDir: {} + name: tmp-dir + - downwardAPI: + defaultMode: 420 + items: + - fieldRef: + apiVersion: v1 + fieldPath: metadata.labels + path: labels + name: stash-podinfo + - name: stash-secret-volume + secret: + defaultMode: 420 + secretName: gcs-secret + - name: default-token-4tzgg + secret: + defaultMode: 420 + secretName: default-token-4tzgg + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +dmn-backup */5 * * * * 3m +``` + +**Wait for BackupSession:** + +The `dmn-backup` CronJob will trigger a backup on each schedule by creating a `BackupSession` crd. The sidecar container watches for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 3 kubectl get backupsession -n demo +Every 3.0s: kubectl get backupsession -n demo suaas-appscode: Wed Jun 26 16:05:26 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +dmn-backup-1561543509 BackupConfiguration dmn-backup Succeeded 2m20s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 0 B 3 47s 4m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `source/data/sample-daemonset` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore the Backed up Data + +This section will show you how to restore the backed up data from the backend we have taken in the earlier section. + +**Stop Taking Backup of the Old DaemonSet:** + +At first, let's stop taking any further backup of the old DaemonSet so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` DaemonSet. Then, Stash will stop taking any further backup for this DaemonSet. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `dmn-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo dmn-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/dmn-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +dmn-backup */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy DaemonSet:** + +We are going to create a new DaemonSet named `stash-recovered` and restore the backed up data inside it. + +Below is the YAML of the DaemonSet that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + hostPath: + path: /stash/recovered/data +``` + +Let's create the DaemonSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/daemonset/examples/recovered_daemon.yaml +daemonset.apps/stash-recovered configured +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` DaemonSet to restore the backed up data inside it. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: dmn-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: DaemonSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/daemonset/examples/restoresession.yaml +restoresession.stash.appscode.com/dmn-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` DaemonSet. The pods of this DaemonSet will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` DaemonSet. Let's describe the DaemonSet to verify that the `init-container` has been injected successfully. + +```yaml + $ kubectl describe daemonset -n demo stash-recovered +Name: stash-recovered +Selector: app=stash-recovered +Node-Selector: +Labels: app=stash-recovered +Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed +... +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 4703201294184533055 + Init Containers: + stash-init: + Image: suaas21/stash:vs_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=dmn-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from source-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Args: + sleep + 3600 + Environment: + Mounts: + /source/data from source-data (rw) + Volumes: + source-data: + Type: HostPath (bare host directory volume) + Path: /stash/recovered/data + HostPathType: + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: gcs-secret + Optional: false +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 3 kubectl get restoresession -n demo +Every 3.0s: kubectl get restoresession -n demo suaas-appscode: Wed Jun 26 14:28:29 2019 + +NAME REPOSITORY-NAME PHASE AGE +dmn-restore gcs-repo Succeeded 3m29s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +> **Note:** If you want to restore the backed up data inside the same DaemonSet whose volumes were backed up, you have to remove the corrupted data from the DaemonSet. Then, you have to create a RestoreSession targeting the DaemonSet. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. + +At first, check if the `stash-recovered` pods of a DaemonSet has gone into `running` state by the following command, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-dqlrb 1/1 Running 0 4m4s +``` + +Verify that the backed up data has been restored in `/source/data` directory of the `stash-recovered` pods of a DaemonSet using the following command, + +```bash +$ kubectl exec -n demo stash-recovered-dqlrb -- cat /source/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo daemonset stash-demo +kubectl delete -n demo daemonset stash-recovered +kubectl delete -n demo backupconfiguration dmn-backup +kubectl delete -n demo restoresession dmn-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..dadd561724 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/deployment.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/deployment.yaml new file mode 100644 index 0000000000..bd465037e8 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/pvc.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/pvc.yaml new file mode 100644 index 0000000000..b40124e192 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/recovered_deployment.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/recovered_deployment.yaml new file mode 100644 index 0000000000..f49b6fe046 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/recovered_deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: demo-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: demo-pvc diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/repository.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/repository.yaml new file mode 100644 index 0000000000..bce1093b20 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-deployment + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/workloads/deployment/examples/restoresession.yaml new file mode 100644 index 0000000000..6afadfeed6 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/images/gcs_bucket_dep.png b/content/docs/v2024.8.27/guides/workloads/deployment/images/gcs_bucket_dep.png new file mode 100644 index 0000000000..c9bf94e426 Binary files /dev/null and b/content/docs/v2024.8.27/guides/workloads/deployment/images/gcs_bucket_dep.png differ diff --git a/content/docs/v2024.8.27/guides/workloads/deployment/index.md b/content/docs/v2024.8.27/guides/workloads/deployment/index.md new file mode 100644 index 0000000000..59bf6c9f87 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/deployment/index.md @@ -0,0 +1,723 @@ +--- +title: Backup and Restore Volumes of a Deployment | Stash +description: A step by step guide showing how to backup and restore volumes of a Deployment. +menu: + docs_v2024.8.27: + identifier: workload-deployment + name: Backup & Restore Volumes of a Deployment + parent: workload + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Volumes of a Deployment + +This guide will show you how to use Stash to backup and restore volumes of a Deployment. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/workloads/deployment/examples](/docs/v2024.8.27/guides/workloads/deployment/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Backup Volumes of a Deployment + +This section will show you how to use Stash to backup volumes of a Deployment. Here, we are going to deploy a Deployment with a PVC and generate some sample data in it. Then, we are going to backup this sample data using Stash. + +### Prepare Workload + +At first, we are going to create a PVC then we are going to create a Deployment that will use this PVC. + +**Create PVC:** + +Below is the YAML of the sample PVC that we are going to create, + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: stash-sample-data + namespace: demo +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +Let's create the PVC we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/pvc.yaml +persistentvolumeclaim/stash-sample-data created +``` + +**Deploy Deployment:** + +Now, we are going to deploy a Deployment that uses the above PVC. This Deployment will automatically generate sample data (`data.txt` file) in `/source/data` directory where we have mounted the PVC. + +Below is the YAML of the Deployment that we are going to create, + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-demo + name: stash-demo + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + template: + metadata: + labels: + app: stash-demo + name: busybox + spec: + containers: + - args: ["echo sample_data > /source/data/data.txt && sleep 3000"] + command: ["/bin/sh", "-c"] + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data +``` + +Let's create the Deployment we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/deployment.yaml +deployment.apps/stash-demo created +``` + +Now, wait for the pods of the Deployment to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-8cfcbcc89-2z6mq 1/1 Running 0 30s +stash-demo-8cfcbcc89-j9wbc 1/1 Running 0 30s +stash-demo-8cfcbcc89-q8xfd 1/1 Running 0 30s +``` + +Verify that the sample data has been created in `/source/data` directory using the following command, + +```bash +$ kubectl exec -n demo stash-demo-8cfcbcc89-2z6mq -- cat /source/data/data.txt +sample_data +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. We have to create a Secret with necessary credentials and a Repository crd to use this backend. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-deployment + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` Deployment that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: deployment-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend information. +- `spec.schedule` is a cron expression that indicates `BackupSession` will be created at 5 minute interval. +- `spec.target.ref` refers to the `stash-demo` Deployment. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/deployment-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-backup */5 * * * * Ready 11s +``` + + +**Verify Sidecar:** + +Stash will inject a sidecar container into the `stash-demo` Deployment to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-856896bd95-4gfbh 2/2 Running 0 12s +stash-demo-856896bd95-njr8x 2/2 Running 0 17s +stash-demo-856896bd95-ttbq4 2/2 Running 0 15s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-856896bd95-4gfbh -o yaml +apiVersion: v1 +kind: Pod +metadata: + name: stash-demo-856896bd95-4gfbh + namespace: demo + ... +spec: + containers: + - args: + - echo sample_data > /source/data/data.txt && sleep 3000 + command: + - /bin/sh + - -c + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + - args: + - run-backup + - --backup-configuration=deployment-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + volumes: + - name: source-data + persistentVolumeClaim: + claimName: stash-sample-data + - emptyDir: {} + name: tmp-dir + - downwardAPI: + defaultMode: 420 + items: + - fieldRef: + apiVersion: v1 + fieldPath: metadata.labels + path: labels + name: stash-podinfo + - name: stash-secret-volume + secret: + defaultMode: 420 + secretName: gcs-secret + - name: default-token-4tzgg + secret: + defaultMode: 420 + secretName: default-token-4tzgg + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get cronjob -n demo +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +deployment-backup */5 * * * * False 0 35s 64s +``` + +**Wait for BackupSession:** + +The `deployment-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` crd. The sidecar container watches for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ kubectl get backupsession -n demo -w + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +deployment-backup-1561350125 BackupConfiguration deployment-backup Running 10s +deployment-backup-1561350125 BackupConfiguration deployment-backup Running 35s +deployment-backup-1561350125 BackupConfiguration deployment-backup Succeeded 63s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo gcs-repo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 0 B 5 58s 18m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `source/data/sample-deployment` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore the Backed up Data + +This section will show you how to restore the backed up data from the backend we have taken in the earlier section. + +**Stop Taking Backup of the Old Deployment:** + +At first, let's stop taking any further backup of the old Deployment so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` Deployment. Then, Stash will stop taking any further backup for this Deployment. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo deployment-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/deployment-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +deployment-backup */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy Deployment:** + +We are going to create a new Deployment named `stash-recovered` and restore the backed up data inside it. + +Below are the YAMLs of the Deployment and PVC that we are going to create, + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: demo-pvc + namespace: demo +spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: stash-recovered + name: stash-recovered + namespace: demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + template: + metadata: + labels: + app: stash-recovered + name: busybox + spec: + containers: + - args: + - sleep + - "3600" + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + volumeMounts: + - mountPath: /source/data + name: source-data + restartPolicy: Always + volumes: + - name: source-data + persistentVolumeClaim: + claimName: demo-pvc +``` + +Let's create the Deployment and PVC we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/recovered_deployment.yaml +persistentvolumeclaim/demo-pvc created +deployment.apps/stash-recovered created +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` Deployment to restore the backed up data inside it. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: deployment-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: Deployment + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data/ +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/deployment/examples/restoresession.yaml +restoresession.stash.appscode.com/deployment-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` Deployment. Deployment will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` Deployment. Let’s describe the Deployment to verify that `init-container` has been injected successfully. + +```yaml +$ kubectl describe deployment -n demo stash-recovered +Name: stash-recovered +Namespace: demo +Labels: app=stash-recovered +Selector: app=stash-recovered +Replicas: 3 desired | 3 updated | 3 total | 3 available | +... +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 14443247646000846167 + Init Containers: + stash-init: + Image: suaas21/stash:vs_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=deployment-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from source-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Args: + sleep + 3600 + Environment: + Mounts: + /source/data from source-data (rw) + Volumes: + source-data: + Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) + ClaimName: demo-pvc + ReadOnly: false + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: gcs-secret + Optional: false +Conditions: + Type Status Reason + ---- ------ ------ + Available True MinimumReplicasAvailable + Progressing True NewReplicaSetAvailable +OldReplicaSets: stash-recovered-7478988f57 (3/3 replicas created) +NewReplicaSet: +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch RestoreSession phase, + +```bash +$ kubectl get restoresession -n demo -w + +NAME REPOSITORY-NAME PHASE AGE +deployment-restore gcs-repo Succeeded 2m56s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +> **Note:** If you want to restore the backed up data inside the same Deployment whose volumes were backed up, you have to remove the corrupted data from the Deployment. Then, you have to create a RestoreSession targeting the Deployment. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. + +At first, check if the `stash-recovered` pods of the Deployment has gone into `Running` state by the following command, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-867688ddd5-67xr8 1/1 Running 0 21m +stash-recovered-867688ddd5-rfsw4 1/1 Running 0 21m +stash-recovered-867688ddd5-zswhs 1/1 Running 0 22m +``` + +Verify that the sample data has been restored in `/source/data` directory of the `stash-recovered` pods of the Deployment using the following command, + +```bash +$ kubectl exec -n demo stash-recovered-867688ddd5-67xr8 -- cat /source/data/data.txt +sample_data +``` + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo deployment stash-demo +kubectl delete -n demo deployment stash-recovered +kubectl delete -n demo backupconfiguration deployment-backup +kubectl delete -n demo restoresession deployment-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/guides/workloads/overview/images/backup_overview.svg b/content/docs/v2024.8.27/guides/workloads/overview/images/backup_overview.svg new file mode 100644 index 0000000000..0b078a81ec --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/overview/images/backup_overview.svg @@ -0,0 +1,762 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/workloads/overview/images/restore_overview.svg b/content/docs/v2024.8.27/guides/workloads/overview/images/restore_overview.svg new file mode 100644 index 0000000000..1f450f6387 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/overview/images/restore_overview.svg @@ -0,0 +1,692 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/docs/v2024.8.27/guides/workloads/overview/index.md b/content/docs/v2024.8.27/guides/workloads/overview/index.md new file mode 100644 index 0000000000..a0db04cf28 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/overview/index.md @@ -0,0 +1,152 @@ +--- +title: Backup and Restore Workload Data Overview | Stash +description: An overview on how Backup and Restore of workload data works in Stash. +menu: + docs_v2024.8.27: + identifier: workload-overview + name: How Backup and Restore works? + parent: workload + weight: 10 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Workloads using Stash + +This guide will show you how Stash backs up and restores volumes of various workload types (Deployment, StatefulSet, DaemonSet etc.). + +## Before You Begin + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +## How Backup Process Works + +The following diagram shows how Stash takes backup of the volumes of a workload. Open the image in a new tab to see the enlarged version. + +
+  Stash Backup Flow +
Fig: Backup process of Workload volumes in Stash
+
+ +The backup process consists of the following steps: + +1. At first, a user creates a Secret. This secret holds the credentials to access the backend where the backed up data will be stored. + +2. Then, she creates a `Repository` crd which represents the original repository in the backend. + +3. Then, she creates a `BackupConfiguration` crd which specifies the targeted workload and desired file paths to backup. It also specifies the `Repository` object that holds the backend information where the backed up data will be stored. + +4. Stash operator watches for `BackupConfiguration` objects. + +5. When it finds a `BackupConfiguration` object, it finds the targeted workload and injects a sidecar named `stash`. + +6. It also creates a `CronJob` to trigger backups periodically. + +7. The`CronJob` triggers backup on each scheduled slot by creating a `BackupSession` crd. + +8. The `stash` sidecar inside the workload watches for `BackupSession` crd. + +9. When it finds a `BackupSession` crd, it initiates backup of the targeted file paths. + +10. Once the backup process is completed, the `sidecar` sends Prometheus metrics to the Pushgateway running inside the `stash-operator` pod. It also updates respective `BackupSession` and `Repository` status to reflect the backup process. + +## How Restore Process Works + +The following diagram shows how Stash restores backed up data inside a workload. Open the image in a new tab to see the enlarged version. + +
+  Stash Backup Flow +
Fig: Restore process of Workload volumes in Stash
+
+ +The restore process consists of the following steps: + +1. At first, the user creates a workload where the data will be restored. + +2. Then, she creates a `RestoreSession` crd that specifies the targeted workload where the backed up data will be restored. It also specifies the respective `Repository` that holds the respective backend information. + +3. Stash operator watches for `RestoreSession` crds. + +4. When it finds a `RestoreSession` crd, it injects an init-container named `stash-init` to the workload and restart it. + +5. The init-container restores the desired data from the backend on start-up. + +6. Finally, when the restore process is completed it sends Prometheus metrics to the `pushgateway` running inside the stash operator. It also update the `RestoreSession` status to reflect the restore process. + +> **Note:** If your workload restarts with the `stash-init` init-container for any reason, the init-container will skip running restore process if there is no pending `RestoreSession` for this workload. + +## Next Steps + +1. See a step by step guide to backup/restore volumes of a Deployment [here](/docs/v2024.8.27/guides/workloads/deployment/). +2. See a step by step guide to backup/restore volumes of a StatefulSet [here](/docs/v2024.8.27/guides/workloads/statefulset/). +3. See a step by step guide to backup/restore a Daemonset's volumes [here](/docs/v2024.8.27/guides/workloads/daemonset/). diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_restoresession.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_restoresession.yaml new file mode 100644 index 0000000000..74ae0bf84a --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_restoresession.yaml @@ -0,0 +1,26 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: demo +spec: + driver: Restic + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered-adv + volumeMounts: + - mountPath: /source/data + name: source-data + rules: + - targetHosts: ["host-3","host-4"] + sourceHost: "host-1" + paths: + - /source/data + - targetHosts: [] + sourceHost: "" + paths: + - /source/data diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_statefulset.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_statefulset.yaml new file mode 100644 index 0000000000..f795556447 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/adv_statefulset.yaml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: adv-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered-adv + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered-adv + namespace: demo + labels: + app: stash-recovered-adv +spec: + replicas: 5 + selector: + matchLabels: + app: stash-recovered-adv + serviceName: adv-headless + template: + metadata: + labels: + app: stash-recovered-adv + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/backupconfiguration.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/backupconfiguration.yaml new file mode 100644 index 0000000000..11b43fad7d --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/backupconfiguration.yaml @@ -0,0 +1,23 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/custom_restore.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/custom_restore.yaml new file mode 100644 index 0000000000..088b205830 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/custom_restore.yaml @@ -0,0 +1,77 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-custom-restore + namespace: demo +spec: + repository: + name: local-repo + target: # target indicates where the recovered data will be stored + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: scaled-up-stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - targetHosts: ["host-3","host-4"] # "host-3" and "host-4" will have restored data of backed up host "host-1" + sourceHost: "host-1" # source host + paths: + - /source/data + - targetHosts: [] # empty host match all hosts + sourceHost: "" # no source host indicates that the host is pod itself + paths: + - /source/data +--- +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: scaled-up-stash-demo + namespace: demo + labels: + app: stash-demo +spec: + replicas: 5 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/recovered_statefulset.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/recovered_statefulset.yaml new file mode 100644 index 0000000000..d0fe019e6e --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/recovered_statefulset.yaml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered + namespace: demo + labels: + app: stash-recovered +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + serviceName: re-headless + template: + metadata: + labels: + app: stash-recovered + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/repository.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/repository.yaml new file mode 100644 index 0000000000..c2ec0954d2 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/repository.yaml @@ -0,0 +1,11 @@ +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-statefulset + storageSecretName: gcs-secret diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/restoresession.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/restoresession.yaml new file mode 100644 index 0000000000..f7a58dcb4c --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/restoresession.yaml @@ -0,0 +1,19 @@ +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/examples/statefulset.yaml b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/statefulset.yaml new file mode 100644 index 0000000000..9f6579069f --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/examples/statefulset.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/images/gcs_bucket_ss.png b/content/docs/v2024.8.27/guides/workloads/statefulset/images/gcs_bucket_ss.png new file mode 100644 index 0000000000..a3db78bdc1 Binary files /dev/null and b/content/docs/v2024.8.27/guides/workloads/statefulset/images/gcs_bucket_ss.png differ diff --git a/content/docs/v2024.8.27/guides/workloads/statefulset/index.md b/content/docs/v2024.8.27/guides/workloads/statefulset/index.md new file mode 100644 index 0000000000..1a9a0ecda7 --- /dev/null +++ b/content/docs/v2024.8.27/guides/workloads/statefulset/index.md @@ -0,0 +1,1008 @@ +--- +title: Backup and Restore Volumes of a StatefulSet | Stash +description: A step by step guide showing how to backup and restore volumes of a StatefulSet. +menu: + docs_v2024.8.27: + identifier: workload-statefulset + name: Backup & Restore Volumes of a StatefulSet + parent: workload + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: guides +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Backup and Restore Volumes of a StatefulSet + +This guide will show you how to use Stash to backup and restore volumes of a StatefulSet. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `Stash` in your cluster following the steps [here](/docs/v2024.8.27/setup/README). + +- You should be familiar with the following `Stash` concepts: + - [BackupConfiguration](/docs/v2024.8.27/concepts/crds/backupconfiguration/) + - [BackupSession](/docs/v2024.8.27/concepts/crds/backupsession/) + - [RestoreSession](/docs/v2024.8.27/concepts/crds/restoresession/) + - [Repository](/docs/v2024.8.27/concepts/crds/repository/) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/guides/workloads/statefulset/examples](/docs/v2024.8.27/guides/workloads/statefulset/examples) directory of [stashed/docs](https://github.com/stashed/docs) repository. + +## Backup Volumes of a StatefulSet + +This section will show you how to use Stash to backup volumes of a StatefulSet. Here, we are going to deploy a StatefulSet with a PVC and generate some sample data in it. Then, we are going to backup this sample data using Stash. + +**Deploy StatefulSet:** + +At first, We are going to deploy a StatefulSet. This StatefulSet will automatically generate sample data in `/source/data` directory. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-demo + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-demo + namespace: demo + labels: + app: stash-demo +spec: + replicas: 3 + selector: + matchLabels: + app: stash-demo + serviceName: headless + template: + metadata: + labels: + app: stash-demo + spec: + containers: + - name: busybox + image: busybox + command: ["/bin/sh", "-c","echo $(POD_NAME) > /source/data/data.txt && sleep 3000"] + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Let's create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/statefulset.yaml +service/headless created +statefulset.apps/stash-demo created +``` + +Now, wait for the pods of the StatefulSet to go into the `Running` state. + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-0 1/1 Running 0 42s +stash-demo-1 1/1 Running 0 40s +stash-demo-2 1/1 Running 0 36s +``` + +Verify that the sample data has been generated in `/source/data` directory for `stash-demo-0` , `stash-demo-1` and `stash-demo-2` pod respectively using the following commands, + +```bash +$ kubectl exec -n demo stash-demo-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n demo stash-demo-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-demo-2 -- cat /source/data/data.txt +stash-demo-2 +``` + +### Prepare Backend + +We are going to store our backed up data into a GCS bucket. We have to create a Secret with necessary credentials and a Repository crd to use this backend. If you want to use a different backend, please read the respective backend configuration doc from [here](/docs/v2024.8.27/guides/backends/overview/). + +> For GCS backend, if the bucket does not exist, Stash needs `Storage Object Admin` role permissions to create the bucket. For more details, please check the following [guide](/docs/v2024.8.27/guides/backends/gcs/). + +**Create Secret:** + +Let's create a secret called `gcs-secret` with access credentials to our desired GCS bucket, + +```bash +$ echo -n 'changeit' > RESTIC_PASSWORD +$ echo -n '' > GOOGLE_PROJECT_ID +$ cat /path/to/downloaded-sa-key.json > GOOGLE_SERVICE_ACCOUNT_JSON_KEY +$ kubectl create secret generic -n demo gcs-secret \ + --from-file=./RESTIC_PASSWORD \ + --from-file=./GOOGLE_PROJECT_ID \ + --from-file=./GOOGLE_SERVICE_ACCOUNT_JSON_KEY +secret/gcs-secret created +``` + +Now, we are ready to backup our workload's data to our desired backend. + +**Create Repository:** + +Now, create a `Repository` using this secret. Below is the YAML of `Repository` crd we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1alpha1 +kind: Repository +metadata: + name: gcs-repo + namespace: demo +spec: + backend: + gcs: + bucket: appscode-qa + prefix: /source/data/sample-statefulset + storageSecretName: gcs-secret +``` + +Let's create the Repository we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/repository.yaml +repository.stash.appscode.com/gcs-repo created +``` + +Now, we are ready to backup our sample data into this backend. + +### Backup + +We have to create a `BackupConfiguration` crd targeting the `stash-demo` StatefulSet that we have deployed earlier. Stash will inject a sidecar container into the target. It will also create a `CronJob` to take periodic backup of `/source/data` directory of the target. + +**Create BackupConfiguration:** + +Below is the YAML of the `BackupConfiguration` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: BackupConfiguration +metadata: + name: ss-backup + namespace: demo +spec: + repository: + name: gcs-repo + schedule: "*/5 * * * *" + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-demo + volumeMounts: + - name: source-data + mountPath: /source/data + paths: + - /source/data + retentionPolicy: + name: 'keep-last-5' + keepLast: 5 + prune: true +``` + +Here, + +- `spec.repository` refers to the `Repository` object `gcs-repo` that holds backend information. +- `spec.schedule` is a cron expression that indicates `BackupSession` will be created at 5 minute interval. +- `spec.target.ref` refers to the `stash-demo` StatefulSet. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath that contain the target paths. +- `spec.target.paths` specifies list of file paths to backup. + +Let's create the `BackupConfiguration` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/backupconfiguration.yaml +backupconfiguration.stash.appscode.com/ss-backup created +``` + +**Verify Backup Setup Successful** + +If everything goes well, the phase of the `BackupConfiguration` should be `Ready`. The `Ready` phase indicates that the backup setup is successful. Let's verify the `Phase` of the BackupConfiguration, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +ss-backup */5 * * * * Ready 11s +``` + +**Verify Sidecar:** + +If everything goes well, Stash will inject a sidecar container into the `stash-demo` StatefulSet to take backup of `/source/data` directory. Let’s check that the sidecar has been injected successfully, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-demo-0 2/2 Running 0 5s +stash-demo-1 2/2 Running 0 42s +stash-demo-2 2/2 Running 0 76s +``` + +Look at the pod. It now has 2 containers. If you view the resource definition of this pod, you will see that there is a container named `stash` which is running `run-backup` command. + +```yaml +$ kubectl get pod -n demo stash-demo-0 -o yaml +apiVersion: v1 +kind: Pod +metadata: + labels: + app: stash-demo + controller-revision-hash: stash-demo-6d887c7b6f + statefulset.kubernetes.io/pod-name: stash-demo-0 + name: stash-demo-0 + namespace: demo + ... +spec: + containers: + - command: + - /bin/sh + - -c + - echo $(POD_NAME) > /source/data/data.txt && sleep 3000 + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: busybox + imagePullPolicy: IfNotPresent + name: busybox + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + - args: + - run-backup + - --backup-configuration=ss-backup + - --secret-dir=/etc/stash/repository/secret + - --enable-cache=true + - --max-connections=0 + - --metrics-enabled=true + - --pushgateway-url=http://stash-operator.kube-system.svc:56789 + - --enable-status-subresource=true + - --use-kubeapiserver-fqdn-for-aks=true + - --logtostderr=true + - --alsologtostderr=false + - --v=3 + - --stderrthreshold=0 + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + imagePullPolicy: IfNotPresent + name: stash + volumeMounts: + - mountPath: /etc/stash + name: stash-podinfo + - mountPath: /etc/stash/repository/secret + name: stash-secret-volume + - mountPath: /tmp + name: tmp-dir + - mountPath: /source/data + name: source-data + - mountPath: /var/run/secrets/kubernetes.io/serviceaccount + name: default-token-4tzgg + readOnly: true + hostname: stash-demo-0 + volumes: + - name: source-data + persistentVolumeClaim: + claimName: source-data-stash-demo-0 + - emptyDir: {} + name: tmp-dir + - downwardAPI: + defaultMode: 420 + items: + - fieldRef: + apiVersion: v1 + fieldPath: metadata.labels + path: labels + name: stash-podinfo + - name: stash-secret-volume + secret: + defaultMode: 420 + secretName: gcs-secret + - name: default-token-4tzgg + secret: + defaultMode: 420 + secretName: default-token-4tzgg + ... +... +``` + +**Verify CronJob:** + +It will also create a `CronJob` with the schedule specified in `spec.schedule` field of `BackupConfiguration` crd. + +Verify that the `CronJob` has been created using the following command, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +ss-backup */5 * * * * 3m41s +``` + +**Wait for BackupSession:** + +The `ss-backup` CronJob will trigger a backup on each scheduled slot by creating a `BackupSession` crd. The sidecar container watches for the `BackupSession` crd. When it finds one, it will take backup immediately. + +Wait for the next schedule for backup. Run the following command to watch `BackupSession` crd, + +```bash +$ watch -n 2 kubectl get backupsession -n demo +Every 5.0s: kubectl get bs -n demo suaas-appscode: Tue Jun 25 17:54:41 2019 + +NAME INVOKER-TYPE INVOKER-NAME PHASE AGE +ss-backup-1561463408 BackupConfiguration ss-backup Succeeded 36s +``` + +We can see from the above output that the backup session has succeeded. Now, we are going to verify whether the backed up data has been stored in the backend. + +**Verify Backup:** + +Once a backup is complete, Stash will update the respective `Repository` crd to reflect the backup. Check that the repository `gcs-repo` has been updated by the following command, + +```bash +$ kubectl get repository -n demo +NAME INTEGRITY SIZE SNAPSHOT-COUNT LAST-SUCCESSFUL-BACKUP AGE +gcs-repo true 0 B 3 103s 5m +``` + +Now, if we navigate to the GCS bucket, we are going to see backed up data has been stored in `source/data/sample-statefulset` directory as specified by `spec.backend.gcs.prefix` field of Repository crd. + +
+  Backup data in GCS Bucket +
Fig: Backup data in GCS Bucket
+
+ +> **Note:** Stash keeps all the backed up data encrypted. So, data in the backend will not make any sense until they are decrypted. + +## Restore Volumes of a StatefulSet + +This section will show you how to restore the backed up data from the backend we have taken in the earlier section. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's stop taking any further backup of the old StatefulSet so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` StatefulSet. Then, Stash will stop taking any further backup for this StatefulSet. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `ss-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo ss-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/ss-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED PHASE AGE +ss-backup */5 * * * * true Ready 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy StatefulSet:** + +We are going to create a new StatefulSet named `stash-recovered` and restore the backed up data inside it. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: re-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered + namespace: demo + labels: + app: stash-recovered +spec: + replicas: 3 + selector: + matchLabels: + app: stash-recovered + serviceName: re-headless + template: + metadata: + labels: + app: stash-recovered + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Let's create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/recovered_statefulset.yaml +service/re-headless created +statefulset.apps/stash-recovered created +``` + +**Create RestoreSession:** + +Now, we need to create a `RestoreSession` crd targeting the `stash-recovered` StatefulSet to restore the backed up data inside it. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: demo +spec: + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered + volumeMounts: + - name: source-data + mountPath: /source/data + rules: + - paths: + - /source/data +``` + +Here, + +- `spec.repository.name` specifies the `Repository` crd that holds the backend information where our backed up data has been stored. +- `spec.target.ref` refers to the target workload where the recovered data will be stored. +- `spec.target.volumeMounts` specifies a list of volumes and their mountPath where the data will be restored. + - `mountPath` must be same `mountPath` as the original volume because Stash stores absolute path of the backed up files. If you use different `mountPath` for the restored volume the backed up files will not be restored into your desired volume. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/workloads/statefulset/examples/restoresession.yaml +restoresession.stash.appscode.com/ss-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` StatefulSet. The StatefulSet will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` StatefulSet. Let’s describe the StatefulSet to verify that the `init-container` has been injected successfully. + +```yaml +$ kubectl describe statefulset -n demo stash-recovered +Name: stash-recovered +Namespace: demo +Selector: app=stash-recovered +Labels: app=stash-recovered +Replicas: 3 desired | 3 total +Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed +... +Pod Template: + Labels: app=stash-recovered + Annotations: stash.appscode.com/last-applied-restoresession-hash: 10309464337907785627 + Init Containers: + stash-init: + Image: suaas21/stash:vs_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=ss-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from source-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Command: + sleep + 3600 + Environment: + Mounts: + /source/data from source-data (rw) + Volumes: + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: gcs-secret + Optional: false +Volume Claims: + Name: source-data + StorageClass: standard + Labels: + Annotations: + Capacity: 1Gi + Access Modes: [ReadWriteOnce] +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 3 kubectl get restoresession -n demo +Every 5.0s: kubectl get restoresession -n demo suaas-appscode: Tue Jun 25 18:27:30 2019 + +NAME REPOSITORY-NAME PHASE AGE +ss-restore gcs-repo Succeeded 4m31s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +> **Note:** If you want to restore the backed up data inside the same StatefulSet whose volumes were backed up, you have to remove the corrupted data from the StatefulSet. Then, you have to create a RestoreSession targeting the StatefulSet. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. + +At first, check if the `stash-recovered` pods of a StatefulSet has gone into `Running` state by the following commands, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-0 1/1 Running 0 10m +stash-recovered-1 1/1 Running 0 11m +stash-recovered-2 1/1 Running 0 12m +``` + +Verify that the backed up data has been restored in `/source/data` directory of the `stash-recovered` pods of a StatefulSet using the following commands, + +```bash +$ kubectl exec -n demo stash-recovered-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n demo stash-recovered-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-recovered-2 -- cat /source/data/data.txt +stash-demo-2 +``` + +### Customize Restore Process + +Generally, Stash restores data in individual replicas from a backup of the respective replica of the original StatefulSet. That means, backed up data of `pod-0` of original StatefulSet will be restored in `pod-0` of new StatefulSet and so on. However, you can customize this behavior through the `spec.target.rules` section of RestoreSession object. This is particularly helpful when your restored StatefulSet has a different number of replicas than the original StatefulSet. You can control which data will be restored in the additional replicas. + +**Stop Taking Backup of the Old StatefulSet:** + +At first, let's stop taking any further backup of the old StatefulSet so that no backup is taken during the restore process. We are going to pause the `BackupConfiguration` that we created to backup the `stash-demo` StatefulSet. Then, Stash will stop taking any further backup for this StatefulSet. You can learn more how to pause a scheduled backup [here](/docs/v2024.8.27/guides/use-cases/pause-backup/) + +Let's pause the `deployment-backup` BackupConfiguration, + +```bash +$ kubectl patch backupconfiguration -n demo ss-backup --type="merge" --patch='{"spec": {"paused": true}}' +backupconfiguration.stash.appscode.com/ss-backup patched +``` + +Now, wait for a moment. Stash will pause the BackupConfiguration. Verify that the BackupConfiguration has been paused, + +```bash +$ kubectl get backupconfiguration -n demo +NAME TASK SCHEDULE PAUSED AGE +ss-backup */1 * * * * true 26m +``` + +Notice the `PAUSED` column. Value `true` for this field means that the BackupConfiguration has been paused. + +**Deploy StatefulSet:** + +We are going to create a new StatefulSet named `stash-recovered-adv` with `spec.replica` 5 and restore the backed up data inside it. + +Below is the YAML of the StatefulSet that we are going to create, + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: adv-headless + namespace: demo +spec: + ports: + - name: http + port: 80 + targetPort: 0 + selector: + app: stash-recovered-adv + clusterIP: None +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stash-recovered-adv + namespace: demo + labels: + app: stash-recovered-adv +spec: + replicas: 5 + selector: + matchLabels: + app: stash-recovered-adv + serviceName: adv-headless + template: + metadata: + labels: + app: stash-recovered-adv + spec: + containers: + - name: busybox + image: busybox + command: + - sleep + - '3600' + volumeMounts: + - name: source-data + mountPath: "/source/data" + imagePullPolicy: IfNotPresent + volumeClaimTemplates: + - metadata: + name: source-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "standard" + resources: + requests: + storage: 1Gi +``` + +Let's create the StatefulSet we have shown above. + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/adv_statefulset.yaml +service/adv-headless created +statefulset.apps/stash-recovered-adv created +``` + +**Create RestoreSession:** + +Now, we are going to create a `RestoreSession` crd targeting the `stash-recovered` StatefulSet to restore the backed up data inside it. + +Below is the YAML of the `RestoreSesion` crd that we are going to create, + +```yaml +apiVersion: stash.appscode.com/v1beta1 +kind: RestoreSession +metadata: + name: ss-restore + namespace: demo +spec: + driver: Restic + repository: + name: gcs-repo + target: + ref: + apiVersion: apps/v1 + kind: StatefulSet + name: stash-recovered-adv + volumeMounts: + - mountPath: /source/data + name: source-data + rules: + - targetHosts: ["host-3","host-4"] + sourceHost: "host-1" + paths: + - /source/data + - targetHosts: [] + sourceHost: "" + paths: + - /source/data +``` + +Here, + +- `spec.target.rules`: `spec.target.rules` specify how Stash should restore data for each host. + - `targetHosts` the first rule specify that backed up data of `host-1`(old pods of a StatefulSet-1) will be restored into targetHosts `host-3`(new pod-3 of the StatefulSet) and `host-4`(new pod-4 of the StatefulSet) and the second rule specify that data from a similar backup host will be restored on the respective restore host. That means, backed up data of `host-0` will be restored into `host-0`, backed up data of `host-1` will be restored into `host-1` and so on. + - `sourceHost` specifies the name of the host whose backed up data will be restored. + +Let's create the `RestoreSession` crd we have shown above, + +```bash +$ kubectl apply -f https://github.com/stashed/docs/raw/{{< param "info.version" >}}/docs/guides/workloads/statefulset/examples/adv_restoresession.yaml +restoresession.stash.appscode.com/ss-restore created +``` + +Once, you have created the `RestoreSession` crd, Stash will inject `init-container` into `stash-recovered` StatefulSet. The StatefulSet will restart and the `init-container` will restore the desired data on start-up. + +**Verify Init-Container:** + +Wait until the `init-container` has been injected into the `stash-recovered` StatefulSet. Let’s describe the StatefulSet to verify that the `init-container` has been injected successfully. + +```yaml +$ kubectl describe statefulset -n demo stash-recovered-adv +Name: stash-recovered-adv +Namespace: demo +Selector: app=stash-recovered-adv +Labels: app=stash-recovered-adv +Replicas: 5 desired | 5 total +Pods Status: 5 Running / 0 Waiting / 0 Succeeded / 0 Failed +... +Pod Template: + Labels: app=stash-recovered-adv + Annotations: stash.appscode.com/last-applied-restoresession-hash: 4338322130475899419 + Init Containers: + stash-init: + Image: suaas21/stash:vs_linux_amd64 + Port: + Host Port: + Args: + restore + --restore-session=ss-restore + --secret-dir=/etc/stash/repository/secret + --enable-cache=true + --max-connections=0 + --metrics-enabled=true + --pushgateway-url=http://stash-operator.kube-system.svc:56789 + --enable-status-subresource=true + --use-kubeapiserver-fqdn-for-aks=true + --logtostderr=true + --alsologtostderr=false + --v=3 + --stderrthreshold=0 + Environment: + NODE_NAME: (v1:spec.nodeName) + POD_NAME: (v1:metadata.name) + Mounts: + /etc/stash/repository/secret from stash-secret-volume (rw) + /source/data from source-data (rw) + /tmp from tmp-dir (rw) + Containers: + busybox: + Image: busybox + Port: + Host Port: + Command: + sleep + 3600 + Environment: + Mounts: + /source/data from source-data (rw) + Volumes: + tmp-dir: + Type: EmptyDir (a temporary directory that shares a pod's lifetime) + Medium: + SizeLimit: + stash-podinfo: + Type: DownwardAPI (a volume populated by information about the pod) + Items: + metadata.labels -> labels + stash-secret-volume: + Type: Secret (a volume populated by a Secret) + SecretName: gcs-secret + Optional: false +Volume Claims: + Name: source-data + StorageClass: standard + Labels: + Annotations: + Capacity: 1Gi + Access Modes: [ReadWriteOnce] +... +``` + +Notice the `Init-Containers` section. We can see that the init-container `stash-init` has been injected which is running `restore` command. + +**Wait for RestoreSession to Succeeded:** + +Run the following command to watch RestoreSession phase, + +```bash +$ watch -n 3 kubectl get restoresession -n demo +Every 5.0s: kubectl get restoresession -n demo suaas-appscode: Tue Jun 25 18:27:30 2019 + +NAME REPOSITORY-NAME PHASE AGE +ss-restore gcs-repo Succeeded 8m21s +``` + +So, we can see from the output of the above command that the restore process succeeded. + +**Verify Restored Data:** + +In this section, we are going to verify that the desired data has been restored successfully. + +At first, check if the `stash-recovered` pods of the StatefulSet has gone into `Running` state by the following commands, + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +stash-recovered-adv-0 1/1 Running 0 3m30s +stash-recovered-adv-1 1/1 Running 0 4m50s +stash-recovered-adv-2 1/1 Running 0 6m +stash-recovered-adv-3 1/1 Running 0 7m10s +stash-recovered-adv-4 1/1 Running 0 8m1s +``` + +Verify that the sample data has been restored in `/source/data` directory of the `stash-recovered` pods of the StatefulSet using the following commands, + +```bash +$ kubectl exec -n demo stash-recovered-adv-0 -- cat /source/data/data.txt +stash-demo-0 +$ kubectl exec -n demo stash-recovered-adv-1 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-recovered-adv-2 -- cat /source/data/data.txt +stash-demo-2 +$ kubectl exec -n demo stash-recovered-adv-3 -- cat /source/data/data.txt +stash-demo-1 +$ kubectl exec -n demo stash-recovered-adv-4 -- cat /source/data/data.txt +stash-demo-1 +``` + +We can see from the above output that backup data of `host-1` has been restored into `host-3` and `host-4` successfully. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo statefulset stash-demo +kubectl delete -n demo statefulset stash-recovered +kubectl delete -n demo backupconfiguration ss-backup +kubectl delete -n demo restoresession ss-restore +kubectl delete -n demo repository gcs-repo +kubectl delete -n demo pvc --all +``` diff --git a/content/docs/v2024.8.27/reference/_index.md b/content/docs/v2024.8.27/reference/_index.md new file mode 100644 index 0000000000..f38d3bab15 --- /dev/null +++ b/content/docs/v2024.8.27/reference/_index.md @@ -0,0 +1,77 @@ +--- +title: Reference +description: Stash CLI Reference +menu: + docs_v2024.8.27: + identifier: reference + name: Reference + weight: 1000 + pre: dropdown +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/reference/cli/_index.md b/content/docs/v2024.8.27/reference/cli/_index.md new file mode 100644 index 0000000000..f6e38bf5ca --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/_index.md @@ -0,0 +1,77 @@ +--- +title: Reference | Stash CLI +description: Stash CLI Reference +menu: + docs_v2024.8.27: + identifier: reference-cli + name: Stash CLI + weight: 30 + parent: reference +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash.md new file mode 100644 index 0000000000..dc641d5af1 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash.md @@ -0,0 +1,130 @@ +--- +title: Kubectl-Stash +menu: + docs_v2024.8.27: + identifier: kubectl-stash + name: Kubectl-Stash + parent: reference-cli + weight: 0 +menu_name: docs_v2024.8.27 +section_menu_id: reference +url: /docs/v2024.8.27/reference/cli/ +aliases: +- /docs/v2024.8.27/reference/cli/kubectl-stash/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash + +kubectl plugin for Stash by AppsCode + +### Synopsis + +kubectl plugin for Stash by AppsCode. For more information, visit here: https://appscode.com/products/stash + +### Options + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + -h, --help help for kubectl-stash + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash clone](/docs/v2024.8.27/reference/cli/kubectl-stash_clone) - Clone Kubernetes resources +* [kubectl-stash completion](/docs/v2024.8.27/reference/cli/kubectl-stash_completion) - Generate completion script +* [kubectl-stash cp](/docs/v2024.8.27/reference/cli/kubectl-stash_cp) - Copy stash resources from one namespace to another namespace +* [kubectl-stash create](/docs/v2024.8.27/reference/cli/kubectl-stash_create) - create stash resources +* [kubectl-stash debug](/docs/v2024.8.27/reference/cli/kubectl-stash_debug) - Debug common Stash issues +* [kubectl-stash delete](/docs/v2024.8.27/reference/cli/kubectl-stash_delete) - Delete stash resources +* [kubectl-stash download](/docs/v2024.8.27/reference/cli/kubectl-stash_download) - Download snapshots +* [kubectl-stash gen](/docs/v2024.8.27/reference/cli/kubectl-stash_gen) - generate stash resources +* [kubectl-stash key](/docs/v2024.8.27/reference/cli/kubectl-stash_key) - manages restic keys (passwords) for accessing the repository +* [kubectl-stash pause](/docs/v2024.8.27/reference/cli/kubectl-stash_pause) - Pause Stash backup temporarily +* [kubectl-stash resume](/docs/v2024.8.27/reference/cli/kubectl-stash_resume) - Resume Stash backup +* [kubectl-stash trigger](/docs/v2024.8.27/reference/cli/kubectl-stash_trigger) - Trigger a backup +* [kubectl-stash unlock](/docs/v2024.8.27/reference/cli/kubectl-stash_unlock) - Unlock restic repository +* [kubectl-stash version](/docs/v2024.8.27/reference/cli/kubectl-stash_version) - Prints binary version number. + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone.md new file mode 100644 index 0000000000..8211d8d430 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone.md @@ -0,0 +1,116 @@ +--- +title: Clone +menu: + docs_v2024.8.27: + identifier: kubectl-stash-clone + name: Clone + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash clone + +Clone Kubernetes resources + +### Options + +``` + -h, --help help for clone + --to-namespace string Destination namespace. +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash clone pvc](/docs/v2024.8.27/reference/cli/kubectl-stash_clone_pvc) - Clone PVC + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone_pvc.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone_pvc.md new file mode 100644 index 0000000000..9a8534c793 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_clone_pvc.md @@ -0,0 +1,136 @@ +--- +title: Clone Pvc +menu: + docs_v2024.8.27: + identifier: kubectl-stash-clone-pvc + name: Clone Pvc + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash clone pvc + +Clone PVC + +### Synopsis + +Use Backup and Restore process for cloning PVC + +``` +kubectl-stash clone pvc [flags] +``` + +### Examples + +``` + # Clone PVC + stash clone pvc source-pvc -n demo --to-namespace=demo1 --secret= --bucket= --prefix= --provider= +``` + +### Options + +``` + --bucket string Name of the cloud bucket/container + --endpoint string Endpoint for s3/s3 compatible backend + -h, --help help for pvc + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --prefix string Prefix denotes the directory inside the backend + --provider string Backend provider (i.e. gcs, s3, azure etc) + --secret string Name of the Storage Secret +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --to-namespace string Destination namespace. + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash clone](/docs/v2024.8.27/reference/cli/kubectl-stash_clone) - Clone Kubernetes resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_completion.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_completion.md new file mode 100644 index 0000000000..d69ba3a753 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_completion.md @@ -0,0 +1,152 @@ +--- +title: Completion +menu: + docs_v2024.8.27: + identifier: kubectl-stash-completion + name: Completion + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash completion + +Generate completion script + +### Synopsis + +To load completions: + +Bash: + +$ source <(kubectl-stash completion bash) + +# To load completions for each session, execute once: +Linux: + $ kubectl-stash completion bash > /etc/bash_completion.d/kubectl-stash +MacOS: + $ kubectl-stash completion bash > /usr/local/etc/bash_completion.d/kubectl-stash + +Zsh: + +# If shell completion is not already enabled in your environment you will need +# to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +# To load completions for each session, execute once: +$ kubectl-stash completion zsh > "${fpath[1]}/_kubectl-stash" + +# You will need to start a new shell for this setup to take effect. + +Fish: + +$ kubectl-stash completion fish | source + +# To load completions for each session, execute once: +$ kubectl-stash completion fish > ~/.config/fish/completions/kubectl-stash.fish + + +``` +kubectl-stash completion [bash|zsh|fish|powershell] +``` + +### Options + +``` + -h, --help help for completion +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp.md new file mode 100644 index 0000000000..d5570132fa --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp.md @@ -0,0 +1,119 @@ +--- +title: Cp +menu: + docs_v2024.8.27: + identifier: kubectl-stash-cp + name: Cp + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash cp + +Copy stash resources from one namespace to another namespace + +### Options + +``` + -h, --help help for cp + --to-namespace string Destination namespace. +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash cp backupconfig](/docs/v2024.8.27/reference/cli/kubectl-stash_cp_backupconfig) - Copy BackupConfiguration from one namespace to another namespace +* [kubectl-stash cp repository](/docs/v2024.8.27/reference/cli/kubectl-stash_cp_repository) - Copy Repository and Secret +* [kubectl-stash cp secret](/docs/v2024.8.27/reference/cli/kubectl-stash_cp_secret) - Copy Secret +* [kubectl-stash cp volumesnapshot](/docs/v2024.8.27/reference/cli/kubectl-stash_cp_volumesnapshot) - Copy VolumeSnapshot + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_backupconfig.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_backupconfig.md new file mode 100644 index 0000000000..8d8d3e25f8 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_backupconfig.md @@ -0,0 +1,123 @@ +--- +title: Cp Backupconfig +menu: + docs_v2024.8.27: + identifier: kubectl-stash-cp-backupconfig + name: Cp Backupconfig + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash cp backupconfig + +Copy BackupConfiguration from one namespace to another namespace + +### Synopsis + +Copy BackupConfiguration with respective Repository and Secret if they are not present in the target namespace + +``` +kubectl-stash cp backupconfig [flags] +``` + +### Options + +``` + -h, --help help for backupconfig +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --to-namespace string Destination namespace. + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash cp](/docs/v2024.8.27/reference/cli/kubectl-stash_cp) - Copy stash resources from one namespace to another namespace + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_repository.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_repository.md new file mode 100644 index 0000000000..e5efaae508 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_repository.md @@ -0,0 +1,123 @@ +--- +title: Cp Repository +menu: + docs_v2024.8.27: + identifier: kubectl-stash-cp-repository + name: Cp Repository + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash cp repository + +Copy Repository and Secret + +### Synopsis + +Copy Repository and Secret from one namespace to another namespace + +``` +kubectl-stash cp repository [flags] +``` + +### Options + +``` + -h, --help help for repository +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --to-namespace string Destination namespace. + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash cp](/docs/v2024.8.27/reference/cli/kubectl-stash_cp) - Copy stash resources from one namespace to another namespace + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_secret.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_secret.md new file mode 100644 index 0000000000..3d444b52c9 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_secret.md @@ -0,0 +1,123 @@ +--- +title: Cp Secret +menu: + docs_v2024.8.27: + identifier: kubectl-stash-cp-secret + name: Cp Secret + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash cp secret + +Copy Secret + +### Synopsis + +Copy Secret from one namespace to another namespace + +``` +kubectl-stash cp secret [flags] +``` + +### Options + +``` + -h, --help help for secret +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --to-namespace string Destination namespace. + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash cp](/docs/v2024.8.27/reference/cli/kubectl-stash_cp) - Copy stash resources from one namespace to another namespace + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_volumesnapshot.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_volumesnapshot.md new file mode 100644 index 0000000000..4c1ff294a4 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_cp_volumesnapshot.md @@ -0,0 +1,123 @@ +--- +title: Cp Volumesnapshot +menu: + docs_v2024.8.27: + identifier: kubectl-stash-cp-volumesnapshot + name: Cp Volumesnapshot + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash cp volumesnapshot + +Copy VolumeSnapshot + +### Synopsis + +Copy VolumeSnapshot from one namespace to another namespace + +``` +kubectl-stash cp volumesnapshot [flags] +``` + +### Options + +``` + -h, --help help for volumesnapshot +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --to-namespace string Destination namespace. + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash cp](/docs/v2024.8.27/reference/cli/kubectl-stash_cp) - Copy stash resources from one namespace to another namespace + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_create.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create.md new file mode 100644 index 0000000000..1c558415a9 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create.md @@ -0,0 +1,117 @@ +--- +title: Create +menu: + docs_v2024.8.27: + identifier: kubectl-stash-create + name: Create + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash create + +create stash resources + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash create backupconfig](/docs/v2024.8.27/reference/cli/kubectl-stash_create_backupconfig) - Create a new BackupConfiguration +* [kubectl-stash create repository](/docs/v2024.8.27/reference/cli/kubectl-stash_create_repository) - Create a new repository +* [kubectl-stash create restoresession](/docs/v2024.8.27/reference/cli/kubectl-stash_create_restoresession) - Create a new RestoreSession + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_backupconfig.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_backupconfig.md new file mode 100644 index 0000000000..e511e63373 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_backupconfig.md @@ -0,0 +1,153 @@ +--- +title: Create Backupconfig +menu: + docs_v2024.8.27: + identifier: kubectl-stash-create-backupconfig + name: Create Backupconfig + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash create backupconfig + +Create a new BackupConfiguration + +### Synopsis + +Create a new BackupConfiguration to backup a target + +``` +kubectl-stash create backupconfig [flags] +``` + +### Examples + +``` + # Create a new BackupConfiguration + # stash create backupconfig --namespace= gcs-repo [Flag] + # For Restic driver + stash create backupconfig ss-backup --namespace=demo --repo-name=gcs-repo --schedule="*/4 * * * *" --target-apiversion=apps/v1 --target-kind=StatefulSet --target-name=stash-demo --paths=/source/data --volume-mounts=source-data:/source/data --keep-last=5 --prune=true + # For VolumeSnapshotter driver + stash create backupconfig statefulset-volume-snapshot --namespace=demo --driver=VolumeSnapshotter --schedule="*/4 * * * *" --target-apiversion=apps/v1 --target-kind=StatefulSet --target-name=stash-demo --replica=1 --volumesnpashotclass=default-snapshot-class --keep-last=5 --prune=true +``` + +### Options + +``` + --driver string Driver indicates the mechanism used to backup (i.e. VolumeSnapshotter, Restic) + --dry-run Specify whether to test retention policy without deleting actual data + -h, --help help for backupconfig + --keep-daily int Specify value for retention strategy + --keep-hourly int Specify value for retention strategy + --keep-last int Specify value for retention strategy + --keep-monthly int Specify value for retention strategy + --keep-weekly int Specify value for retention strategy + --keep-yearly int Specify value for retention strategy + --paths strings List of paths to backup + --prune Specify whether to prune old snapshot data + --replica int32 Replica specifies the number of replicas whose data should be backed up + --repo-name string Name of the Repository + --repo-namespace string Namespace of the Repository + --schedule string Schedule of the Backup + --target-apiversion string API-Version of the target resource + --target-kind string Kind of the target resource + --target-name string Name of the target resource + --task string Name of the Task + --volume-mounts strings List of volumes and their mountPaths + --volumesnpashotclass string Name of the VolumeSnapshotClass +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash create](/docs/v2024.8.27/reference/cli/kubectl-stash_create) - create stash resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_repository.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_repository.md new file mode 100644 index 0000000000..cb3f0a3d8b --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_repository.md @@ -0,0 +1,136 @@ +--- +title: Create Repository +menu: + docs_v2024.8.27: + identifier: kubectl-stash-create-repository + name: Create Repository + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash create repository + +Create a new repository + +### Synopsis + +Create a new Repository using Backend Credential + +``` +kubectl-stash create repository [flags] +``` + +### Examples + +``` + # Create a new repository + stash create repository --namespace= [Flag] + stash create repository gcs-repo --namespace=demo --secret=gcs-secret --bucket=appscode-qa --prefix=/source/data --provider=gcs +``` + +### Options + +``` + --bucket string Name of the cloud bucket/container + --endpoint string Endpoint for s3/s3 compatible backend + -h, --help help for repository + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --prefix string Prefix denotes the directory inside the backend + --provider string Backend provider (i.e. gcs, s3, azure etc) + --secret string Name of the Storage Secret +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash create](/docs/v2024.8.27/reference/cli/kubectl-stash_create) - create stash resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_restoresession.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_restoresession.md new file mode 100644 index 0000000000..2ce159a672 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_create_restoresession.md @@ -0,0 +1,151 @@ +--- +title: Create Restoresession +menu: + docs_v2024.8.27: + identifier: kubectl-stash-create-restoresession + name: Create Restoresession + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash create restoresession + +Create a new RestoreSession + +### Synopsis + +Create a new RestoreSession to restore backed up data + +``` +kubectl-stash create restoresession [flags] +``` + +### Examples + +``` + # Create a RestoreSession + # stash create restore --namespace=demo [Flag] + # For Restic driver + stash create restoresession ss-restore --namespace=demo --repo-name=gcs-repo --target-apiversion=apps/v1 --target-kind=StatefulSet --target-name=stash-recovered --paths=/source/data --volume-mounts=source-data:/source/data + # For VolumeSnapshotter driver + stash create restoresession restore-pvc --namespace=demo --driver=VolumeSnapshotter --replica=3 --claim.name=restore-data-restore-demo-${POD_ORDINAL} --claim.access-modes=ReadWriteOnce --claim.storageclass=standard --claim.size=1Gi --claim.datasource=source-data-stash-demo-0-1567146010 +``` + +### Options + +``` + --alias string Host identifier of the backed up data. It must be same as the alias used during backup + --claim.access-modes strings Access mode of the VolumeClaimTemplates + --claim.datasource string DataSource of the VolumeClaimTemplate + --claim.name string Name of the VolumeClaimTemplate + --claim.size string Total requested size of the VolumeClaimTemplate + --claim.storageclass string Name of the Storage secret for VolumeClaimTemplate + --driver string Driver indicates the mechanism used to backup (i.e. VolumeSnapshotter, Restic) + -h, --help help for restoresession + --host string Name of the Source host + --paths strings List of paths to backup + --replica int32 Replica specifies the number of replicas whose data should be backed up + --repo-name string Name of the Repository + --repo-namespace string Namespace of the Repository + --snapshots strings Name of the Snapshot(single) + --target-apiversion string API-Version of the target resource + --target-kind string Kind of the target resource + --target-name string Name of the target resource + --task string Name of the Task + --volume-mounts strings List of volumes and their mountPaths +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash create](/docs/v2024.8.27/reference/cli/kubectl-stash_create) - create stash resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug.md new file mode 100644 index 0000000000..1cf71c7a16 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug.md @@ -0,0 +1,117 @@ +--- +title: Debug +menu: + docs_v2024.8.27: + identifier: kubectl-stash-debug + name: Debug + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash debug + +Debug common Stash issues + +### Options + +``` + -h, --help help for debug +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash debug backup](/docs/v2024.8.27/reference/cli/kubectl-stash_debug_backup) - Debug backup +* [kubectl-stash debug operator](/docs/v2024.8.27/reference/cli/kubectl-stash_debug_operator) - Debug Stash operator +* [kubectl-stash debug restore](/docs/v2024.8.27/reference/cli/kubectl-stash_debug_restore) - Debug restore + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_backup.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_backup.md new file mode 100644 index 0000000000..fddeb1c476 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_backup.md @@ -0,0 +1,132 @@ +--- +title: Debug Backup +menu: + docs_v2024.8.27: + identifier: kubectl-stash-debug-backup + name: Debug Backup + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash debug backup + +Debug backup + +### Synopsis + +Debug common Stash backup issues + +``` +kubectl-stash debug backup [flags] +``` + +### Examples + +``` + # Debug a BackupConfigration + stash debug backup --namespace= --backupconfig= + stash debug backup --namespace=demo --backupconfig=sample-mongodb-backup +``` + +### Options + +``` + --backupbatch string Name of the BackupBatch to debug + --backupconfig string Name of the BackupConfiguration to debug + -h, --help help for backup +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash debug](/docs/v2024.8.27/reference/cli/kubectl-stash_debug) - Debug common Stash issues + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_operator.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_operator.md new file mode 100644 index 0000000000..9b4ce84adc --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_operator.md @@ -0,0 +1,130 @@ +--- +title: Debug Operator +menu: + docs_v2024.8.27: + identifier: kubectl-stash-debug-operator + name: Debug Operator + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash debug operator + +Debug Stash operator + +### Synopsis + +Show debugging information for Stash operator + +``` +kubectl-stash debug operator [flags] +``` + +### Examples + +``` + # Debug operator pod + stash debug operator --namespace= + stash debug operator -n kube-system +``` + +### Options + +``` + -h, --help help for operator +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash debug](/docs/v2024.8.27/reference/cli/kubectl-stash_debug) - Debug common Stash issues + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_restore.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_restore.md new file mode 100644 index 0000000000..2d0c4971ef --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_debug_restore.md @@ -0,0 +1,132 @@ +--- +title: Debug Restore +menu: + docs_v2024.8.27: + identifier: kubectl-stash-debug-restore + name: Debug Restore + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash debug restore + +Debug restore + +### Synopsis + +Show debugging information for restore process + +``` +kubectl-stash debug restore [flags] +``` + +### Examples + +``` + # Debug a RestoreSession + stash debug restore --namespace= --restoresession= + stash debug restore --namespace=demo --restoresession=sample-mongodb-restore +``` + +### Options + +``` + -h, --help help for restore + --restorebatch string Name of the RestoreBatch to debug + --restoresession string Name of the RestoreSession to debug +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash debug](/docs/v2024.8.27/reference/cli/kubectl-stash_debug) - Debug common Stash issues + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete.md new file mode 100644 index 0000000000..6ecdbb09ee --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete.md @@ -0,0 +1,115 @@ +--- +title: Delete +menu: + docs_v2024.8.27: + identifier: kubectl-stash-delete + name: Delete + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash delete + +Delete stash resources + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash delete snapshot](/docs/v2024.8.27/reference/cli/kubectl-stash_delete_snapshot) - Delete a snapshot from repository backend + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete_snapshot.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete_snapshot.md new file mode 100644 index 0000000000..eb70c2e367 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_delete_snapshot.md @@ -0,0 +1,131 @@ +--- +title: Delete Snapshot +menu: + docs_v2024.8.27: + identifier: kubectl-stash-delete-snapshot + name: Delete Snapshot + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash delete snapshot + +Delete a snapshot from repository backend + +### Synopsis + +Delete a snapshot from repository backend + +``` +kubectl-stash delete snapshot [flags] +``` + +### Examples + +``` + # Delete Snapshot + stash delete snapshot gcs-repo-c063d146 -n demo +``` + +### Options + +``` + --docker-registry string Docker image registry (default "stashed") + -h, --help help for snapshot + --image-tag string Stash image tag (default "latest") +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash delete](/docs/v2024.8.27/reference/cli/kubectl-stash_delete) - Delete stash resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_download.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_download.md new file mode 100644 index 0000000000..9c52af9ac2 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_download.md @@ -0,0 +1,128 @@ +--- +title: Download +menu: + docs_v2024.8.27: + identifier: kubectl-stash-download + name: Download + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash download + +Download snapshots + +### Synopsis + +Download contents of snapshots from Repository + +``` +kubectl-stash download [flags] +``` + +### Options + +``` + --destination string Destination path where snapshot will be restored. + --docker-registry string Docker image registry for restic cli (default "stashed") + -h, --help help for download + --host string Name of the source host machine (default "host-0") + --image-tag string Restic docker image tag (default "latest") + --paths strings List of directories to be restored + --snapshots strings List of snapshots to be restored +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen.md new file mode 100644 index 0000000000..141b148efd --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen.md @@ -0,0 +1,115 @@ +--- +title: Gen +menu: + docs_v2024.8.27: + identifier: kubectl-stash-gen + name: Gen + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash gen + +generate stash resources + +### Options + +``` + -h, --help help for gen +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash gen rules](/docs/v2024.8.27/reference/cli/kubectl-stash_gen_rules) - Generate restore rules from nearest snapshots at a specific time. + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen_rules.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen_rules.md new file mode 100644 index 0000000000..69164ed16c --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_gen_rules.md @@ -0,0 +1,124 @@ +--- +title: Gen Rules +menu: + docs_v2024.8.27: + identifier: kubectl-stash-gen-rules + name: Gen Rules + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash gen rules + +Generate restore rules from nearest snapshots at a specific time. + +### Synopsis + +Generate restore rules for a repository based on the closest snapshots to a specific time + +``` +kubectl-stash gen rules [flags] +``` + +### Options + +``` + --group-interval string Snaspshot grouping interval (default "4m") + -h, --help help for rules + --request-timeout string Request timeout duration for the kubectl command + --timestamp string Timestamp to find the closest snapshots +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash gen](/docs/v2024.8.27/reference/cli/kubectl-stash_gen) - generate stash resources + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_key.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key.md new file mode 100644 index 0000000000..0fed2c300e --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key.md @@ -0,0 +1,118 @@ +--- +title: Key +menu: + docs_v2024.8.27: + identifier: kubectl-stash-key + name: Key + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash key + +manages restic keys (passwords) for accessing the repository + +### Options + +``` + -h, --help help for key +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash key add](/docs/v2024.8.27/reference/cli/kubectl-stash_key_add) - Add a new key (password) to a restic repository +* [kubectl-stash key list](/docs/v2024.8.27/reference/cli/kubectl-stash_key_list) - List the keys (passwords) of a restic repository +* [kubectl-stash key remove](/docs/v2024.8.27/reference/cli/kubectl-stash_key_remove) - Remove a key (password) of a restic repository +* [kubectl-stash key update](/docs/v2024.8.27/reference/cli/kubectl-stash_key_update) - Update current key (password) of a restic repository + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_add.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_add.md new file mode 100644 index 0000000000..7979c3a008 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_add.md @@ -0,0 +1,120 @@ +--- +title: Key Add +menu: + docs_v2024.8.27: + identifier: kubectl-stash-key-add + name: Key Add + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash key add + +Add a new key (password) to a restic repository + +``` +kubectl-stash key add [flags] +``` + +### Options + +``` + -h, --help help for add + --host string Host for the new key + --new-password-file string File from which to read the new password + --user string Username for the new key +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server +``` + +### SEE ALSO + +* [kubectl-stash key](/docs/v2024.8.27/reference/cli/kubectl-stash_key) - manages restic keys (passwords) for accessing the repository + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_list.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_list.md new file mode 100644 index 0000000000..c0e5caccc7 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_list.md @@ -0,0 +1,118 @@ +--- +title: Key List +menu: + docs_v2024.8.27: + identifier: kubectl-stash-key-list + name: Key List + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash key list + +List the keys (passwords) of a restic repository + +``` +kubectl-stash key list [flags] +``` + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash key](/docs/v2024.8.27/reference/cli/kubectl-stash_key) - manages restic keys (passwords) for accessing the repository + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_remove.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_remove.md new file mode 100644 index 0000000000..9123866b66 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_remove.md @@ -0,0 +1,119 @@ +--- +title: Key Remove +menu: + docs_v2024.8.27: + identifier: kubectl-stash-key-remove + name: Key Remove + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash key remove + +Remove a key (password) of a restic repository + +``` +kubectl-stash key remove [flags] +``` + +### Options + +``` + -h, --help help for remove + --id string ID of the restic key +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash key](/docs/v2024.8.27/reference/cli/kubectl-stash_key) - manages restic keys (passwords) for accessing the repository + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_update.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_update.md new file mode 100644 index 0000000000..657cc42423 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_key_update.md @@ -0,0 +1,119 @@ +--- +title: Key Update +menu: + docs_v2024.8.27: + identifier: kubectl-stash-key-update + name: Key Update + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash key update + +Update current key (password) of a restic repository + +``` +kubectl-stash key update [flags] +``` + +### Options + +``` + -h, --help help for update + --new-password-file string File from which to read the new password +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash key](/docs/v2024.8.27/reference/cli/kubectl-stash_key) - manages restic keys (passwords) for accessing the repository + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause.md new file mode 100644 index 0000000000..980d3ef635 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause.md @@ -0,0 +1,117 @@ +--- +title: Pause +menu: + docs_v2024.8.27: + identifier: kubectl-stash-pause + name: Pause + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash pause + +Pause Stash backup temporarily + +### Options + +``` + --backupbatch string Name of the BackupBatch to pause + --backupconfig string Name of the BackupConfiguration to pause + -h, --help help for pause +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash pause backup](/docs/v2024.8.27/reference/cli/kubectl-stash_pause_backup) - Pause backup + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause_backup.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause_backup.md new file mode 100644 index 0000000000..4277633d99 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_pause_backup.md @@ -0,0 +1,132 @@ +--- +title: Pause Backup +menu: + docs_v2024.8.27: + identifier: kubectl-stash-pause-backup + name: Pause Backup + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash pause backup + +Pause backup + +### Synopsis + +Pause backup by setting "paused" field of BackupConfiguration/BackupBatch to "true" + +``` +kubectl-stash pause backup [flags] +``` + +### Examples + +``` + # Pause a BackupConfigration + stash pause backup --namespace= --backupconfig= + stash pause backup --namespace=demo --backupconfig=sample-mongodb-backup +``` + +### Options + +``` + -h, --help help for backup +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --backupbatch string Name of the BackupBatch to pause + --backupconfig string Name of the BackupConfiguration to pause + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash pause](/docs/v2024.8.27/reference/cli/kubectl-stash_pause) - Pause Stash backup temporarily + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume.md new file mode 100644 index 0000000000..b964d34165 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume.md @@ -0,0 +1,117 @@ +--- +title: Resume +menu: + docs_v2024.8.27: + identifier: kubectl-stash-resume + name: Resume + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash resume + +Resume Stash backup + +### Options + +``` + --backupbatch string Name of the BackupBatch + --backupconfig string Name of the Backupconfiguration + -h, --help help for resume +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode +* [kubectl-stash resume backup](/docs/v2024.8.27/reference/cli/kubectl-stash_resume_backup) - Resume backup + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume_backup.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume_backup.md new file mode 100644 index 0000000000..5b23db44b6 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_resume_backup.md @@ -0,0 +1,132 @@ +--- +title: Resume Backup +menu: + docs_v2024.8.27: + identifier: kubectl-stash-resume-backup + name: Resume Backup + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash resume backup + +Resume backup + +### Synopsis + +Resume backup by setting "paused" field of BackupConfiguration/BackupBatch to "false" + +``` +kubectl-stash resume backup [flags] +``` + +### Examples + +``` + # Resume a BackupConfigration + stash resume backup --namespace= --backupconfig= + stash resume backup --namespace=demo --backupconfig=sample-mongodb-backup +``` + +### Options + +``` + -h, --help help for backup +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --backupbatch string Name of the BackupBatch + --backupconfig string Name of the Backupconfiguration + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash resume](/docs/v2024.8.27/reference/cli/kubectl-stash_resume) - Resume Stash backup + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_trigger.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_trigger.md new file mode 100644 index 0000000000..09d7ca5bc9 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_trigger.md @@ -0,0 +1,122 @@ +--- +title: Trigger +menu: + docs_v2024.8.27: + identifier: kubectl-stash-trigger + name: Trigger + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash trigger + +Trigger a backup + +### Synopsis + +Trigger a backup by creating BackupSession + +``` +kubectl-stash trigger [flags] +``` + +### Options + +``` + -h, --help help for trigger +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_unlock.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_unlock.md new file mode 100644 index 0000000000..81381d3975 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_unlock.md @@ -0,0 +1,118 @@ +--- +title: Unlock +menu: + docs_v2024.8.27: + identifier: kubectl-stash-unlock + name: Unlock + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash unlock + +Unlock restic repository + +``` +kubectl-stash unlock [flags] +``` + +### Options + +``` + -h, --help help for unlock +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode + diff --git a/content/docs/v2024.8.27/reference/cli/kubectl-stash_version.md b/content/docs/v2024.8.27/reference/cli/kubectl-stash_version.md new file mode 100644 index 0000000000..0b8f596e74 --- /dev/null +++ b/content/docs/v2024.8.27/reference/cli/kubectl-stash_version.md @@ -0,0 +1,120 @@ +--- +title: Version +menu: + docs_v2024.8.27: + identifier: kubectl-stash-version + name: Version + parent: reference-cli +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## kubectl-stash version + +Prints binary version number. + +``` +kubectl-stash version [flags] +``` + +### Options + +``` + --check string Check version constraint + -h, --help help for version + --short Print just the version number. +``` + +### Options inherited from parent commands + +``` + --as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. + --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. + --as-uid string UID to impersonate for the operation. + --cache-dir string Default cache directory (default "/home/runner/.kube/cache") + --certificate-authority string Path to a cert file for the certificate authority + --client-certificate string Path to a client certificate file for TLS + --client-key string Path to a client key file for TLS + --cluster string The name of the kubeconfig cluster to use + --context string The name of the kubeconfig context to use + --disable-compression If true, opt-out of response compression for all requests to the server + --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure + --kubeconfig string Path to the kubeconfig file to use for CLI requests. + --match-server-version Require server version to match client version + -n, --namespace string If present, the namespace scope for this CLI request + --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") + -s, --server string The address and port of the Kubernetes API server + --tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used + --token string Bearer token for authentication to the API server + --user string The name of the kubeconfig user to use +``` + +### SEE ALSO + +* [kubectl-stash](/docs/v2024.8.27/reference/cli/kubectl-stash) - kubectl plugin for Stash by AppsCode + diff --git a/content/docs/v2024.8.27/reference/operator/_index.md b/content/docs/v2024.8.27/reference/operator/_index.md new file mode 100644 index 0000000000..8b7f30e8c1 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/_index.md @@ -0,0 +1,77 @@ +--- +title: Reference | Stash Operator +description: Stash Operator Reference +menu: + docs_v2024.8.27: + identifier: reference-operator + name: Stash Operator + weight: 10 + parent: reference +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/reference/operator/stash.md b/content/docs/v2024.8.27/reference/operator/stash.md new file mode 100644 index 0000000000..963b9222e3 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash.md @@ -0,0 +1,112 @@ +--- +title: Stash +menu: + docs_v2024.8.27: + identifier: stash + name: Stash + parent: reference-operator + weight: 0 +menu_name: docs_v2024.8.27 +section_menu_id: reference +url: /docs/v2024.8.27/reference/operator/ +aliases: +- /docs/v2024.8.27/reference/operator/stash/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash + +Stash by AppsCode - Backup your Kubernetes Volumes + +### Synopsis + +Stash is a Kubernetes operator for restic. For more information, visit here: https://appscode.com/products/stash + +### Options + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + -h, --help help for stash + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash backup-pvc](/docs/v2024.8.27/reference/operator/stash_backup-pvc) - Takes a backup of Persistent Volume Claim +* [stash create-backupsession](/docs/v2024.8.27/reference/operator/stash_create-backupsession) - create a BackupSession +* [stash create-vs](/docs/v2024.8.27/reference/operator/stash_create-vs) - Take snapshot of PersistentVolumeClaims +* [stash forget](/docs/v2024.8.27/reference/operator/stash_forget) - Delete snapshots from a restic repository +* [stash restore](/docs/v2024.8.27/reference/operator/stash_restore) - Restore from backup +* [stash restore-pvc](/docs/v2024.8.27/reference/operator/stash_restore-pvc) - Takes a restore of Persistent Volume Claim +* [stash restore-vs](/docs/v2024.8.27/reference/operator/stash_restore-vs) - Restore PVC from VolumeSnapshot +* [stash run](/docs/v2024.8.27/reference/operator/stash_run) - Launch Stash Controller +* [stash run-backup](/docs/v2024.8.27/reference/operator/stash_run-backup) - Take backup of workload paths +* [stash run-hook](/docs/v2024.8.27/reference/operator/stash_run-hook) - Execute Backup or Restore Hooks +* [stash snapshots](/docs/v2024.8.27/reference/operator/stash_snapshots) - Get snapshots of restic repo +* [stash update-status](/docs/v2024.8.27/reference/operator/stash_update-status) - Update status of Repository, Backup/Restore Session +* [stash version](/docs/v2024.8.27/reference/operator/stash_version) - Prints binary version number. + diff --git a/content/docs/v2024.8.27/reference/operator/stash_backup-pvc.md b/content/docs/v2024.8.27/reference/operator/stash_backup-pvc.md new file mode 100644 index 0000000000..f072deb9ab --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_backup-pvc.md @@ -0,0 +1,133 @@ +--- +title: Backup-Pvc +menu: + docs_v2024.8.27: + identifier: stash-backup-pvc + name: Backup-Pvc + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash backup-pvc + +Takes a backup of Persistent Volume Claim + +``` +stash backup-pvc [flags] +``` + +### Options + +``` + --args strings Arguments to pass to the backup command. + --backup-paths strings List of paths to backup + --backupsession string Name of the Backup Session + --bucket string Name of the cloud bucket/container (keep empty for local backend) + --enable-cache Specify whether to enable caching for restic + --endpoint string Endpoint for s3/s3 compatible backend or REST server URL + --exclude strings List of pattern for directory/file to ignore during backup. Stash will not backup those files that matches these patterns. + -h, --help help for backup-pvc + --hostname string Name of the host machine (default "host-0") + --invoker-kind string Kind of the backup invoker + --invoker-name string Name of the respective backup invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --output-dir string Directory where output.json file will be written (keep empty if you don't need to write output in file) + --path string Directory inside the bucket where backed up data will be stored + --provider string Backend provider (i.e. gcs, s3, azure etc) + --region string Region for s3/s3 compatible backend + --retention-dry-run Specify whether to test retention policy without deleting actual data + --retention-keep-daily int Specify value for retention strategy + --retention-keep-hourly int Specify value for retention strategy + --retention-keep-last int Specify value for retention strategy + --retention-keep-monthly int Specify value for retention strategy + --retention-keep-tags strings Specify value for retention strategy + --retention-keep-weekly int Specify value for retention strategy + --retention-keep-yearly int Specify value for retention strategy + --retention-prune Specify whether to prune old snapshot data + --scratch-dir string Temporary directory (default "/tmp") + --storage-secret-name string Name of the StorageSecret + --storage-secret-namespace string Namespace of the StorageSecret + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_create-backupsession.md b/content/docs/v2024.8.27/reference/operator/stash_create-backupsession.md new file mode 100644 index 0000000000..0a55da26aa --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_create-backupsession.md @@ -0,0 +1,105 @@ +--- +title: Create-Backupsession +menu: + docs_v2024.8.27: + identifier: stash-create-backupsession + name: Create-Backupsession + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash create-backupsession + +create a BackupSession + +``` +stash create-backupsession [flags] +``` + +### Options + +``` + -h, --help help for create-backupsession + --invoker-kind string Type of the backup invoker + --invoker-name string Name of the invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_create-vs.md b/content/docs/v2024.8.27/reference/operator/stash_create-vs.md new file mode 100644 index 0000000000..133a4bdc4b --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_create-vs.md @@ -0,0 +1,109 @@ +--- +title: Create-Vs +menu: + docs_v2024.8.27: + identifier: stash-create-vs + name: Create-Vs + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash create-vs + +Take snapshot of PersistentVolumeClaims + +``` +stash create-vs [flags] +``` + +### Options + +``` + --backupsession string Name of the respective BackupSession object + -h, --help help for create-vs + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --metrics-enabled Specify whether to export Prometheus metrics (default true) + --pushgateway-url string Pushgateway URL where the metrics will be pushed + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_forget.md b/content/docs/v2024.8.27/reference/operator/stash_forget.md new file mode 100644 index 0000000000..867831a895 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_forget.md @@ -0,0 +1,105 @@ +--- +title: Forget +menu: + docs_v2024.8.27: + identifier: stash-forget + name: Forget + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash forget + +Delete snapshots from a restic repository + +``` +stash forget [snapshotID ...] [flags] +``` + +### Options + +``` + -h, --help help for forget + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --repo-name string Name of the Repository CRD. + --repo-namespace string Namespace of the Repository CRD. +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_restore-pvc.md b/content/docs/v2024.8.27/reference/operator/stash_restore-pvc.md new file mode 100644 index 0000000000..c1b9e35696 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_restore-pvc.md @@ -0,0 +1,125 @@ +--- +title: Restore-Pvc +menu: + docs_v2024.8.27: + identifier: stash-restore-pvc + name: Restore-Pvc + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash restore-pvc + +Takes a restore of Persistent Volume Claim + +``` +stash restore-pvc [flags] +``` + +### Options + +``` + --args strings Arguments to pass to the restore command. + --bucket string Name of the cloud bucket/container (keep empty for local backend) + --enable-cache Specify whether to enable caching for restic + --endpoint string Endpoint for s3/s3 compatible backend or REST server URL + --exclude strings List of pattern for directory/file to ignore during restore. Stash will not restore those files that matches these patterns. + -h, --help help for restore-pvc + --hostname string Name of the host machine (default "host-0") + --include strings List of pattern for directory/file to restore. Stash will restore only those files that matches these patterns. + --invoker-kind string Kind of the backup invoker + --invoker-name string Name of the respective backup invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --output-dir string Directory where output.json file will be written (keep empty if you don't need to write output in file) + --path string Directory inside the bucket where backed up data will be stored + --provider string Backend provider (i.e. gcs, s3, azure etc) + --region string Region for s3/s3 compatible backend + --restore-paths strings List of paths to restore + --scratch-dir string Temporary directory (default "/tmp") + --snapshots strings List of snapshots to be restored + --storage-secret-name string Name of the StorageSecret + --storage-secret-namespace string Namespace of the StorageSecret + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_restore-vs.md b/content/docs/v2024.8.27/reference/operator/stash_restore-vs.md new file mode 100644 index 0000000000..9f152a6058 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_restore-vs.md @@ -0,0 +1,110 @@ +--- +title: Restore-Vs +menu: + docs_v2024.8.27: + identifier: stash-restore-vs + name: Restore-Vs + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash restore-vs + +Restore PVC from VolumeSnapshot + +``` +stash restore-vs [flags] +``` + +### Options + +``` + -h, --help help for restore-vs + --invoker-kind string Kind of the restore invoker + --invoker-name string Name of the respective restore invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --metrics-enabled Specify whether to export Prometheus metrics (default true) + --pushgateway-url string Pushgateway URL where the metrics will be pushed + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_restore.md b/content/docs/v2024.8.27/reference/operator/stash_restore.md new file mode 100644 index 0000000000..7d4d3e6a51 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_restore.md @@ -0,0 +1,114 @@ +--- +title: Restore +menu: + docs_v2024.8.27: + identifier: stash-restore + name: Restore + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash restore + +Restore from backup + +``` +stash restore [flags] +``` + +### Options + +``` + --backoff-max-wait duration Maximum wait for initial response from kube apiserver; 0 disables the timeout + --enable-cache Specify whether to enable caching for restic (default true) + -h, --help help for restore + --invoker-kind string Kind of the respective restore invoker + --invoker-name string Name of the respective restore invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --metrics-enabled Specify whether to export Prometheus metrics + --pushgateway-url string Pushgateway URL where the metrics will be pushed + --restore-model string Specify whether using job or init-container to restore (default init-container) (default "init-container") + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_run-backup.md b/content/docs/v2024.8.27/reference/operator/stash_run-backup.md new file mode 100644 index 0000000000..1919901e23 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_run-backup.md @@ -0,0 +1,113 @@ +--- +title: Run-Backup +menu: + docs_v2024.8.27: + identifier: stash-run-backup + name: Run-Backup + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash run-backup + +Take backup of workload paths + +``` +stash run-backup [flags] +``` + +### Options + +``` + --enable-cache Specify whether to enable caching for restic (default true) + -h, --help help for run-backup + --host string Name of the host that will be backed up + --invoker-kind string Kind of the backup invoker + --invoker-name string Name of the respective backup invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --metrics-enabled Specify whether to export Prometheus metrics + --pushgateway-url string URL of Prometheus pushgateway used to cache backup metrics + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_run-hook.md b/content/docs/v2024.8.27/reference/operator/stash_run-hook.md new file mode 100644 index 0000000000..f190509948 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_run-hook.md @@ -0,0 +1,115 @@ +--- +title: Run-Hook +menu: + docs_v2024.8.27: + identifier: stash-run-hook + name: Run-Hook + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash run-hook + +Execute Backup or Restore Hooks + +``` +stash run-hook [flags] +``` + +### Options + +``` + --backupsession string Name of the respective BackupSession object + -h, --help help for run-hook + --hook-type string Type of hook to execute + --hostname string Name of the host that is being backed up or restored (default "host-0") + --invoker-kind string Type of the backup invoker + --invoker-name string Name of the respective backup invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --metrics-enabled Specify whether to export Prometheus metrics + --metrics-labels strings Labels to apply in exported metrics + --metrics-pushgateway-url string Pushgateway URL where the metrics will be pushed + --output-dir string Directory where output.json file will be written (keep empty if you don't need to write output in file) + --target-kind string Kind of the Target + --target-name string Name of the Target + --target-namespace string Namespace of the Target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_run.md b/content/docs/v2024.8.27/reference/operator/stash_run.md new file mode 100644 index 0000000000..20cc12f410 --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_run.md @@ -0,0 +1,184 @@ +--- +title: Run +menu: + docs_v2024.8.27: + identifier: stash-run + name: Run + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash run + +Launch Stash Controller + +### Synopsis + +Launch Stash Controller + +``` +stash run [flags] +``` + +### Options + +``` + --audit-log-batch-buffer-size int The size of the buffer to store events before batching and writing. Only used in batch mode. (default 10000) + --audit-log-batch-max-size int The maximum size of a batch. Only used in batch mode. (default 1) + --audit-log-batch-max-wait duration The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode. + --audit-log-batch-throttle-burst int Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode. + --audit-log-batch-throttle-enable Whether batching throttling is enabled. Only used in batch mode. + --audit-log-batch-throttle-qps float32 Maximum average number of batches per second. Only used in batch mode. + --audit-log-compress If set, the rotated log files will be compressed using gzip. + --audit-log-format string Format of saved audits. "legacy" indicates 1-line text format for each event. "json" indicates structured json format. Known formats are legacy,json. (default "json") + --audit-log-maxage int The maximum number of days to retain old audit log files based on the timestamp encoded in their filename. + --audit-log-maxbackup int The maximum number of old audit log files to retain. Setting a value of 0 will mean there's no restriction on the number of files. + --audit-log-maxsize int The maximum size in megabytes of the audit log file before it gets rotated. + --audit-log-mode string Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict. (default "blocking") + --audit-log-path string If set, all requests coming to the apiserver will be logged to this file. '-' means standard out. + --audit-log-truncate-enabled Whether event and batch truncating is enabled. + --audit-log-truncate-max-batch-size int Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size. (default 10485760) + --audit-log-truncate-max-event-size int Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded. (default 102400) + --audit-log-version string API group and version used for serializing audit events written to log. (default "audit.k8s.io/v1") + --audit-policy-file string Path to the file that defines the audit policy configuration. + --audit-webhook-batch-buffer-size int The size of the buffer to store events before batching and writing. Only used in batch mode. (default 10000) + --audit-webhook-batch-max-size int The maximum size of a batch. Only used in batch mode. (default 400) + --audit-webhook-batch-max-wait duration The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode. (default 30s) + --audit-webhook-batch-throttle-burst int Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode. (default 15) + --audit-webhook-batch-throttle-enable Whether batching throttling is enabled. Only used in batch mode. (default true) + --audit-webhook-batch-throttle-qps float32 Maximum average number of batches per second. Only used in batch mode. (default 10) + --audit-webhook-config-file string Path to a kubeconfig formatted file that defines the audit webhook configuration. + --audit-webhook-initial-backoff duration The amount of time to wait before retrying the first failed request. (default 10s) + --audit-webhook-mode string Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict. (default "batch") + --audit-webhook-truncate-enabled Whether event and batch truncating is enabled. + --audit-webhook-truncate-max-batch-size int Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size. (default 10485760) + --audit-webhook-truncate-max-event-size int Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded. (default 102400) + --audit-webhook-version string API group and version used for serializing audit events written to webhook. (default "audit.k8s.io/v1") + --authentication-kubeconfig string kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. + --authentication-skip-lookup If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster. + --authentication-token-webhook-cache-ttl duration The duration to cache responses from the webhook token authenticator. (default 10s) + --authentication-tolerate-lookup-failure If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous. + --authorization-always-allow-paths strings A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server. (default [/healthz,/readyz,/livez]) + --authorization-kubeconfig string kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. + --authorization-webhook-cache-authorized-ttl duration The duration to cache 'authorized' responses from the webhook authorizer. (default 10s) + --authorization-webhook-cache-unauthorized-ttl duration The duration to cache 'unauthorized' responses from the webhook authorizer. (default 10s) + --backup-job-psp strings Name of the PSPs for backup job. Use comma to separate multiple PSP names. + --bind-address ip The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used. (default 0.0.0.0) + --burst int The maximum burst for throttle (default 100) + --cert-dir string The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored. (default "apiserver.local.config/certificates") + --client-ca-file string If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate. + --contention-profiling Enable lock contention profiling, if profiling is enabled + --cron-job-psp strings Name of the PSPs for backup triggering CronJob. Use comma to separate multiple PSP names. + --docker-registry string Docker image registry for sidecar, init-container, check-job, recovery-job and kubectl-job (default "appscode") + --egress-selector-config-file string File with apiserver egress selector configuration. + --enable-mutating-webhook If true, enables mutating webhooks for KubeDB CRDs. + --enable-validating-webhook If true, enables validating webhooks for KubeDB CRDs. + -h, --help help for run + --http2-max-streams-per-connection int The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default. (default 1000) + --image string Image for sidecar, init-container, check-job and recovery-job (default "stash") + --image-pull-secrets strings List of image pull secrets for pulling image from private registries + --image-tag string Image tag for sidecar, init-container, check-job and recovery-job + --kubeconfig string kubeconfig file pointing at the 'core' kubernetes server. + --license-apiservice string Name of the ApiService to use by the addons to identify the respective service and certificate for license verification request + --license-file string Path to license file + --permit-address-sharing If true, SO_REUSEADDR will be used when binding the port. This allows binding to wildcard IPs like 0.0.0.0 and specific IPs in parallel, and it avoids waiting for the kernel to release sockets in TIME_WAIT state. [default=false] + --permit-port-sharing If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false] + --profiling Enable profiling via web interface host:port/debug/pprof/ (default true) + --pushgateway-url string URL of the Prometheus pushgateway where backup metrics will be pushed. + --qps float The maximum QPS to the master from this client (default 100) + --requestheader-allowed-names strings List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed. + --requestheader-client-ca-file string Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests. + --requestheader-extra-headers-prefix strings List of request header prefixes to inspect. X-Remote-Extra- is suggested. (default [x-remote-extra-]) + --requestheader-group-headers strings List of request headers to inspect for groups. X-Remote-Group is suggested. (default [x-remote-group]) + --requestheader-username-headers strings List of request headers to inspect for usernames. X-Remote-User is common. (default [x-remote-user]) + --restore-job-psp strings Name of the PSPs for restore job. Use comma to separate multiple PSP names. + --resync-period duration If non-zero, will re-list this often. Otherwise, re-list will be delayed aslong as possible (until the upstream source closes the watch or times out. (default 10m0s) + --scratch-dir emptyDir Directory used to store temporary files. Use an emptyDir in Kubernetes. (default "/tmp") + --secure-port int The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all. (default 443) + --tls-cert-file string File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory specified by --cert-dir. + --tls-cipher-suites strings Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used. + Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384. + Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA. + --tls-min-version string Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 + --tls-private-key-file string File containing the default x509 private key matching --tls-cert-file. + --tls-sni-cert-key namedCertKey A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com". (default []) + --tracing-config-file string File with apiserver tracing configuration. +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_snapshots.md b/content/docs/v2024.8.27/reference/operator/stash_snapshots.md new file mode 100644 index 0000000000..5efbced3de --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_snapshots.md @@ -0,0 +1,105 @@ +--- +title: Snapshots +menu: + docs_v2024.8.27: + identifier: stash-snapshots + name: Snapshots + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash snapshots + +Get snapshots of restic repo + +``` +stash snapshots [snapshotID ...] [flags] +``` + +### Options + +``` + -h, --help help for snapshots + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --repo-name string Name of the Repository CRD. + --repo-namespace string Namespace of the Repository CRD. +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_update-status.md b/content/docs/v2024.8.27/reference/operator/stash_update-status.md new file mode 100644 index 0000000000..2a2f0f330b --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_update-status.md @@ -0,0 +1,124 @@ +--- +title: Update-Status +menu: + docs_v2024.8.27: + identifier: stash-update-status + name: Update-Status + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash update-status + +Update status of Repository, Backup/Restore Session + +``` +stash update-status [flags] +``` + +### Options + +``` + --backupsession string Name of the Backup Session + --bucket string Name of the cloud bucket/container (keep empty for local backend) + --enable-cache Specify whether to enable caching for restic + --endpoint string Endpoint for s3/s3 compatible backend or REST server URL + -h, --help help for update-status + --invoker-kind string Type of the respective backup/restore invoker + --invoker-name string Name of the respective backup/restore invoker + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --max-connections int Specify maximum concurrent connections for GCS, Azure and B2 backend + --metrics-enabled Specify whether to export Prometheus metrics + --metrics-labels strings Labels to apply in exported metrics + --metrics-pushgateway-url string Pushgateway URL where the metrics will be pushed + --namespace string Namespace of Backup/Restore Session (default "default") + --output-dir string Directory where output.json file will be written (keep empty if you don't need to write output in file) + --path string Directory inside the bucket where backed up data will be stored + --provider string Backend provider (i.e. gcs, s3, azure etc) + --region string Region for s3/s3 compatible backend + --scratch-dir string Temporary directory + --storage-secret-name string Name of the Repository + --storage-secret-namespace string Namespace of the Repository + --target-kind string Kind of the target + --target-name string Name of the target + --target-namespace string Namespace of the target +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/reference/operator/stash_version.md b/content/docs/v2024.8.27/reference/operator/stash_version.md new file mode 100644 index 0000000000..71ac75d67e --- /dev/null +++ b/content/docs/v2024.8.27/reference/operator/stash_version.md @@ -0,0 +1,103 @@ +--- +title: Version +menu: + docs_v2024.8.27: + identifier: stash-version + name: Version + parent: reference-operator +menu_name: docs_v2024.8.27 +section_menu_id: reference +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## stash version + +Prints binary version number. + +``` +stash version [flags] +``` + +### Options + +``` + --check string Check version constraint + -h, --help help for version + --short Print just the version number. +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [stash](/docs/v2024.8.27/reference/operator/stash) - Stash by AppsCode - Backup your Kubernetes Volumes + diff --git a/content/docs/v2024.8.27/setup/README.md b/content/docs/v2024.8.27/setup/README.md new file mode 100644 index 0000000000..b93d3e76f6 --- /dev/null +++ b/content/docs/v2024.8.27/setup/README.md @@ -0,0 +1,101 @@ +--- +title: Setup | Stash +description: Setup guides for Stash by AppsCode +menu: + docs_v2024.8.27: + identifier: setup-readme + name: Readme + parent: setup + weight: -1 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +url: /docs/v2024.8.27/setup/ +aliases: +- /docs/v2024.8.27/setup/README/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Setup + + +
+ +The setup section contains instructions for installing the Stash and its various components in Kubernetes. This section has been divided into the following sub-sections: + +- **Install Stash:** Installation instructions for Stash and its various components. + - [Stash operator](/docs/v2024.8.27/setup/install/stash/): Installation instructions for Stash operator. + - [Stash kubectl Plugin](/docs/v2024.8.27/setup/install/kubectl-plugin/): Installation instructions for Stash `kubectl` plugin. + - [Troubleshooting](/docs/v2024.8.27/setup/install/troubleshooting/): Troubleshooting guide for various installation problems. + +- **Uninstall Stash:** Uninstallation instructions for Stash and its various components. + - [Stash operator](/docs/v2024.8.27/setup/uninstall/stash/): Uninstallation instructions for Stash operator. + - [Stash kubectl Plugin](/docs/v2024.8.27/setup/uninstall/kubectl-plugin/): Uninstallation instructions for Stash `kubectl` plugin. + +- [Upgrading Stash](/docs/v2024.8.27/setup/upgrade/): Instruction for updating Stash license and upgrading between various Stash versions. diff --git a/content/docs/v2024.8.27/setup/_index.md b/content/docs/v2024.8.27/setup/_index.md new file mode 100644 index 0000000000..22e60378cb --- /dev/null +++ b/content/docs/v2024.8.27/setup/_index.md @@ -0,0 +1,75 @@ +--- +title: Setup | Stash +menu: + docs_v2024.8.27: + identifier: setup + name: Setup + weight: 30 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/setup/install/_index.md b/content/docs/v2024.8.27/setup/install/_index.md new file mode 100644 index 0000000000..61b4b39295 --- /dev/null +++ b/content/docs/v2024.8.27/setup/install/_index.md @@ -0,0 +1,77 @@ +--- +title: Installation Guide | Stash +description: Stash Installation Guide +menu: + docs_v2024.8.27: + identifier: installation-guide + name: Install + parent: setup + weight: 10 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/setup/install/kubectl-plugin/index.md b/content/docs/v2024.8.27/setup/install/kubectl-plugin/index.md new file mode 100644 index 0000000000..affbbbd565 --- /dev/null +++ b/content/docs/v2024.8.27/setup/install/kubectl-plugin/index.md @@ -0,0 +1,147 @@ +--- +title: Install Stash kubectl Plugin +description: Installation guide for Stash kubectl Plugin +menu: + docs_v2024.8.27: + identifier: install-stash-kubectl-plugin + name: Stash kubectl Plugin + parent: installation-guide + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Install Stash kubectl Plugin + +Stash provides a `kubectl` plugin to interact with Stash resources. + +## Install using Krew + +Stash `kubectl` plugin can be installed using Krew. [Krew](https://krew.sigs.k8s.io/) is the plugin manager for kubectl command-line tool. To install follow the steps below: + +- Install `krew` following the steps [here](https://krew.sigs.k8s.io/docs/user-guide/setup/install/). + +- If you have already installed `krew`, please upgrade `krew` to version v0.4.0 or later so that you can use [custom plugin indexes](https://krew.sigs.k8s.io/docs/user-guide/custom-indexes/). + +```bash +kubectl krew upgrade +kubectl krew version +``` + +- Add [AppsCode's kubectl plugin index](https://github.com/appscode/krew-index). If you have already added the index, update the index. + +```bash +kubectl krew index add appscode https://github.com/appscode/krew-index.git +kubectl krew index list +kubectl krew update +``` + +- Install Stash `kubectl` plugin following the commands below: + +```bash +kubectl krew install appscode/stash +kubectl stash version +``` + +- If Stash `kubectl` plugin is already installed, run the following command to upgrade the plugin: + +```bash +kubectl krew upgrade +kubectl stash version +``` + +## Install using pre-built binary + +You can download the pre-build binaries from [stashed/cli](https://github.com/stashed/cli/releases) releases and put it into one of your installation directory denoted by `$PATH` variable. + +Here is a simple Linux command to install the latest 64-bit Linux binary directly into your `/usr/local/bin` directory: + +```bash +# Linux amd 64-bit +curl -o kubectl-stash.tar.gz -fsSL https://github.com/stashed/cli/releases/download/{{< param "info.cli" >}}/kubectl-stash-linux-amd64.tar.gz \ + && tar zxvf kubectl-stash.tar.gz \ + && chmod +x kubectl-stash-linux-amd64 \ + && sudo mv kubectl-stash-linux-amd64 /usr/local/bin/kubectl-stash \ + && rm kubectl-stash.tar.gz LICENSE.md + +# Mac OSX 64-bit +curl -o kubectl-stash.tar.gz -fsSL https://github.com/stashed/cli/releases/download/{{< param "info.cli" >}}/kubectl-stash-darwin-amd64.tar.gz \ + && tar zxvf kubectl-stash.tar.gz \ + && chmod +x kubectl-stash-darwin-amd64 \ + && sudo mv kubectl-stash-darwin-amd64 /usr/local/bin/kubectl-stash \ + && rm kubectl-stash.tar.gz LICENSE.md +``` + +If you prefer to install kubectl Stash cli from source code, make sure that your go development environment has been setup properly. Then, just run: + +```bash +go get github.com/stashed/cli/... +``` + +>Please note that this will install Stash cli from master branch which might include breaking and/or undocumented changes. diff --git a/content/docs/v2024.8.27/setup/install/stash/images/enterprise_license_form.png b/content/docs/v2024.8.27/setup/install/stash/images/enterprise_license_form.png new file mode 100644 index 0000000000..330d1cb7fc Binary files /dev/null and b/content/docs/v2024.8.27/setup/install/stash/images/enterprise_license_form.png differ diff --git a/content/docs/v2024.8.27/setup/install/stash/index.md b/content/docs/v2024.8.27/setup/install/stash/index.md new file mode 100644 index 0000000000..043029d5f1 --- /dev/null +++ b/content/docs/v2024.8.27/setup/install/stash/index.md @@ -0,0 +1,244 @@ +--- +title: Install Stash +description: Installation guide for Stash +menu: + docs_v2024.8.27: + identifier: install-stash-enterprise + name: Stash + parent: installation-guide + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Install Stash + +## Get a Free License + +Download a FREE license from [AppsCode License Server](https://appscode.com/issue-license?p=stash). + +> Stash licensing process has been designed to work with CI/CD workflow. You can automatically obtain a license from your CI/CD pipeline by following the guide from [here](https://github.com/appscode/offline-license-server#offline-license-server). + +## Install + +Stash operator can be installed as a Helm chart or simply as Kubernetes manifests. + + +
+
+ +## Using Helm 3 + +Stash can be installed via [Helm](https://helm.sh/) using the [chart](https://github.com/stashed/installer/tree/{{< param "info.installer" >}}/charts/stash) from [AppsCode Charts Repository](https://github.com/appscode/charts). To install the chart with the release name `stash`: + +```bash +$ helm install stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set-file global.license=/path/to/the/license.txt \ + --wait --burst-limit=10000 --debug +``` + +To see the detailed configuration options, visit [here](https://github.com/stashed/installer/tree/{{< param "info.installer" >}}/charts/stash-enterprise). + +
+
+ +## Using YAML + +If you prefer to not use Helm, you can generate YAMLs from Stash chart and deploy using `kubectl`. Here we are going to show the prodecure using Helm 3. + +```bash +$ helm template stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set global.skipCleaner=true \ + --set-file global.license=/path/to/the/license.txt | kubectl apply -f - +``` + +To see the detailed configuration options, visit [here](https://github.com/stashed/installer/tree/{{< param "info.installer" >}}/charts/stash-enterprise). + +
+
+ +## Verify installation + +To check if Stash operator pods have started, run the following command: + +```bash +❯ kubectl get pods --all-namespaces -l app.kubernetes.io/name=stash-enterprise --watch +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system stash-stash-enterprise-678bcb6db4-267vk 2/2 Running 0 3m +``` + +Once the operator pod is running, you can cancel the above command by typing `Ctrl+C`. + +Now, to confirm CRD groups have been registered by the operator, run the following command: +```bash +$ kubectl get crd -l app.kubernetes.io/name=stash + +NAME CREATED AT +backupbatches.stash.appscode.com 2020-08-24T08:20:54Z +backupblueprints.stash.appscode.com 2020-08-24T08:20:55Z +backupconfigurations.stash.appscode.com 2020-08-24T08:20:54Z +backupsessions.stash.appscode.com 2020-08-24T08:20:55Z +functions.stash.appscode.com 2020-08-24T08:20:55Z +recoveries.stash.appscode.com 2020-08-24T08:20:54Z +repositories.stash.appscode.com 2020-08-24T08:20:54Z +restics.stash.appscode.com 2020-08-24T08:20:54Z +restorebatches.stash.appscode.com 2020-08-24T08:20:55Z +restoresessions.stash.appscode.com 2020-08-24T08:20:55Z +tasks.stash.appscode.com 2020-08-24T08:20:55Z +``` + +### Verify Catalogs + +Stash automatically installs the necessary Addon catalogs for database backup. Verify that the Addon catalogs have been installed using the following command. + +```bash +❯ kubectl get tasks.stash.appscode.com +NAME AGE +elasticsearch-backup-5.6.4 5m8s +elasticsearch-backup-6.2.4 5m8s +elasticsearch-backup-6.3.0 5m8s +elasticsearch-backup-6.4.0 5m8s +elasticsearch-backup-6.5.3 5m8s +elasticsearch-backup-6.8.0 5m8s +elasticsearch-backup-7.2.0 5m8s +elasticsearch-backup-7.3.2 5m8s +elasticsearch-restore-5.6.4 5m8s +elasticsearch-restore-6.2.4 5m8s +elasticsearch-restore-6.3.0 5m8s +elasticsearch-restore-6.4.0 5m8s +elasticsearch-restore-6.5.3 5m8s +elasticsearch-restore-6.8.0 5m8s +elasticsearch-restore-7.2.0 5m8s +elasticsearch-restore-7.3.2 5m8s +mariadb-backup-10.5.8 5m8s +mariadb-restore-10.5.8 5m8s +mongodb-backup-3.4.17 5m8s +mongodb-backup-3.4.22 5m8s +mongodb-backup-3.6.13 5m8s +mongodb-backup-4.0.11 5m8s +mongodb-backup-4.0.3 5m8s +mongodb-backup-4.1.13 5m8s +mongodb-backup-4.1.4 5m8s +mongodb-backup-4.1.7 5m8s +mongodb-backup-4.2.3 5m8s +mongodb-restore-3.4.17 5m8s +mongodb-restore-3.4.22 5m8s +mongodb-restore-3.6.13 5m8s +mongodb-restore-4.0.11 5m8s +mongodb-restore-4.0.3 5m8s +mongodb-restore-4.1.13 5m8s +mongodb-restore-4.1.4 5m8s +mongodb-restore-4.1.7 5m8s +mongodb-restore-4.2.3 5m8s +mysql-backup-5.7.25 5m8s +mysql-backup-8.0.14 5m8s +mysql-backup-8.0.21 5m8s +mysql-backup-8.0.3 5m8s +mysql-restore-5.7.25 5m8s +mysql-restore-8.0.14 5m8s +mysql-restore-8.0.21 5m8s +mysql-restore-8.0.3 5m8s +perconaxtradb-backup-5.7 5m8s +perconaxtradb-restore-5.7 5m8s +postgres-backup-10.14 5m8s +postgres-backup-11.9 5m8s +postgres-backup-12.4 5m8s +postgres-backup-13.1 5m8s +postgres-backup-9.6.19 5m8s +postgres-restore-10.14 5m8s +postgres-restore-11.9 5m8s +postgres-restore-12.4 5m8s +postgres-restore-13.1 5m8s +postgres-restore-9.6.19 5m8s +pvc-backup 5m2s +pvc-restore 5m2s +``` + +As you can see from the above output that Stash has created `Task` objects for each supported databases. + +Now, you are ready to [take your first backup](/docs/v2024.8.27/guides/README) using Stash. + +## Purchase Stash License + +If you are interested in purchasing Stash license, please contact us via sales@appscode.com for further discussion. You can also set up a meeting via our [calendly link](https://calendly.com/appscode/intro). + +If you are willing to purchase Stash license but need more time to test in your dev cluster, feel free to contact sales@appscode.com. We will be happy to extend your trial period. diff --git a/content/docs/v2024.8.27/setup/install/troubleshooting/index.md b/content/docs/v2024.8.27/setup/install/troubleshooting/index.md new file mode 100644 index 0000000000..4ad5b2b099 --- /dev/null +++ b/content/docs/v2024.8.27/setup/install/troubleshooting/index.md @@ -0,0 +1,171 @@ +--- +title: Troubleshooting Stash Installation +description: Troubleshooting guide for Stash installation +menu: + docs_v2024.8.27: + identifier: install-stash-troubleshoot + name: Troubleshooting + parent: installation-guide + weight: 40 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +## Installing in GKE Cluster + +If you are installing Stash on a GKE cluster, you will need cluster admin permissions to install Stash operator. Run the following command to grant admin permision to the cluster. + +```bash +$ kubectl create clusterrolebinding "cluster-admin-$(whoami)" \ + --clusterrole=cluster-admin \ + --user="$(gcloud config get-value core/account)" +``` + +In addition, if your GKE cluster is a [private cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters), you will need to either add an additional firewall rule that allows master nodes access port `8443/tcp` on worker nodes, or change the existing rule that allows access to ports `443/tcp` and `10250/tcp` to also allow access to port `8443/tcp`. The procedure to add or modify firewall rules is described in the official GKE documentation for private clusters mentioned before. + +## Configuring Network Volume Accessor + +For network volume such as NFS, Stash needs to deploy a helper deployment in the same namespace as the Repository that uses the NFS as backend to provide Snapshot listing facility. We call this helper deployment network volume accessor. You can configure its resources, user id, privileged permission etc. Run the following command to enable network volume accessor, + + + +
+
+ +### New Installation + +If you haven't installed Stash yet, run the following command to configure the network volume accessor during installation + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set stash-enterprise.netVolAccessor.cpu=200m \ + --set stash-enterprise.netVolAccessor.memory=128Mi \ + --set stash-enterprise.netVolAccessor.runAsUser=0 \ + --set stash-enterprise.netVolAccessor.privileged=true \ + --set-file global.license=/path/to/license-file.txt \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +### Existing Installation + +If you have installed Stash already in your cluster but didn't configure the network volume accessor, you can use `helm upgrade` command to configure it in the existing installation. + +```bash +$ helm upgrade -i stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --reuse-values \ + --set features.enterprise=true \ + --set stash-enterprise.netVolAccessor.cpu=200m \ + --set stash-enterprise.netVolAccessor.memory=128Mi \ + --set stash-enterprise.netVolAccessor.runAsUser=0 \ + --set stash-enterprise.netVolAccessor.privileged=true \ + --set-file global.license=/path/to/license-file.txt \ + --wait --burst-limit=10000 --debug +``` +
+
+ + + +## Detect Stash version + +To detect Stash version, exec into the operator pod and run `stash version` command. + +```bash +$ POD_NAMESPACE=kube-system +$ POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=stash-community -o jsonpath={.items[0].metadata.name}) +$ kubectl exec $POD_NAME -c operator -n $POD_NAMESPACE -- /stash version + +Version = {{< param "info.version" >}} +VersionStrategy = tag +Os = alpine +Arch = amd64 +CommitHash = 85b0f16ab1b915633e968aac0ee23f877808ef49 +GitBranch = release-0.5 +GitTag = {{< param "info.version" >}} +CommitTimestamp = 2020-08-10T05:24:23 + +$ kubectl exec -it $POD_NAME -c operator -n $POD_NAMESPACE restic version +restic 0.9.6 +compiled with go1.9 on linux/amd64 +``` diff --git a/content/docs/v2024.8.27/setup/uninstall/_index.md b/content/docs/v2024.8.27/setup/uninstall/_index.md new file mode 100644 index 0000000000..c0574df818 --- /dev/null +++ b/content/docs/v2024.8.27/setup/uninstall/_index.md @@ -0,0 +1,77 @@ +--- +title: Uninstallation Guide | Stash +description: Stash Unistallation Guide +menu: + docs_v2024.8.27: + identifier: uninstallation-guide + name: Uninstall + parent: setup + weight: 20 +menu_name: docs_v2024.8.27 +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + diff --git a/content/docs/v2024.8.27/setup/uninstall/kubectl-plugin/index.md b/content/docs/v2024.8.27/setup/uninstall/kubectl-plugin/index.md new file mode 100644 index 0000000000..cde823eeaf --- /dev/null +++ b/content/docs/v2024.8.27/setup/uninstall/kubectl-plugin/index.md @@ -0,0 +1,88 @@ +--- +title: Uninstall Stash kubectl Plugin +description: Uninstallation guide for Stash kubectl Plugin +menu: + docs_v2024.8.27: + identifier: uninstall-stash-kubectl-plugin + name: Stash kubectl Plugin + parent: uninstallation-guide + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Uninstall Stash kubectl Plugin + +## Uninstall using Krew + +To uninstall Stash `kubectl` plugin, run the following command: + +```bash +kubectl krew uninstall stash +``` diff --git a/content/docs/v2024.8.27/setup/uninstall/stash/index.md b/content/docs/v2024.8.27/setup/uninstall/stash/index.md new file mode 100644 index 0000000000..19370c32ce --- /dev/null +++ b/content/docs/v2024.8.27/setup/uninstall/stash/index.md @@ -0,0 +1,134 @@ +--- +title: Uninstall Stash +description: Uninstallation guide for Stash +menu: + docs_v2024.8.27: + identifier: uninstall-stash-enterprise + name: Stash + parent: uninstallation-guide + weight: 20 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Uninstall Stash + +To uninstall Stash, run the following command: + + +
+
+ +## Using Helm 3 + +In Helm 3, release names are [scoped to a namespace](https://v3.helm.sh/docs/faq/#release-names-are-now-scoped-to-the-namespace). So, provide the namespace you used to install the operator when installing. + +```bash +$ helm uninstall stash --namespace kube-system +``` + +
+
+ +## Using YAML (with helm 3) + +If you prefer to not use Helm, you can generate YAMLs from Stash chart and uninstall using `kubectl`. + +```bash +$ helm template stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set global.license="nothing" \ + --set global.skipCleaner=true | kubectl delete -f - +``` + +
+
+ +## Delete CRDs + +The above uninstallation process will uninstall the Stash operator. However, it will keep the Stash registered CRDs so that you don't lose your Stash objects i.e. `BackupConfiguration`, `Repository`, etc. during re-installation. If you want to remove the Stash CRDs too, please run the following command. + +```bash +kubectl delete crd -l=app.kubernetes.io/name=stash +``` + +If you wan't to delete the `AppBinding` CRD, run the following command. + +```bash + kubectl delete crd -l=app.kubernetes.io/name=catalog +``` diff --git a/content/docs/v2024.8.27/setup/upgrade/images/stash-navigate-old-version.png b/content/docs/v2024.8.27/setup/upgrade/images/stash-navigate-old-version.png new file mode 100644 index 0000000000..252fd1fbab Binary files /dev/null and b/content/docs/v2024.8.27/setup/upgrade/images/stash-navigate-old-version.png differ diff --git a/content/docs/v2024.8.27/setup/upgrade/index.md b/content/docs/v2024.8.27/setup/upgrade/index.md new file mode 100644 index 0000000000..2aac50bcba --- /dev/null +++ b/content/docs/v2024.8.27/setup/upgrade/index.md @@ -0,0 +1,278 @@ +--- +title: Upgrade | Stash +description: Stash Upgrade +menu: + docs_v2024.8.27: + identifier: upgrade-stash + name: Upgrade + parent: setup + weight: 30 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: setup +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Upgrading Stash + +This guide will show you how to upgrade various Stash components. Here, we are going to show how to upgrade from an old Stash version to the new version, and how to update the license, etc. + +## Upgrading Stash from `v2021.xx.xx` to `{{< param "info.version" >}}` + +In order to upgrade from Stash `v2021.xx.xx` to `{{< param "info.version" >}}`, please follow the following steps. + +#### 1. Update Stash catalog CRDs + +Helm [does not upgrade the CRDs](https://github.com/helm/helm/issues/6581) bundled in a Helm chart if the CRDs already exist. So, to upgrade the Stash catalog CRDs, please run the following commands below: + +```bash +# Update catalog CRDs +$ kubectl apply -f https://github.com/stashed/installer/raw/{{< param "info.version" >}}/crds/stash-catalog-crds.yaml + +# Update metrics CRDs +$ kubectl apply -f https://github.com/stashed/installer/raw/{{< param "info.version" >}}/charts/stash-metrics/crds/metrics.appscode.com_metricsconfigurations.yaml +``` + +#### 2. Upgrade Stash Operator + +Now, upgrade the Stash helm chart using the following command. You can find the latest installation guide [here](/docs/v2024.8.27/setup/README). + +```bash +$ helm upgrade stash oci://ghcr.io/appscode-charts/stash \ + --version {{< param "info.version" >}} \ + --namespace stash \ + --set features.enterprise=true \ + --set-file global.license=/path/to/the/license.txt \ + --wait --burst-limit=10000 --debug +``` + +#### 3. Post uprade cleanup + +We have changed the name format for auto-backup resources to support dedicated backup or storage namespace. If you were using a dedicated storage namespace for your auto-backup through the `repoNamespace` field, you might see a new BackupConfiguration and Repository has been created with a new name format. Unfortunately, Stash can't remove the old BackupConfiguration and Repository before creating a new one due to a flaw in how we handled them previously. In this case, you can safely remove the old BackupConfiguration and Repository. Your backed-up data will be intact. + +To cleanup the BackupConfigurations and the Repositories, + +```bash +# Delete a particular backupconfiguration +$ kubectl delete backupconfiguration -n + +# Delete a particular repository +$ kubectl delete repository -n +``` + +## Upgrading Stash from `v0.11.x` and older to `v0.12.x` + +In Stash `v0.11.x` and prior versions, Stash used separate charts for Stash community edition, Stash enterprise edition, and Stash Addons catalogs. In Stash `v0.12.x`, we have moved to a single combined chart for all the components for a better user experience. It also removes the burden of installing individual database addons manually. + +In order to upgrade from Stash `v0.11.x` to `v0.12.x`, please follow the following steps. + +#### 1. Pause Upcoming Backups + +The entire upgrade process may take few minutes depending on your configurations. If you have any scheduled backup that can trigger during the upgrade process, you are advised to pause them before starting the upgrade process. + +You can pause a backup by setting `spec.paused` field of a `BackupConfiguration` to `true` as below, + +```bash +kubectl patch backupconfiguration -n --type="merge" --patch='{"spec": {"paused": true}}' +``` + +>If you don't pause the backup, then any backup that has been triggered during the upgrade process should start executing as soon as the upgrade is completed. So, if multiple backups of different targets are triggered during the upgrade process, they all will start executing simultaneously after the upgrade. If multiple backups of the same target are triggered during the upgrade process, only the first one will be executed and others will be skipped. + +#### 2. Uninstall Stash Addons + +Now, if you have installed Stash database addons, then uninstall them by following their uninstallation guide. All the database addons will be created automatically when you upgrade to the new version of the Stash. + +Make sure to use the appropriate uninstallation guide for the addon version that you are currently using. You can use the dropdown on the left sidebar of the documentation site to navigate to the documentation for previous versions. + +
+ Naviage to old documentation +
Fig: Naviage to old documentation
+
+ +>New documentation does not contain the installation/uninstallation guide for the Addons as they are now automatically installed/uninstalled along with the Stash operator. + +#### 3. Uninstall Stash Operator + +Now, uninstall the Stash operator by following the appropriate uninstallation guide of the Stash version that you are currently running. + +>Make sure you are using the appropriate version of the uninstallation guide. The uninstallation guide for `v0.12.x` will not work for `v0.11.x` Use the dropdown at the sidebar of the documentation site to navigate to the appropriate version that you are currently running. + +#### 5. Update CRDs + + When you uninstall the Stash Operator, it does not remove the old CRDs. Upgrade them to the latest version using the following commands: + +```bash +# Update Stash Catalog CRDs +$ kubectl apply -f https://github.com/stashed/installer/raw/{{< param "info.installer" >}}/crds/stash-catalog-crds.yaml +``` + +#### 4. Reinstall new Stash Operator + +Now, follow the latest installation guide to install the new version of the Stash operator. You can find the latest installation guide [here](/docs/v2024.8.27/setup/README). + +#### 5. Update Task Name in BackupConfiguration + +Stash `v0.12.x` has dropped the `v1`, `v2`, etc. suffix of `Task` name to make it easier to upgrade in future versions. In the future, when you upgrade the Stash operator, you will no longer need to update the `Task` name in the existing BackupConfigurations. However, for upgrading from `v0.11.x` to you `v0.12.x`, you have to update the `Task` name of your existing BackupConfigurations for one last time. + +Please, remove the `-vX` suffix from the `spec.task.name` filed of any existing BackupConfiguration. Use the following command to edit the BackupConfiguration, + +```bash +kubectl edit -n +``` + +For example, here is an example of `spec.task` section before and after the update. + +```bash +# Before Update + task: + name: mysql-backup-8.0.27 # remove '-v1' part +``` + +```bash +# After update. + task: + name: mysql-backup-8.0.21 +``` + +>If you are using KubeDB to manage your databases, you can remove the `spec.task` section entirely. KubeDB catalogs now include the respective addon information for each database version. Stash will read the addon information from there. You no longer have to worry about what addon to use with which database version. + +#### 6. Resume Backup + +Finally, you can resume the backups that you have paused before starting the upgrade process. You can resume backup by setting `spec.paused` field of respective `BackupConfiguration` to `false` as below, + +```bash +kubectl patch backupconfiguration -n --type="merge" --patch='{"spec": {"paused": false}}' +``` + +## Updating License + +Stash support updating license without requiring any re-installation. Stash creates a Secret named `-license` with the license file. You just need to update the Secret. The changes will propagate automatically to the operator and it will use the updated license going forward. + +Follow the below instructions to update the license: + +- Get a new license and save it into a file. +- Then, run the following upgrade command based on your installation. + + +
+
+ +#### Using Helm 3 + +```bash +# detect current version +helm ls -A | grep stash + +# update license key keeping the current version +helm upgrade stash oci://ghcr.io/appscode-charts/stash \ + --version= \ + --namespace stash --create-namespace \ + --reuse-values \ + --set-file global.license=/path/to/new/license.txt \ + --wait --burst-limit=10000 --debug +``` + +
+
+ +#### Using YAML (with helm 3) + +```bash +# detect current version +helm ls -A | grep stash + +# update license key keeping the current version +helm template stash oci://ghcr.io/appscode-charts/stash \ + --version= \ + --namespace stash --create-namespace \ + --set features.enterprise=true \ + --set global.skipCleaner=true \ + --show-only appscode/stash-enterprise/templates/license.yaml \ + --set-file global.license=/path/to/new/license.txt | kubectl apply -f - +``` + +
+
+ +## Upgrading from 0.9.x to v2020.x.x + +If you are upgrading from `0.9.x` which did not use license verification to the new `v2020.x.x`, you have to first uninstall the old version. Then, you have to re-install the new version. + +If you are upgrading from `0.9.x` to `v2020.x.x` Community edition, please note that the following features are only available in Enterprise edition: + +- **Auto-Backup:** Auto-backup is now an enterprise feature. You won't be able to setup any new backup using auto-backup. However, your existing auto-backup resources should keep functioning. +- **Batch Backup:** Batch backup and restore is also now an enterprise feature. You won't be able to create any new backup using batch-backup. However, your existing backup should continue to work and you would be able to restore the data that were backed up using BatchBackup. +- **Local Backend:** Local backend now is an enterprise feature. If you are using any Kubernetes volume (i.e. NFS, PVC, HostPath, etc.) as backend, you won't be able to create any new backup using those backends. However, your existing backup that uses the sidecar model should keep functioning. You have to use the Enterprise edition to restore the backed-up data. If you are interested in purchasing an Enterprise license, please contact us via sales@appscode.com for further discussion. You can also set up a meeting via our [calendly link](https://calendly.com/appscode/intro). + +If you are using any Stash addons, you might need to update the `Task` name in your `BackupConfiguration` to comply with the new naming scheme of the `Function` and `Task`. diff --git a/content/docs/v2024.8.27/support.md b/content/docs/v2024.8.27/support.md new file mode 100644 index 0000000000..767a8a04aa --- /dev/null +++ b/content/docs/v2024.8.27/support.md @@ -0,0 +1,87 @@ +--- +title: Support | Stash +description: Support +menu: + docs_v2024.8.27: + identifier: support-stash + name: Support + parent: welcome + weight: 1020 +product_name: stash +menu_name: docs_v2024.8.27 +section_menu_id: welcome +url: /docs/v2024.8.27/welcome/support/ +aliases: +- /docs/v2024.8.27/support/ +info: + cli: v0.35.0 + community: v0.35.0 + elasticsearch: + - 5.6.4-v32 + - 6.2.4-v32 + - 6.3.0-v32 + - 6.4.0-v32 + - 6.5.3-v32 + - 6.8.0-v32 + - 7.14.0-v18 + - 7.2.0-v32 + - 7.3.2-v32 + - 8.2.0-v15 + enterprise: v0.35.0 + etcd: + - 3.5.0-v19 + installer: v2024.8.27 + kubedump: + - 0.1.0-v15 + mariadb: + - 10.5.8-v26 + mongodb: + - 3.4.17-v32 + - 3.4.22-v32 + - 3.6.13-v32 + - 3.6.8-v32 + - 4.0.11-v32 + - 4.0.3-v32 + - 4.0.5-v32 + - 4.1.13-v32 + - 4.1.4-v32 + - 4.1.7-v32 + - 4.2.3-v32 + - 4.4.6-v23 + - 5.0.15-v5 + - 5.0.3-v20 + - 6.0.5-v8 + mysql: + - 5.7.25-v32 + - 8.0.14-v32 + - 8.0.21-v26 + - 8.0.3-v32 + nats: + - 2.6.1-v20 + - 2.8.2-v15 + percona-xtradb: + - 5.7-v27 + postgres: + - 10.14-v31 + - 11.9-v31 + - 12.4-v31 + - 13.1-v28 + - 14.0-v20 + - 15.1-v12 + - 16.1-v1 + - 9.6.19-v31 + redis: + - 5.0.13-v20 + - 6.2.5-v20 + - 7.0.5-v13 + ui-server: v0.16.0 + vault: + - 1.10.3-v12 + version: v2024.8.27 +--- + +# Support + +To speak with us, please leave a message on [our website](https://appscode.com/contact/). To receive product announcements, follow us on [Twitter](https://twitter.com/KubeStash). + +If you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/project/issues/new). diff --git a/data/products/kubedb.json b/data/products/kubedb.json index 8175fa25a0..53c651f751 100644 --- a/data/products/kubedb.json +++ b/data/products/kubedb.json @@ -156,6 +156,67 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.8.21", + "hostDocs": true, + "show": true, + "info": { + "autoscaler": "v0.32.0", + "cli": "v0.47.0", + "dashboard": "v0.23.0", + "installer": "v2024.8.21", + "ops-manager": "v0.34.0", + "provisioner": "v0.47.0", + "schema-manager": "v0.23.0", + "ui-server": "v0.23.0", + "webhook-server": "v0.23.0" + } + }, + { + "version": "v2024.8.14-rc.3", + "hostDocs": true, + "info": { + "autoscaler": "v0.32.0-rc.3", + "cli": "v0.47.0-rc.3", + "dashboard": "v0.23.0-rc.3", + "installer": "v2024.8.14-rc.3", + "ops-manager": "v0.34.0-rc.3", + "provisioner": "v0.47.0-rc.3", + "schema-manager": "v0.23.0-rc.3", + "ui-server": "v0.23.0-rc.3", + "webhook-server": "v0.23.0-rc.3" + } + }, + { + "version": "v2024.8.2-rc.2", + "hostDocs": true, + "info": { + "autoscaler": "v0.32.0-rc.2", + "cli": "v0.47.0-rc.2", + "dashboard": "v0.23.0-rc.2", + "installer": "v2024.8.2-rc.2", + "ops-manager": "v0.34.0-rc.2", + "provisioner": "v0.47.0-rc.2", + "schema-manager": "v0.23.0-rc.2", + "ui-server": "v0.23.0-rc.2", + "webhook-server": "v0.23.0-rc.2" + } + }, + { + "version": "v2024.7.11-rc.1", + "hostDocs": true, + "info": { + "autoscaler": "v0.32.0-rc.1", + "cli": "v0.47.0-rc.1", + "dashboard": "v0.23.0-rc.1", + "installer": "v2024.7.11-rc.1", + "ops-manager": "v0.34.0-rc.1", + "provisioner": "v0.47.0-rc.1", + "schema-manager": "v0.23.0-rc.1", + "ui-server": "v0.23.0-rc.1", + "webhook-server": "v0.23.0-rc.1" + } + }, { "version": "v2024.7.3-rc.0", "hostDocs": true, @@ -1065,7 +1126,7 @@ "hostDocs": false } ], - "latestVersion": "v2024.6.4", + "latestVersion": "v2024.8.21", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubedb", diff --git a/data/products/kubedb/databases/druid.json b/data/products/kubedb/databases/druid.json index 6246ac0cc9..c98ba0db09 100644 --- a/data/products/kubedb/databases/druid.json +++ b/data/products/kubedb/databases/druid.json @@ -67,16 +67,11 @@ "name": "deep-storage-config" } }, - "metadataStorage": { - "name": "mysql", - "namespace": "demo", - "createTables": true - }, - "zookeeperRef": { - "name": "zookeeper", - "namespace": "demo" - }, - "topology": {} + "topology": { + "routers": { + "replicas": 1 + } + } } } } diff --git a/data/products/kubedb/databases/elasticsearch.json b/data/products/kubedb/databases/elasticsearch.json index a3b6968ab8..396c1c35bd 100644 --- a/data/products/kubedb/databases/elasticsearch.json +++ b/data/products/kubedb/databases/elasticsearch.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Elasticsearch", "metadata": { "name": "es-demo", @@ -75,7 +75,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/kafka.json b/data/products/kubedb/databases/kafka.json index 8cbaa69a0e..0dfa7f91eb 100644 --- a/data/products/kubedb/databases/kafka.json +++ b/data/products/kubedb/databases/kafka.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Kafka", "metadata": { "name": "kafka", diff --git a/data/products/kubedb/databases/mariadb.json b/data/products/kubedb/databases/mariadb.json index 1fda5c62b9..77245a49c6 100644 --- a/data/products/kubedb/databases/mariadb.json +++ b/data/products/kubedb/databases/mariadb.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "MariaDB", "metadata": { "name": "mariadb-demo", @@ -73,7 +73,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/memcached.json b/data/products/kubedb/databases/memcached.json index eafc6a19ef..c5afb268dc 100644 --- a/data/products/kubedb/databases/memcached.json +++ b/data/products/kubedb/databases/memcached.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Memcached", "metadata": { "name": "memcd-demo", @@ -76,7 +76,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/mongodb.json b/data/products/kubedb/databases/mongodb.json index 5f4258e56c..cea1bed6a5 100644 --- a/data/products/kubedb/databases/mongodb.json +++ b/data/products/kubedb/databases/mongodb.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "MongoDB", "metadata": { "name": "mongo-demo", @@ -73,7 +73,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/mysql.json b/data/products/kubedb/databases/mysql.json index 38abeba0f2..aeeb1c5063 100644 --- a/data/products/kubedb/databases/mysql.json +++ b/data/products/kubedb/databases/mysql.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "MySQL", "metadata": { "name": "mysql-demo", @@ -73,7 +73,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/opensearch.json b/data/products/kubedb/databases/opensearch.json index 8bc7e57152..c34b096c8f 100644 --- a/data/products/kubedb/databases/opensearch.json +++ b/data/products/kubedb/databases/opensearch.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Elasticsearch", "metadata": { "name": "opensearch-demo", @@ -75,7 +75,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } diff --git a/data/products/kubedb/databases/perconaxtradb.json b/data/products/kubedb/databases/perconaxtradb.json index ef07bdae40..be5b6edd45 100644 --- a/data/products/kubedb/databases/perconaxtradb.json +++ b/data/products/kubedb/databases/perconaxtradb.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "PerconaXtraDB", "metadata": { "name": "xtradb-demo", @@ -74,7 +74,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/pgbouncer.json b/data/products/kubedb/databases/pgbouncer.json index b29803b3b8..dfafec1cf5 100644 --- a/data/products/kubedb/databases/pgbouncer.json +++ b/data/products/kubedb/databases/pgbouncer.json @@ -43,7 +43,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "PgBouncer", "metadata": { "name": "pgbouncer-demo", @@ -73,7 +73,7 @@ "userListSecretRef": { "name": "db-user-pass" }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } diff --git a/data/products/kubedb/databases/postgresql.json b/data/products/kubedb/databases/postgresql.json index 862f5be032..dc43d6ff68 100644 --- a/data/products/kubedb/databases/postgresql.json +++ b/data/products/kubedb/databases/postgresql.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Postgres", "metadata": { "name": "pg-demo", @@ -73,7 +73,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/proxysql.json b/data/products/kubedb/databases/proxysql.json index 6474f161de..8642f26153 100644 --- a/data/products/kubedb/databases/proxysql.json +++ b/data/products/kubedb/databases/proxysql.json @@ -41,7 +41,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "ProxySQL", "metadata": { "name": "proxy-demo", @@ -59,7 +59,7 @@ }, "replicas": 3 }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/redis.json b/data/products/kubedb/databases/redis.json index 2981c011c5..65c8e9405f 100644 --- a/data/products/kubedb/databases/redis.json +++ b/data/products/kubedb/databases/redis.json @@ -53,7 +53,7 @@ } ], "example": { - "apiVersion": "kubedb.com/v1alpha2", + "apiVersion": "kubedb.com/v1", "kind": "Redis", "metadata": { "name": "redis-demo", @@ -74,7 +74,7 @@ } } }, - "terminationPolicy": "Delete" + "deletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/data/products/kubedb/databases/solr.json b/data/products/kubedb/databases/solr.json index bc41496de3..1c05f4c483 100644 --- a/data/products/kubedb/databases/solr.json +++ b/data/products/kubedb/databases/solr.json @@ -61,7 +61,7 @@ }, "spec": { "version": "9.4.1", - "terminationPolicy": "Delete", + "deletionPolicy": "Delete", "replicas": 3, "zookeeperRef": { "name": "zk-ensemble", diff --git a/data/products/kubestash.json b/data/products/kubestash.json index d5c35c2b2f..8ebd956198 100644 --- a/data/products/kubestash.json +++ b/data/products/kubestash.json @@ -176,6 +176,15 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.8.14", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.10.0", + "installer": "v2024.8.14" + } + }, { "version": "v2024.7.1", "hostDocs": true, @@ -213,7 +222,7 @@ } } ], - "latestVersion": "v2024.7.1", + "latestVersion": "v2024.8.14", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubestash", diff --git a/data/products/stash-cli.json b/data/products/stash-cli.json index d3f346ecec..c35c800929 100644 --- a/data/products/stash-cli.json +++ b/data/products/stash-cli.json @@ -22,6 +22,87 @@ "hostDocs": false, "show": true }, + { + "version": "v0.35.0", + "hostDocs": true, + "show": true, + "info": { + "stash": "v2024.8.27", + "stash-community": "v0.35.0", + "stash-elasticsearch": [ + "5.6.4-v32", + "6.2.4-v32", + "6.3.0-v32", + "6.4.0-v32", + "6.5.3-v32", + "6.8.0-v32", + "7.14.0-v18", + "7.2.0-v32", + "7.3.2-v32", + "8.2.0-v15" + ], + "stash-enterprise": "v0.35.0", + "stash-etcd": [ + "3.5.0-v19" + ], + "stash-installer": "v2024.8.27", + "stash-kubedump": [ + "0.1.0-v15" + ], + "stash-mariadb": [ + "10.5.8-v26" + ], + "stash-mongodb": [ + "3.4.17-v32", + "3.4.22-v32", + "3.6.13-v32", + "3.6.8-v32", + "4.0.11-v32", + "4.0.3-v32", + "4.0.5-v32", + "4.1.13-v32", + "4.1.4-v32", + "4.1.7-v32", + "4.2.3-v32", + "4.4.6-v23", + "5.0.15-v5", + "5.0.3-v20", + "6.0.5-v8" + ], + "stash-mysql": [ + "5.7.25-v32", + "8.0.14-v32", + "8.0.21-v26", + "8.0.3-v32" + ], + "stash-nats": [ + "2.6.1-v20", + "2.8.2-v15" + ], + "stash-perconaxtradb": [ + "5.7-v27" + ], + "stash-postgres": [ + "10.14-v31", + "11.9-v31", + "12.4-v31", + "13.1-v28", + "14.0-v20", + "15.1-v12", + "16.1-v1", + "9.6.19-v31" + ], + "stash-redis": [ + "5.0.13-v20", + "6.2.5-v20", + "7.0.5-v13" + ], + "stash-ui-server": "v0.16.0", + "stash-vault": [ + "1.10.3-v12" + ] + } + }, { "version": "v0.34.0", "hostDocs": true, @@ -2424,5 +2505,5 @@ "show": true } ], - "latestVersion": "v0.34.0" + "latestVersion": "v0.35.0" } diff --git a/data/products/stash-elasticsearch.json b/data/products/stash-elasticsearch.json index 8d39990550..fb6548ab48 100644 --- a/data/products/stash-elasticsearch.json +++ b/data/products/stash-elasticsearch.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "8.2.0-v15", + "hostDocs": true, + "show": true + }, { "version": "8.2.0-v14", "hostDocs": true, @@ -97,6 +102,11 @@ "hostDocs": true, "show": true }, + { + "version": "7.14.0-v18", + "hostDocs": true, + "show": true + }, { "version": "7.14.0-v17", "hostDocs": true, @@ -182,6 +192,11 @@ "hostDocs": true, "show": true }, + { + "version": "7.3.2-v32", + "hostDocs": true, + "show": true + }, { "version": "7.3.2-v31", "hostDocs": true, @@ -359,6 +374,11 @@ "hostDocs": true, "show": true }, + { + "version": "7.2.0-v32", + "hostDocs": true, + "show": true + }, { "version": "7.2.0-v31", "hostDocs": true, @@ -536,6 +556,11 @@ "hostDocs": true, "show": true }, + { + "version": "6.8.0-v32", + "hostDocs": true, + "show": true + }, { "version": "6.8.0-v31", "hostDocs": true, @@ -713,6 +738,11 @@ "hostDocs": true, "show": true }, + { + "version": "6.5.3-v32", + "hostDocs": true, + "show": true + }, { "version": "6.5.3-v31", "hostDocs": true, @@ -890,6 +920,11 @@ "hostDocs": true, "show": true }, + { + "version": "6.4.0-v32", + "hostDocs": true, + "show": true + }, { "version": "6.4.0-v31", "hostDocs": true, @@ -1067,6 +1102,11 @@ "hostDocs": true, "show": true }, + { + "version": "6.3.0-v32", + "hostDocs": true, + "show": true + }, { "version": "6.3.0-v31", "hostDocs": true, @@ -1244,6 +1284,11 @@ "hostDocs": true, "show": true }, + { + "version": "6.2.4-v32", + "hostDocs": true, + "show": true + }, { "version": "6.2.4-v31", "hostDocs": true, @@ -1421,6 +1466,11 @@ "hostDocs": true, "show": true }, + { + "version": "5.6.4-v32", + "hostDocs": true, + "show": true + }, { "version": "5.6.4-v31", "hostDocs": true, @@ -1599,5 +1649,5 @@ "show": true } ], - "latestVersion": "8.2.0-v14" + "latestVersion": "8.2.0-v15" } diff --git a/data/products/stash-etcd.json b/data/products/stash-etcd.json index 5ccb61d0c3..7110902ecc 100644 --- a/data/products/stash-etcd.json +++ b/data/products/stash-etcd.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "3.5.0-v19", + "hostDocs": true, + "show": true + }, { "version": "3.5.0-v18", "hostDocs": true, @@ -118,5 +123,5 @@ "show": true } ], - "latestVersion": "3.5.0-v18" + "latestVersion": "3.5.0-v19" } diff --git a/data/products/stash-kubedump.json b/data/products/stash-kubedump.json index ce75904086..0684501a4d 100644 --- a/data/products/stash-kubedump.json +++ b/data/products/stash-kubedump.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "0.1.0-v15", + "hostDocs": true, + "show": true + }, { "version": "0.1.0-v14", "hostDocs": true, @@ -98,5 +103,5 @@ "show": true } ], - "latestVersion": "0.1.0-v14" + "latestVersion": "0.1.0-v15" } diff --git a/data/products/stash-mariadb.json b/data/products/stash-mariadb.json index 8a10cebe7a..66a0861d7c 100644 --- a/data/products/stash-mariadb.json +++ b/data/products/stash-mariadb.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "10.5.8-v26", + "hostDocs": true, + "show": true + }, { "version": "10.5.8-v25", "hostDocs": true, @@ -148,5 +153,5 @@ "show": true } ], - "latestVersion": "10.5.8-v25" + "latestVersion": "10.5.8-v26" } diff --git a/data/products/stash-mongodb.json b/data/products/stash-mongodb.json index fd099a2180..d43411773c 100644 --- a/data/products/stash-mongodb.json +++ b/data/products/stash-mongodb.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "6.0.5-v8", + "hostDocs": true, + "show": true + }, { "version": "6.0.5-v7", "hostDocs": true, @@ -59,6 +64,11 @@ "version": "6.0.5-v1", "hostDocs": true }, + { + "version": "5.0.15-v5", + "hostDocs": true, + "show": true + }, { "version": "5.0.15-v4", "hostDocs": true, @@ -83,6 +93,11 @@ "version": "5.0.15", "hostDocs": true }, + { + "version": "5.0.3-v20", + "hostDocs": true, + "show": true + }, { "version": "5.0.3-v19", "hostDocs": true, @@ -178,6 +193,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.4.6-v23", + "hostDocs": true, + "show": true + }, { "version": "4.4.6-v22", "hostDocs": true, @@ -288,6 +308,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.2.3-v32", + "hostDocs": true, + "show": true + }, { "version": "4.2.3-v31", "hostDocs": true, @@ -465,6 +490,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.1.13-v32", + "hostDocs": true, + "show": true + }, { "version": "4.1.13-v31", "hostDocs": true, @@ -620,6 +650,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.1.7-v32", + "hostDocs": true, + "show": true + }, { "version": "4.1.7-v31", "hostDocs": true, @@ -797,6 +832,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.1.4-v32", + "hostDocs": true, + "show": true + }, { "version": "4.1.4-v31", "hostDocs": true, @@ -996,6 +1036,11 @@ "version": "4.1.1-beta.20200708", "hostDocs": true }, + { + "version": "4.0.11-v32", + "hostDocs": true, + "show": true + }, { "version": "4.0.11-v31", "hostDocs": true, @@ -1161,6 +1206,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.0.5-v32", + "hostDocs": true, + "show": true + }, { "version": "4.0.5-v31", "hostDocs": true, @@ -1338,6 +1388,11 @@ "hostDocs": true, "show": true }, + { + "version": "4.0.3-v32", + "hostDocs": true, + "show": true + }, { "version": "4.0.3-v31", "hostDocs": true, @@ -1527,6 +1582,11 @@ "version": "4.0.1-beta.20200708", "hostDocs": true }, + { + "version": "3.6.13-v32", + "hostDocs": true, + "show": true + }, { "version": "3.6.13-v31", "hostDocs": true, @@ -1682,6 +1742,11 @@ "hostDocs": true, "show": true }, + { + "version": "3.6.8-v32", + "hostDocs": true, + "show": true + }, { "version": "3.6.8-v31", "hostDocs": true, @@ -1881,6 +1946,11 @@ "version": "3.6.1-beta.20200708", "hostDocs": true }, + { + "version": "3.4.22-v32", + "hostDocs": true, + "show": true + }, { "version": "3.4.22-v31", "hostDocs": true, @@ -2036,6 +2106,11 @@ "hostDocs": true, "show": true }, + { + "version": "3.4.17-v32", + "hostDocs": true, + "show": true + }, { "version": "3.4.17-v31", "hostDocs": true, @@ -2236,5 +2311,5 @@ "hostDocs": true } ], - "latestVersion": "6.0.5-v7" + "latestVersion": "6.0.5-v8" } diff --git a/data/products/stash-mysql.json b/data/products/stash-mysql.json index 166d5dd552..5536e5e900 100644 --- a/data/products/stash-mysql.json +++ b/data/products/stash-mysql.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "8.0.21-v26", + "hostDocs": true, + "show": true + }, { "version": "8.0.21-v25", "hostDocs": true, @@ -152,6 +157,11 @@ "hostDocs": true, "show": true }, + { + "version": "8.0.14-v32", + "hostDocs": true, + "show": true + }, { "version": "8.0.14-v31", "hostDocs": true, @@ -329,6 +339,11 @@ "hostDocs": true, "show": true }, + { + "version": "8.0.3-v32", + "hostDocs": true, + "show": true + }, { "version": "8.0.3-v31", "hostDocs": true, @@ -506,6 +521,11 @@ "hostDocs": true, "show": true }, + { + "version": "5.7.25-v32", + "hostDocs": true, + "show": true + }, { "version": "5.7.25-v31", "hostDocs": true, @@ -684,5 +704,5 @@ "show": true } ], - "latestVersion": "8.0.21-v25" + "latestVersion": "8.0.21-v26" } diff --git a/data/products/stash-nats.json b/data/products/stash-nats.json index db88318311..3e531d4c6d 100644 --- a/data/products/stash-nats.json +++ b/data/products/stash-nats.json @@ -27,6 +27,11 @@ "hostDocs": false, "show": true }, + { + "version": "2.8.2-v15", + "hostDocs": true, + "show": true + }, { "version": "2.8.2-v14", "hostDocs": true, @@ -97,6 +102,11 @@ "hostDocs": true, "show": true }, + { + "version": "2.6.1-v20", + "hostDocs": true, + "show": true + }, { "version": "2.6.1-v19", "hostDocs": true, @@ -193,5 +203,5 @@ "show": true } ], - "latestVersion": "2.8.2-v14" + "latestVersion": "2.8.2-v15" } diff --git a/data/products/stash-postgres.json b/data/products/stash-postgres.json index 400575f23d..ab4e529a00 100644 --- a/data/products/stash-postgres.json +++ b/data/products/stash-postgres.json @@ -27,11 +27,21 @@ "hostDocs": false, "show": true }, + { + "version": "16.1-v1", + "hostDocs": true, + "show": true + }, { "version": "16.1", "hostDocs": true, "show": true }, + { + "version": "15.1-v12", + "hostDocs": true, + "show": true + }, { "version": "15.1-v11", "hostDocs": true, @@ -87,6 +97,11 @@ "hostDocs": true, "show": true }, + { + "version": "14.0-v20", + "hostDocs": true, + "show": true + }, { "version": "14.0-v19", "hostDocs": true, @@ -182,6 +197,11 @@ "hostDocs": true, "show": true }, + { + "version": "13.1-v28", + "hostDocs": true, + "show": true + }, { "version": "13.1-v27", "hostDocs": true, @@ -322,6 +342,11 @@ "hostDocs": true, "show": true }, + { + "version": "12.4-v31", + "hostDocs": true, + "show": true + }, { "version": "12.4-v30", "hostDocs": true, @@ -477,6 +502,11 @@ "hostDocs": true, "show": true }, + { + "version": "11.9-v31", + "hostDocs": true, + "show": true + }, { "version": "11.9-v30", "hostDocs": true, @@ -696,6 +726,11 @@ "hostDocs": true, "show": true }, + { + "version": "10.14-v31", + "hostDocs": true, + "show": true + }, { "version": "10.14-v30", "hostDocs": true, @@ -915,6 +950,11 @@ "hostDocs": true, "show": true }, + { + "version": "9.6.19-v31", + "hostDocs": true, + "show": true + }, { "version": "9.6.19-v30", "hostDocs": true, @@ -1098,5 +1138,5 @@ "show": true } ], - "latestVersion": "16.1" + "latestVersion": "16.1-v1" } diff --git a/data/products/stash.json b/data/products/stash.json index 05446299fb..3ce5efde4e 100644 --- a/data/products/stash.json +++ b/data/products/stash.json @@ -181,6 +181,87 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.8.27", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.35.0", + "community": "v0.35.0", + "elasticsearch": [ + "5.6.4-v32", + "6.2.4-v32", + "6.3.0-v32", + "6.4.0-v32", + "6.5.3-v32", + "6.8.0-v32", + "7.14.0-v18", + "7.2.0-v32", + "7.3.2-v32", + "8.2.0-v15" + ], + "enterprise": "v0.35.0", + "etcd": [ + "3.5.0-v19" + ], + "installer": "v2024.8.27", + "kubedump": [ + "0.1.0-v15" + ], + "mariadb": [ + "10.5.8-v26" + ], + "mongodb": [ + "3.4.17-v32", + "3.4.22-v32", + "3.6.13-v32", + "3.6.8-v32", + "4.0.11-v32", + "4.0.3-v32", + "4.0.5-v32", + "4.1.13-v32", + "4.1.4-v32", + "4.1.7-v32", + "4.2.3-v32", + "4.4.6-v23", + "5.0.15-v5", + "5.0.3-v20", + "6.0.5-v8" + ], + "mysql": [ + "5.7.25-v32", + "8.0.14-v32", + "8.0.21-v26", + "8.0.3-v32" + ], + "nats": [ + "2.6.1-v20", + "2.8.2-v15" + ], + "percona-xtradb": [ + "5.7-v27" + ], + "postgres": [ + "10.14-v31", + "11.9-v31", + "12.4-v31", + "13.1-v28", + "14.0-v20", + "15.1-v12", + "16.1-v1", + "9.6.19-v31" + ], + "redis": [ + "5.0.13-v20", + "6.2.5-v20", + "7.0.5-v13" + ], + "ui-server": "v0.16.0", + "vault": [ + "1.10.3-v12" + ] + } + }, { "version": "v2024.4.8", "hostDocs": true, @@ -2929,7 +3010,7 @@ "hostDocs": false } ], - "latestVersion": "v2024.4.8", + "latestVersion": "v2024.8.27", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/stashed", diff --git a/firebase.bk.json b/firebase.bk.json index 6ff3482cc4..cb2e6678ca 100644 --- a/firebase.bk.json +++ b/firebase.bk.json @@ -44,17 +44,17 @@ "redirects": [ { "source": "/docs/latest/", - "destination": "/docs/v2024.2.13/", + "destination": "/docs/v2024.4.8/", "type": 302 }, { "source": "/docs/latest/:rest*", - "destination": "/docs/v2024.2.13/:rest", + "destination": "/docs/v2024.4.8/:rest", "type": 302 }, { "source": "/docs", - "destination": "/docs/v2024.2.13/", + "destination": "/docs/v2024.4.8/", "type": 302 } ] diff --git a/firebase.json b/firebase.json index cb2e6678ca..fd70ac90af 100644 --- a/firebase.json +++ b/firebase.json @@ -44,17 +44,17 @@ "redirects": [ { "source": "/docs/latest/", - "destination": "/docs/v2024.4.8/", + "destination": "/docs/v2024.8.27/", "type": 302 }, { "source": "/docs/latest/:rest*", - "destination": "/docs/v2024.4.8/:rest", + "destination": "/docs/v2024.8.27/:rest", "type": 302 }, { "source": "/docs", - "destination": "/docs/v2024.4.8/", + "destination": "/docs/v2024.8.27/", "type": 302 } ] diff --git a/layouts/shortcodes/catalogtable.html b/layouts/shortcodes/catalogtable.html deleted file mode 100644 index d5b7a979f0..0000000000 --- a/layouts/shortcodes/catalogtable.html +++ /dev/null @@ -1,24 +0,0 @@ -{{/* - Usage: Render of a table of Stash addons - Format: {{% catalogtable "addon1" "addon2" "addon3" %}} -*/}} - - - - - - - - - - -{{- range $p := sort (index .Params) }} -{{- $versions := sort (index $.Page.Params "info" $p) -}} - - - - - -{{- end }} - -
AddonsUsageAvailable Versions
stash-{{ lower $p }}Stash {{ title $p }} plugin{{ index $versions 0 }}{{ range after 1 $versions }}, {{.}}{{ end }}
diff --git a/layouts/shortcodes/code.html b/layouts/shortcodes/code.html deleted file mode 100644 index d666de3518..0000000000 --- a/layouts/shortcodes/code.html +++ /dev/null @@ -1,24 +0,0 @@ -
-
- -
- - -
-
- {{.Inner | markdownify}} -
diff --git a/layouts/shortcodes/notice.html b/layouts/shortcodes/notice.html deleted file mode 100644 index e052ee044e..0000000000 --- a/layouts/shortcodes/notice.html +++ /dev/null @@ -1,13 +0,0 @@ -{{/* - Usage: Show notice on a page. - Format: {{< notice type="notice-type" message="Your message" >}} - Available types: [warning, danger, success, info, dark, primary, link] - Ref: https://bulma.io/documentation/components/message/ -*/}} - - -
-
- {{- .Get "message" | markdownify -}} {{/* Use `markdownify` to render any markdown syntax of message */}} -
-
diff --git a/layouts/shortcodes/versionlist.html b/layouts/shortcodes/versionlist.html deleted file mode 100644 index 64f5c06240..0000000000 --- a/layouts/shortcodes/versionlist.html +++ /dev/null @@ -1,14 +0,0 @@ -{{/* - Usage: List all versions of a sub project. - Format: {{% versionlist "project-key" "link format used with printf" %}} -*/}} - -{{ $p := .Get 0 }} -{{ $fmt := .Get 1 }} -{{ with sort (index $.Page.Params "info" $p) }} - -{{ end }}