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.
Let’s first look at the prerequisites for setting up the Report Server on the Google Kubernetes Engine cluster.
Ensure your machine meets the following hardware requirements:
- A CPU with two or more cores.
- At least 4 GB of RAM.
You will need the following software:
- 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.
- Command-line tools: kubectl and Google Cloud CLI.
- A web browser.
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.
Open the folder where all the deployment files are using Visual Studio Code.
Let’s see how each file is used:
- Deployment: Contains the configuration to create and manage the pods using a replica set.
- 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.
- Ingress: Contains configurations for controlling the traffic routing and exposes HTTP and HTTPS routes from outside the cluster to services within the group.
- Log4net: Contains configuration settings used to view the application logs in your Kubernetes console or store the needed logs in a file.
- Namespaces: Contains configuration that will be helpful when different teams or projects share a Kubernetes cluster.
- Pvclaim_gke: Contains the configuration for where we will provide the information for file store and file share.
- 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:
- Open PowerShell and navigate to the folder where you downloaded the deployment files.
- Run the authentication command for Google Cloud.
- Open the Google Cloud Kubernetes page.
- Select the cluster to which you want to connect.
- Copy the provided command and run it in PowerShell to connect to the group.
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.
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.
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
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.
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.
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.
- Open the Bold Reports account either by using online credentials or by uploading the online 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.
- Click Log in to Activate account.
- 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.
- Next, we configure the Administrator user by entering the user information and password. Then, we click Next.
- 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.
- Fill in the required fields with the information for the new database. In this case, the database name is boldserviceslinux.
- Select Enable SSL to establish a secure connection using SSL and click Next. The report tenant deployment will begin and run in the background.
- 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.
- 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.
- Clicking a report will open it in the 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.
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.
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.
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.
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!