Deploying Sisense on Amazon EKS

Sisense can be provisioned on an existing Kubernetes cluster on Amazon EKS.

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 for deploying a single-node or multi-node cluster on Amazon EKS.

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.

Prerequisite

Before you deploy Sisense, you must increase the default ulimit setting, see Increasing Docker ulimits.

The Docker ulimit restricts a program's resource utilization so a run-away bug or security breach cannot cause your system to shut down. The default limit for Amazon AWS is 1024, which is not enough for Sisense to run properly.

Deployment Script

To help you deploy Sisense on EKS, you can download, modify and run a Sisense EKS deployment script. This script includes prerequisites for using the script and has predefined values that you must modify according to your EKS settings.

Go to Deployment Script for Sisense on Amazon EKS to download and configure the script.

Auto Scaling

Sisense supports auto scaling for your EKS nodes.

When cloud_auto_scaler is set to true, Sisense manages the scaling of nodes as needed. If a node falls or your load is higher than normal, additional nodes can be added. You can configure when to scale your nodes in the AWS configuration script, see Deployment Script for Sisense on Amazon EKS.

ulimit Setting

You must increase the default ulimit setting, see Increasing Docker ulimits.

The Docker ulimit restricts a program's resource utilization so a run-away bug or security breach cannot cause your system to shut down. The default limit for Amazon AWS is 1024, which is not enough for Sisense to run properly.

Prerequisites

Before you deploy Sisense, your deployment should meet the prerequisites below. Sisense provides an example script for configuring Amazon AWS to meet these prerequisites, see Deployment Script for Sisense on Amazon EKS.

To deploy Sisense on Amazon EKS: 

  1. Download a Sisense version package.
    wget $sisense_url
    Contact your Sisense CSM for a link to the most up-to-date version.
  2. Create a new FSx in the same VPC of the EKS environment.

  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.
    Note: The cloud_config.yaml contains many parameters that must be defined when provisioning Sisense on Linux. This table only describes the mandatory parameters when provisioning Sisense on Amazon EKS. For a full explanation of the cloud_config.yaml file, see Initializing Sisense on Linux.
    ParametersValue
    k8s_nodes:
    - { node: node1, roles: "application, query" } 
    - { node: node2, roles: "application, query" } 
    - { node: node3, roles: "build" }

    K8S node/nodes are the set of machines that will 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:

    • Query
    • Application
    • Build

    The installation machine is only used 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).

    offline_installer: false
    Enter 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

    is_kubernetes_cloud: true

    Enter true if you already have a Kubernetes cluster.

    kubernetes_cluster_name: ""

    Enter the Kubernetes cluster name.

    kubernetes_cluster_location: ""

    Enter your Kubernetes cluster location.

    For Amazon EKS, the value should be your region.

    kubernetes_cloud_provider: ""

    Enter aws.

    cloud_load_balancer: false

    Enter true if you have defined a load balancer on your Sisense Linux cloud instances to automatically distribute traffic across multiple nodes.

    For more information, see Setting Up a Load Balancer

    cloud_auto_scaler: false

    Enter true if you want Sisense to integrate with EKS node auto-scaling when needed.

    high_availability: true
    True means that Sisense is scaled for service redundancy.

    False means that Sisense will not scale its services.

    application_dns_name: ""

    Enter the common name (CN) of your SSL host, for example, "test.sisense.com".

    The default name is the first node of your external IP. If you have not defined a secure connection (No SSL), Sisense uses the external IP of your first node when accessing Sisense.

    This value can only be defined when installing or upgrading Sisense. After defining this value, you can view it on the Admin page under General Settings.

    linux_user: ""

    Enter the name of the Linux user.

    This user must not be the "root" user, but should 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 the linux_user parameter. The SSH key must be in .pem format.

    storage_type: ""
    Enter fsx for Amazon EKS for using Amazon FSx cluster. You must also enter values for:
    fsx_dns_name
    fsx_mount_name

    fsx_dns_name: ""

    If your system uses AWS FSx services, enter the associated DNS alias name.

    fsx_mount_name: ""

    If your system uses AWS FSx services, enter the mount name for the file system.

    If you are using Scratch 1, enter fsx.

    sisense_disk_size: 70

    If you have implemented GlusterFS for storage, enter the amount of disk space in gigabytes to be allocated for Sisense.

    Important! You must provide enough space to support your Sisense ElastiCube models, at least two times the amount of data in all ElastiCubes. GlusterFS is set for two replicas so assume the same logical disk is in two of the physical disks you set in the

    k8s_nodes
    disk_volume_device
    parameter.

    Every namespace takes additional logical disk space from the physical disks, and the installation fails if you did not allocate enough space.

    To calculate the required space, you can use the following equation:

    sisense_disk_size = 70GB x 3 (for a three node deployment)

    If you allocate space for the application DB and configuration DB (the values of

    mongodb_disk_size
    and
    zookeeper_disk_size
    ) this should be considered as well. If you enter 210GB as the value, this allocates 70GB in a 3 node deployment minus 3 times (the values of
    mongodb_disk_size
    and
    zookeeper_disk_size
    ).

    Sisense also recommends that you specify an additional 5GB free space for the value of

    sisense_disk_size
    .

    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 the 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 (i.e., UTC, US/Central, Asia Tokoyo, 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.
    • Each deployment after the first, the value of the update should 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 for secure connections to Sisense.

    Enter false if you have not implemented SSL.

    If you enter true, see Setting Up SSL for Sisense Linux.

    ssl_key_path: ""

    If you connect to your server securely, enter the SSL keypath.

    When the SSL is defined, the Sisense API Gateway Port will be 443 and not the value defined in the

    gateway_port
    parameter.

    ssl_cer_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, see Monitoring Sisense on Linux.

    external_monitoring: false

    Enter false to disable external monitoring with your Logz.io account, see Connecting to your Logz.io Account.

    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.

  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
  9. To access Sisense, enter into your browser the address displayed in the endpoints listed in the CLI.
    You can also retrieve the address from the sisense-ansible.log file in the installation directory.

    • See the Sisense App line for the Sisense access address

    • See the Kubernetes dashboard line for the k8s dashboard URL
      (The k8s dashboard URL must be installed in your cluster, see https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html)