Before deploying the docker images to Kubernetes, you must configure the cluster through the Helm chart located in the values.yaml file. There is a section in the file for each module, with settings that are specific to that module's needs. The following table describes the most common properties in the Helm chart.
Property | Description |
replicas | Must be set to 1 when using the Kubernetes auto-scalability feature, because that will create its own replica sets for deployments and your default replica set won't be used anyway. For more information, see Configuring Scalability. |
dockerImage | URI and path of the image in the Docker image repository. In these examples, it's an AWS Docker image registry (AWS ECR or Amazon Elastic Container Registry). |
dockerTag | The tag for the image in the Docker image repository. |
memoryRequest | Minimum amount of memory that the pod needs to run properly. This much memory should be reserved for the pod, even if it may not use it all at first. The Mi unit is Mebibytes, which for computer memory is synonymous with megabytes (1 MiB = 2^20 bytes = 1048576 bytes). The Gi unit is also supported for Gibibytes, equivalent to gigabytes. |
memoryLimit | Maximum amount of memory that can be allocated to the pod. The pod will not be able to use more than this amount. See the explanation of Mi units above. |
cpuRequest | Minimum amount of CPU that the pod needs to run properly. This much CPU should be reserved for the pod, even if it may not use it all at first. The unit m is milliCPU, or thousandths of a CPU. Therefore, 1000m is equivalent to one whole CPU, and 500m is half a CPU. 1000m is also equivalent to 1 virtual CPU (AWS vCPU) or 1 virtual core (Azure vCore or Google core). |
cpuLimit | Maximum amount of CPU that can be allocated to the pod. The pod will not be able to use more than this amount. See the explanation of units above. |
javaOptions | JVM options settings for each pod in a specific deployment. The recommendation is to leave some buffer so the JVM won't take everything up to what is set in memoryLimit. In particular, the jrio-Export pods come with preinstalled chromium driver, which is used to export HTML/Fusion charts. Each chart report export task inside one pod will start multiple chromiums inside the pod. |
terminationWaitSeconds | This timeout allows the pod to finish all its tasks when kubernetes desides to scale down the cluster and terminates the pod. For more information, see the Kubernetes documentation. |
config | Configuration properties that are passed to the pod, especially any jasperReportsProperties for the jrio-reporting and jrio-export pods. |
The following examples of the Helm chart for each pod assume that the Docker images are deployed on AWS EKS (Amazon Elastic Kubernetes Service).
• | The jrio-client module is optional, and usually only included for demonstration purposes. |
• | The jrio-manager pod has memory and cpu settings, as well as options for its JVM (Java Virtual Machine). |
• | In addition to resource limits and JVM options, the jrio-reporting pod has a timeout setting and a thread setting. You can also specify the jasperReportsProperties property and provide a list of JasperReports Library property names and values to be used when generating reports. |
• | In addition to resource limits and JVM options, the jrio-export pod also has a timeout setting and a thread setting. You can also specify the jasperReportsProperties property and provide a list of JasperReports Library property names and values to be used when exporting reports. |
• | The jrio-rest pod has properties for resoure limits, JVM options and a timeout. If you are not using the standard 8080 port, specify it here as well. |
• | The redis pod for the Redis queue only needs the port specified if you are not using the default (6379). |
• | This setting identifies the URL of the JasperReports Server instance hosting the repository you want to use for reports and data adapters. This value overrides any repository URL defined in the docker images. |
If you deploy JasperReports Server in the cloud, you must launch it first so its URL is available to you now. If you have a Private setup for AWS EKS (Elastic Kubernetes Service), then the server must be placed into the same virtual private cloud (VPC) as AWS EKS. If you have a public setup, it's not required but it is recommended to do so as well.
Jaspersoft recommended to use a static IP address for the JasperReports Server EC2 instance, so you won't have to rebuild JRIO images and update the repository URL in this file. For a server in a clustered setup, you should use the load balancer hostname.
In the following example, the server is running on AWS (Amazon Web Services). You do not need to specify the port if it uses the default port 80.
Minikube on Docker VM
If you deploy on Minikube using the Docker VM, you must specify the following JasperReports Library property in the jrioReporting and jrioExport sections.
This property is needed because of a known issue with chromedriver on the Docker VM. This property is not needed for Minikube on a virtual box or other virtual machines, nor for actual Kubernetes clusters, for example when deployed on AWS EKS.
Recommended Comments
There are no comments to display.