Set Up the Bold Reports Report Server in Google Kubernetes Engine
Tags: boldreports, kubernetesengine, reportviewer, reportingtools
Published: 2024-02-13 08:13:00

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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE1-compressed-1.jpg)
_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. 

3. Open the Google Cloud Kubernetes page.
4. Select the cluster to which you want to connect.
5. 

#### 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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE4-1-compressed.jpg)
_Pods configuring file_

#### Step 5: Modifying pvclaim\_gke.

Open the **p**** vclaim\_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE5.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/Picture1-1.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE6-compressed.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE1.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE2-compressed.jpg)
_Application startup page_

## Start-up Application

1. ![Activating Bold Reports Account](https://www.boldreports.com/wp-content/uploads/2023/08/GKE3.jpg)
_Uploading Offline unlock key_

2. Click **Log in**  **to Activate account**.

![Activating Bold Reports Account](https://www.boldreports.com/wp-content/uploads/2023/08/GKE4.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/MicrosoftTeams-image-100-1-compressed.jpg)
_User information and password_

5. 

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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE7-1.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE8-1.jpg)
_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](https://www.boldreports.com/wp-content/uploads/2023/08/GKE9-compressed.jpg)
_Sample reports_

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

![Report Viewer](https://www.boldreports.com/wp-content/uploads/2023/08/GKE10-compressed.jpg)
_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](https://help.boldreports.com/enterprise-reporting/developer-guide/embed-in-application/view-report-through-report-viewer/?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24).

![Bold Reports Intergrated Tools](https://www.boldreports.com/wp-content/uploads/2023/08/Image-Embeddedrerporting-compressed.jpg)
_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](https://help.boldreports.com/embedded-reporting/blazor-reporting/report-designer/add-report-designer-to-a-blazor-application/). To experience our live features, please check out our [demo samples](https://demos.boldreports.com/home/blazor.html) and [solutions](https://solutions.boldreports.com//?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24).

If you have any questions, please post them in the comments section. You can also contact us through our [contact page](https://www.boldreports.com/contact/?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24), or if you already have an account, you can [log in](https://www.boldreports.com/account/?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24) 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](https://twitter.com/boldreportsoffl), [Facebook](https://www.facebook.com/boldreportsofficial/), and [LinkedIn](https://www.linkedin.com/showcase/boldreportsofficial) pages for info about upcoming releases.

The post [Set Up the Bold Reports Report Server in Google Kubernetes Engine](https://www.boldreports.com/blog/set-up-bold-reports-report-server-in-gke/?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24) appeared first on [Bold Reports](https://www.boldreports.com/?utm_source=dev&utm_dev=partner_blog&utm_campaign=dev_reportserverinkubernateengine_cy24).