Installation On Kubernetes

To install BanyanDB on Kubernetes, you can use our Helm chart, which simplifies the deployment process. You can find detailed installation instructions in our official documentation.

This step-by-step guide assumes you have a basic understanding of Kubernetes and Helm, the package manager for Kubernetes. If you’re new to Helm, you might want to familiarize yourself with Helm basics before proceeding.

Prerequisites

Before we begin, ensure you have the following:

  1. A Kubernetes Cluster: You can use Minikube for a local setup, or any cloud provider like AWS, GCP, or Azure that supports Kubernetes.
  2. Helm 3: Ensure Helm 3 is installed and configured on your machine. You can download it from Helm’s official website.

Step 1: Configure Helm to Use OCI

Since the BanyanDB Helm chart is hosted as an OCI chart in Docker Hub, you need to ensure your Helm is configured to handle OCI artifacts.

helm registry login registry-1.docker.io

You will be prompted to enter your Docker Hub username and password. This step is necessary to pull Helm charts from Docker Hub.

Step 2: Install BanyanDB Using Helm

  • Create a namespace for BanyanDB:
kubectl create ns sw

Standalone Mode

  • This command installs the BanyanDB Helm chart with the specified version and image tag in the sw namespace in standalone mode. You can customize the installation by setting additional values in the --set flag.
helm install banyandb \
    oci://registry-1.docker.io/apache/skywalking-banyandb-helm \
    --version 0.3.0 \
    --set image.tag=0.7.0 \
    --set standalone.enabled=true \
    --set cluster.enabled=false \
    --set etcd.enabled=false \
    --set storage.enabled=true \
    -n sw
  • Wait for the installation to complete. You can check the status of the pods using the following command:
kubectl get pod -n sw -w
NAME         READY   STATUS    RESTARTS   AGE
banyandb-0   1/1     Running   0          71s
  • You can check the storage using the following command:
kubectl get pvc -n sw
NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
data-banyandb-0   Bound    pvc-a15e18bf-0423-4ff7-8a09-c68686c3c880   50Gi       RWO            standard       <unset>                 2m12s
meta-banyandb-0   Bound    pvc-548cfe75-8438-4fe2-bce5-66cd7fda4ffc   5Gi        RWO            standard       <unset>                 2m12s

The default storage set the stream and measure data to the same PVC data-banyandb and the meta data to the PVC meta-banyandb.

  • You can check the services using the following command:
kubectl get svc -n sw
NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
banyandb-grpc   ClusterIP      10.96.217.34   <none>        17912/TCP         12m
banyandb-http   LoadBalancer   10.96.90.175   <pending>     17913:30325/TCP   12m

The BanyanDB server would be listening on the 0.0.0.0:17912 to access gRPC requests. if no errors occurred.

At the same time, the BanyanDB server would be listening on the 0.0.0.0:17913 to access HTTP requests. if no errors occurred. The HTTP server is used for CLI and Web UI.

Cluster Mode

  • This command installs the BanyanDB Helm chart with the specified version and image tag in the sw namespace in cluster mode. You can customize the other additional values in the --set flag.
helm install banyandb \
    oci://registry-1.docker.io/apache/skywalking-banyandb-helm \
    --version 0.3.0 \
    --set image.tag=0.7.0 \
    --set standalone.enabled=false \
    --set cluster.enabled=true \
    --set etcd.enabled=true \
    --set storage.enabled=true \
    --set storage.persistentVolumeClaims[0].mountTargets[0]=stream \
    --set storage.persistentVolumeClaims[0].claimName=stream-data\
    --set storage.persistentVolumeClaims[0].size=10Gi\
    --set storage.persistentVolumeClaims[0].accessModes[0]=ReadWriteOnce\
    --set persistentVolumeClaims[0].volumeMode=Filesystem\
    --set storage.persistentVolumeClaims[1].mountTargets[0]=measure \
    --set storage.persistentVolumeClaims[1].claimName=measure-data\
    --set storage.persistentVolumeClaims[1].size=10Gi\
    --set storage.persistentVolumeClaims[1].accessModes[0]=ReadWriteOnce\
    --set persistentVolumeClaims[1].volumeMode=Filesystem\
  -n sw
  • Wait for the installation to complete. You can check the status of the pods using the following command:
kubectl get pod -n sw -w
NAME                       READY   STATUS    RESTARTS        AGE
banyandb-0                 1/1     Running   3 (6m38s ago)   7m7s
banyandb-1                 1/1     Running   0               5m6s
banyandb-2                 1/1     Running   0               4m6s
banyandb-885bc59d4-669lh   1/1     Running   3 (6m35s ago)   7m7s
banyandb-885bc59d4-dd4j7   1/1     Running   3 (6m36s ago)   7m7s
banyandb-etcd-0            1/1     Running   0               7m7s

In cluster model the default cluster.liaison.replicas is 2, and the default cluster.data.replicas is 3. The default etcd.replicas is 1.

  • You can check the storage using the following command:
kubectl get pvc -n sw
NAME                      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
data-banyandb-etcd-0      Bound    pvc-b0139dc4-01ed-423d-8f00-13376ecad015   8Gi        RWO            standard       <unset>                 13m
measure-data-banyandb-0   Bound    pvc-471758b8-1dc9-4508-85cb-34f2e53ee4a0   10Gi       RWO            standard       <unset>                 13m
measure-data-banyandb-1   Bound    pvc-a95f7196-b55c-4030-a99a-96476716c3f4   10Gi       RWO            standard       <unset>                 11m
measure-data-banyandb-2   Bound    pvc-29983adc-ee40-45b5-944c-49379a13384c   10Gi       RWO            standard       <unset>                 10m
stream-data-banyandb-0    Bound    pvc-60f2f332-cc07-4a3d-aad7-6c7866cfb739   10Gi       RWO            standard       <unset>                 13m
stream-data-banyandb-1    Bound    pvc-66dad00a-2c16-45b3-8d0a-dbf939d479ac   10Gi       RWO            standard       <unset>                 11m
stream-data-banyandb-2    Bound    pvc-bfdfde2d-7e78-4e9f-b781-949963e729f3   10Gi       RWO            standard       <unset>                 10m

The command creates the PVCs for the stream and measure data in the different PVCs. You can customize them by setting the storage.persistentVolumeClaims in the --set flag. In the cluster model, BanyanDB leverage the etcd to manage the metadata.

  • You can check the services using the following command:
kubectl get svc -n sw
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
banyandb-etcd            ClusterIP      10.96.33.132    <none>        2379/TCP,2380/TCP   5m
banyandb-etcd-headless   ClusterIP      None            <none>        2379/TCP,2380/TCP   5m
banyandb-grpc            ClusterIP      10.96.152.152   <none>        17912/TCP           5m
banyandb-http            LoadBalancer   10.96.137.29    <pending>     17913:30899/TCP     5m

The BanyanDB server would be listening on the 0.0.0.0:17912 to access gRPC requests. if no errors occurred.

At the same time, the BanyanDB server would be listening on the 0.0.0.0:17913 to access HTTP requests. if no errors occurred. The HTTP server is used for CLI and Web UI.

Uninstall

  • Uninstall BanyanDB using the following command:
helm uninstall banyandb -n sw
  • If you want to delete the PVCs, you can use the following command: Note: This will delete all data stored in BanyanDB.
kubectl delete pvc --all -n sw