Installing Sisense using Provisioner and Helm

Last updated: October 21, 2026

Tier Deployment
Enterprise On-Prem

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.

The Provisioner chart creates one Kubernetes Job. The Job runs the Sisense installer inside a pod in your cluster and installs the Sisense Helm chart and the add-ons you select (storage drivers, monitoring, logging, NGINX Gateway Fabric, and the cluster autoscaler). Because everything runs inside the cluster, no Linux user, SSH key, or sudo is needed anywhere. Run helm from any computer that has kubectl, helm, and cluster-admin access to the cluster.

Tip: Already have a Kubernetes cluster and want to install only the Sisense chart? You can install Sisense with Helm directly. See Installing Sisense with Helm on an Existing Cluster (Multinode/Cloud) and Choosing an Installation Method.

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 and Grafana (kube-prometheus-stack), when monitoring.internal is true
  • Logging solution (fluent-bit)
  • Storage drivers for the shared ReadWriteMany storage (Amazon FSx for Lustre, Amazon EFS, NFS) and the AWS EBS CSI driver
  • Kubernetes Cluster Autoscaler for Amazon EKS
  • NGINX Gateway Fabric for terminating SSL for Sisense

Prerequisites

  • Supported Kubernetes Version
  • A current Helm 3 release on the computer from which you run helm. See Preparation.
  • RBAC cluster-admin privileges. The Provisioner binds its service account to the cluster-admin ClusterRole, so the identity that runs helm install must be able to create that ClusterRoleBinding. No Linux user, SSH key, or sudo is required. For details, see Privileges and Permissions for Self-Deployment.
  • Storage for a multi-node or managed cluster: either storage that the Provisioner can set up (persistence.storageType), or existing ReadWriteMany (RWX) and ReadWriteOnce (RWO) StorageClasses. See Storage.
  • Each node that Sisense uses must report a pod capacity of at least 58 (kubectl get node <node-name> -o jsonpath='{.status.capacity.pods}'). The installer checks this and stops if a node has a lower capacity.
  • Access to the Sisense images in quay.io/sisense_release, or to your own registry (docker.registry and pullSecretsName).
  • When persistence.enabled is false (the default), the Provisioner Job and Sisense use hostPath volumes, so the namespace must allow hostPath volumes (Pod Security level privileged).

Node Labels

The Sisense Helm chart schedules its pods only on nodes that carry the label node-<namespace>-Application=true (for example, node-sisense-Application=true). By default, the Provisioner labels the nodes listed in labeling.kubernetesNodes, or all nodes when labeling.labelAllNodes is true. Labels applied this way are lost when a node is replaced (for example, by an autoscaler).

To keep the labels, apply them to your node groups or node pools and pass skip_labeling: true through installer-values. On AKS, this is the recommended setup, because labels that AKS manages at the node-pool level cannot be changed with kubectl. See Autoscaling and Linux.

SSL Prerequisites

Setting tlsSecretName enables SSL. The installer then deploys NGINX Gateway Fabric (NGF) to terminate TLS. NGF requires Kubernetes 1.32 or later. Before installing Provisioner, perform the following steps:

  1. Create the TLS secret in the namespace of the NGF Gateway. By default, this is the default namespace:

    Copy
    kubectl create secret tls <tlsSecretName> \
      --namespace default \
      --key <ssl_key_filename> \
      --cert <ssl_cer_filename>

    To use a different namespace for NGF, create that namespace, create the TLS secret in it, and set the following value in the Provisioner Helm chart installation:

    Copy
    ERROR: Invalid Code Highlighting Language

    The installer checks that the secret exists in this namespace and stops if it does not.

  2. On the Provisioner, set tlsSecretName to the name of the secret from the previous step, and set applicationDnsName to the Common Name of the certificate.

Preparation

Install a current Helm 3 release on a computer with access to the cluster. See Installing Helm in the Helm documentation.

Storage

When persistence.enabled is true, Sisense uses the following volumes:

Volume Access mode Size

Shared application storage, mounted by most Sisense services on all nodes at the same time

ReadWriteMany (RWX)

persistence.sisenseDiskSize (70 GB). On AKS, at least 1,200 GB by default.

MongoDB, one volume per replica

ReadWriteOnce (RWO)

persistence.mongodbDiskSize (20 GB)

ZooKeeper, one volume per replica

ReadWriteOnce (RWO)

persistence.zookeeperDiskSize (2 GB)

The shared volume must be writable by the UID and GID that Sisense runs as (securityContext.runAsUser and runAsGroup, 1000 by default).

Use exactly one of the following storage patterns. If you set both, or neither, the Provisioner Job stops with an error:

  • Let the Provisioner set up the storage: set persistence.storageType (fsx, efs, or nfs) and the related persistence.* values.

  • Use your own StorageClasses: set both persistence.rwxScName and persistence.rwoScName. For Azure Files, create the RWX StorageClass with the mount options described in Deploying Sisense on AKS with Azure Files Premium.

For more information, see Storage Requirements for Self-Deployment.

Parameters

This section lists the Provisioner's chart configurable parameters.

Parameter Description Default

labeling.labelAllNodes

Label all Kubernetes nodes with all three Sisense roles (Application, Query, and Build). When true, labeling.kubernetesNodes is ignored.

false

labeling.kubernetesNodes

The nodes to label and their roles (application, query, build), used when labeling.labelAllNodes is false. The defaults are placeholders: replace them with the actual node names (the NAME shown by 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.

The Provisioner applies the labels node-<namespace>-Application, -Query, and -Build. On AKS, apply the labels to the node pools yourself and set skip_labeling: true in installer-values; see Node Labels.

{ node: node1, roles: "application, query" }
{ node: node2, roles: "application, query" }
{ node: node3, roles: "build" }

deploymentSize

Resource profile that determines the maximum pod limits allocated for the application: small or large.

small

notifyOnUpgrade

Show a maintenance page instead of Sisense during upgrades.

true

clusterVisibility

Keep true. The Provisioner binds its service account to the cluster-admin ClusterRole so that it can install cluster-level components, and enables the Sisense features that require cluster-wide access (for example, node management for data groups).

true

enable_widget_deltas

Enable the delta approach for shared dashboards and widgets.

false

highAvailability

Run Sisense services in active/active redundancy. Requires at least three labeled nodes.

true

securityContext.runAsUser

UID that the Provisioner Job and all Sisense services run as. If you change it, the Job also mounts the node's /etc/passwd file (read-only). See Installing RKE with a Specified UID.

1000

securityContext.runAsGroup

GID that the Provisioner Job and all Sisense services run as.

1000

securityContext.fsGroup

fsGroup for the Provisioner Job and all Sisense services.

1000

securityContext.fsGroupChangePolicy

fsGroupChangePolicy for the Provisioner Job.

OnRootMismatch

securityContext.seLinuxOptions.level

SELinux level for the Provisioner Job.

s0:c123,c456

skipValidations

Skip the installer's validations, such as the node pod-capacity check. Not recommended.

false

debug.verbose.enabled

Run the installer with verbose output (bash -x) in the Job log.

false

debug.sleepMode

After the installer finishes (successfully or not), keep the Job pod running for 6 hours so that you can open a shell in it (kubectl exec) for troubleshooting.

false

docker.registry

Registry for the Provisioner image and all Sisense images.

quay.io/sisense_release

docker.username
docker.password

Credentials for docker.registry. The installer uses them to create the image pull secret named in pullSecretsName.

Important:

These values are stored in plain text in the Provisioner's ConfigMap. Instead, create the image pull secret yourself and set pullSecretsName.

""

pullSecretsName

Name of an existing image pull secret (type kubernetes.io/dockerconfigjson) in the Sisense namespace. It is used to pull the Provisioner image and the Sisense images, so it is required when docker.registry is private. If empty, Sisense uses the name sisense-pull-secret.

""

offlineInstaller

Set to true for an offline (air-gapped) installation. Requires a private registry in docker.registry.

false

applicationDnsName

DNS name of Sisense. When empty, the name of the first node is used. When you set tlsSecretName, enter the Common Name (CN) of the certificate. Add the http:// or https:// prefix when an external load balancer is used.

""

cloud.loadBalancer

Expose Sisense through a cloud LoadBalancer Service named api-gateway-external.

false

cloud.loadBalancer_internal

With cloud.loadBalancer, create an internal load balancer instead of an internet-facing one.

false

cloud.autoScaler

On Amazon EKS, install the Kubernetes Cluster Autoscaler. On AKS and GKE, no autoscaler is installed (use the autoscaler built into the node pools); set to true if your node pools autoscale. See Autoscaling and Linux.

false

persistence.enabled

false: single-node model. Sisense stores its data with hostPath volumes under /opt/sisense on the node, and the Provisioner Job also mounts /opt/sisense from the node.

true: cluster (multi-node) model on StorageClasses. Set to true on any managed or multi-node cluster. See Storage.

false

persistence.storageType

Let the Provisioner install the storage driver for the shared storage: fsx (Amazon FSx for Lustre CSI driver), efs (Amazon EFS provisioner), or nfs (NFS CSI driver for an existing NFS server). Set either storageType or both rwxScName and rwoScName, not both.

""

persistence.sisenseDiskSize

Size (GB) of the shared ReadWriteMany volume.

70

persistence.mongodbDiskSize

Size (GB) of each MongoDB volume (one per replica).

20

persistence.zookeeperDiskSize

Size (GB) of each ZooKeeper volume (one per replica).

2

persistence.fsxDnsName
persistence.fsxMountName

DNS name and mount name of your FSx for Lustre file system. Required when storageType is fsx. To share one file system between several Sisense namespaces, end the mount name with a slash (/).

""

persistence.nfsServer
persistence.nfsPath

Address (IP or DNS) and exported path of your NFS server. Required when storageType is nfs.

""

persistence.efsFileSystemId
persistence.efsAwsRegion

ID and AWS region of your EFS file system. Required when storageType is efs.

""

persistence.rwxScName
persistence.rwoScName

Names of existing ReadWriteMany and ReadWriteOnce StorageClasses. Set both; if you set only one, both are ignored.

""

initContainers.zookeeper
initContainers.rabbitmq

Run init containers that wait until ZooKeeper and RabbitMQ are available before Sisense services start.

true

tlsSecretName

Name of an existing TLS Secret. Setting this value enables SSL: the installer deploys NGINX Gateway Fabric to terminate TLS. See SSL Prerequisites.

""

exposeNodePorts

Also expose NodePorts for MongoDB, RabbitMQ, ZooKeeper, Query, Management, Translation, and Build. Not recommended on shared clusters.

false

gatewayPort

NodePort of the Sisense API gateway when SSL is not used.

30845

timeZone

Sisense application time zone.

UTC

monitoring.internal

Install Prometheus and Grafana for metrics and the Sisense logging components.

Notes:

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

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

true

uninstall.namespacedResources

Uninstall the Sisense namespaced resources. See Uninstalling Sisense.

false

uninstall.clusterResources

Also uninstall the cluster-level components that Sisense installed (for example, Prometheus and storage drivers).

false

uninstall.removeUserData

Delete the Sisense volumes and data.

false

installer-values

Additional installer settings that the chart does not expose as values. Provide them as a YAML map under installer-values in your values file, or with --set-file installer-values=<file>. For example:

  • skip_labeling: true: do not label nodes (for example, on AKS when the node pools carry the Sisense labels).

  • hpa.enabled: true: enable Horizontal Pod Autoscaling (HPA). Default false.

  • httpRoute.gatewayNamespace: namespace of the NGINX Gateway Fabric Gateway. Default default.

  • httpRoute.gatewayName: name of the Gateway. Default sisense-gateway.

(not set)

To install Sisense using Provisioner on an existing Kubernetes:

The commands below use the release name prov-sisense and the namespace in $NAMESPACE. Use the same release name and namespace for all later upgrade and uninstall commands.

  1. Download the Provisioner Helm Chart supported version (Replace SISENSE_VERSION with Sisense external version):
    Copy
    wget https://data.sisense.com/linux/provisioner-<SISENSE_VERSION>.tgz
  2. Run the following to export the Helm chart's default configuration/values file:
    Copy
    helm show values provisioner-<SISENSE_VERSION>.tgz > values.yaml
  3. Edit Sisense Provisioner configuration for your setup:

    Copy
    vim values.yaml

    For example, a minimal values.yaml for a managed cluster with existing StorageClasses:

    Copy
    ERROR: Invalid Code Highlighting Language
  4. Install or upgrade Sisense Provisioner Helm Chart:
    Copy
    helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
      --namespace $NAMESPACE \
      --create-namespace \
      --install \
      -f values.yaml

    Each helm install or helm upgrade creates a new Provisioner Job. Completed Jobs are not deleted automatically; you can delete them when they are no longer needed.

  5. Observe the Sisense Provisioner provisioning process via its logs:
    Copy
    kubectl logs -f --namespace $NAMESPACE -l app.kubernetes.io/name=provisioner
  6. Once the installation is complete, some Sisense pods will remain in the Init state until the license activation. To activate the license, navigate to the Sisense web application URL (without extra paths such as /app/account/login) in your browser and enter your license credentials.

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 (installer settings; see the Parameters table)
  • sisense (the Sisense Helm chart)
  • kube-prometheus-stack
  • logging
  • nginx-gateway-fabric
  • alb-controller (used only when alb_controller.enabled is true in installer-values, on Amazon EKS)
  • cluster-autoscaler
  • aws-ebs-csi
  • efs

Run the following command to install the selected Helm Chart:

Copy
helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
  --namespace $NAMESPACE \
  --create-namespace \
  --install \
  -f values.yaml \
  --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:

Copy
ERROR: Invalid Code Highlighting Language

Run the following command for the above example:

Copy
helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
  --namespace $NAMESPACE \
  --create-namespace \
  --install \
  -f values.yaml \
  --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 Sisense services whose pod labels you want to change, each with its new custom labels. Use the service names as they appear in the Sisense Helm chart (for example, api-gateway, management, query, build), in the following format:
    Copy
    ERROR: Invalid Code Highlighting Language
  3. From the directory where the YAML file resides, run the following command:
    Copy
    helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
      --namespace $NAMESPACE \
      --create-namespace \
      --install \
      -f values.yaml \
      --set-file sisense=./<sisense-custom-labels>.yml

Upgrading Sisense using the Existing Provisioner Installation

Download the Provisioner chart of the new version, and run the following command with the same values file you installed with (updated as needed). The Provisioner sets the installer's update flag automatically on every upgrade.

Copy
helm upgrade prov-sisense ./provisioner-<NEW_SISENSE_VERSION>.tgz \
  --namespace $NAMESPACE \
  -f values.yaml

Uninstalling Sisense

Run the following command to uninstall Sisense:

Copy
helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
  --set uninstall.namespacedResources=true \
  --set uninstall.clusterResources=false \
  --set uninstall.removeUserData=true \
  --namespace $NAMESPACE \
  --reuse-values \
  --force \
  --install

Note:

  • Setting removeUserData=true will erase user data.

  • The uninstall.* values stay in the release after the uninstall Job completes. Before you run another helm upgrade with --reuse-values, set them back to false, or uninstall the Provisioner chart; otherwise the next upgrade runs the uninstall again.

Uninstalling the Provisioner Chart

Run the following command to uninstall the Provisioner Chart. This removes only the Provisioner's own objects (service account, role binding, ConfigMaps, and Jobs). It does not uninstall Sisense; to remove Sisense, first follow Uninstalling Sisense.

Copy
helm uninstall prov-sisense -n $NAMESPACE