Installing Sisense using Provisioner and Helm
Provisioner provides an elegant and efficient solution for installing, upgrading and/or maintaining Sisense on an existing Kubernetes cluster. The Provisioner application deploys Sisense using a single Helm Chart, the simplest way of getting started with our applications on Kubernetes.
Provisioner is provided to simplify the process of installing Sisense-related Helm Charts, as described in .
Introduction
This single Helm Chart bootstraps the Sisense installation on an existing Kubernetes cluster, including monitoring and logging stacks.
Chart Details
The Helm Chart provides the following deployments on an existing Kubernetes cluster:
- Sisense application
- Prometheus operator
- Logging solution (fluentd, fluentd-bit)
- ReadWriteMany storage solution (AWS FSx, NFS ..)
- Cluster auto-scaler for Managed Kubernetes
- NGINX for Terminating SSL for Sisense
Prerequisites
- Supported Kubernetes Version (1.17 + )
- Helm installed, versions 3.5.1 up to 3.8.1
- RBAC Cluster-admin privileges
- RWX Cluster Storage (Rook-Ceph, FSx, NFS, NetApp ...)
Note:
Rook-Ceph is no longer supported as the shared storage layer for new deployments of Sisense Fusion. This Rook-Ceph documentation is intended only for existing Sisense instances configured to use Rook-Ceph. If you’re a new Sisense customer or an existing customer installing a new Sisense deployment, you should use one of the supported alternatives such as FSx (for AWS) or NFS (for non-AWS).
- RWO Cluster Storage supported (gp2, gcd, azure disk ...)
SSL Prerequisites
Sisense uses the NGINX Ingress Controller with Ingress object for SSL termination on Layer 4.
Before installing Provisioner, perform the following steps:
- Run the following command:
$ kubectl create ns <namespace_name>
- Run the following command:
$ kubectl create secret tls <tlsSecretName>
--namespace <namespace_name> \
--key <ssl_key_filemne> \
--cert <ssl_cer_filename> - On the Provisioner, set the tlsSecretName values using the tlsSecretName from the previous step.
Preparation
Run the following command to install HELM 3 on a machine with cluster access (either by bastion or with one of the cluster's nodes):
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 && \
chmod +x get_helm.sh && \
DESIRED_VERSION=v3.5.1 ./get_helm.sh
Parameters
This section lists the Provisioner's chart configurable parameters.
Parameter | Description | Default |
labeling.labelAllNodes |
Label all Ready Kubernetes nodes for Sisense ability |
false |
labeling.kubernetesNodes |
Enter the node names for each of the nodes being deployed. Make sure you enter the actual name assigned to the node (e.g., NAME shown using kubectl get nodes) Note: Node names may not include uppercase letters. Node names can only include lowercase letters, digits and hyphens. Hyphens cannot be the last character in the node name. |
{{node1...}, {node2...}, {node3...}} |
deploymentSize |
Deployment size is used to determine the maximum pod limits allocated for applicationability |
false |
debug.verbose |
Enable Ansible verbosity |
false |
debug.sleepMode |
Enable Pod execute ability |
false |
pullSecretsName |
Configure offline installation (Requires private docker registry) |
nil |
highAvailability |
Loading sisense service in active/active redundancy |
true |
exposeNodePorts |
Exposing NodePorts for MongoDB. RabbitMQ, Zookeeper, Query, Management, Translation and Build |
false |
gatewayPort |
The exposed port of Sisense service (NodePort, in Non-Secure mode) |
30845 |
timeZone |
Sisense Application Time Zone |
UTC |
cloud.loadBalancer |
Configure Ingress traffic using Service type |
true |
cloud.autoScaler |
Install and configure Cluster auto scaler |
true |
persistence.enabled |
Persistence Storage for Sisense HA, When false, it will use hostPath "/opt/sisense/storage" (Non-HA) |
true |
persistence.storageType |
storageTypes: fsx, efs, rook-ceph, nfs (client), nfs-server, cephfs, trident. |
fsx |
persistence.sisenseDiskSize |
Sisense Persistence volume size (GB) |
70 |
persistence.mongodbDiskSize |
MongoDB Persistence volume size (GB) |
20 |
persistence.zookeeperDiskSize | ZooKeeper Persistence volume size (GB) | 1 |
persistence.fsxDnsName | AWS FSx DNS name |
nil |
persistence.fsxMountName |
AWS FSx mount name |
nil |
persistence.efsFileSystemId | AWS EFS File system ID |
nil |
persistence.efsAwsRegion |
AWS EFS Region |
nil |
persistence.nfsServer |
NFS Server IP Address |
nil |
persistence.nfsPath |
NFS Server Path |
nil |
persistence.rwxScName |
SELF-SELECTION: ReadWriteMany StorageClass name (e.g: rook-ceph, trident, nfs, nfs-client, cephfs) |
nil |
persistence.rwoScName |
SELF-SELECTION: ReadWriteOnce StorageClass name (e.g: gp2, default, standard) |
nil |
SecurityContext.runAsUser |
Defines the SecurityContext.runAsUser for all Sisense services. See Installing RKE with a Specified UID. |
1000 |
SecurityContext.runAsGroup |
Defines the SecurityContext.runAsGroup for all Sisense services. See Installing RKE with a Specified UID. |
1000 |
SecurityContext.fsGroup |
Defines the SecurityContext.fsGroup for all Sisense services. See Installing RKE with a Specified UID. |
1000 |
tlsSecretName |
When using SSL Termination for Sisense service (Using NGINX-Ingress) set TLS Secret name (Prerequisite) |
nil |
applicationDnsName |
DNS Name for Sisense service (CN Name) |
nil |
monitoring.internal |
Install Grafana, Prometheus for metrics and fluent-bit for logs Notes:
|
false |
monitoring.external |
Install Fluentd With an external monitoring system Notes:
|
false |
uninstall.namespacedResources |
Uninstall Sisense namespaced resources |
false |
uninstall.clusterResources | Uninstall Sisense cluster resources (Prometheus, NFS..) |
false |
uninstall.removeUserData |
Remove Sisense related Persistence Volumes and data |
false |
To install Sisense using Provisioner on an existing Kubernetes:
- Download the Provisioner Helm Chart supported version (Replace SISENSE_VERSION with Sisense external version):
wget https://data.sisense.com/linux/provisioner-<SISENSE_VERSION>.tgz
- Run the following to export the Helm chart's default configuration/values file:
helm inspect values provisioner-<SISENSE_VERSION>.tgz > values.yaml
- Edit Sisense Provisioner configuration for your setup:
vim values.yaml
- Install or upgrade Sisense Provisioner Helm Chart:
helm upgrade prov-$NAMESPACE -f values.yaml
./provisioner-<SISENSE_VERSION>.tgz --namespace=$NAMESPACE
--install --create-namespace - Observe the Sisense Provisioner provisioning process via its logs
kubectl logs -f --namespace $NAMESPACE -l
app.kubernetes.io/name=provisioner
Using the Extra-Values Feature to Override Extended Configuration
You can override any values within Sisense Helm Charts by using the Extra-Values Feature.
Select a target Helm Chart and create your own override values file for each of the following supported Helm Charts:
- installer-values
- sisense
- prometheus-operator
- cluster-metrics
- logging
- nginx
- alb-controller
- cluster-autoscaler
- nfs-client
- nfs-server
- aws-ebs-csi
- kube-prometheus-stack
Run the following command to install the selected Helm Chart:
helm install prov-sisense $CHART_URL \
--namespace=$NAMESPACE \
--create-namespace \
--set-file <TARGET-VALUES-NAME-FROM-THE-LIST>=<YOUR-OWN-VALUES-FILE-PATH> \
--set-file <TARGET-VALUES-NAME-FROM-THE-LIST>=<YOUR-OWN-VALUES-FILE-PATH>
For example, sisense-override-values.yml for overriding the "sisense" major Helm Chart values:
sisense-override-values.yml
api-gateway:
replicaCount: 4
affinity:
podAntiAffinity: null
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "node-sisense-Application"
operator: In
values:
- "true"
Run the following command for the above example:
helm install prov-sisense $CHART_URL \
--namespace=$NAMESPACE \
--create-namespace \
--set-file sisense=./sisense-override-values.yml
Adding Custom Labels to Sisense Pods
Sisense also provides the ability to add custom labels to each type of Sisense pods (Sisense service).
To add custom labels to Sisense pod types:
- Create a YAML file for the custom labels.
- Enter only the pod types whose label you want to change, and their new custom label in the following format:
adminmongo:
labels:
your: newlabel
ai-integration:
labels:
your: newlabel
analyticalengine:
labels:
your: newlabel
api-gateway:
labels:
your: newlabel
blox:
labels:
your: newlabel
build:
labels:
your: newlabel
compute-service:
labels:
your: newlabel
configuration:
labels:
your: newlabel
connectors:
labels:
your: newlabel
customcode:
labels:
your: newlabel
droppy:
labels:
your: newlabel
exporter-xlsx:
labels:
your: newlabel
exporting:
labels:
your: newlabel
external-plugins:
labels:
your: newlabel
filebrowser:
labels:
your: newlabel
galaxy:
labels:
your: newlabel
identity:
labels:
your: newlabel
intelligence:
labels:
your: newlabel
jobs:
labels:
your: newlabel
knowledgegraph:
labels:
your: newlabel
management:
labels:
your: newlabel
migration:
labels:
your: newlabel
model-graphql:
labels:
your: newlabel
model-logspersistence:
labels:
your: newlabel
nlq-compile:
labels:
your: newlabel
nlq-duckling:
labels:
your: newlabel
nlq-rt:
labels:
your: newlabel
oxygen:
labels:
your: newlabel
pivot2-be:
labels:
your: newlabel
plugins:
labels:
your: newlabel
query-proxy:
labels:
your: newlabel
quest:
labels:
your: newlabel
recommendation:
labels:
your: newlabel
reporting:
labels:
your: newlabel
storage:
labels:
your: newlabel
tracking:
labels:
your: newlabel
translation:
labels:
your: newlabel
usage:
labels:
your: newlabel
warehouse:
labels:
your: newlabel - From the directory where the YAML file resides, run the following command:
helm install prov-sisense $CHART_URL \
--namespace=$NAMESPACE \
--create-namespace \
--set-file sisense=./<sisense-custom-labels>.yml
Upgrading Sisense using the Existing Provisioner Installation
Run the following command to upgrade the provisioner:
$ helm upgrade prov-sisense $CHART_URL \
--reuse-values \
--namespace=$NAMESPACE
Uninstalling Sisense
Run the following command to uninstall Sisense:
$ helm upgrade prov-sisense $CHART_URL \
--set uninstall.namespacedResources=true \
--set uninstall.clusterResources=false \
--set uninstall.removeUserData=true \
--namespace=$NAMESPACE \
--reuse-values \
--force \
--install
Uninstalling the Provisioner Chart
Run the following command to uninstall the Provisioner Chart:
helm uninstall prov-sisense -n sisense