Installing Sisense on a Multi-Node Cluster with EFS as the Shared Storage

Last updated: June 10, 2026

Tier Deployment
Enterprise On-Prem

You can deploy Sisense and Kubernetes (RKE2) on a multi-node EC2 instance with AWS EFS as the shared storage.

Prerequisites

Architecture

  • Amazon EKS

  • Amazon EC2

  • Elastic File System (EFS)

Requirements

  • Minimum of 3 nodes in the same region and same VPC

  • 8 cores

  • 32 GB RAM

  • Amazon Linux AMI 2023 OS (Amazon Linux 2023 AMI (HVM), SSD Volume)

Tag EC2 instances with kubernetes.io/cluster/$cluster_name (replace cluster_name with a unique value) key and value true.

Note:

If you did not provide the tags during the instance creation, and you receive an error "Failed to update tags", right-click the instance > Instance Settings > Allow Tags in Instance Metadata > clear the checkbox.

K8s cluster tags

Creating an IAM Role

Before installation, you must create an IAM role. In the following example the name is EFS_ROLE_FOR_EC2.

The role must contain the following 2 IAM policies:

  • AmazonEFSCSIDriverPolicy

  • AmazonEBSCSIDriverPolicy

Alternatively, you can create a custom policy with the following permissions:

Copy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowDescribe",
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:DescribeAccessPoints",
        "elasticfilesystem:DescribeFileSystems",
        "elasticfilesystem:DescribeMountTargets",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowCreateAccessPoint",
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:CreateAccessPoint"
      ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "aws:RequestTag/efs.csi.aws.com/cluster": "false"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": "efs.csi.aws.com/cluster"
        }
      }
    },
    {
      "Sid": "AllowTagNewAccessPoints",
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "elasticfilesystem:CreateAction": "CreateAccessPoint"
        },
        "Null": {
          "aws:RequestTag/efs.csi.aws.com/cluster": "false"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": "efs.csi.aws.com/cluster"
        }
      }
    },
    {
      "Sid": "AllowDeleteAccessPoint",
      "Effect": "Allow",
      "Action": "elasticfilesystem:DeleteAccessPoint",
      "Resource": "*",
      "Condition": {
        "Null": {
          "aws:ResourceTag/efs.csi.aws.com/cluster": "false"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumesModifications",
        "ec2:DescribeVolumeStatus"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:ModifyVolume"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CopyVolumes"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/vol-*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AttachVolume",
        "ec2:DetachVolume"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:EnableFastSnapshotRestores"
      ],
      "Resource": "arn:aws:ec2:*:*:snapshot/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:snapshot/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "CreateVolume",
            "CreateSnapshot",
            "CopyVolumes"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:snapshot/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:CopyVolumes"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/ebs.csi.aws.com/cluster": "true"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:CopyVolumes"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/CSIVolumeName": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteVolume"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteVolume"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/CSIVolumeName": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteVolume"
      ],
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/kubernetes.io/created-for/pvc/name": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSnapshot"
      ],
      "Resource": "arn:aws:ec2:*:*:snapshot/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/CSIVolumeSnapshotName": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSnapshot"
      ],
      "Resource": "arn:aws:ec2:*:*:snapshot/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/ebs.csi.aws.com/cluster": "true"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSnapshot",
        "ec2:LockSnapshot"
      ],
      "Resource": "arn:aws:ec2:*:*:snapshot/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/CSIVolumeSnapshotName": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSnapshot",
        "ec2:LockSnapshot"
      ],
      "Resource": "arn:aws:ec2:*:*:snapshot/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true"
        }
      }
    }
  ]
}

After this role is created and has been attached with these polices, attach the IAM Role to the EC2 instances:

  1. For each of the EC2 instances, click the instance > Instance Settings > Attach/Replace IAM Role.

  2. EFS attach IAM role

  3. Select the role (EFS_ROLE_FOR_EC2) and click Apply.

  4. Create a security group for the nodes with an inbound rule opened for port 2049.

  5. Verify that the following rules were added to the security group:

    • UI access to Sisense application (if it is port 30845/443/80, or other)

    • Inter-node communication: Allow all traffic for EC2 instances using this security group - add the security group ID and your VPC CIDR(s) to the rule

    • SSH access

    • VPC CIDR access for the EFS port (2049)

      Vpc cidr access for efs port

    Note:

    Make sure to attach this security group to all nodes.

  6. On the newly-created EFS, ensure the following:

    1. Choose EFS file system name.

    2. Choose the same VPC as the nodes.

    3. Choose Availability Regional.

  7. Once the EFS has been created, open Network > Manage and replace all security groups listed with your new security group.

    Availability zone

Installing Sisense

  1. Download a Sisense version package:

    wget $sisense_url

  2. Extract the Sisense package:

    tar zxf $package_name

  3. Open the Sisense directory:

    cd sisense-$sisense_version

  4. Edit the Sisense configuration file:

    vim cluster_config.yaml

  5. Edit the Sisense configuration file as follows:

    • Ensure node names are AWS private DNS names.

    • Update the internal and external IP addresses.

    • Add the cloud_provider field to the configuration file and set the value to aws.

    • In the storage_type field, enter efs.

    • Enter values for efs_file_system_id and efs_aws_region.

    • Configure disk sizes.

    Example:

    Copy
    ## Replace node name with Private DNS of the EC2

    k8s_nodes: 
      - { node: ip-192-168-30-30.us-east-2.compute.internal, internal_ip: 172.31.46.87, external_ip: 18.220.40.103, disk_volume_device: /dev/sdb, roles: "application, query" }
      - { node: ip-192-168-30-31.us-east-2.compute.internal, internal_ip: 172.31.46.88, external_ip: 18.220.40.104, disk_volume_device: /dev/sdb, roles: "application, query" }
      - { node: ip-192-168-30-32.us-east-2.compute.internal, internal_ip: 172.31.46.89, external_ip: 18.220.40.105, disk_volume_device: /dev/sdb, roles: "build" }

    storage_type: efs

    # This is a MUST
    cloud_provider: aws

    ## AWS EFS
    # Example
    # efs_file_system_id: fs-a1b2c3d4e5
    efs_file_system_id: "<efs_file_system_id>"
    efs_aws_region: "<efs_aws_region>"

    sisense_disk_size: 10
    mongodb_disk_size: 3
    zookeeper_disk_size: 1
  6. Run the installation:

    ./sisense.sh cluster_config.yaml

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

Copy
Sisense intallation process completed successfuly.
The app is accessible on address: http://18.220.40.103:30845

    In order to access Sisense CLI and Completion file, you can execute:
    $ kubectl get cm --namespace sisense add-completion -ojsonpath='{.data.*}' > add_completion-sisense.sh
    $ source add_completion-sisense.sh

Skipping activation

[2026-05-28 12:01:52] Waiting for validator results ...
[2026-05-28 12:01:52] Waiting for validator job validator-1 to complete (timeout: 1200s)...
[2026-05-28 12:01:53] Validator completed.
[2026-05-28 12:01:53] Sisense installation completed.