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

Clone this repo:
  1. fac9a2a Bump up image for releasing 0.3.0 (#25) by Gao Hongtao · 8 weeks ago master v0.3.0
  2. 2456ed5 Introduce startup probe to deployments (#24) by Gao Hongtao · 3 months ago
  3. 3cc2b41 Fix wrong value references in probes (#23) by kezhenxu94 · 3 months ago
  4. 2341625 Bump up version (#22) by Gao Hongtao · 3 months ago v0.3.0-rc0
  5. 2abbc4f Opt to http get probe (#21) by Gao Hongtao · 3 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.

Compatibility

The chart needs the minimum version of BanyanDB 0.7.0 when the chart version is 0.3.0 or higher.

Configuration

KeyTypeDefaultDescription
cluster.data.affinityobject{}Affinity settings for pod assignment
cluster.data.podAffinityPresetstring""podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.data.podAntiAffinityPresetstring""podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.data.envlist[]Environment variables for the data pods
cluster.data.grpcSvc.annotationsobject{}Annotations for the gRPC service
cluster.data.grpcSvc.labelsobject{}Labels for the gRPC service
cluster.data.grpcSvc.portint17912Port for the gRPC service
cluster.data.livenessProbe.initialDelaySecondsint20Initial delay before starting liveness probes
cluster.data.livenessProbe.periodSecondsint30Period between liveness probes
cluster.data.livenessProbe.timeoutSecondsint5Timeout for liveness probes
cluster.data.livenessProbe.successThresholdint1Success threshold for liveness probes
cluster.data.livenessProbe.failureThresholdint5Failure threshold for liveness probes
cluster.data.nodeSelectorlist[]Node selector for data pods
cluster.data.podAnnotationsstringnilAnnotations for the data pods
cluster.data.podDisruptionBudgetobject{}Pod disruption budget for data pods
cluster.data.priorityClassNamestring""Priority class name for data pods
cluster.data.readinessProbe.initialDelaySecondsint20Initial delay before starting readiness probes
cluster.data.readinessProbe.periodSecondsint10Period between readiness probes
cluster.data.readinessProbe.timeoutSecondsint5Timeout for readiness probes
cluster.data.readinessProbe.successThresholdint1Success threshold for readiness probes
cluster.data.readinessProbe.failureThresholdint5Failure threshold for readiness probes
cluster.data.replicasint3Number of replicas for data pods
cluster.data.resources.limitslist[]Resource limits for data pods
cluster.data.resources.requestslist[]Resource requests for data pods
cluster.data.securityContextobject{}Security context for data pods
cluster.data.sidecarlist[]Sidecar containers for data pods
cluster.data.tolerationslist[]Tolerations for data pods
cluster.enabledbooltrueEnable or disable the cluster
cluster.etcdEndpointslist[]Endpoints for the etcd cluster
cluster.liaison.affinityobject{}Affinity settings for liaison pods
cluster.liaison.podAffinityPresetstring""podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.liaison.podAntiAffinityPresetstring""podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.liaison.envlist[]Environment variables for the liaison pods
cluster.liaison.grpcSvc.annotationsobject{}Annotations for the gRPC service
cluster.liaison.grpcSvc.labelsobject{}Labels for the gRPC service
cluster.liaison.grpcSvc.portint17912Port for the gRPC service
cluster.liaison.httpSvc.annotationsobject{}Annotations for the HTTP service
cluster.liaison.httpSvc.externalIPslist[]External IPs for the HTTP service
cluster.liaison.httpSvc.labelsobject{}Labels for the HTTP service
cluster.liaison.httpSvc.loadBalancerIPstringnilLoad balancer IP for the HTTP service
cluster.liaison.httpSvc.loadBalancerSourceRangeslist[]Load balancer source ranges for the HTTP service
cluster.liaison.httpSvc.portint17913Port for the HTTP service
cluster.liaison.httpSvc.typestring"LoadBalancer"Type of the HTTP service
cluster.liaison.ingress.annotationsobject{}Annotations for the ingress
cluster.liaison.ingress.enabledboolfalseEnable or disable the ingress
cluster.liaison.ingress.labelsobject{}Labels for the ingress
cluster.liaison.ingress.ruleslist[]Rules for the ingress
cluster.liaison.ingress.tlslist[]TLS settings for the ingress
cluster.liaison.livenessProbe.initialDelaySecondsint20Initial delay before starting liveness probes
cluster.liaison.livenessProbe.periodSecondsint30Period between liveness probes
cluster.liaison.livenessProbe.timeoutSecondsint5Timeout for liveness probes
cluster.liaison.livenessProbe.successThresholdint1Success threshold for liveness probes
cluster.liaison.livenessProbe.failureThresholdint5Failure threshold for liveness probes
cluster.liaison.nodeSelectorlist[]Node selector for liaison pods
cluster.liaison.podAnnotationsstringnilAnnotations for the liaison pods
cluster.liaison.podDisruptionBudgetobject{}Pod disruption budget for liaison pods
cluster.liaison.priorityClassNamestring""Priority class name for liaison pods
cluster.liaison.readinessProbe.initialDelaySecondsint20Initial delay before starting readiness probes
cluster.liaison.readinessProbe.periodSecondsint10Period between readiness probes
cluster.liaison.readinessProbe.timeoutSecondsint5Timeout for readiness probes
cluster.liaison.readinessProbe.successThresholdint1Success threshold for readiness probes
cluster.liaison.readinessProbe.failureThresholdint5Failure threshold for readiness probes
cluster.liaison.replicasint2Number of replicas for liaison pods
cluster.liaison.resources.limitslist[]Resource limits for liaison pods
cluster.liaison.resources.requestslist[]Resource requests for liaison pods
cluster.liaison.securityContextobject{}Security context for liaison pods
cluster.liaison.tolerationslist[]Tolerations for liaison pods
cluster.ui.typestring"Embedded"Type of the UI deployment: None, Embedded, Standalone
cluster.ui.standalone.affinityobject{}Affinity settings for standalone UI pods
cluster.ui.standalone.podAffinityPresetstring""podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.ui.standalone.podAntiAffinityPresetstring""podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.ui.standalone.envlist[]Environment variables for the standalone UI pods
cluster.ui.standalone.httpSvc.annotationsobject{}Annotations for the HTTP service
cluster.ui.standalone.httpSvc.externalIPslist[]External IPs for the HTTP service
cluster.ui.standalone.httpSvc.labelsobject{}Labels for the HTTP service
cluster.ui.standalone.httpSvc.loadBalancerIPstringnilLoad balancer IP for the HTTP service
cluster.ui.standalone.httpSvc.loadBalancerSourceRangeslist[]Load balancer source ranges for the HTTP service
cluster.ui.standalone.httpSvc.portint17913Port for the HTTP service
cluster.ui.standalone.httpSvc.typestring"LoadBalancer"Type of the HTTP service
cluster.ui.standalone.ingress.annotationsobject{}Annotations for the ingress
cluster.ui.standalone.ingress.enabledboolfalseEnable or disable the ingress
cluster.ui.standalone.ingress.labelsobject{}Labels for the ingress
cluster.ui.standalone.ingress.ruleslist[]Rules for the ingress
cluster.ui.standalone.ingress.tlslist[]TLS settings for the ingress
cluster.ui.standalone.livenessProbe.initialDelaySecondsint20Initial delay before starting liveness probes
cluster.ui.standalone.livenessProbe.periodSecondsint30Period between liveness probes
cluster.ui.standalone.livenessProbe.timeoutSecondsint5Timeout for liveness probes
cluster.ui.standalone.livenessProbe.successThresholdint1Success threshold for liveness probes
cluster.ui.standalone.livenessProbe.failureThresholdint5Failure threshold for liveness probes
cluster.ui.standalone.nodeSelectorlist[]Node selector for UI standalone pods
cluster.ui.standalone.podAnnotationsstringnilAnnotations for the UI standalone pods
cluster.ui.standalone.podDisruptionBudgetobject{}Pod disruption budget for UI standalone pods
cluster.ui.standalone.priorityClassNamestring""Priority class name for UI standalone pods
cluster.ui.standalone.readinessProbe.initialDelaySecondsint20Initial delay before starting readiness probes
cluster.ui.standalone.readinessProbe.periodSecondsint10Period between readiness probes
cluster.ui.standalone.readinessProbe.timeoutSecondsint5Timeout for readiness probes
cluster.ui.standalone.readinessProbe.successThresholdint1Success threshold for readiness probes
cluster.ui.standalone.readinessProbe.failureThresholdint5Failure threshold for readiness probes
cluster.ui.standalone.replicasint2Number of replicas for UI standalone pods
cluster.ui.standalone.resources.limitslist[]Resource limits for UI standalone pods
cluster.ui.standalone.resources.requestslist[]Resource requests for UI standalone pods
cluster.ui.standalone.securityContextobject{}Security context for UI standalone pods
cluster.ui.standalone.tolerationslist[]Tolerations for UI standalone pods
etcd.auth.client.caFilenamestring""CA filename for etcd client authentication
etcd.auth.client.certFilenamestring"tls.crt"Certificate filename for etcd client authentication
etcd.auth.client.certKeyFilenamestring"tls.key"Certificate key filename for etcd client authentication
etcd.auth.client.enableAuthenticationboolfalseEnable or disable etcd client authentication
etcd.auth.client.existingSecretstring""Existing secret for etcd client authentication
etcd.auth.client.secureTransportboolfalseEnable or disable secure transport for etcd client
etcd.auth.rbac.allowNoneAuthenticationboolfalseAllow none authentication for etcd RBAC
etcd.auth.rbac.createbooltrueCreate etcd RBAC resources
etcd.auth.rbac.rootPasswordstring"banyandb"Root password for etcd RBAC
etcd.enabledbooltrueEnable or disable etcd
etcd.livenessProbe.initialDelaySecondsint10Initial delay before starting liveness probes
etcd.readinessProbe.initialDelaySecondsint10Initial delay before starting readiness probes
etcd.replicaCountint1Number of replicas for etcd
fullnameOverridestring""Full name override for the chart
nameOverridestring"banyandb"Name override for the chart
image.pullPolicystring"IfNotPresent"Image pull policy
image.repositorystring"docker.io/apache/skywalking-banyandb"Image repository
image.tagstring"0.7.0"Image tag
serviceAccount.annotationsobject{}Annotations for the service account
serviceAccount.createbooltrueCreate a service account
serviceAccount.namestring""Name of the service account
standalone.affinityobject{}Affinity settings for standalone pods
standalone.enabledboolfalseEnable or disable standalone mode
standalone.envlist[]Environment variables for standalone pods
standalone.grpcSvc.annotationsobject{}Annotations for the gRPC service
standalone.grpcSvc.labelsobject{}Labels for the gRPC service
standalone.grpcSvc.portint17912Port for the gRPC service
standalone.httpSvc.annotationsobject{}Annotations for the HTTP service
standalone.httpSvc.externalIPslist[]External IPs for the HTTP service
standalone.httpSvc.labelsobject{}Labels for the HTTP service
standalone.httpSvc.loadBalancerIPstringnilLoad balancer IP for the HTTP service
standalone.httpSvc.loadBalancerSourceRangeslist[]Load balancer source ranges for the HTTP service
standalone.httpSvc.portint17913Port for the HTTP service
standalone.httpSvc.typestring"LoadBalancer"Type of the HTTP service
standalone.ingress.annotationsobject{}Annotations for the ingress
standalone.ingress.enabledboolfalseEnable or disable the ingress
standalone.ingress.labelsobject{}Labels for the ingress
standalone.ingress.ruleslist[]Rules for the ingress
standalone.ingress.tlslist[]TLS settings for the ingress
standalone.livenessProbe.initialDelaySecondsint20Initial delay before starting liveness probes
standalone.livenessProbe.periodSecondsint30Period between liveness probes
standalone.livenessProbe.timeoutSecondsint5Timeout for liveness probes
standalone.livenessProbe.successThresholdint1Success threshold for liveness probes
standalone.livenessProbe.failureThresholdint5Failure threshold for liveness probes
standalone.nodeSelectorlist[]Node selector for standalone pods
standalone.podAnnotations.examplestring"banyandb-foo"Example annotation for standalone pods
standalone.podDisruptionBudgetobject{}Pod disruption budget for standalone pods
standalone.priorityClassNamestring""Priority class name for standalone pods
standalone.readinessProbe.initialDelaySecondsint20Initial delay before starting readiness probes
standalone.readinessProbe.periodSecondsint10Period between readiness probes
standalone.readinessProbe.timeoutSecondsint5Timeout for readiness probes
standalone.readinessProbe.successThresholdint1Success threshold for readiness probes
standalone.readinessProbe.failureThresholdint5Failure threshold for readiness probes
standalone.resources.limitslist[]Resource limits for standalone pods
standalone.resources.requestslist[]Resource requests for standalone pods
standalone.securityContextobject{}Security context for standalone pods
standalone.sidecarlist[]Sidecar containers for standalone pods
standalone.tls.grpcSecretNamestring""Secret name for gRPC TLS in standalone mode
standalone.tls.httpSecretNamestring""Secret name for HTTP TLS in standalone mode
standalone.tolerationslist[]Tolerations for standalone pods
storage.enabledboolfalseEnable or disable storage
storage.persistentVolumeClaims[0].accessModes[0]string"ReadWriteOnce"Access modes for the first PVC
storage.persistentVolumeClaims[0].claimNamestring"data"Claim name for the first PVC
storage.persistentVolumeClaims[0].existingClaimNamestringnilExisting claim name for the first PVC
storage.persistentVolumeClaims[0].mountTargets[0]string"measure"First mount target for the first PVC
storage.persistentVolumeClaims[0].mountTargets[1]string"stream"Second mount target for the first PVC
storage.persistentVolumeClaims[0].sizestring"50Gi"Size of the first PVC
storage.persistentVolumeClaims[0].storageClassstringnilStorage class for the first PVC
storage.persistentVolumeClaims[0].volumeModestring"Filesystem"Volume mode for the first PVC
storage.persistentVolumeClaims[1].accessModes[0]string"ReadWriteOnce"Access modes for the second PVC
storage.persistentVolumeClaims[1].claimNamestring"meta"Claim name for the second PVC
storage.persistentVolumeClaims[1].existingClaimNamestringnilExisting claim name for the second PVC
storage.persistentVolumeClaims[1].mountTargets[0]string"metadata"Mount target for the second PVC
storage.persistentVolumeClaims[1].sizestring"5Gi"Size of the second PVC
storage.persistentVolumeClaims[1].storageClassstringnilStorage class for the second PVC
storage.persistentVolumeClaims[1].volumeModestring"Filesystem"Volume mode for the second PVC

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 dependency build ${REPO}
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