Installing Sisense using Provisioner and Helm
Last updated: October 21, 2026
| Tier | Deployment |
|
|
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.internalistrue - 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-adminClusterRole, so the identity that runshelm installmust be able to create that ClusterRoleBinding. No Linux user, SSH key, orsudois 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.registryandpullSecretsName). - When
persistence.enabledisfalse(the default), the Provisioner Job and Sisense usehostPathvolumes, so the namespace must allowhostPathvolumes (Pod Security levelprivileged).
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:
-
Create the TLS secret in the namespace of the NGF Gateway. By default, this is the
defaultnamespace:Copykubectl 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:
CopyERROR: Invalid Code Highlighting LanguageThe installer checks that the secret exists in this namespace and stops if it does not.
-
On the Provisioner, set
tlsSecretNameto the name of the secret from the previous step, and setapplicationDnsNameto 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) |
|
|
MongoDB, one volume per replica |
ReadWriteOnce (RWO) |
|
|
ZooKeeper, one volume per replica |
ReadWriteOnce (RWO) |
|
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, ornfs) and the relatedpersistence.*values. -
Use your own StorageClasses: set both
persistence.rwxScNameandpersistence.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 |
false |
|
labeling.kubernetesNodes |
The nodes to label and their roles ( 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: node1, roles: "application, query" } |
|
deploymentSize |
Resource profile that determines the maximum pod limits allocated for the application: |
small |
|
notifyOnUpgrade |
Show a maintenance page instead of Sisense during upgrades. |
true |
|
clusterVisibility |
Keep |
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 |
|
1000 |
|
securityContext.fsGroupChangePolicy |
|
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 ( |
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 ( |
false |
|
docker.registry |
Registry for the Provisioner image and all Sisense images. |
quay.io/sisense_release |
|
docker.username |
Credentials for Important: These values are stored in plain text in the Provisioner's ConfigMap. Instead, create the image pull secret yourself and set |
"" |
|
pullSecretsName |
Name of an existing image pull secret (type |
"" |
|
offlineInstaller |
Set to |
false |
|
applicationDnsName |
DNS name of Sisense. When empty, the name of the first node is used. When you set |
"" |
|
cloud.loadBalancer |
Expose Sisense through a cloud |
false |
|
cloud.loadBalancer_internal |
With |
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 |
false |
|
persistence.enabled |
|
false |
|
persistence.storageType |
Let the Provisioner install the storage driver for the shared storage: |
"" |
|
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 |
DNS name and mount name of your FSx for Lustre file system. Required when |
"" |
|
persistence.nfsServer |
Address (IP or DNS) and exported path of your NFS server. Required when |
"" |
|
persistence.efsFileSystemId |
ID and AWS region of your EFS file system. Required when |
"" |
|
persistence.rwxScName |
Names of existing ReadWriteMany and ReadWriteOnce StorageClasses. Set both; if you set only one, both are ignored. |
"" |
|
initContainers.zookeeper |
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:
|
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
|
(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.
- 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 - Run the following to export the Helm chart's default configuration/values file:Copy
helm show values provisioner-<SISENSE_VERSION>.tgz > values.yaml -
Edit Sisense Provisioner configuration for your setup:
Copyvim values.yamlFor example, a minimal values.yaml for a managed cluster with existing StorageClasses:
CopyERROR: Invalid Code Highlighting Language - Install or upgrade Sisense Provisioner Helm Chart:Copy
helm upgrade prov-sisense ./provisioner-<SISENSE_VERSION>.tgz \
--namespace $NAMESPACE \
--create-namespace \
--install \
-f values.yamlEach
helm installorhelm upgradecreates a new Provisioner Job. Completed Jobs are not deleted automatically; you can delete them when they are no longer needed. - Observe the Sisense Provisioner provisioning process via its logs:Copy
kubectl logs -f --namespace $NAMESPACE -l app.kubernetes.io/name=provisioner - 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-stackloggingnginx-gateway-fabricalb-controller(used only whenalb_controller.enabledistrueininstaller-values, on Amazon EKS)cluster-autoscaleraws-ebs-csiefs
Run the following command to install the selected Helm Chart:
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:
Run the following command for the above example:
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:
- Create a YAML file for the custom labels.
- 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:CopyERROR: Invalid Code Highlighting Language - 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.
helm upgrade prov-sisense ./provisioner-<NEW_SISENSE_VERSION>.tgz \
--namespace $NAMESPACE \
-f values.yaml
Uninstalling Sisense
Run the following command to uninstall Sisense:
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=truewill erase user data. -
The
uninstall.*values stay in the release after the uninstall Job completes. Before you run anotherhelm upgradewith--reuse-values, set them back tofalse, 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.
helm uninstall prov-sisense -n $NAMESPACE