From cba54795a321851d3103dd841738545b8e4326ec Mon Sep 17 00:00:00 2001 From: anisurrahman75 Date: Thu, 28 Dec 2023 18:40:16 +0600 Subject: [PATCH] add setup and install Signed-off-by: Anisur Rahman --- docs/setup/README.md | 31 +++ docs/setup/_index.md | 9 + docs/setup/install/_index.md | 11 + .../images/enterprise_license_form.png | Bin 0 -> 39737 bytes docs/setup/install/kubestash/index.md | 191 ++++++++++++++++++ 5 files changed, 242 insertions(+) create mode 100644 docs/setup/README.md create mode 100644 docs/setup/_index.md create mode 100644 docs/setup/install/_index.md create mode 100644 docs/setup/install/kubestash/images/enterprise_license_form.png create mode 100644 docs/setup/install/kubestash/index.md diff --git a/docs/setup/README.md b/docs/setup/README.md new file mode 100644 index 0000000..c3ab8dc --- /dev/null +++ b/docs/setup/README.md @@ -0,0 +1,31 @@ +--- +title: Setup | KubeStash +description: Setup guides for KubeStash by AppsCode +menu: + docs_{{ .version }}: + identifier: setup-readme + name: Readme + parent: setup + weight: -1 +product_name: kubestash +menu_name: docs_{{ .version }} +section_menu_id: setup +url: /docs/{{ .version }}/setup/ +aliases: + - /docs/{{ .version }}/setup/README/ +--- + +# Setup + +The setup section contains instructions for installing the KubeStash and its various components in Kubernetes. This section has been divided into the following sub-sections: + +- **Install KubeStash:** Installation instructions for KubeStash and its various components. + - [Install KubeStash](): Installation instructions for KubeStash. + - [KubeStash kubectl Plugin](): Installation instructions for KubeStash `kubectl` plugin. + - [Troubleshooting](): Troubleshooting guide for various installation problems. +- **Uninstall KubeStash:** Uninstallation instructions for KubeStash and its various components. + - [Uninstall KubeStash](): Uninstallation instructions for Stash Enterprise Edition. + - [KubeStash kubectl Plugin](): Uninstallation instructions for KubeStash `kubectl` plugin. +- [Upgrading KubeStash](): Instruction for updating KubeStash license and upgrading between various KubeStash versions. + + \ No newline at end of file diff --git a/docs/setup/_index.md b/docs/setup/_index.md new file mode 100644 index 0000000..f1c8515 --- /dev/null +++ b/docs/setup/_index.md @@ -0,0 +1,9 @@ +--- +title: Setup | KubeStash +menu: + docs_{{ .version }}: + identifier: setup + name: Setup + weight: 30 +menu_name: docs_{{ .version }} +--- diff --git a/docs/setup/install/_index.md b/docs/setup/install/_index.md new file mode 100644 index 0000000..9e9a3db --- /dev/null +++ b/docs/setup/install/_index.md @@ -0,0 +1,11 @@ +--- +title: Installation Guide | KubeStash +description: KubeStash Installation Guide +menu: + docs_{{ .version }}: + identifier: installation-guide + name: Install + parent: setup + weight: 10 +menu_name: docs_{{ .version }} +--- diff --git a/docs/setup/install/kubestash/images/enterprise_license_form.png b/docs/setup/install/kubestash/images/enterprise_license_form.png new file mode 100644 index 0000000000000000000000000000000000000000..330d1cb7fc4a4bfbaf5835c19ccfe9fee86731ea GIT binary patch literal 39737 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 literal 0 HcmV?d00001 diff --git a/docs/setup/install/kubestash/index.md b/docs/setup/install/kubestash/index.md new file mode 100644 index 0000000..cd7fb5c --- /dev/null +++ b/docs/setup/install/kubestash/index.md @@ -0,0 +1,191 @@ +--- +title: Install KubeStash +description: Installation guide for KubeStash +menu: + docs_{{ .version }}: + identifier: install-kubestash + name: KubeStash + parent: installation-guide + weight: 20 +product_name: kubestash +menu_name: docs_{{ .version }} +section_menu_id: setup +--- + +# Install KubeStash + +If you are willing to try KubeStash, you can grab a **30 days trial** license from [here](https://license-issuer.appscode.com/?p=kubestash). + +## Prerequisites + +- **Kubernetes version**: KubeStash is compatible with any Kubernetes cluster with version `1.16` or later. +- **Extended API server**: Your cluster needs to support Kubernetes extended API server. +- **Webhook support**: Your cluster must support Kubernetes validation and mutation webhooks. +- **RBAC permissions**: KubeStash operator needs a few RBAC permissions on your cluster. You can find the list of the required RBAC permissions [here](). +- **Installing on GKE cluster**: To install KubeStash on your GKE cluster, please check the requirements [here](). +- **NFS volume**: If you are willing to use NFS volume as a backend, you need to customize the KubeStash installation like [here](). + + +## Get a Trial License + + +In this section, we are going to show you how you can get a **30 days trial** license for KubeStash. You can get a license for your Kubernetes cluster by going through the following steps: + + +- At first, go to [AppsCode License Server](https://license-issuer.appscode.com/?p=stash-enterprise) and fill up the form. It will ask for your Name, Email, the product you want to install, and your cluster ID (UID of the `kube-system` namespace). +- Provide your name and email address. **You must provide your work email address**. +- Then, select `KubeStash License` in the product field. +- Now, provide your cluster ID. You can get your cluster ID easily by running the following command: + + +```bash +kubectl get ns kube-system -o=jsonpath='{.metadata.uid}' +``` + + +- Then, you have to agree with the terms and conditions. We recommend reading it before checking the box. +- Now, you can submit the form. After you submit the form, the AppsCode License server will send an email to the provided email address with a link to your license file. +- Navigate to the provided link and save the license into a file. Here, we save the license to a `license.txt` file. + + +Here is a screenshot of the license form. + + +
+ KubeStash Backend Overview +
Fig: KubeStash License Form
+
+ + +You can create licenses for as many clusters as you want. You can upgrade your license any time without re-installing KubeStash by following the upgrading guide from [here](/docs/setup/upgrade/index.md#upgrading-license). + + +## Get an Enterprise License + +If you are interested in purchasing 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 willing to purchasing Enterprise 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. + +## Install + +KubeStash operator can be installed as a Helm chart or simply as Kubernetes manifests. + + +
+
+ +## Using Helm 3 + +KubeStash can be installed via [Helm](https://helm.sh/) using the [chart]() from [AppsCode Charts Repository](https://github.com/appscode/charts). To install the chart with the release name `kubestash`: + +```bash +$ helm repo add appscode https://charts.appscode.com/stable/ +$ helm repo update +$ helm search repo appscode/kubestash --version {{< param "info.version" >}} +NAME CHART VERSION APP VERSION DESCRIPTION +appscode/kubestash v2023.12.1 v2023.12.1 KubeStash by AppsCode - Backup your Kubernetes ... + +$ helm install kubestash appscode/kubestash \ + --version {{< param "info.version" >}} \ + --namespace kube-system \ + --set-file global.license=/path/to/the/license.txt +``` + +To see the detailed configuration options, visit [here](). + +
+
+ +## Using YAML + +If you prefer to not use Helm, you can generate YAMLs from KubeStash chart and deploy using `kubectl`. Here we are going to show the prodecure using Helm 3. + +```bash +$ helm repo add appscode https://charts.appscode.com/stable/ +$ helm repo update +$ helm search repo appscode/kubestash --version {{< param "info.version" >}} +NAME CHART VERSION APP VERSION DESCRIPTION +appscode/kubestash v2023.12.1 v2023.12.1 KubeStash by AppsCode - Backup your Kubernetes ... + +$ helm template kubestash appscode/kubestash \ + --version {{< param "info.version" >}} \ + --namespace kube-system \ + --set global.skipCleaner=true \ + --set-file global.license=/path/to/the/license.txt | kubectl apply -f - +``` + +To see the detailed configuration options, visit [here](). + +
+
+ +## Verify installation + +To check if KubeStash operator pods have started, run the following command: + +```bash +$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=kubestash-operator --watch +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system kubestash-kubestash-operator-fcd8bf7c6-psjs6 2/2 Running 0 5m49s +``` + +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=kubestash +NAME CREATED AT +addons.addons.kubestash.com 2023-12-07T06:27:41Z +backupbatches.core.kubestash.com 2023-12-07T06:27:41Z +backupblueprints.core.kubestash.com 2023-12-07T06:27:41Z +backupconfigurations.core.kubestash.com 2023-12-07T06:40:37Z +backupsessions.core.kubestash.com 2023-12-07T06:40:37Z +backupstorages.storage.kubestash.com 2023-12-07T06:40:37Z +functions.addons.kubestash.com 2023-12-07T06:27:41Z +hooktemplates.core.kubestash.com 2023-12-07T06:27:42Z +repositories.storage.kubestash.com 2023-12-07T06:40:37Z +restoresessions.core.kubestash.com 2023-12-07T06:27:42Z +retentionpolicies.storage.kubestash.com 2023-12-07T06:27:42Z +snapshots.storage.kubestash.com 2023-12-07T06:40:37Z +``` + +### Verify Addons + +KubeStash automatically installs the necessary Addons for workload, pvc backup & restore. Verify that the Addons have been installed using the following command. + +```bash +$ kubectl get addons.addons.kubestash.com +NAME AGE +kubedump-addon 7m1s +pvc-addon 7m1s +workload-addon 7m1 +``` + +As you can see from the above output that KubeStash has created `Addon` objects. + +### Verify Functions + +KubeStash also automatically installs the necessary functions for the corresponding installed addons. Verify that the functions have been installed using the following command. + +```bash +$ kubectl get functions.addons.kubestash.com +NAME AGE +kubedump-backup 7m25s +pvc-backup 7m25s +pvc-restore 7m25s +volumesnapshot-backup 7m25s +volumesnapshot-restore 7m25s +workload-backup 7m25s +workload-restore 7m25s +``` + +As you can see from the above output that KubeStash has created `Functions` objects. + +Now, you are ready to [take your first backup]() using KubeStash.