In the world of software development, there are exciting things happening! Technologies like Azure Kubernetes Service (AKS) and Istio are making a big impact in making applications stronger, smarter, more secure, and easier to manage. Bold Reports’ Report Server is a valuable reporting solution that empowers organizations to enhance their existing infrastructure by adding powerful reporting capabilities to their apps. This powerful tool allows you to effortlessly create, manage, and share reports. The best part is that you don’t need coding skills.
The Report Server’s key advantage is how easily it can be set up either on your own server or in the cloud. This flexibility gives organizations the freedom to choose what works best for them. In this blog post, we’ll walk you through the process of deploying the Bold Reports Report Server on the Azure Kubernetes Service (AKS) with Istio, which will also allow you to embed reporting into your applications.
Prerequisites for deployment
I will guide you through the deployment process. First, we need to download the highlighted deployment files from the Bold Reports Kubernetes GitHub repository. We have also published a video tutorial on deploying Bold Reports’ Report Server on Azure Kubernetes Service (AKS) with Istio. You can watch that video as well to learn this process.
Hardware requirements
To ensure optimal performance, the following hardware specifications are recommended:
A CPU with two or more cores.
A minimum of 4 GB RAM.
Software requirements
The recommended software prerequisites are as follows:
A database such as Microsoft SQL Server 2012 or higher, PostgreSQL, or MySQL. Ensure that the database is accessible from outside the machine.
Command-line tools: Install the necessary command-line tools, namely kubectl, Azure CLI, and Istioctl. These tools play a crucial role in managing and orchestrating your deployment.
Web browser: A standard web browser such as Microsoft Edge, Mozilla Firefox, or Chrome is required to access and manage the Bold Reports Report Server.
The Deployment Process
I will walk you through the deployment process, first we download the highlighted deployment files from Bold Reports Kubernetes GitHub repository.
Bold Reports Kubernetes GitHub repository
We will use Visual Studio Code, or you can use your own editor.
Before discussing the deployment and configuration process, it’s important to understand the various components and files that play a crucial role in setting up and managing your Kubernetes environment. These components include:
The deployment file: Contains configurations for creating and managing pods using a replica set.
Destination rulefile: Contains the necessary configuration for the destination rule, including the traffic policy for the associated Kubernetes service.
HPA (horizontal pod autoscaler) configuration: Used to automatically adjust the number of pods based on CPU or memory consumption.
Istio Gateway: Contains the configuration for the Istio Gateway resource, including the port, protocols, and routing rules to use. The Istio Gateway allows incoming traffic into the cluster and can route the traffic to the appropriate Kubernetes services.
Log4net Configuration: Contains configuration settings that are used to view the application logs in your Kubernetes console or store the needed logs in a file.
Namespaces: Contains the configuration that will be helpful when different teams or projects share a Kubernetes cluster.
Pvclaim_eks: Contains the configuration where we will provide the information for the file system and file share.
Service: Provides a single point of entry for accessing one or more pods.
Step 1: Connecting to the Azure cluster
First, you need to create a cluster in the Azure Kubernetes Service,
Azure Kubernetes Service
Next, connect with the Azure cluster.
Open PowerShell and navigate to the folder where you downloaded the deployment files.
Run the provided command to authenticate with Azure.
Navigate to the Azure Kubernetes page, open the cluster overview page, and click the Connect option
Cluster Overview Page
Copy the provided commands.
Connecting to the Cluster Using the Copied Commands
Run them in PowerShell. We will be connected to the cluster
Run the Copied Commands in PowerShell
Step 2: Configuring file storage for pods
Next, you need to create a storage account in the Azure Kubernetes service. Configure the file storage for pods by using the created storage account.
Storage Account
i. Open the Account Access key page, copy the storage account name, and then copy the storage account key and convert them to base64.
Account Access page
ii. I have created the file share instance inside the storage account to store the shared folder for the application usage, and I made a note of the file share name, which will be used in the next step.
Storage Account
Step 3: Modifying configuration files
Open the Pvclaim_eks file and add the Azure storage account name and account key using their base64 values. Also add the file share name as the share name value and save the file.
Modifying Pvclaim_eks Configuration File
Step 4: Obtaining Ingress Gateway IP address
I will use the command provided to get the Ingress gateway external IP address. This IP address will be used for deploying the report server.
kubectl -n istio-system get service
Ingress Gateway External IP Address
I will deploy the Report Server using this IP Address. But if you would like to set up the Report Server with a domain, you will need to map the domain name with the IP address, and then directly add the domain name and tls secret name in the istio_gateway.yaml file.
Report Server Domain
Step 5: Optional: Setting up SSL
If you wish to use SSL, add the domain and the SSL configuration in the istio_gateway.yaml file. By default, the application will be hosted in non-SSL mode. Before configuring SSL, create the TLS secret with the SSL certificate by running this command:
kubectl create secret tls boldreports-tls -n bold-services --key <key-path> --cert <certificate-path>
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.
First, you need to remove the lines.
Remove Lines of Domain SSL
You also need to uncomment these lines.
Uncomment Configuring Domain SSL
Next, you should replace example.com with your domain name or IP address. Deploy the application using the IP address, so you are not going to work with this step.
Report Server Domain
Step 6: Modifying deployment configuration
Open the deployment.yaml file and replace the domain or Ingress Gateway external IP address in the application base URL.
Application Base URL
Step 7: Configuring optional client libraries
If you want to use third-party data sources like MySQL, Oracle, and PostgreSQL in your report, then you need to install them while deploying the report server. If you want to install more than one client library, separate them with commas.
Deploying Report Server
Step 8: Creating namespace and Log Config
i. Create a namespace for Bold Reports using the provided command; this will create a namespace for Report Server:
kubectl apply -f namespace.yaml
ii. Create the log configuration using the provided command:
kubectl apply -f log4net_config.yaml
Step 9: Applying cconfiguration pvclaim_eks
Apply the configuration from pvclaim_eks by running this command to create a Persistent Volume (PV) and Persistent Volume Claim (PVC):
kubectl apply -f pvclaim_aks.yaml
Step 10: Applying configuration in hpa_gke
i. Apply the configuration in hpa_gke by running the provided command for setting up autoscaling for the Kubernetes Horizontal Pod Autoscaler (HPA):
kubectl apply -f hpa.yaml
ii. Create all the services by running this command; you will see all the services are created:
kubectl apply -f service.yaml
Step 11: Applying configuration in istio_gateway
By running this command, route traffic to services running in the cluster based on their URL paths and hostnames:
kubectl apply -f istio_gateway.yaml
Step 12: Applying configuration in destination_rule
Run the provided command to apply the configuration in destination_rule; this applies the traffic policies defined in the Destination Rule to the specified service:
kubectl apply -f destination_rule.yaml
Step 13: Checking Pod Status
i. Check the status of pods using the provided command:
kubectl get pods -n bold-services -w
ii. Wait until all the pods are running, and then run the command again to see if all the pods are running
Pods Running status
Start-up application
1. Open the browser and navigate to the Domain or Ingress IP Address provided in the application base URL to configure the report server.
Application start-up page
2. Activate the Bold Reports account either by using online credentials or by uploading the offline unlock key.
Activation Bold Reports Account
If you’re going to use the offline unlock key, you can download it from your Bold Reports Accounts page and upload it.
For this demo, activate the account using online credentials:
1. Click Log in to activate account and enter your Bold Reports credentials.
Clicking Log in to Activate Account
2. If you have multiple portal licenses, you’ll be prompted to select one.
3. Configure the user information.
4. Click Next.
Activation of Bold Reports Account Using Online Credentials.
Configure the database for storing Report Server data
1. You have the option to choose between SQL Server, PostgreSQL, or MySQL databases. For this setup, choose PostgreSQL. The fields will be updated accordingly.
Existing Database Page
2. You can either create a new database or use an existing one on the selected server type. In this case, select New Database and enter the name “boldserviceskubernetes.” Enable the SSL option to establish a secure connection using SSL and click
3. The report tenant deployment will begin and run in the background.
Report Tenant Deployment Running
4. Click Go to Reports, and you’ll be redirected to the View All
Go to Reports
Here, you can explore the available sample reports by clicking Explore in the Report Sample pop-up.
The View All Page
- By clicking the Add report button, you can add these reports to the Report Server. The reports will be added under the Sample Reports category
Samples Reports Category
6. Open an added report to display it in the Report Server
Report Server
Open the shared data source and data connector page. You can see third-party data sources like MySQL, Oracle, and PostgreSQL.
Add Data Source Data Connector Page
Export data visualization report items
To export data visualization report items such as charts and gauges when scheduling reports, you need to install the PhantomJS client library in your Report Server.
PhantomJS is a headless webkit scriptable with JavaScript.
Steps to install PhantomJS
i. Run the following command to get the available container:
kubectl get pods -n bold-services -w
ii. Run this command to open the shell running in the reports-web-deployment container:
kubectl exec -it <pod-name> -n <namespace> --bash
In the above command, <pod-name> refers to the name of the pod, and <namespace> refers to the namespace that was used when deploying the Report Server.
iii. Now you will be inside the container. You need to change the current directory to /application/app_data/optional-libs by running this command:
cd /application/app_data/optional-libs
iv. Install the sudo and wget tools.
apt-get install sudo
apt-get install wget
v. Once those are installed, you have to install some required packages before you can install PhantomJS. Run this command:
sudo apt-get install build-essential chrpath libssl-dev libxft-dev libfreetype6-dev libfreetype6 libfontconfig1-dev libfontconfig1 -y
vi. Next, 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
vii. Once the download is complete, extract the downloaded 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/
Extract the downloaded file and move it to the /usr/local/share directory.
viii. Next, create a symlink of the PhantomJS binary file to the system’s bin directory by running this command:
sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/t
ix. Verify whether PhantomJS is installed properly by running this command:
phantomjs --version
If it shows the version number, then PhantomJS is installed properly.
After reloading the browser, you will be able to export a report that contains charts, and the exported file will include the charts.
Report Exports Containing Exported Files
Report embedding
Bold Reports allows you to embed reporting functionalities directly within your applications. Our embedded reporting tools can be integrated with popular application platforms such as ASP.NETCore, Blazor, Angular, React, and more. 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 Integrated Tools
Conclusion
Setting up a report server in Azure Kubernetes Service with Istio brings exciting opportunities to upgrade your data reporting system. Our easy-to-follow guide has shown you how to use cloud computing, Kubernetes organization, and Istio’s special features.
If you have any questions or need further assistance, please feel free to post in the comments section. Alternatively, you can reach out to us through our contact page. If you already have an account, you can log in to ask your support question directly.
Bold Reports offers a 15-day free trial with no credit card required. We invite you to start a free trial and experience Bold Reports firsthand. We value your feedback, so please let us know what you think!