Installing Qlik Sense Enterprise on Kubernetes
Once you have set up your Kubernetes cluster and prepared your local tools, you are ready to install Qlik Sense Enterprise into your Kubernetes cluster.
To recap, as a minimum before you install you will have:
- Set up a Kubernetes cluster and added a Storage Class with readwritemany storage
- Prepare your local tools to work with your Kubernetes cluster
The steps below cover the steps to install a first simple install. This includes deploying a test instance of MongoDB and a simple IDP to get you running. To move it to a production ready state, you should review the additional topics for the following areas:
Understanding and configuring an IDP to authenticate users
Configuring a separate MongoDB instance
Viewing and handling logs
Providing configuration settings
When installing Qlik Sense Enterprise on Kubernetes you can specify settings to the installer in two ways:
- As parameters in the helm install command.
- Referencing the settings in a values.yaml and using this in the helm install command.
Storing the configuration settings in a values.yaml allows you to reuse the settings in multiple deployments and add new config sections simply. This can also be version controlled.
Use of a values.yaml file will be used predominately in the Qlik help. You can find more information about YAML files online on sites such as https://en.wikipedia.org/wiki/YAML.
Installing Qlik Sense
Complete the following steps to install Qlik Sense:
Create a text file called values.yaml.
Add the following content to the file:
#This setting enables dev mode to include a local MongoDB install devMode: enabled: true #This setting accepts the EULA for the product engine: acceptEULA: "yes"If devMode.enabled is set to true, a MongoDB instance is deployed inside of your Qlik Sense Enterprise on Kubernetes in Kubernetes for development and testing purposes only.
Add the following content to point the services requiring storage to the Kubernetes Storage Class, update the name of the Storage Class as needed.Note: If you are using Kubernetes via Docker for Desktop or Minikube then you should not add this section.
#These setting specifies the storage for the services global: persistence: storageClass: my-storage-class
If you are using Minikube for test purposes, you should review and add the additional configuration here: Using Minikube.
Save the file.
Qlik Sense will dynamically create engines to run scheduled reloads. To be able to do this, the engine needs to be configured in Kubernetes as a custom resource.
This step only needs to be done once for a cluster. Run the following command to install custom resource definitions used by dynamic engines:
helm install --name qliksense-init qlik/qliksense-init
The next step is to install the Qlik Sense package. Run the following command:
helm install -n qliksense qlik/qliksense -f values.yaml
The software now starts deploying to the Kubernetes cluster, including downloading all the images and running them.
- You can now use kubectl to check the progress. Run the following command:
kubectl get pods
If your deployment was successful you will see something similar to this:
NAME READY STATUS RESTARTS AGE qliksense-collections-7f456595b8-vjhtf 1/1 Running 0 2m qliksense-edge-auth-858f89b849-42z66 2/2 Running 0 2m … (lines removed for brevity)It typically takes a few minutes to initialize and show a status of “Running”.Tip: If services do not start check the log files of the service for more information. If some services remain in a pending state, check that the Kubernetes cluster has readwritemany storage available as a storage class and that is it correctly referenced in the YAML.
Accessing the deployment
To connect to the hub and confirm the install you need to obtain the URL for the install inside the Kubernetes cluster. This can vary depending on the configuration and / or vendor as follows.
For most cloud vendors (for example AWS, GCP or Azure) the IP address will be generated during the installation automatically. You can find the address by running the following command:
kubectl describe service qliksense-nginx-ingress-controller
For Docker Desktop, the IP will typically be the machine loop-back address 127.0.0.1. For Minikube, the IP can be obtained by running the command minikube ip.
Creating an alias to the IP address
In this simple deployment an example Identity Provider is automatically configured. This allows you to login to the hub with some sample accounts. This service will by default only listen to the URL https://elastic.example, it cannot be browsed to on the IP address alone. To this end you must add a Host file entry to point the IP address from above to the alias on elastic.example.
This step is only required when running a basic example, a production example will use a real Identity Provider during which the correct DNS entry for the cluster will be used.
Logging in and applying the license
You can now browse to the hub at https://elastic.example. You will be asked to login and you can use the sample account of email@example.com with a password of Password1! .
You should now navigate to https://elastic.example/console to apply the license before being able to create applications. See Management console.