Deploying Sisense with Kops and FSx on AWS

Kubernetes Operations (Kops), is an open source project used to set up Kubernetes clusters. Kops helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters from the command line. Currently, Sisense supports Kops with FSx on AWS (Amazon Web Services).
The instructions below describe how to deploy Sisense with Kops on AWS with FSx shared storage.

Prerequisites

Installation

  1. Download the Sisense Kops bootstrap archive and extract it.
    wget https://data.sisense.com/linux/scripts/kops/kops_infrastructure_v3.tar.gz && tar zxf kops_infrastructure_v3.tar.gz && cd kops_infrastructure/
  2. Select the relevant Kops configuration.
    • Sisense Type 1 - 1 Master and 2 Workers (1 Namespace): sisense_kops_1_masters.yaml
    • Sisense Type 2 - 3 Master and 1 Workers (2+ Namespaces): sisense_kops_3_masters.yaml
  3. Provide the following information in the chosen YAML file:
    kopsClusterName: Kops cluster name (default: sisense-test)
    dnsZone: Kops DNS zone name (default: sisense.local)
    dnsZoneId: Kops DNS zone id - (default match sisense.local above)
    awsRegion: Kops AWS region - (default: us-west-2)
    namespaceName: Sisense namespace labels - (default: sisense)
    stateStore: Kops S3 state store - (default s3://sisense-kops-generic.com - Sisense account)
  4.           # Sisense KopsFile values.yaml
              kopsClusterName: sisense-test
              kubernetesVersion: 1.17.8
              dnsZone: sisense.local
              dnsZoneId: Z0613794SBNV1ZVHPJSV
              awsRegion: us-west-2
              namespaceName: sisense
              stateStore: s3://sisense-kops-generic.com
      
              # Sisense Type 1 - 1 Master and 2 Workers (1 Namespace)
              masterGroup: ## 1 Group of masters
              machineType: t3.2xlarge
              nodeGroup:
              machineType: t3.2xlarge
              maxNodeSize: 5
      
              # Sisense Type 2 - 3 Master and 1 Workers (2+ Namespaces)
              # masterGroup: ## 3 Groups of masters - 1 each subnet
              # machineType: t3.2xlarge
              # maxNodeSize: 5
      
              # nodeGroup:
              # machineType: t3.2xlarge
              # maxNodeSize: 5
  5. Run the Kops bootstrap script including the chosen Kops cluster configuration file, for example:
  6.           bash ./sisense_full_kops.sh sisense_kops_1_masters.yaml'
  7. Enter the Kops cluster name and press Enter.
    6.Insert your AWS credentials and region.
    AWS Access Key ID [****************5ANY]:

    After the script installs all the needed dependencies and installs a Kops cluster and FSx for Sisense persistent storage, use the output when defining the values in your configuration YAML file described in Step 8.
    Below is an example output.

  8.           kubernetesclustername: kops
              kubernetesclusterlocation: us-west-2
              kubernetescloudprovider: aws
              fsxdnsname is: fs-00f61c866557771d1.fsx.us-west-2.amazonaws.com
              fsxmountname is: 34krpbmv****
  9. Download and extract the Sisense Installation package. Contact Sisense Support for the latest version. The example below is based on version Sisense V8.2.1.
  10.           get https://data.sisense.com/linux/Sisense-L8.2.1.tar.gz && tar zxf Sisense-L8.2.1.tar.gz && cd Sisense-L8.2.1/
  11. Edit Sisense config file.
  12.           vim cloud_config.yaml
  13. Edit the Sisense Installing Sisense on Linux. (The example below includes FSX storage).
  14.           k8s_nodes:
              - { node: ip-192-168-57-176.us-east-2.compute.internal, roles: "application, query" }
              - { node: ip-192-168-90-212.us-east-2.compute.internal, roles: "application, query" }
              - { node: ip-192-168-18-98.us-east-2.compute.internal, roles: "build" }
      
              ## Update current installation. - true/false
              update: false
      
              # is_kubernetes_cloud: - kubernetes Boolean flag
              is_kubernetes_cloud: true
      
              # kubernetes_cluster_name - created cluster name
              kubernetes_cluster_name: kops
      
              # kubernetes_cluster_location - AWS EKS = Region, Google GKE = Zone, Azure AKS = Resource Group
              kubernetes_cluster_location: "us-west-2"
      
              # kubernetes_cloud_provider - 'aws', 'gke', 'azure'.
              kubernetes_cloud_provider: "aws"
      
              # Cloud LoadBalancer service
              cloud_load_balancer: true
      
              # Cloud AutoScaler service
              cloud_auto_scaler: true
      
              ## Application DNS Name.
              # 1. When empty, first node external_ip will be configured
              # 2. When is_ssl is true, configure the CN name
              application_dns_name: ""
      
              ## Linux user of the servers (UID 1000)
              linux_user: "ec2-user"
      
              ##SSH Key Path or Password is required, when ssh_key is empty, password will be prompted
              ssh_key: "/home/ec2-user/Aviv_playground.pem"
      
              ###Cluster storage types - Supported types:
              ##Azure AKS - azurefile, nfs
              ##Google GKE - nfs (Filestore)
              ##Amazon EKS - fsx
              storage_type: "fsx"
      
              ##AWS FSX
              fsx_dns_name: "fs-0cc12df16cbd4f123.fsx.us-east-2.amazonaws.com"
              fsx_mount_name: "b7vqlbmv"
  15. Run the installation.
  16.           ./sisense.sh cloud_config.yaml      
  17. Get load balancer address and access Sisense.
  18.           kubectl get svc --namespace sisense -w api-gateway-external
  19. Add a Kubernetes Dashboard. See Tutorial: Deploy the Kubernetes Dashboard (web UI) for more information.
  20. Destroy the Kops Cluster.
  21.           bash kops_infrastructure/cleanup.sh