Installing Sisense using Provisioner and Helm

Objective

Provisioner provides an elegant and efficient solution for installing, upgrading and/or maintaining Sisense on an existing Kubernetes cluster.
The Provisioner application deploys Sisense using a single Helm Chart, the simplest way of getting started with our applications on Kubernetes.
Provisioner is provided to simplify the process of installing Sisense-related Helm Charts, as described in Installing Sisense using Helm Charts.

Introduction

This single Helm Chart bootstraps the Sisense installation on an existing Kubernetes cluster, including monitoring and logging stacks.

Chart Details

The Helm Chart provides the following deployments on an existing Kubernetes cluster:

  • Sisense application
  • Prometheus operator
  • Logging solution (fluentd, fluentd-bit)
  • ReadWriteMany storage solution (AWS FSx, NFS ..)
  • Cluster auto-scaler for Managed Kubernetes
  • NGINX for Terminating SSL for Sisense

Prerequisites

  • Supported Kubernetes Version (1.17 + )
  • Helm installed, versions 3.5.1 up to 3.8.1
  • RBAC Cluster-admin privileges
  • RWX Cluster Storage (Rook-Ceph, FSx, NFS, NetApp ...)
  • RWO Cluster Storage supported (gp2, gcd, azure disk ...)

SSL Prerequisites

Sisense uses the NGINX Ingress Controller with Ingress object for SSL termination on Layer 4.
Before installing Provisioner, perform the following steps:

  1. Run the following command:
    $ kubectl create ns <namespace_name>
  2. Run the following command:
    $ kubectl create secret tls <tlsSecretName>
    --namespace <namespace_name> \
    --key <ssl_key_filemne> \
    --cert <ssl_cer_filename>
  3. On the Provisioner, set the tlsSecretName values using the tlsSecretName from Step 2.

Preparation

Run the following command to install HELM 3 on a machine with cluster access (either by bastion or with one of the cluster's nodes):

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 && \
  chmod +x get_helm.sh && \
  DESIRED_VERSION=v3.5.1 ./get_helm.sh

Parameters

This section lists the Provisioner's chart configurable parameters.

Parameter Description Default

labeling.labelAllNodes

Label all Ready Kubernetes nodes for Sisense ability

false

labeling.kubernetesNodes

Enter the node names for each of the nodes being deployed.

Make sure you enter the actual name assigned to the node

(e.g., NAME shown using kubectl get nodes)

{{node1...},
{node2...},
{node3...}}

deploymentSize


Deployment size is used to determine the maximum pod limits allocated for applicationability

false


debug.verbose

Enable Ansible verbosity

false

debug.sleepMode

Enable Pod execute ability

false

pullSecretsName

Configure offline installation (Requires private docker registry)

nil

highAvailability

Loading sisense service in active/active redundancy

true

exposeNodePorts

Exposing NodePorts for MongoDB. RabbitMQ, Zookeeper, Query, Management, Translation and Build

false

gatewayPort

The exposed port of Sisense service (NodePort, in Non-Secure mode)

30845

timeZone

Sisense Application Time Zone

UTC

cloud.loadBalancer

Configure Ingress traffic using Service type

true

cloud.autoScaler

Install and configure Cluster auto scaler

true

persistence.enabled

Persistence Storage for Sisense HA, When false, it will use hostPath "/opt/sisense/storage" (Non-HA)

true

persistence.storageType

storageTypes: fsx, efs, rook-ceph, nfs (client), nfs-server, cephfs, trident.

fsx
persistence.sisenseDiskSize

Sisense Persistence volume size (GB)

70

persistence.mongodbDiskSize

MongoDB Persistence volume size (GB)

20
persistence.zookeeperDiskSize ZooKeeper Persistence volume size (GB) 1
persistence.fsxDnsName AWS FSx DNS name

nil

persistence.fsxMountName

AWS FSx mount name

nil

persistence.efsFileSystemId AWS EFS File system ID

nil

persistence.efsAwsRegion

AWS EFS Region

nil

persistence.nfsServer

NFS Server IP Address

nil

persistence.nfsPath

NFS Server Path

nil

persistence.rwxScName

SELF-SELECTION: ReadWriteMany StorageClass name (e.g: rook-ceph, trident, nfs, nfs-client, cephfs)

nil

persistence.rwoScName

SELF-SELECTION: ReadWriteOnce StorageClass name (e.g: gp2, default, standard)

nil

tlsSecretName

When using SSL Termination for Sisense service (Using NGINX-Ingress) set TLS Secret name (Prerequisite)

nil

applicationDnsName

DNS Name for Sisense service (CN Name)

nil

monitoring.internal Install Grafana, Prometheus for metrics and fluent-bit for logs

false

monitoring.external

Install Fluentd With Logz.io

Dashboards


false

uninstall.namespacedResources

Uninstall Sisense namespaced resources

false
uninstall.clusterResources Uninstall Sisense cluster resources (Prometheus, NFS..)

false

uninstall.removeUserData

Remove Sisense related Persistence Volumes and data

false

To install Sisense using Provisioner on an existing Kubernetes:

  1. Download the Provisioner Helm Chart supported version (Replace SISENSE_VERSION with Sisense external version):
    wget https://data.sisense.com/linux/helm/charts/incubator/provisioner-<SISENSE_VERSION>.tgz
  2. Run the following to export the Helm Chart’s default configuration/values file:
    helm inspect values provisioner-<SISENSE_VERSION>.tgz > values.yaml
  3. Edit Sisense Provisioner configuration for your setup:
    vim values.yaml
  4. Install or upgrade Sisense Provisioner Helm Chart:
    helm upgrade prov-$NAMESPACE -f values.yaml 
    ./provisioner-<SISENSE_VERSION>.tgz --namespace=$NAMESPACE 
    --install --create-namespace
  5. Observe the Sisense Provisioner provisioning process via its logs
    kubectl logs -f --namespace $NAMESPACE -l 
    app.kubernetes.io/name=provisioner

Using the Extra-Values Feature to Override Extended Configuration

You can override any values within Sisense Helm Charts by using the Extra-Values Feature.
Select a target Helm Chart and create your own override values file for each of the following supported Helm Charts:

  • installer-values
  • sisense
  • prometheus-operator
  • cluster-metrics
  • logging
  • nginx
  • alb-controller
  • cluster-autoscaler
  • nfs-client
  • nfs-server
  • aws-ebs-csi
  • descheduler

Run the following command to install the selected Helm Chart:

  helm install prov-sisense $CHART_URL \
--namespace=$NAMESPACE \
--create-namespace \
--set-file <TARGET-VALUES-NAME-FROM-THE-LIST>=<YOUR-OWN-VALUES-FILE-PATH> \
--set-file <TARGET-VALUES-NAME-FROM-THE-LIST>=<YOUR-OWN-VALUES-FILE-PATH>

For example, sisense-override-values.yml for overriding the "sisense" major Helm Chart values:

sisense-override-values.yml
api-gateway:
  replicaCount: 4
  affinity:
    podAntiAffinity: null
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: "node-sisense-Application"
            operator: In
            values:
            - "true”

Run the following command for the above example:

helm install prov-sisense $CHART_URL \
--namespace=$NAMESPACE \
--create-namespace \
--set-file sisense=./sisense-override-values.yml

Adding Custom Labels to Sisense Pods

Sisense also provides the ability to add custom labels to each type of Sisense pods (Sisense service).

To add custom labels to Sisense pod types:

  1. Create a YAML file for the custom labels.
  2. Enter only the pod types whose label you want to change, and their new custom label in the following format:
    adminmongo:
     labels:
       your: newlabel
    ai-integration:
     labels:
       your: newlabel
    analyticalengine:
     labels:
       your: newlabel
    api-gateway:
     labels:
       your: newlabel
    blox:
     labels:
       your: newlabel
    build:
     labels:
       your: newlabel
    compute-service:
     labels:
       your: newlabel
    configuration:
     labels:
       your: newlabel
    connectors:
     labels:
       your: newlabel
    customcode:
     labels:
       your: newlabel
    droppy:
     labels:
       your: newlabel
    exporter-xlsx:
     labels:
       your: newlabel
    exporting:
     labels:
       your: newlabel
    external-plugins:
     labels:
       your: newlabel
    filebrowser:
     labels:
       your: newlabel
    galaxy:
     labels:
       your: newlabel
    identity:
     labels:
       your: newlabel
    intelligence:
     labels:
       your: newlabel
    jobs:
     labels:
       your: newlabel
    knowledgegraph:
     labels:
       your: newlabel
    management:
     labels:
       your: newlabel
    migration:
     labels:
       your: newlabel
    model-graphql:
     labels:
       your: newlabel
    model-logspersistence:
     labels:
       your: newlabel
    nlq-compile:
     labels:
       your: newlabel
    nlq-duckling:
     labels:
       your: newlabel
    nlq-rt:
     labels:
       your: newlabel
    oxygen:
     labels:
       your: newlabel
    pivot2-be:
     labels:
       your: newlabel
    plugins:
     labels:
       your: newlabel
    query-proxy:
     labels:
       your: newlabel
    quest:
     labels:
       your: newlabel
    recommendation:
     labels:
       your: newlabel
    reporting:
     labels:
       your: newlabel
    storage:
     labels:
       your: newlabel
    tracking:
     labels:
       your: newlabel
    translation:
     labels:
       your: newlabel
    usage:
     labels:
       your: newlabel
    warehouse:
     labels:
       your: newlabel
  3. From the directory where the YAML file resides, run the following command:
    helm install prov-sisense $CHART_URL \
    --namespace=$NAMESPACE \
    --create-namespace \
    --set-file sisense=./<sisense-custom-labels>.yml

Upgrading Sisense using the Existing Provisioner Installation

Run the following command to upgrade the provisioner:

$ helm upgrade prov-sisense $CHART_URL \
--reuse-values \    
--namespace=$NAMESPACE 

Uninstalling Sisense

Run the following command to uninstall Sisense:

$ helm upgrade prov-sisense $CHART_URL \
--set uninstall.namespacedResources=true \
--set uninstall.clusterResources=false \
--set uninstall.removeUserData=true \
--namespace=$NAMESPACE \
--reuse-values \
--force \
--install

Uninstalling the Provisioner Chart

Run the following command to uninstall the Provisioner Chart:

helm uninstall prov-sisense -n sisense

.r.