Skip to content

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

License

Notifications You must be signed in to change notification settings

apache/skywalking-banyandb-helm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Key Type Default Description
cluster.data.affinity object {} Affinity settings for pod assignment
cluster.data.podAffinityPreset string "" podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.data.podAntiAffinityPreset string "" podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.data.env list [] Environment variables for the data pods
cluster.data.grpcSvc.annotations object {} Annotations for the gRPC service
cluster.data.grpcSvc.labels object {} Labels for the gRPC service
cluster.data.grpcSvc.port int 17912 Port for the gRPC service
cluster.data.livenessProbe.initialDelaySeconds int 20 Initial delay before starting liveness probes
cluster.data.livenessProbe.periodSeconds int 30 Period between liveness probes
cluster.data.livenessProbe.timeoutSeconds int 5 Timeout for liveness probes
cluster.data.livenessProbe.successThreshold int 1 Success threshold for liveness probes
cluster.data.livenessProbe.failureThreshold int 5 Failure threshold for liveness probes
cluster.data.nodeSelector list [] Node selector for data pods
cluster.data.podAnnotations string nil Annotations for the data pods
cluster.data.podDisruptionBudget object {} Pod disruption budget for data pods
cluster.data.priorityClassName string "" Priority class name for data pods
cluster.data.readinessProbe.initialDelaySeconds int 20 Initial delay before starting readiness probes
cluster.data.readinessProbe.periodSeconds int 10 Period between readiness probes
cluster.data.readinessProbe.timeoutSeconds int 5 Timeout for readiness probes
cluster.data.readinessProbe.successThreshold int 1 Success threshold for readiness probes
cluster.data.readinessProbe.failureThreshold int 5 Failure threshold for readiness probes
cluster.data.replicas int 3 Number of replicas for data pods
cluster.data.resources.limits list [] Resource limits for data pods
cluster.data.resources.requests list [] Resource requests for data pods
cluster.data.securityContext object {} Security context for data pods
cluster.data.sidecar list [] Sidecar containers for data pods
cluster.data.tolerations list [] Tolerations for data pods
cluster.enabled bool true Enable or disable the cluster
cluster.etcdEndpoints list [] Endpoints for the etcd cluster
cluster.liaison.affinity object {} Affinity settings for liaison pods
cluster.liaison.podAffinityPreset string "" podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.liaison.podAntiAffinityPreset string "" podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.liaison.env list [] Environment variables for the liaison pods
cluster.liaison.grpcSvc.annotations object {} Annotations for the gRPC service
cluster.liaison.grpcSvc.labels object {} Labels for the gRPC service
cluster.liaison.grpcSvc.port int 17912 Port for the gRPC service
cluster.liaison.httpSvc.annotations object {} Annotations for the HTTP service
cluster.liaison.httpSvc.externalIPs list [] External IPs for the HTTP service
cluster.liaison.httpSvc.labels object {} Labels for the HTTP service
cluster.liaison.httpSvc.loadBalancerIP string nil Load balancer IP for the HTTP service
cluster.liaison.httpSvc.loadBalancerSourceRanges list [] Load balancer source ranges for the HTTP service
cluster.liaison.httpSvc.port int 17913 Port for the HTTP service
cluster.liaison.httpSvc.type string "LoadBalancer" Type of the HTTP service
cluster.liaison.ingress.annotations object {} Annotations for the ingress
cluster.liaison.ingress.enabled bool false Enable or disable the ingress
cluster.liaison.ingress.labels object {} Labels for the ingress
cluster.liaison.ingress.rules list [] Rules for the ingress
cluster.liaison.ingress.tls list [] TLS settings for the ingress
cluster.liaison.livenessProbe.initialDelaySeconds int 20 Initial delay before starting liveness probes
cluster.liaison.livenessProbe.periodSeconds int 30 Period between liveness probes
cluster.liaison.livenessProbe.timeoutSeconds int 5 Timeout for liveness probes
cluster.liaison.livenessProbe.successThreshold int 1 Success threshold for liveness probes
cluster.liaison.livenessProbe.failureThreshold int 5 Failure threshold for liveness probes
cluster.liaison.nodeSelector list [] Node selector for liaison pods
cluster.liaison.podAnnotations string nil Annotations for the liaison pods
cluster.liaison.podDisruptionBudget object {} Pod disruption budget for liaison pods
cluster.liaison.priorityClassName string "" Priority class name for liaison pods
cluster.liaison.readinessProbe.initialDelaySeconds int 20 Initial delay before starting readiness probes
cluster.liaison.readinessProbe.periodSeconds int 10 Period between readiness probes
cluster.liaison.readinessProbe.timeoutSeconds int 5 Timeout for readiness probes
cluster.liaison.readinessProbe.successThreshold int 1 Success threshold for readiness probes
cluster.liaison.readinessProbe.failureThreshold int 5 Failure threshold for readiness probes
cluster.liaison.replicas int 2 Number of replicas for liaison pods
cluster.liaison.resources.limits list [] Resource limits for liaison pods
cluster.liaison.resources.requests list [] Resource requests for liaison pods
cluster.liaison.securityContext object {} Security context for liaison pods
cluster.liaison.tolerations list [] Tolerations for liaison pods
cluster.ui.type string "Embedded" Type of the UI deployment: None, Embedded, Standalone
cluster.ui.standalone.affinity object {} Affinity settings for standalone UI pods
cluster.ui.standalone.podAffinityPreset string "" podAffinityPreset Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.ui.standalone.podAntiAffinityPreset string "" podAntiAffinityPreset Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
cluster.ui.standalone.env list [] Environment variables for the standalone UI pods
cluster.ui.standalone.httpSvc.annotations object {} Annotations for the HTTP service
cluster.ui.standalone.httpSvc.externalIPs list [] External IPs for the HTTP service
cluster.ui.standalone.httpSvc.labels object {} Labels for the HTTP service
cluster.ui.standalone.httpSvc.loadBalancerIP string nil Load balancer IP for the HTTP service
cluster.ui.standalone.httpSvc.loadBalancerSourceRanges list [] Load balancer source ranges for the HTTP service
cluster.ui.standalone.httpSvc.port int 17913 Port for the HTTP service
cluster.ui.standalone.httpSvc.type string "LoadBalancer" Type of the HTTP service
cluster.ui.standalone.ingress.annotations object {} Annotations for the ingress
cluster.ui.standalone.ingress.enabled bool false Enable or disable the ingress
cluster.ui.standalone.ingress.labels object {} Labels for the ingress
cluster.ui.standalone.ingress.rules list [] Rules for the ingress
cluster.ui.standalone.ingress.tls list [] TLS settings for the ingress
cluster.ui.standalone.livenessProbe.initialDelaySeconds int 20 Initial delay before starting liveness probes
cluster.ui.standalone.livenessProbe.periodSeconds int 30 Period between liveness probes
cluster.ui.standalone.livenessProbe.timeoutSeconds int 5 Timeout for liveness probes
cluster.ui.standalone.livenessProbe.successThreshold int 1 Success threshold for liveness probes
cluster.ui.standalone.livenessProbe.failureThreshold int 5 Failure threshold for liveness probes
cluster.ui.standalone.nodeSelector list [] Node selector for UI standalone pods
cluster.ui.standalone.podAnnotations string nil Annotations for the UI standalone pods
cluster.ui.standalone.podDisruptionBudget object {} Pod disruption budget for UI standalone pods
cluster.ui.standalone.priorityClassName string "" Priority class name for UI standalone pods
cluster.ui.standalone.readinessProbe.initialDelaySeconds int 20 Initial delay before starting readiness probes
cluster.ui.standalone.readinessProbe.periodSeconds int 10 Period between readiness probes
cluster.ui.standalone.readinessProbe.timeoutSeconds int 5 Timeout for readiness probes
cluster.ui.standalone.readinessProbe.successThreshold int 1 Success threshold for readiness probes
cluster.ui.standalone.readinessProbe.failureThreshold int 5 Failure threshold for readiness probes
cluster.ui.standalone.replicas int 2 Number of replicas for UI standalone pods
cluster.ui.standalone.resources.limits list [] Resource limits for UI standalone pods
cluster.ui.standalone.resources.requests list [] Resource requests for UI standalone pods
cluster.ui.standalone.securityContext object {} Security context for UI standalone pods
cluster.ui.standalone.tolerations list [] Tolerations for UI standalone pods
etcd.auth.client.caFilename string "" CA filename for etcd client authentication
etcd.auth.client.certFilename string "tls.crt" Certificate filename for etcd client authentication
etcd.auth.client.certKeyFilename string "tls.key" Certificate key filename for etcd client authentication
etcd.auth.client.enableAuthentication bool false Enable or disable etcd client authentication
etcd.auth.client.existingSecret string "" Existing secret for etcd client authentication
etcd.auth.client.secureTransport bool false Enable or disable secure transport for etcd client
etcd.auth.rbac.allowNoneAuthentication bool false Allow none authentication for etcd RBAC
etcd.auth.rbac.create bool true Create etcd RBAC resources
etcd.auth.rbac.rootPassword string "banyandb" Root password for etcd RBAC
etcd.enabled bool true Enable or disable etcd
etcd.livenessProbe.initialDelaySeconds int 10 Initial delay before starting liveness probes
etcd.readinessProbe.initialDelaySeconds int 10 Initial delay before starting readiness probes
etcd.replicaCount int 1 Number of replicas for etcd
fullnameOverride string "" Full name override for the chart
nameOverride string "banyandb" Name override for the chart
image.pullPolicy string "IfNotPresent" Image pull policy
image.repository string "docker.io/apache/skywalking-banyandb" Image repository
image.tag string "0.7.0" Image tag
serviceAccount.annotations object {} Annotations for the service account
serviceAccount.create bool true Create a service account
serviceAccount.name string "" Name of the service account
standalone.affinity object {} Affinity settings for standalone pods
standalone.enabled bool false Enable or disable standalone mode
standalone.env list [] Environment variables for standalone pods
standalone.grpcSvc.annotations object {} Annotations for the gRPC service
standalone.grpcSvc.labels object {} Labels for the gRPC service
standalone.grpcSvc.port int 17912 Port for the gRPC service
standalone.httpSvc.annotations object {} Annotations for the HTTP service
standalone.httpSvc.externalIPs list [] External IPs for the HTTP service
standalone.httpSvc.labels object {} Labels for the HTTP service
standalone.httpSvc.loadBalancerIP string nil Load balancer IP for the HTTP service
standalone.httpSvc.loadBalancerSourceRanges list [] Load balancer source ranges for the HTTP service
standalone.httpSvc.port int 17913 Port for the HTTP service
standalone.httpSvc.type string "LoadBalancer" Type of the HTTP service
standalone.ingress.annotations object {} Annotations for the ingress
standalone.ingress.enabled bool false Enable or disable the ingress
standalone.ingress.labels object {} Labels for the ingress
standalone.ingress.rules list [] Rules for the ingress
standalone.ingress.tls list [] TLS settings for the ingress
standalone.livenessProbe.initialDelaySeconds int 20 Initial delay before starting liveness probes
standalone.livenessProbe.periodSeconds int 30 Period between liveness probes
standalone.livenessProbe.timeoutSeconds int 5 Timeout for liveness probes
standalone.livenessProbe.successThreshold int 1 Success threshold for liveness probes
standalone.livenessProbe.failureThreshold int 5 Failure threshold for liveness probes
standalone.nodeSelector list [] Node selector for standalone pods
standalone.podAnnotations.example string "banyandb-foo" Example annotation for standalone pods
standalone.podDisruptionBudget object {} Pod disruption budget for standalone pods
standalone.priorityClassName string "" Priority class name for standalone pods
standalone.readinessProbe.initialDelaySeconds int 20 Initial delay before starting readiness probes
standalone.readinessProbe.periodSeconds int 10 Period between readiness probes
standalone.readinessProbe.timeoutSeconds int 5 Timeout for readiness probes
standalone.readinessProbe.successThreshold int 1 Success threshold for readiness probes
standalone.readinessProbe.failureThreshold int 5 Failure threshold for readiness probes
standalone.resources.limits list [] Resource limits for standalone pods
standalone.resources.requests list [] Resource requests for standalone pods
standalone.securityContext object {} Security context for standalone pods
standalone.sidecar list [] Sidecar containers for standalone pods
standalone.tls.grpcSecretName string "" Secret name for gRPC TLS in standalone mode
standalone.tls.httpSecretName string "" Secret name for HTTP TLS in standalone mode
standalone.tolerations list [] Tolerations for standalone pods
storage.enabled bool false Enable or disable storage
storage.persistentVolumeClaims[0].accessModes[0] string "ReadWriteOnce" Access modes for the first PVC
storage.persistentVolumeClaims[0].claimName string "data" Claim name for the first PVC
storage.persistentVolumeClaims[0].existingClaimName string nil Existing 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].size string "50Gi" Size of the first PVC
storage.persistentVolumeClaims[0].storageClass string nil Storage class for the first PVC
storage.persistentVolumeClaims[0].volumeMode string "Filesystem" Volume mode for the first PVC
storage.persistentVolumeClaims[1].accessModes[0] string "ReadWriteOnce" Access modes for the second PVC
storage.persistentVolumeClaims[1].claimName string "meta" Claim name for the second PVC
storage.persistentVolumeClaims[1].existingClaimName string nil Existing claim name for the second PVC
storage.persistentVolumeClaims[1].mountTargets[0] string "metadata" Mount target for the second PVC
storage.persistentVolumeClaims[1].size string "5Gi" Size of the second PVC
storage.persistentVolumeClaims[1].storageClass string nil Storage class for the second PVC
storage.persistentVolumeClaims[1].volumeMode string "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

LICENSE

Apache 2.0