Installing Sisense using Provisioner and Helm

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 .

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 ...)

Note:

Rook-Ceph is no longer supported as the shared storage layer for new deployments of Sisense Fusion. This Rook-Ceph documentation is intended only for existing Sisense instances configured to use Rook-Ceph. If you’re a new Sisense customer or an existing customer installing a new Sisense deployment, you should use one of the supported alternatives such as FSx (for AWS) or NFS (for non-AWS).

  • 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 the previous step.

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)

Note:

Node names may not include uppercase letters. Node names can only include lowercase letters, digits and hyphens. Hyphens cannot be the last character in the node name.

{{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

SecurityContext.runAsUser

Defines the SecurityContext.runAsUser for all Sisense services. See Installing RKE with a Specified UID.

1000

SecurityContext.runAsGroup

Defines the SecurityContext.runAsGroup for all Sisense services. See Installing RKE with a Specified UID.

1000

SecurityContext.fsGroup

Defines the SecurityContext.fsGroup for all Sisense services. See Installing RKE with a Specified UID.

1000

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

Notes:

  • If SecurityContext.runAsUser has a UID other than 1000, monitoring.internal must be false.

  • For OpenShift installations, internal and external monitoring are not supported and must be disabled, (set to false). Please consider using OpenShift built-in monitoring tools instead.

false

monitoring.external

Install Fluentd With an external monitoring system

Notes:

  • If SecurityContext.runAsUser has a UID other than 1000, monitoring.external must be false.

  • For OpenShift installations, internal and external monitoring are not supported and must be disabled, (set to false). Please consider using OpenShift built-in monitoring tools instead.

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/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
  • kube-prometheus-stack

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