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 that are needed to deploy a single-node or multi-node cluster on Amazon EKS.
From the configuration yaml file, you can customize your installation by using various parameters described below. Once the parameters have been defined, you run the script and Sisense will be deployed. You can then retrieve the URL to access the Sisense application online.
Note: Docker ulimits limit a program's resource utilization to prevent a run-away bug or security breach from bringing the whole system down. The default limit for Amazon AWS is 1024, which is not enough for Sisense to run properly. See Increasing Docker ulimits for more information.
Sisense supports auto scaling for your EKS nodes. When cloud_auto_scaler is set to true, Sisense manages the scaling of nodes as needed, so 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 described in Configuring Amazon AWS for Sisense for Sisense.
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 Configuring Amazon AWS for Sisense for more information.
- Supported Linux OS (Ubuntu/Amazon Linux 2/CentOS/RedHat7)
- AWS CLI: Installing the AWS CLI
- You must mark your worker nodes with labels recognized by Sisense. See Sisense and Autoscaling for more information.
- For FSX for Lustre storage_type
- Create a new Security Group with inbound port 988 to the EKS node groups and attach it to the FSx on the creation step
To deploy Sisense on Amazon EKS:
- Download a Sisense version package. Contact your Sisense CSM for a link to the most up-to-date version.
Create a new FSx in the same VPC of the EKS environment.
- Extract the Sisense package.
tar zxf $package_name
- Navigate to the directory where you extracted the tar.gz file.
- Access the config.yaml file.
- 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.
K8S node/nodes are the set of machines that will be used to run Sisense.
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).
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. There are two possible values: query, application and build.
Enter true if you already have a Kubernetes cluster.
Enter your Kubernetes cluster name.
Enter your Kubernetes cluster location. For Amazon EKS, the value should be your region.
Enter true to apply load balancing to your deployment. Click Setting Up a Load Balancer for more information.
Enter true if you want Sisense to integrate with EKS Node autoscaling when needed.
The CN name of the SSL certificates, for example, “*.sisense.com” , “test.sisense.com”
If you are upgrading Sisense, enter true, otherwise, keep this value as the default.
Set to true when you are using an offline installer.
Enter the address of your server.
Enter your DNS name. The default 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.
Enter the name of your Linux user. This user must not be the "root" user, but should have sudo privileges, and all the other privileges as a root user.
If you have a secure connection to your server, enter the SSH key of the Linux user defined in linux_user. The SSH key should be in .pem format.
Enter true to initialize SSL. Sisense creates a SSL load balancer on port 443.
Enter the path of your SSL private key.
Enter the path of the SSL certificate body.
Enter the common name (CN) of your SSL host, for example, "test.sisense.com".
Enter one of the following values:
fsx: For Amazon EKS, enter fsx for using Amazon FSx luster. You must enter values for fsx_dns_name and fsx_mount_name.
nfs: Sisense connects to your external NFS service. You must enter values for nfs-server and nfs_path.
nfs-server: Sisense installs an internal nfs-service within EKS. You must enter values for nfs-server and nfs_path.
Enter your FSx File system full DNS name.
Enter your FSx file system mount name. If you are using Scratch 1, enter fsx.
nfs_server The NFS server IP address. nfs_path The folder path within the NFS server.
If you have implemented GlusterFS for storage, enter the amount of disk space in gigabytes to be allocated for Sisense.
Important! You need to 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 disk_volume_device.
Every namespace takes additional logical disk spacefrom the physical disks. If you have not allocated enough space, the installation will fail.
You can use the following equation:
sisense_disk_size = 50GB x 3. (In 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 150GB as the value, this allocates 50GB 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.
The amount of disk space allocated for the Sisense application database.
This value should be multiplied by the number of nodes your deployment has.
It is recommended to leave the default of 3 GB. If only metadata is stored in the MongoDB, there is no need to increase the size.
The amount of disk space allocated for the ZooKeeper service.
This value should be multiplied by the number of nodes your deployment has.
It is recommended to leave the default of 1 GB. If only metadata is stored in Zookeeper, there is no need to increase the size.
Enter the name of the Kubernetes namespace.
If you have multiple deployments, for example, for a development and production environment, you should have a unique namespace for each deployment.
In addition, for multiple deployments, each should have a unique gateway_port value, and for each deployment after the first, the value of update should be set to true.
Note: Kubernetes Ports should be released (Non-listening mode)
Run the configuration script.
Your configuration settings are displayed with a message to confirm that you want to deploy Sisense with these settings.
To access Sisense, enter the address displayed in the list of endpoints that are displayed in the CLI and enter the address into your browser. -You can also retrieve the address from the sisense-ansible.log file in the installation directory.
In Sisense App line you will get Sisense access address
In Kubernetes dashboard line get the K8S Dashboard URL (Make sure it is installed in your cluster - https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html)