Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/preview-website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:

- name: Install Hugo
run: |
curl -fsSL -o hugo_extended.deb https://github.com/gohugoio/hugo/releases/download/v0.111.1/hugo_extended_0.111.1_linux-amd64.deb
curl -fsSL -o hugo_extended.deb https://github.com/gohugoio/hugo/releases/download/v0.128.2/hugo_extended_0.128.2_linux-amd64.deb
sudo dpkg -i hugo_extended.deb
rm hugo_extended.deb

Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Concept explains some significant aspect of KubeStash. This is where you can lea
Setup contains instruction for installing, uninstalling, and upgrading KubeStash.

- **Install KubeStash:** Provides installation instructions for KubeStash and its various components.
- [KubeStash](/docs/setup/install/kubestash/index.md): Provides installation instructions for KubeStash.
- [KubeStash](/docs/setup/install/kubestash/_index.md): Provides installation instructions for KubeStash.
- [kubeStash kubectl Plugin](/docs/setup/install/kubectl-plugin/index.md): Provides installation instructions for KubeStash `kubectl` plugin.
- [Troubleshooting](/docs/setup/install/troubleshooting/index.md): Provides troubleshooting guide for various installation problems.
- **Uninstall KubeStash:** Provides uninstallation instructions for KubeStash and its various components.
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/hooks/backup-and-restore-hooks/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Here, we are going to demonstrate how you can perform different actions before a
## 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 KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/index.md).
- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/_index.md).
- 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 KubeStash backup and restore MySQL databases, please check the [KubeDB](https://kubedb.com/) documentation for MySQL backup and restore using KubeStash.
- Also, if you haven't read about how hooks work in KubeStash, please check it from [here](/docs/guides/hooks/overview/index.md).
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/hooks/slack-notification/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ In this guide, we are going to show you how to send backup notifications to a Sl
## 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 KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/index.md).
- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/_index.md).
- If you haven't read about how hooks work in KubeStash, please check it from [here](/docs/guides/hooks/overview/index.md).

You should be familiar with the following `KubeStash` concepts:
Expand Down
4 changes: 2 additions & 2 deletions docs/setup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ aliases:
# Setup

<div style="text-align: center;">
<a class="button is-info is-medium is-active has-text-weight-normal" href="/docs/setup/install/kubestash/index.md" style="background:#FC6011; width: 18rem;">Install KubeStash</a>
<a class="button is-info is-medium is-active has-text-weight-normal" href="/docs/setup/install/kubestash/_index.md" style="background:#FC6011; width: 18rem;">Install KubeStash</a>
</div>
<br>

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.
- [KubeStash operator](/docs/setup/install/kubestash/index.md): Installation instructions for KubeStash operator.
- [KubeStash operator](/docs/setup/install/kubestash/_index.md): Installation instructions for KubeStash operator.
- [KubeStash kubectl Plugin](/docs/setup/install/kubectl-plugin/index.md): Installation instructions for kubeStash `kubectl` plugin.
- [Troubleshooting](/docs/setup/install/troubleshooting/index.md): Troubleshooting guide for various installation problems.

Expand Down
39 changes: 39 additions & 0 deletions docs/setup/install/kubestash/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: Install KubeStash
description: Installation guide for KubeStash
menu:
docs_{{ .version }}:
identifier: install-kubestash-enterprise
name: KubeStash
parent: installation-guide
weight: 20
product_name: kubestash
menu_name: docs_{{ .version }}
section_menu_id: setup
---

# Install KubeStash

## Get a Free License

Download a FREE license from [AppsCode License Server](https://appscode.com/issue-license?p=stash).

> KubeStash 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).

## Choose an Installation Method

KubeStash can be installed in several ways. Pick the one that fits your workflow:

- [Helm 3](/docs/setup/install/kubestash/helm.md) — recommended for most users.
- [YAML](/docs/setup/install/kubestash/yaml.md) — render manifests and apply with `kubectl`.
- [ArgoCD](/docs/setup/install/kubestash/argocd.md) — GitOps via ArgoCD `Application` resources.
- [FluxCD](/docs/setup/install/kubestash/fluxcd.md) — GitOps via the Flux Helm Controller.
- [OpenShift](/docs/setup/install/kubestash/openshift.md) — standard chart or Red Hat certified chart.

After installing, see [Common Configuration](/docs/setup/install/kubestash/configuration.md) to verify the installation.

## Purchase KubeStash License

If you are interested in purchasing KubeStash 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 KubeStash 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.
187 changes: 187 additions & 0 deletions docs/setup/install/kubestash/argocd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
---
title: Install KubeStash using ArgoCD
description: Install KubeStash using ArgoCD
menu:
docs_{{ .version }}:
identifier: install-kubestash-argocd
name: ArgoCD
parent: install-kubestash-enterprise
weight: 30
product_name: kubestash
menu_name: docs_{{ .version }}
section_menu_id: setup
---

# Install using ArgoCD

You can deploy KubeStash declaratively using [ArgoCD](https://argo-cd.readthedocs.io/). The setup is composed of three `Application` manifests that should be applied in the following order:

1. `ace-user-roles` — installs the ClusterRoles used by KubeStash (and other AppsCode products) so that user impersonation works correctly.
2. `license-proxyserver` — installs the AppsCode License Proxyserver, which obtains and rotates the KubeStash license from the AppsCode platform automatically. You no longer need to download a license file when this is used.
3. `kubestash` — installs the KubeStash operator itself.

### Prerequisites

- An ArgoCD installation reachable at the `argocd` namespace.
- An AppsCode platform token. You can obtain one from the [AppsCode platform](https://appscode.com/). Replace the placeholder value in the `license-proxyserver` manifest with your token.

### 1. Install ace-user-roles

Save the following manifest as `ace-user-roles.yaml` and apply it with `kubectl apply -f ace-user-roles.yaml`:

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ace-user-roles
namespace: argocd
spec:
destination:
namespace: kubeops
server: https://kubernetes.default.svc
project: default
source:
chart: ace-user-roles
helm:
values: |
enableClusterRoles:
ace: false
appcatalog: true
catalog: false
cert-manager: false
kubedb: true
kubedb-ui: false
kubestash: true # enable if used
kubevault: true # enable if used
license-proxyserver: true
metrics: true
prometheus: false
secrets-store: false
stash: true # enable if used
virtual-secrets: false
annotations:
"helm.sh/hook": null
"helm.sh/hook-delete-policy": null
repoURL: ghcr.io/appscode-charts
targetRevision: v2026.2.16
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
```

### 2. Install license-proxyserver

Save the following manifest as `license-proxyserver.yaml` and replace the `token` value with your AppsCode platform token, then apply it with `kubectl apply -f license-proxyserver.yaml`:

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: license-proxyserver
namespace: argocd
spec:
project: default
source:
chart: license-proxyserver
repoURL: ghcr.io/appscode-charts
targetRevision: v2026.2.16
helm:
values: |
platform:
baseURL: https://appscode.com
token: '****************************************'
destination:
server: "https://kubernetes.default.svc"
namespace: kubeops
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true

ignoreDifferences:
- jsonPointers:
- /data
kind: Secret
name: license-proxyserver-apiserver-cert
namespace: kubeops
- group: apiregistration.k8s.io
kind: APIService
name: v1alpha1.proxyserver.licenses.appscode.com
jsonPointers:
- /spec/caBundle
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
name: servicemonitors.monitoring.coreos.com
jsonPointers:
- /metadata/annotations
- /spec
```

The `ignoreDifferences` block prevents ArgoCD from continuously fighting the controllers that rotate the apiserver certificate, CA bundle, and ServiceMonitor CRD annotations.

### 3. Install KubeStash

Save the following manifest as `kubestash.yaml` and apply it with `kubectl apply -f kubestash.yaml`:

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kubestash
namespace: argocd
spec:
project: default
source:
chart: kubestash
repoURL: ghcr.io/appscode-charts
targetRevision: {{< param "info.version" >}}
helm:
values: |
ace-user-roles:
enabled: false
destination:
server: "https://kubernetes.default.svc"
namespace: kubestash
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true

ignoreDifferences:
- jsonPointers:
- /data
kind: Secret
name: kubestash-kubestash-operator-cert
namespace: kubestash
- group: apps
kind: Deployment
name: kubestash-kubestash-operator-operator
namespace: kubestash
jsonPointers:
- /spec/template/metadata/annotations/reload
- group: apps
kind: Deployment
name: kubestash-kubestash-operator-webhook-server
namespace: kubestash
jsonPointers:
- /spec/template/metadata/annotations/reload

- group: admissionregistration.k8s.io
kind: MutatingWebhookConfiguration
name: kubestash-kubestash-operator
jqPathExpressions:
- .webhooks[].clientConfig.caBundle
- group: admissionregistration.k8s.io
kind: ValidatingWebhookConfiguration
name: kubestash-kubestash-operator
jqPathExpressions:
- .webhooks[].clientConfig.caBundle
```

Notes:

- `ace-user-roles.enabled: false` is set on the KubeStash Application because the `ace-user-roles` chart is already managed by its own Application (step 1).
- The `ignoreDifferences` entries cover the webhook CA bundles, operator TLS secret and the reload annotation that KubeStash flips when its configuration changes. Without them ArgoCD would report the Application as out-of-sync after every reconciliation.

Once all three Applications are healthy, follow the [Common Configuration](/docs/setup/install/kubestash/configuration.md) steps to verify the installation.
65 changes: 65 additions & 0 deletions docs/setup/install/kubestash/configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: KubeStash Common Configuration
description: Verify the KubeStash installation
menu:
docs_{{ .version }}:
identifier: install-kubestash-config
name: Common Configuration
parent: install-kubestash-enterprise
weight: 60
product_name: kubestash
menu_name: docs_{{ .version }}
section_menu_id: setup
---

# Common Configuration

The steps below apply regardless of which [installation method](/docs/setup/install/kubestash/) you used.

## Verify installation

To check if KubeStash operator and webhook pods have started, run the following command:

```bash
$ kubectl get pods -n stash -l app.kubernetes.io/instance=kubestash --watch
NAME READY STATUS RESTARTS AGE
kubestash-kubestash-operator-fcd8bf7c6-psjs6 2/2 Running 0 5m49s
kubestash-kubestash-operator-webhook-server-6fb8f5cfb9-scrx8 1/1 Running 0 5m49s
```

Once the operator and webhook pods are 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 Catalogs

KubeStash automatically installs the necessary Addon catalogs for workload, PVC and Kubernetes manifest backups. Verify that the Addon catalogs have been installed using the following command.

```bash
$ kubectl get addons.addons.kubestash.com
Comment thread
anisurrahman75 marked this conversation as resolved.
NAME AGE
kubedump-addon 7m1s
pvc-addon 7m1s
vault-addon 7m1s
workload-addon 7m1s
```

As you can see from the above output that KubeStash has created `Addon` objects.

Now, you are ready to [take your first backup](/docs/guides/README.md) using KubeStash.
Loading
Loading