Skip to main content

Installing Qlik Sense Enterprise on Kubernetes


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:

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

Installing Qlik Sense

Complete the following steps to install Qlik Sense:

  1. Create a text file called values.yaml.

    1. Add the following content to the file:

      #This setting enables dev mode to include a local MongoDB install
        enabled: true
      #This setting accepts the EULA for the product
        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.
    2. 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
          storageClass: my-storage-class
    3. If you are using Minikube for test purposes, you should review and add the additional configuration here: Using Minikube.

    4. Save the file.

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

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

Note: The simple IdP is for test purposes only and you should configure a full IdP by reviewing Setting up identity providers.

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 harley@qlik.example 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.