BanyanDB Helm Chart repository provides ways to install and configure BanyanDB running in a cluster natively on Kubernetes.

Clone this repo:

Branches

Tags

  1. 585aa54 Fix standalone tls config conditions (#11) by kezhenxu94 · 10 days ago master
  2. d2a6fb3 Add volume claim for StatefulSet (#10) by Gao Hongtao · 12 days ago
  3. 8bdff75 Add cluster and etcd configuration to the document (#9) by Huang Youliang · 6 weeks ago
  4. ccf5282 Add cluster mode (#7) by Huang Youliang · 6 weeks ago
  5. d5dc821 Upgrade banyandb to 0.5.0 (#8) by Wan Kai · 6 months ago

Apache SkyWalking BanyanDB Helm Chart

BanyanDB, as an observability database, aims to ingest, analyze, and store Metrics, Tracing, and Logging data. It's designed to handle observability data generated by observability platforms and APM systems, like Apache SkyWalking etc.

BanyanDB Helm Chart repository provides ways to install and configure BanyanDB running in a cluster natively on Kubernetes. The scripts are written in Helm 3.

Chart Detailed Configuration

Introduction

This chart bootstraps an Apache Skywalking BanyanDB deployment on a Kubernetes cluster using the Helm package manager. The released versions of the helm chart can be found on Docker Hub.

Prerequisites

  • Kubernetes 1.24.0+
  • Helm 3

Installing the Chart

To install the chart with the release name my-release:

$ helm install my-release banyandb -n <namespace>

The command deploys BanyanDB on the Kubernetes cluster with the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm uninstall my-release -n <namespace>

The command removes all the banyandb components associated with the chart and deletes the release.

Configuration

KeyTypeDefaultDescription
cluster.data.affinityobject{}
cluster.data.envlist[]
cluster.data.grpcSvc.annotationsobject{}
cluster.data.grpcSvc.labelsobject{}
cluster.data.grpcSvc.portint17912
cluster.data.namestring"banyandb"
cluster.data.nodeSelectorlist[]
cluster.data.podAnnotations.examplestring"banyandb-foo"
cluster.data.podDisruptionBudgetobject{}
cluster.data.priorityClassNamestring""
cluster.data.replicasint3
cluster.data.resources.limitslist[]
cluster.data.resources.requestslist[]
cluster.data.rolestring"data"
cluster.data.securityContextobject{}
cluster.data.sidecarlist[]
cluster.data.tls.etcdSecretNamestring""
cluster.data.tls.grpcSecretNamestring""
cluster.data.tolerationslist[]
cluster.enabledbooltrue
cluster.etcdEndpointslist[]
cluster.image.pullPolicystring"IfNotPresent"
cluster.image.repositorystring"ghcr.io/apache/skywalking-banyandb"
cluster.image.tagstring"dc88130e8d0516c7989734bdeb505e2d92c1ab71"
cluster.liaison.affinityobject{}
cluster.liaison.envlist[]
cluster.liaison.grpcSvc.annotationsobject{}
cluster.liaison.grpcSvc.labelsobject{}
cluster.liaison.grpcSvc.portint17912
cluster.liaison.httpSvc.annotationsobject{}
cluster.liaison.httpSvc.externalIPslist[]
cluster.liaison.httpSvc.labelsobject{}
cluster.liaison.httpSvc.loadBalancerIPstringnil
cluster.liaison.httpSvc.loadBalancerSourceRangeslist[]
cluster.liaison.httpSvc.portint17913
cluster.liaison.httpSvc.typestring"LoadBalancer"
cluster.liaison.ingress.annotationsobject{}
cluster.liaison.ingress.enabledboolfalse
cluster.liaison.ingress.labelsobject{}
cluster.liaison.ingress.ruleslist[]
cluster.liaison.ingress.tlslist[]
cluster.liaison.namestring"banyandb"
cluster.liaison.nodeSelectorlist[]
cluster.liaison.podAnnotations.examplestring"banyandb-foo"
cluster.liaison.podDisruptionBudgetobject{}
cluster.liaison.priorityClassNamestring""
cluster.liaison.replicasint2
cluster.liaison.resources.limitslist[]
cluster.liaison.resources.requestslist[]
cluster.liaison.rolestring"liaison"
cluster.liaison.securityContextobject{}
cluster.liaison.tls.etcdSecretNamestring""
cluster.liaison.tls.grpcSecretNamestring""
cluster.liaison.tls.httpSecretNamestring""
cluster.liaison.tolerationslist[]
etcd.auth.client.caFilenamestring""
etcd.auth.client.certFilenamestring"tls.crt"
etcd.auth.client.certKeyFilenamestring"tls.key"
etcd.auth.client.enableAuthenticationboolfalse
etcd.auth.client.existingSecretstring""
etcd.auth.client.secureTransportboolfalse
etcd.auth.rbac.allowNoneAuthenticationboolfalse
etcd.auth.rbac.createbooltrue
etcd.auth.rbac.rootPasswordstring"banyandb"
etcd.enabledbooltrue
etcd.replicaCountint1
fullnameOverridestring"banyandb"
serviceAccount.annotationsobject{}
serviceAccount.createbooltrue
serviceAccount.namestring""
standalone.affinityobject{}
standalone.enabledboolfalse
standalone.envlist[]
standalone.grpcSvc.annotationsobject{}
standalone.grpcSvc.labelsobject{}
standalone.grpcSvc.portint17912
standalone.httpSvc.annotationsobject{}
standalone.httpSvc.externalIPslist[]
standalone.httpSvc.labelsobject{}
standalone.httpSvc.loadBalancerIPstringnil
standalone.httpSvc.loadBalancerSourceRangeslist[]
standalone.httpSvc.portint17913
standalone.httpSvc.typestring"LoadBalancer"
standalone.image.pullPolicystring"IfNotPresent"
standalone.image.repositorystring"ghcr.io/apache/skywalking-banyandb"
standalone.image.tagstring"dc88130e8d0516c7989734bdeb505e2d92c1ab71"
standalone.ingress.annotationsobject{}
standalone.ingress.enabledboolfalse
standalone.ingress.labelsobject{}
standalone.ingress.ruleslist[]
standalone.ingress.tlslist[]
standalone.namestring"banyandb"
standalone.nodeSelectorlist[]
standalone.podAnnotations.examplestring"banyandb-foo"
standalone.podDisruptionBudgetobject{}
standalone.priorityClassNamestring""
standalone.resources.limitslist[]
standalone.resources.requestslist[]
standalone.securityContextobject{}
standalone.sidecarlist[]
standalone.tls.grpcSecretNamestring""
standalone.tls.httpSecretNamestring""
standalone.tolerationslist[]
storage.enabledboolfalse
storage.persistentVolumeClaims[0].accessModes[0]string"ReadWriteOnce"
storage.persistentVolumeClaims[0].claimNamestring"data"
storage.persistentVolumeClaims[0].existingClaimNamestringnil
storage.persistentVolumeClaims[0].mountTargets[0]string"measure"
storage.persistentVolumeClaims[0].mountTargets[1]string"stream"
storage.persistentVolumeClaims[0].sizestring"200Gi"
storage.persistentVolumeClaims[0].storageClassstringnil
storage.persistentVolumeClaims[0].volumeModestring"Filesystem"
storage.persistentVolumeClaims[1].accessModes[0]string"ReadWriteOnce"
storage.persistentVolumeClaims[1].claimNamestring"meta"
storage.persistentVolumeClaims[1].existingClaimNamestringnil
storage.persistentVolumeClaims[1].mountTargets[0]string"metadata"
storage.persistentVolumeClaims[1].sizestring"10Gi"
storage.persistentVolumeClaims[1].storageClassstringnil
storage.persistentVolumeClaims[1].volumeModestring"Filesystem"

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

Note You could refer to the helm install for more command information.

$ helm install myrelease banyandb --set fullnameOverride=newBanyanDB

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install my-release banyandb -f values.yaml

Tip: You can use the default values.yaml

Use external certificate authorities for TLS

If you'd like to use external certificate authorities, such as Vault, corresponding annotations can be injected into banyandb.

Setup certificate for etcd TLS

To establish secure communication for etcd, you can leverage cert-manager to generate the necessary TLS certificates. This tool simplifies the process of creating and managing certificates. You can install cert-manager with the following command.

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml

A Certificate can be created with the following configurations. In this setup, each dnsName includes a wildcard that enables resolution of all etcd pods' DNS names within the specified namespace, along with the service name of etcd and its corresponding namespace. Here, ‘svc’ represents a service, while ‘cluster.local’ serves as the domain suffix for the Kubernetes cluster.

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: etcd-client
  namespace: banyandb
spec:
  secretName: etcd-client-tls
  duration: 17520h
  renewBefore: 4320h
  issuerRef:
    name: banyandb-issuer
    kind: Issuer
  usages:
    - server auth
    - client auth
  dnsNames:
    - "*.banyandb-etcd.banyandb.svc.cluster.local"
    - "*.banyandb-etcd-headless.banyandb.svc.cluster.local"

Install the development version of BanyanDB using the master branch

This is needed only when you want to install BanyanDB from the master branch.

You can install BanyanDB with the default configuration as follows.

export REPO=chart
git clone https://github.com/apache/skywalking-banyandb-helm
cd skywalking-banyandb-helm
helm install banyandb ${REPO}

Contact Us

  • Submit an issue
  • Mail list: dev@skywalking.apache.org. Mail to dev-subscribe@skywalking.apache.org, follow the reply to subscribe the mail list.
  • Send Request to join SkyWalking slack mail to the mail list(dev@skywalking.apache.org), we will invite you in.
  • For Chinese speaker, send [CN] Request to join SkyWalking slack mail to the mail list(dev@skywalking.apache.org), we will invite you in.
  • Twitter, ASFSkyWalking
  • bilibili B站 视频

LICENSE

Apache 2.0