Deploying Sisense on Google GKE

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

From the configuration yaml file, 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.

Deployment Scripts

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

You can download the script below:

Go to Google GKE Deployment Script to download and configure the script.

Note:

The script above is just a sample. It should be modified as needed, and should not be used as-is.

Prerequisites

  • Installed and configured gcloud
  • GKE version 1.15 or later
  • By default, the GCE blocks traffic between hosts. You must run the following command to allow Calico traffic to flow between containers on different hosts, where the source-ranges parameter assumes you have created your project with the default GCE network parameters.

    cloud compute firewall-rules create calico-ipip --allow 4 --network "default" --source-ranges "10.128.0.0/9"
   

Note:

Modify the address range if yours is different.

To deploy Sisense on Google GKE:

  1. Create a GKE Cluster.
    8-6gkethumb0300.png
    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.
    (Optional) Node pool: Node pools are a subset of node instances within a cluster that all have the same configuration. You can change the number of nodes in the default pool or add a new node pool.
    There are other advanced networking and security settings you can configure but you can use the default settings for now.
  2. Click Create to deploy the cluster. After a minute or two, your Kubernetes cluster is deployed and available for use.
  3. To connect your cluster, you need to configure the kubectl command to communicate with the cluster.
  4. Download a Sisense version package. Contact your Sisense Customer Success Manager for a link to the latest version.
  5.     wget $sisense_url
  6. Extract the Sisense package.
  7.     tar zxf $package_name
  8. Navigate to the directory where you extracted the tar.gz file.
  9.     cd sisense-$sisense_version
  10. Access the cloud_config.yaml file.
  11.     vim cloud_config.yaml
  12. Edit the following values in the cloud_config.yaml file.
    ParametersValue
    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 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.

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

    cloud_load_balancer: false


    Enter true if you have defined a load balancer.

    For more information see, Setting Up a Load Balancer 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 .

    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 nfs for Google GKE for using the Google Cloud Filestore storage service.

    You must also enter values for nfs_server and nfs_path.

    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.

    sisense_disk_size: 70

    Important! You must provide enough space to support your Sisense ElastiCube models, at least two times the amount of data in all ElastiCubes.

    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 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 (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
    • 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 to initialize SSL. Sisense creates a SSL load balancer on port 443.

    If you enter true, see Setting Up SSL for Sisense on Linux 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.

    external_monitoring: true


    Enter false to disable external monitoring.

    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.
  13. 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.
  14. 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:

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