Installing Sisense without ClusterVisibility

Last updated: October 21, 2026

Tier Deployment
Enterprise On-Prem

You can install Sisense without cluster visibility (namespace-scoped mode). Sisense is installed in a Kubernetes namespace, and the Sisense services get permissions only within that namespace: no ClusterRoles or ClusterRoleBindings are created for them. This is primarily used for security reasons, for example on a cluster that is shared with other workloads.

The recommended way to install Sisense in this mode is with Helm. See Installing with Helm. You can also use sisense.sh. See Installing with sisense.sh.

What Changes Without Cluster Visibility

When global.clusterVisibility is false (cluster_visibility: false in sisense.sh):

  • The ClusterRoles and ClusterRoleBindings of the build, management, oxygen, and validator services are not created. These services run with cluster visibility turned off.

  • Sisense cannot read or label the Kubernetes nodes. For example, it cannot get the node names (kubectl get nodes), and it cannot manage the Sisense node labels.

  • The validator job cannot read nodes, PersistentVolumes, or Gateways.

  • Internal monitoring is not supported. The Sisense services cannot access pods and ConfigMaps in other namespaces, and the ConfigMap with the Sisense Grafana dashboards is empty, so you cannot use Prometheus and Grafana to view pod usage.

  • The Logging Helm chart cannot be used with namespace-only permissions: it creates a ClusterRole and a DaemonSet that reads log files from the nodes. See Installing/Updating Sisense Logging Helm Chart.

  • The network policies for custom code and exporting are created as standard Kubernetes NetworkPolicies instead of Calico network policies.

Important:

The Grafana that is part of the Sisense chart does not use global.clusterVisibility. By default, it still creates a ClusterRole and a ClusterRoleBinding. In namespace-scoped mode you must also set grafana.rbac.namespaced: true (or grafana.enabled: false to not deploy Grafana). sisense.sh sets grafana.rbac.namespaced: true for you.

Prerequisites

  1. Ensure that you fulfill the general prerequisites listed in Checking the Prerequisites and Planning Your Configuration.

  2. You must have a pre-installed Kubernetes cluster, and you must be connected to it (you can run kubectl commands such as kubectl get pod).
    For example: To install Kubernetes via the sisense.sh script, modify the installer/extra_values/installer/installer-values.yaml file, and make sure install_k8s_only: true, which will only install Kubernetes and will exit without Sisense installation.

  3. The identity that runs the installation needs the following Kubernetes permissions:

    • Full administrative rights in the Sisense namespace (the chart creates Roles, RoleBindings, ServiceAccounts, workloads, Services, ConfigMaps, Secrets, and PVCs there).

    • list on nodes and get on namespaces. The chart reads these cluster-scoped objects while it renders, even in namespace-scoped mode. Without them, helm install fails with a forbidden error.

    • If a namespace named monitoring exists in the cluster, the chart also creates a Role and a RoleBinding in it, so the identity needs rights to create them there.

    For example, a cluster administrator can grant the read access with the following ClusterRole (bind it to the installing identity with a ClusterRoleBinding):

    Copy
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: sisense-install-read
    rules:
    - apiGroups: [""]
      resources: ["nodes"]
      verbs: ["list"]
    - apiGroups: [""]
      resources: ["namespaces"]
      verbs: ["get"]

    For more information, see Privileges and Permissions for Self-Deployment.

  1. Create a namespace:

Copy
NAMESPACE=sisense #for example
kubectl create ns ${NAMESPACE}
  1. Label your Kubernetes nodes with the Sisense label. Sisense does not label the nodes in this mode, so you or your cluster administrator must do it. Every node that should run Sisense pods needs the following label, where ${NAMESPACE} is your Sisense namespace:

  • node-${NAMESPACE}-Application=true

The label key is case-sensitive (capital A), and the value is true. Pods do not schedule on nodes without this label. The role labels node-${NAMESPACE}-Build=true and node-${NAMESPACE}-Query=true, which sisense.sh applies in other modes, do not make a node eligible for Sisense pods; you can add them to keep the same labels as other installations.

Label the node pool or node group (in the AKS, EKS, or GKE node pool settings, or the equivalent in your platform) rather than individual nodes. A label that you add with kubectl label node is lost when the autoscaler replaces the node.

For example:

Copy
kubectl label node ${your_node_1} node-${NAMESPACE}-Application=true --overwrite=true
kubectl label node ${your_node_2} node-${NAMESPACE}-Application=true --overwrite=true
kubectl label node ${your_node_3} node-${NAMESPACE}-Application=true --overwrite=true

# Check which nodes carry the label:
kubectl get nodes -l node-${NAMESPACE}-Application=true

Note:

If you are using a cloud managed K8s or OpenShift, you may not be able to use the kubectl label node command, and you will have to modify the node labels via the Cloud/OpenShift provider’s UI or CLI command.

Nodes in cloud-managed node pools normally have no control-plane taint. If Sisense pods should run on control-plane nodes of a cluster that you manage yourself, remove their NoSchedule taint.

  1. Make sure that your Storage Classes exist. Sisense does not install storage drivers in this mode. You need (or you can use the same Storage Class for both RWX and RWO):

  • One for RWX (Read/Write many, for the shared Sisense storage)

  • One for RWO (Read/Write once, for the stateful sets, such as MongoDB/ZooKeeper)

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

Installing with Helm

Follow Installing Sisense with Helm on an Existing Cluster (Multinode/Cloud), and add the following values to your values file:

Copy
global:
  clusterVisibility: false
  monitoring:
    internal: false

grafana:
  rbac:
    namespaced: true     # or: enabled: false, to not deploy Grafana

# Metrics require the Prometheus Operator CRDs; keep them off
mongodb:
  metrics:
    enabled: false
rabbitmq:
  metrics:
    enabled: false
zookeeper:
  metrics:
    enabled: false

Use cluster mode (global.clusterMode.enabled: true) with your StorageClasses. In single-node mode, the chart creates hostPath PersistentVolumes, which are cluster-scoped objects.

Before you install, preview the installation with --dry-run=server and check that it contains no cluster-scoped RBAC objects:

Copy
helm install ${NAMESPACE} sisense-fusion/sisense --version ${SISENSE_SEMVER} \
  -n ${NAMESPACE} -f multinode-values.yaml --dry-run=server > sisense-render.yaml

grep -c '^kind: ClusterRole$' sisense-render.yaml          # expect 0
grep -c '^kind: ClusterRoleBinding$' sisense-render.yaml   # expect 0

Then install Sisense as described on that page.

Installing with sisense.sh

The sisense.sh route runs from a Linux install host. On the machine that runs sisense.sh, use a regular (non-root) Linux user that can run sudo without a password (NOPASSWD) for the duration of the installation. On an existing cloud cluster (EKS, AKS, GKE) or OpenShift, no privileges are required on the Kubernetes worker nodes: the installer does not connect to or run anything on them.

With cluster_visibility: false, sisense.sh:

  1. Download and extract the installer, and open your configuration file:

    Copy
    export SISENSE_VERSION=<YOUR SISENSE VERSION>
    wget https://data.sisense.com/linux/sisense_installer-${SISENSE_VERSION}-DockerHub.tar.gz
    tar -xvf sisense_installer-${SISENSE_VERSION}-DockerHub.tar.gz
    cd sisense-${SISENSE_VERSION}
    vi cloud_config.yaml # or openshift_config.yaml / cluster_config.yaml, according to your cluster

    Use cloud_config.yaml for EKS, AKS, or GKE, openshift_config.yaml for OpenShift, and cluster_config.yaml for an on-premises cluster that already runs Kubernetes.

  2. Edit the values as needed. See Installing Sisense on Linux, step 5 ("Deployment"), for information about the various parameters.
    Ensure that these parameters are configured as follows (add the parameters that are not in the file):

    • cluster_visibility: false

    • storage_type: "", rwx_sc_name: "<Your RWX Storage Class name>", and rwo_sc_name: "<Your RWO Storage Class name>". With an empty storage_type, both StorageClass names are required.

    • Only with cluster_config.yaml: update: true (even if it is your first time installing Sisense). This skips the Kubernetes installation on the existing cluster.

Example of the relevant parameters:

Copy
## Sisense will use Kubernetes ClusterRole in order to manage the tenant
cluster_visibility: false

## RWX and RWO Access Mode StorageClass names
storage_type: ""
rwx_sc_name: "nfs-csi"
rwo_sc_name: "nfs-csi"

## Name of Namespace
namespace_name: sisense

## Not installed when cluster_visibility is false
internal_monitoring: false

## Only with cluster_config.yaml on an existing cluster
update: true
  1. Run the installation:

Copy
./sisense.sh <your config file>
# Example: ./sisense.sh cloud_config.yaml

# The installer shows your configuration. If it is correct, type "Y" or "y" and press Enter.

The installer writes its log to the file sisense-installer.log in the directory from which you run sisense.sh.

  1. Once the installation is complete, you can activate and log in to your Sisense app.

InstallComplete