# Deploying Sisense on Azure Kubernetes Service

> How to Deploy Sisense on Azure Kubernetes Service

*Source: https://docs.sisense.com/main/SisenseLinux/deploying-sisense-on-azure-kubernetes-service.htm*

---

Last updated: June 10, 2026

|  |  |
| --- | --- |
| [Tier](https://www.sisense.com/pricing/#pricing) | [Deployment](https://docs.sisense.com/main/SisenseLinux/introduction-to-sisense-cloud-managed-services.md#ComparisonofManagedCloudandSelfHosted) |
| Enterprise | On-Prem |

Sisense can be provisioned on Azure Kubernetes Service (AKS).

To provision Sisense, you must download and extract the Sisense Linux archive. This archive includes a configuration YAML file, which contains all the configuration settings required to deploy a single-node or multi-node cluster on the Azure Kubernetes Service.

You can customize your installation by setting various parameters in the cloud configuration YAML file. Once the parameters have been defined, you run the script to deploy Sisense, and then retrieve the URL to access the Sisense application online.

**Important:**

When deploying **Sisense on AKS (version 1.24 and later) with SSL enabled**, the Nginx service contains the string `appProtocol: https`. Because of this configuration setting, AKS creates the LoadBalancer with the health probe protocol = HTTPS, which makes the system unreachable.

The workaround is to remove the `appProtocol: https` line from the Kubernetes service of Nginx. This configuration change changes the protocol of LoadBalancer in Azure.

For more related information see [Azure LoadBalancer](https://cloud-provider-azure.sigs.k8s.io/topics/loadbalancer/#custom-load-balancer-health-probe).

## Prerequisites

- az shell or Azure CLI
- You must mark your worker nodes with labels recognized by Sisense, see [Autoscaling and Linux](https://docs.sisense.com/main/SisenseLinux/autoscaling-and-linux.md)

Note:

- If the AKS is deployed with node labels `node-${NAMESPACE}-Application=true`, `node-${NAMESPACE}-Query=true`, `node-${NAMESPACE}-Build=true` (for example: `node-sisense-Application=true`, `node-sisense-Query=true`,  
  `node-sisense-Build=true`), meaning that those node labels came directly via the Azure AKS UI or the `az aks` command, then in the extra values file *installer/extra\_values/installer/installer-values.yaml*, set `skip_labeling: true`.
- If you are uninstalling/reinstalling Sisense on AKS/GKE in order to migrate to the new nfs-csi controller in Sisense version L2025.2 or newer, you must manually remove the nfs-client storage class. To do that:

  - Run `kubectl delete sc nfs-client`
  - Delete the helm chart: `helm delete -n default nfs-client-provisioner`

    - If `nfs-client-provisioner` is installed on a different `utils_namespace`, run the following command:  
      `helm delete -n ${utils_namespace} nfs-client-provisioner`

  Otherwise the new installation will still use `nfs-client-provisioner`.

## Deploying Sisense on Azure Kubernetes Service

1. Configure the local kubectl.

   ```
   az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
   ```
2. Download a Sisense version package. Contact your Sisense Customer Success Manager for a link to the latest version.

   ```
   wget $sisense_url
   ```
3. Extract the Sisense package.

   ```
   tar zxf $package_name
   ```
4. Navigate to the directory where you extracted the tar.gz file.

   ```
   cd sisense-$sisense_version
   ```
5. Access the config.yaml file.

   ```
   vim cloud_config.yaml
   ```
6. Edit the following values in the cloud\_config.yaml file.

   | Parameters | Value |
   | --- | --- |
   | ``` k8s_nodes: 									- { node: node1, roles: "application, query" } 									- { node: node2, roles: "application, query" } 								- { node: node3, roles: "build" } ``` | The K8S node/nodes are the set of machines that will be used to run Sisense.  **node**: Enter the name of your nodes to be included in the cluster. You can retrieve their values with the command:   ``` kubectl get nodes ```   **role**: Define the role of the node with one of the following values: **application**, **query**, and **build**.  **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 installation machine is used only during installation to run the installation scripts. The Installation machine can be one of the K8S nodes, but it can also be a different machine (remote installation). |
   | ``` deployment_size: "small" ``` | Set to **large** to increase pod resource limits allocated for the application. |
   | ``` cluster_visibility: true ``` | For security restrictions that revoke cluster role permissions, set to false to disable the following Sisense workflows. - Watching Sisense Nodes that exist or are added to the cluster (E.g. for the   data-groups feature). In this case, a customer should use manual labeling method - Updating the logging system with the customer registered owner ID. |
   | ``` offline_installer: false ``` | Set to **true** when you are using an offline installer. |
   | ``` #docker_registry: "" ``` | (Optional) Only required if you are using an offline installer (   ``` offline_installer = true ```  ). Enter your server's address. |
   | ``` #pull_secrets_name: "" ``` | (Optional) Only required if you have entered a value for the   ``` docker_registry ```  parameter. Enter the docker secret name if your registry is private. |
   | ``` update: false ``` | Enter **true** If you are upgrading Sisense.  Otherwise, use false as the default value. |
   | ``` Notify_On_Upgrade: true ``` | If set to true, the Sisense application will not be accessible during upgrades. Instead, a system maintenance notification will appear. |
   | ``` is_kubernetes_cloud: true ``` | Enter **true** if you already have a Kubernetes cluster. |
   | ``` kubernetes_cluster_name: "" ``` | Enter your Kubernetes cluster name. |
   | ``` kubernetes_cluster_location: "" ``` | Enter your Kubernetes cluster location.  For Google GKE, the value must be the name of your zone. |
   | ``` 								kubernetes_cloud_provider: "" ``` | Enter **azure**. |
   | ``` cloud_load_balancer: false ``` | Enter **true** if you have defined a load balancer.  For more information see, [Setting Up a Load Balancer](https://docs.sisense.com/main/SisenseLinux/setting-up-a-load-balancer.md) for more information. |
   | ``` cloud_auto_scaler: false ``` | Enter **true** if you want Sisense to integrate with GKE node autoscaling when needed. |
   | ``` high_availability: true ``` | Enter **false** if your system does not support redundancy between the nodes. |
   | ``` application_dns_name: "" ``` | Enter the DNS name.  - If no DNS name is entered, the default value is the external IP of the first node in   the cluster. - If the is\_ssl parameter is set to true, enter the Common Name for this parameter. - If an external load balancer is used for the Common Name, add the http:// or   https:// prefix to the entry. Note:: You can only define this parameter when installing or upgrading Sisense. After defining this value, you can view this value under **General Settings** in the Sisense **Admin** page. |
   | ``` linux_user: "" ``` | Enter the name of the Linux user.  This user must not be the "root" user, but must have sudo privileges, and all the other privileges as a root user. |
   | ``` ssh_key: "" ``` | Enter the SSH key if you have a secure connection to your server. The SSH key of the Linux user defined in linux\_user.  The SSH key must be in .pem format.  If you do not provide this key, you will be prompted to enter the Linux user's password during installation. |
   | ``` storage_type: "" ``` | Enter one of the following:   ``` nfs ```  ``` azurefile ```   If the value is nfs, define the nfs\_server and nfs\_path values. |
   | ``` nfs_server: "" ``` | Enter your NFS server's address (IP or DNS). |
   | ``` nfs_path: "" ``` | Enter your NFS server's location.  The mounting point for each logical disk (Sisense app, MongoDB, and Zookeeper) is created under this path. |
   | ``` mongodb_disk_size: 20 ``` | Enter the amount of disk space allocated for the Sisense application database.  This value should be multiplied by the number of nodes used in your deployment.  It is recommended to leave the default of 20GB. If only metadata is stored in MongoDB, there is no need to increase the size. |
   | ``` zookeeper_disk_size: 2 ``` | Enter the amount of disk space allocated for the ZooKeeper service. This value should be multiplied by the number of nodes in your deployment. It is recommended to leave the default of 2GB. If only metadata is stored in the Zookeeper service, there is no need to increase the size. |
   | ``` timezone: "UTC" ``` | Enter the system time zone. Applicable to the time zone of the relative date-time filters. Format: [TZ database name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) (i.e., UTC, US/Central, Asia Tokyo, Etc/GMC+6). |
   | ``` namespace_name: sisense ``` | Enter the name of the Kubernetes namespace. By default, the namespace is Sisense.  If you have multiple deployments, you should have a unique namespace for each deployment For example, there might be a development and production environment. Additionally for multiple deployments:  - Each environment must have a unique`gateway_port`value. - For each deployment after the first, the value of the update must be set to   **true**. Note:: Kubernetes ports should be released (Non-listening mode). |
   | ``` gateway_port: 30845 ``` | Enter the port of the API gateway for your deployment. Do not set this port to 443 if setting up SSL.  If you are not implementing SSL, this is the port used to connect to Sisense. |
   | ``` is_ssl: false ``` | Enter **true** to initialize SSL. Sisense creates a SSL load balancer on port 443.  If you enter true, see [Setting Up SSL for Sisense on Linux](https://docs.sisense.com/main/SisenseLinux/setting-up-ssl-for-sisense-linux.md) for more configuration information. |
   | ``` ssl_key_path: "" ``` | If you connect to your server securely, enter the SSL keypath.  When SSL is defined, the Sisense API Gateway Port will be 443 and not the value defined in the `gateway_port`parameter. |
   | ``` ssl_cert_path: "" ``` | If you connect to your server securely, enter the SSL certificate path (.cer file). |
   | ``` internal_monitoring: true ``` | Enter **false** to disable a Prometheus supported Grafana dashboard from monitoring your deployment. For more information, see [Monitoring Sisense on Linux](https://docs.sisense.com/main/SisenseLinux/monitoring-sisense-on-linux.md). |
   | ``` uninstall_sisense: false ``` | Enter **true** to uninstall Sisense services, but leave your Kubernetes in the `gateway_port`parameter. |
   | ``` ssl_cert_path: "" ``` | If you connect to your server securely, enter the SSL certificate path (.cer file). |
   | ``` internal_monitoring: true ``` | Enter **false** to disable a Prometheus supported Grafana dashboard from monitoring your deployment. For more information, see [Monitoring Sisense on Linux](https://docs.sisense.com/main/SisenseLinux/monitoring-sisense-on-linux.md). |
   | ``` uninstall_sisense: false ``` | Enter **true** to uninstall Sisense services, but leave your Kubernetes infrastructure unchanged, in case it's needed in the future. |
   | ``` remove_user_data: false ``` | Enter **true** to delete all user data. This deletes your ElastiCube models, application database, message broker, and add-ons. |
   | signature\_validation: false | Enter **true** to enable [Image Signature Validation](https://docs.sisense.com/main/SisenseLinux/image-signature-validation.md). |
7. Run the configuration script.

   ```
   ./sisense.sh cloud_config.yaml
   ```

   Your configuration settings are displayed with a message to confirm that you want to deploy Sisense with these settings.
8. Enter **Yes** to confirm that you want to deploy Sisense.

   Enter **No** to abort the deployment.

   If you entered **Yes**, the script deploys Sisense. If there are any issues, you can view the installation logs here:

   ```
   [installation-dir]/sisense-ansible.log
   ```

When the installation finishes, a list of endpoints are displayed for accessing Sisense and managing your deployment. The URLs are listed below. Additionally, you can run the following command to return the URL to access Sisense:

```
kubectl cluster-info
```

This command displays the URL of your Sisense application. You can enter this address into your browser to access Sisense.

To verify that all your services are running as expected, you can enter the Sisense URL with the port and /app/test to the end of the address in your browser. This displays the status of each of your services. For example:

```
0.0.0.0:PORT/app/test
```

To see a list of endpoints in the GKE installation, connect to Sisense in your browser and enter the relevant command in your browser:

- For non-secure connections:

  ```
  http://{IP}:30845/
  ```
- For secure connections:

  ```
  https://{IP}/
  ```

To connect to your Kubernetes dashboard, enter the following in your browser:

```
https://{IP}:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
```

**Tip:**

For more information, see [Troubleshooting Pods in Kubernetes Clusters](https://community.sisense.com/t5/knowledge-base/troubleshooting-pods-in-kubernetes-clusters/ta-p/22507) on the Sisense Community site.
