Set Up the Bold Reports Report Server in Google Kubernetes Engine

In this blog, we will guide you through deploying the Bold Reports Report Server on Google Kubernetes Engine using Ingress and embed reporting tools into your application.

The Bold Reports Report Server is a tool that empowers organizations with comprehensive data analysis and visualization capabilities, catering to developers and business users. Its user-friendly interface and versatile features make report creation, sharing, and management effortless.

The Google Kubernetes Engine (GKE) is a fully managed Kubernetes service by Google Cloud. By combining the might of Bold Reports with the flexibility and reliability of GKE, a whole new world of possibilities unfolds.

Cluster Prerequisites

Let’s first look at the prerequisites for setting up the Report Server on the Google Kubernetes Engine cluster.

Hardware Requirements

Ensure your machine meets the following hardware requirements:

  1. A CPU with two or more cores.

  2. At least 4 GB of RAM.

Software Requirements

You will need the following software:

  1. Database: You should have a database instance like Microsoft SQL Server 2012 or newer, PostgreSQL, or MySQL. Ensure that your database is accessible outside the machine.

  2. Command-line tools: kubectl and Google Cloud CLI.

  3. A web browser.

Deployment Process

Let’s go through the deployment process, so you can start with Bold Reports on your Kubernetes cluster smoothly.

Step 1: Download Bold Reports Kubernetes deployment files.

Let’s head to our GitHub repository and find the Bold Reports Kubernetes deployment files.

GitHub repository

GitHub repository

Open the folder where all the deployment files are using Visual Studio Code.

Let’s see how each file is used:

  1. Deployment: Contains the configuration to create and manage the pods using a replica set.

  2. Configuration in HPA_gke: The configuration in this file is used to increase or decrease the number of pods automatically in response to the workload’s CPU or memory consumption.

  3. Ingress: Contains configurations for controlling the traffic routing and exposes HTTP and HTTPS routes from outside the cluster to services within the group.

  4. Log4net: Contains configuration settings used to view the application logs in your Kubernetes console or store the needed logs in a file.

  5. Namespaces: Contains configuration that will be helpful when different teams or projects share a Kubernetes cluster.

  6. Pvclaim_gke: Contains the configuration for where we will provide the information for file store and file share.

  7. Service: Provides a single point of entry for accessing one or more pod

Step 2: Connecting to the GKE cluster.

Before proceeding, make sure to have a Kubernetes cluster set up for deploying Bold Reports. To connect with the GKE cluster, follow these steps:

  1. Open PowerShell and navigate to the folder where you downloaded the deployment files.

  2. Run the authentication command for Google Cloud.

    Connecting to the GKE cluster

    Authentication Command

  3. Open the Google Cloud Kubernetes page.

  4. Select the cluster to which you want to connect.

  5. Copy the provided command and run it in PowerShell to connect to the group.

    Connecting GKE Cluster

Command-line access

Step 3: Deploying the Ingress NGINX controller.

To deploy the NGINX Ingress controller, run the next command.

ckubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml

Step 4: Configuring file storage for pods.

Ensure you have created the Google File Store instance for storing the shared folder required by the application. Note the file share name and IP address for the next step.

Configuring file storage for pods

Pods configuring file

Step 5: Modifying pvclaim_gke.

Open the pvclaim_gke folder and add the file share name with the prefix “/” as the nfs path value. Add the file share IP address as the nfs server value.

Modyfying Pvclaim_gke

Deploying the Report server

Step 6: Creating a namespace for Bold Reports.

Run the given command to create a namespace for Bold Reports. You can name it as you like. Here, we are using “bold service” as the namespace name.

kubectl apply -namespace.yaml

Step 7: creating the config map.

Run the provided command to create the config map.

kubectl aapply -f log4net_config.yaml

Step 8: Configuring the config map.

We will deploy the Report Server using the Ingress IP address. If you prefer to set up the Report Server with a domain, you can add the domain name and TLS secret name under the tls and rules sections in the ingress—yaml file.

By default, the application will be hosted in non-SSL mode. If you wish to configure SSL, add the domain and SSL configuration in the ingress.yaml file.
Before configuring SSL, we need to create the TLS secret with the SSL certificate by running this command.

kubectl create secret tls boldreports-tls -n bold-services --key  --cert

In the previous command, boldreports-tls is the secret name. <key-path> indicates the path for the .pem file, and <certificate-path> indicates the .crt file path. You should use your domain SSL certificate

Step 9: Applying Bold Reports Ingress.

Run the command to apply Bold Reports Ingress and obtain the NGINX Ingress address.

kubectl apply -f ingress.yaml

Continue running the command until you receive the Ingress IP address.

kubectl get ingress -n bold-services -w

Applying Bold Reports Ingress

Ingress IP address

Step 10: Mapping the IP address with DNS

After obtaining the IP address, our next step is to associate it with the DNS specified in the ingress.yaml file. In this blog, we will deploy the application using this IP address.

Step 11: Installing optional client libraries

If you want to use third-party sources’ client libraries like MySQL, Oracle, or PostgreSQL, install them during Report Server deployment. If you want to install more than one client library, then separate their names with commas. Like in the following, where we specify the databases MySQL, Oracle, and PostgreSQL.

Installing optional client libraries

Optional client libraries

Step 12: Configuration from pvclaim_gke.

Apply the configuration from pvclaim_gke to create required persistent volume (PV) and persistent volume claim (PVC).

kubectl apply -f pvclaim_gke.yaml

Step 13: Configuration in deployment file.

Apply the configuration in the deployment file by running this command. It creates and manages pods with the specified number of replicas with the provided image.

kubectl apply -f deployment.yaml

Step 14: Configuration in hpa_gke

Next, we apply the configuration in hpa_gke by running this command for setting up autoscaling for the Kubernetes horizontal pod autoscaler (HPA).

kubectl apply -f hpa_gke.yaml

Step 15: Create services

We will also create services by running this command. Once the command has finished running, the services will be created.

kubectl apply -f service.yaml

Step 16: Check pod status

Once all the deployment files are applied, we will check the pod status by running the next command.

kubectl get pods -n bold-services -w

We wait until all pods are running and then run the command again.

Pod status

Pod status

Once all pods are running, we open the browser and navigate to the DNS or IP address in the development.yaml file to start the application.

Application startup page

Application startup page

Start-up Application

  1. Open the Bold Reports account either by using online credentials or by uploading the online unlock key.

    Activating Bold Reports Account

    Uploading Offline unlock key

    We can download the unlock key from Bold Reports Accounts page in this set up. In this blog, we will use online credentials.

  2. Click Log into Activate account.

    Activating Bold Reports Account

    Log in activate account

  3. Enter your Bold Reports credentials. Since we have only one portal license, the portal license selection will be skipped in this setup. If you have more than one portal license, you will be required to select one.

  4. Next, we configure the Administrator user by entering the user information and password. Then, we click Next.

    Activating Bold Reports account

    User information and password

  5. We are redirected to set up the database page. We can configure the database to store the Report Server data and reports in SQL Server, PostgreSQL, or MySQL. For this setup, we choose PostgreSQL.

    Existing databases for storing Report server

    Database page

  6. Fill in the required fields with the information for the new database. In this case, the database name is boldserviceslinux.

  7. Select Enable SSL to establish a secure connection using SSL and click Next. The report tenant deployment will begin and run in the background.

    Report tenant deployment

    Report tenant deployment running

  8. Click Go to Reports. We are redirected to the View all page**.** Sample reports that are already available with the Report Server can be added by clicking Explore in the Report Samples pop-up.

    View all page

    View all page

  9. You can see the list of all samples. Click Add Report to add these reports to the Report Server. The Reports will be added under the Sample Reports category**.**

    sample reports

    Sample reports

  10. Clicking a report will open it in the Report Viewer**.**

    Report Viewer

    Report Viewer

Exporting Data Visualization Report Items

The final configuration of the Bold Reports Report Server with visualization report items (such as charts and gauges) will not be available for exporting. To export data visualization report items when scheduling reports, we need to install the PhantomJS client library in our Report Server.

Steps to install PhantomJS

1. Before installing PhantomJS, we will need to bash our pods and run the following command.

kubectl exec -it <pod-name> -n <namespace> -- bash

2. The following command will change the current directory to /application/app_data/optional-libs.

3. Install the sudo and wget tools.

apt-get install sudo
apt-get install wget

4. Install the required packages with the following command.

sudo apt-get install build-essential chrpath libssl-dev libxft-dev libfreetype6-dev libfreetype6 libfontconfig1-dev libfontconfig1 -y

5. Download the latest stable version of PhantomJS from the official website by running this command.

sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

6. After the download, extract the archive file to the desired system location by running this command.

sudo tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/

It will extract the downloaded file and move it to the /usr/local/share directory.

7. Run the next command to create a symlink of the PhantomJS binary file in the system’s bin directory.

sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

8. Verify whether PhantomJS is properly installed by running the following command.

phantomjs --version

If the result shows the version number, then PhantomJS is properly installed. Reload the browser and export the report. Open the exported file, and you can see that the charts have been properly exported.

Report Embedding

Bold Reports allows you to embed reporting functionalities directly within your applications. Our embeddable reporting tools can be integrated with popular applications such as ASP.NET Core, Blazor, Angular, and React. The usage of the embedded reporting tools will change depending on the deployment platform. You can find more detailed information about these differences in our documentation.

Bold Reports Intergrated Tools

Bold Reports Integrated Tools

Conclusion

This blog post covered the step-by-step process of deploying the Bold Reports Report Server on Google Kubernetes Engine, including adding optional client libraries and installing PhantomJS for exporting data visualization report items. We hope you found this guide helpful.

To explore more about the Bold Reports Report Server on the Google Kubernetes Engine with Ingress, look through our documentation site. To experience our live features, please check out our demo samples and solutions.

If you have any questions, please post them in the comments section. You can also contact us through our contact page, or if you already have an account, you can log in to ask your support question.

Bold Reports offers a 15-day free trial without any required credit card information. We welcome you to start a free trial and experience Bold Reports. Try it and let us know what you think!

Catch us on our official Twitter, Facebook, and LinkedIn pages for info about upcoming releases.

0
Subscribe to my newsletter

Read articles from Bold Reports Team directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Bold Reports Team
Bold Reports Team