Deploying Sisense on Google GKE

Applicable to Sisense on Linux

Sisense can be provisioned on a Google Kubernetes Engine (GKE) cluster. To provision Sisense, you must create a GKE cluster if you do not already have one, and then connect to it. After you have completed these steps, 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.

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.

Deployment Scripts

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

You can download the script below:

Prerequisites

To deploy Sisense on Google GKE: 

  1. Create a GKE Cluster.

    GKE offers a number of cluster templates you can use. The default is Standard cluster. If you select Standard, you need to define the following fields:
    Name: A name for the cluster
    Location type: You can deploy your cluster in a GCP zone or region. See Google’s documentation for more information.
    Node pools (optional): Node pools are a subset of node instances within a cluster that all have the same configuration. You have the option to edit the number of nodes in the default pool or add a new node pool.
    There are other advanced networking and security settings that can be configured here but you can use the default settings for now and click Create to deploy the cluster. After a minute or two, your Kubernetes cluster is deployed and available for use.
  2. To connect your cluster, you need to configure kubectl to communicate with it.
  3. Download a Sisense version package. Contact your Sisense CSM for a link to the most up-to-date version.
    wget $sisense_url
  4. Extract the Sisense package.
    tar zxf $package_name
  5. Navigate to the directory where you extracted the tar.gz file.
    cd sisense-$sisense_version
  6. Access the cloud_config.yaml file.
    vim cloud_config.yaml
  7. Edit the following values in the cloud_config.yaml file.
    ParametersValue

    k8s_nodes

    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.

    is_kubernetes_cloud

    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 should be the name of your zone.

    kubernetes_cloud_provider

    Enter gke.

    cloud_load_balancer

    Enter true to apply load balancing to your deployment. Click Setting Up a Load Balancer for more information.

    update

    If you are upgrading Sisense, enter true, otherwise, keep this value as the default.  

    offline_installer

    Set to true when you are using an offline installer.

    docker_registry

    Enter the address of your server.

    application_dns_name

    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.

    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 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.

    ssh_key

    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.

    is_ssl

    Enter true to initialize SSL. Sisense creates a SSL load balancer on port 443.

    ssl_key_path

     

    Enter the path of your SSL private key.

    ssl_cert_path

    Enter the path of the SSL certificate body.

    application_dns_name

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

    storage_type

    Enter one of the following values:

    nfs: For Google GKE, use “Google Cloud Filestore” storage service and enter nfs. You must have your own Filestore and enter values for nfs_server and nfs_path.

    nfs_server

    Enter the address (IP or DNS) of your NFS server.

    nfs_path

    Enter the location of your NFS server.

    The mounting point for each logical disk (Sisense app, MongoDB, and Zookeeper) will be created under this path.

    sisense_disk_size

    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.

    mongodb_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.

    zookeeper_disk_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.

    namespace_name

    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)

    gateway_port

    Enter the port of the API gateway for your deployment.

    If you are not implementing SSL, this will be the port used to connect to Sisense.

    is_ssl

    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 for more 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 gateway_port.

    ssl_cer_path

    If you connect to your server securely, enter the SSL certificate path (.cer file).

    internal_monitoring

    Enter false to disable a Grafana dashboard that is supported by Prometheus for monitoring your deployment.

    For more information, see Monitoring Sisense on Linux.

    external_monitoring

    Enter false to disable external monitoring with your Logz.io account. If you set this value to true, provide values for sisense_ownerid and logz_key.

    For more information, see Monitoring Sisense on Linux.

    uninstall_sisense

    Enter true to uninstall Sisense services, but leave your Kubernetes infrastructure in case it's needed in the future. This can also be used if you need to remove Sisense from your own cloud-based cluster without impacting the cluster itself. Only Sisense the application is removed.

    remove_user_data

    Enter true to delete all user data. This deletes your ElastiCube models, application database, message broker, and plug-ins.

  8. 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.

If you entered Yes, Sisense will be deployed. If there are any issues, you can view the installation logs here: [installation-dir]/sisense-ansible.log. When this installation is complete a list of endpoints is displayed for accessing Sisense and managing your deployment. The URLs are listed below. In addition, you can run the following command to return the URL to access Sisense.

kubectl cluster-info

This 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 URL of Sisense 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.

List of endpoints in the GKE installation:

To connect to Sisense, in your browser, enter the following 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