Installing Databand in Kubernetes Cluster

Instruction on how to remotely install Databand in a Kubernetes Cluster.

This guide will demonstrate how to deploy Databand on a remote Kubernetes cluster.

Installation Prerequisites

Before you can run scripts described in this guide, you need to have the following software installed:

Create user-values.yaml

# user-values.yaml
global:
    databand:
        image:
            tag: v0.45.8
        imageCredentials:
            username: <YOUR_USERNAME>
            password: <YOUR_PASSWORD>

dbnd-airflow-monitor:
    enabled: false

Install Databand from Published Chart

helm repo add --username USERNAME  --password PASSWORD databand-deploy https://gitlab.com/api/v4/projects/16834345/packages/helm/stable

Install/Update Helm Chart

To install the Databand Chart into your Kubernetes cluster, run the following command:

 helm upgrade databand --install --namespace databand-system --values ./user-values.yaml databand-deploy/databand

After completing the installation, run the following command to get the status of the Databand Chart:

helm status "databand" --namespace databand-system

Chart Notes

  • This chart automatically prefixes all names using the release name to avoid collisions.
  • This chart exposes a single endpoint for the Databand Web UI which can be placed either at the root of the domain or at the subpath, for example http://`mycompany.com`/databand/ .
  • In this chart, the local PostgreSQL is used as Databand Database.

Set Up Alerts

Set up alerts by configuring the alert receivers and routes in the values.yaml. See the commented section of the alertmanager.yml.

Ingress

The Databand Chart provides an Ingress configuration to allow customizing the installation depending on your setup. See the comments in the values.yaml file for more details on how to configure your reverse proxy or load balancer.

# user-values.yaml

ingress:
    enabled: true
    web:
        host: <DBND_EXTERNAL_URL>

Grafana

# user-values.yaml
grafana:
    # Enables Grafana
    enabled: true -

    ingress:
        enabled: true
        hosts:
            - <GRAFANA_EXTERNAL_URL>
        annotations:
            kubernetes.io/ingress.class: nginx

Databand Airflow Monitor

# user-values.yaml
dbnd-airflow-monitor:
    enabled: true

Database Configuration

External Database

If you want to use External DB (suggested), please
see External DB for Databand MetaData. Update your user-values.yaml with

# user-values.yaml

postgres:
    enabled: false

sql_alchemy_conn:
    protocol: "postgresql+psycopg2"
    username: "databand"
    password: "databand"
    host: "databand.example.com"
    port: "5432"
    dbname: "databand"

For Postgres Database Built Into Databand Chart :

Create secure Database connection credentials.

kubectl create secret generic databand-postgres --namespace databand-system --from-literal=postgres-password=$(openssl rand -base64 13)
kubectl create secret generic databand-redis ---namespace databand-system  --from-literal=redis-password=$(openssl rand -base64 13)

Update your user-values.yaml

# user-values.yaml

postgres:
    existingSecret: databand-postgres

redis:
    existingSecret: databand-redis

Additional environment variables

You can specify additional environment variables by using the same format as in the definition of the pod's .spec.containers.env. These environment variables are mounted on the web, scheduler, and worker pods. You can use this feature to pass additional secret environment variables to Databand.

Here is an example showing how to pass in a Fernet key. Note that for this example to work, databand Kubernetes secret must already exist in the proper namespace; be sure to create it before running Helm.

extraEnv:
    - name: DATABAND__CORE__FERNET_KEY
      valueFrom:
          secretKeyRef:
              name: databand
              key: fernet-key

Deploy Databand without RBAC Permissions

Default Databand installation requires RBAC permissions for "service discovery" and Prometheus stack. If you don't have RBAC:

  • Alert receiver settings tab won't be displayed in the Databand Application UI
  • Alertmanager will use the deployment configmap configurations

To disable the alert_def_syncer syncing Alertmanager template file from Databand DB, make changes to the user-values.yaml:

databand:
    alert:
        sync_alertmanager_config: false

Deploy Webserver with Serving Statics Files Enabled

By default, Ingress controls routing and redirect statics requests to the webapp pod. To enable serving statics from webserver pod, the following configs should be changed to true:

web:
    statics:
        serving_enabled: true
        sync_webapp_all: true

With sync_webapp_all enabled, the webserver will download all statics from the webapp at startup to make them available locally.
With serving_enabled enabled, webserver will handle statics requests.

Install Databand Using Chart Source Code

  • Run git clone https://gitlab.com/databand/databand-deploy.git /opt/databand_deploy.
  • When prompted, enter the GitLab user and password.
  • Checkout the latest version: git checkout release/v0.XX (change XX to the latest version number)
  • Go to the Databand Kubernetes deployment directory: cd /opt/databand_deploy/databand_helm/databand.
  • Add the dependencies to the repository: helm dependency update.

Did this page help you?