Deploying Bold BI on Amazon EKS Using Helm
This guide provides instructions for deploying Bold BI, a business intelligence dashboard software by Syncfusion, on Amazon Elastic Kubernetes Service (EKS) using Helm. It focuses on the necessary steps and configurations specific to EKS.
Prerequisites
To deploy Bold BI on EKS, ensure the following requirements are met:
- AWS Account: Configured with permissions to create and manage EKS clusters.
- Kubernetes Cluster: EKS Cluster version 1.29+.
- CLI Tools:
- Node Configuration:
- Refer to the Bold BI Recommended System Configuration to select node specifications based on your use case.
- File Storage: Amazon Elastic File System (EFS) with 10 GB or more for Bold BI server storage (read-write-many supported).
- Database: PostgreSQL 13.0+, Microsoft SQL Server 2016+, MySQL 8.0+, or Oracle Database 19c+.
- Load Balancer: NGINX Ingress Controller.
- Web Browser: Microsoft Edge, Mozilla Firefox, or Chrome.
Deploy Bold BI on EKS Cluster
Step 1: Create and Connect EKS Cluster
-
Create EKS cluster using your preferable method:
Via AWS Management Console: Create an Amazon EKS Cluster – AWS DocumentationVia AWS CLI / Terminal: AWS Console EKS Guide
-
Set up your AWS credentials using the AWS CLI:
aws configure
-
Connect to the cluster
aws eks --region <Region> update-kubeconfig --name <CluterName>
-
Verify connection:
kubectl get nodes
Step 2: Set Up Amazon EFS for Persistent Storage
- Create an Amazon EFS file system in the same VPC and region as your EKS cluster using the AWS Management Console or CLI.
Official Guide: Creating EFS File Systems – AWS Documentation - Ensure the security groups allow communication between EKS nodes and EFS.
- Note down the EFS File System ID. You will need it when configuring Helm.
- Add the AWS EFS CSI Driver Helm repository and update it:
helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/ helm repo update aws-efs-csi-driver
- Install the EFS CSI Driver in the kube-system namespace:
helm upgrade --install aws-efs-csi-driver --namespace kube-system aws-efs-csi-driver/aws-efs-csi-driver --set controller.serviceAccount.create=true --set controller.serviceAccount.name=efs-csi-controller-sa
Step 3: Set Up PostgreSQL on AWS RDS (Optional)
If using an external database, skip this step. Otherwise, configure a PostgreSQL instance on AWS RDS:
- In the AWS Management Console, navigate to RDS and select Create database.
- Choose Standard create and select PostgreSQL (version 13.0+).
- Configure:
- DB instance class: e.g.,
db.t3.medium
. - Storage: At least 20 GB (adjust based on usage).
- DB name, master username, and password.
- VPC settings: Use the same VPC as the EKS cluster.
- Security group: Allow inbound traffic from the EKS VPC on port 5432.
- DB instance class: e.g.,
- Create the database and note the endpoint and port for Bold BI configuration.
Step 4: Initialize Load Balancer
- Install nginx-ingress using kubectl:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.3/deploy/static/provider/aws/deploy.yaml
- After installed the nginx-ingress using kubectl, run the below command to set allow-snippet-annotations as true.
kubectl patch configmap ingress-nginx-controller -n ingress-nginx -p '{\"data\":{\"allow-snippet-annotations\":\"true\"}}' --type=strategic
- Retrieve the external endpoint of the nginx-ingress controller:
kubectl get svc -n ingress-nginx
- Map your domain with the obtained external Ip from the above step.
- Create a TLS secret named bold-tls for SSL configuration:
# Ensure the namespace exists kubectl create ns bold-services # Create the TLS secret with your certificate and key kubectl create secret tls bold-tls -n bold-services --key <path-to-key-file> --cert <path-to-cert-file>
# Example command kubectl create secret tls bold-tls -n bold-services --key D:\boldbidemo.key --cert D:\boldbidemo.pem
Step 5: Configure Helm Chart
-
Add the Bold BI Helm repository:
helm repo add boldbi https://boldbi.github.io/boldbi-kubernetes helm repo update
-
Download the EKS-specific
eks-values.yaml
:curl -O https://raw.githubusercontent.com/boldbi/boldbi-kubernetes/main/helm/custom-values/eks-values.yaml
-
Customize the
eks-values.yaml
file with the following key parameters:- namespace: The namespace where Bold BI will be deployed. Default is
bold-services
. - appBaseUrl: The fully qualified domain name (FQDN) with protocol.
- Use the mapped custom domain with an SSL certificate (as described in Step 4).
- Example:
https://bi.example.com
- efsFileSystemId: The Amazon EFS File System ID created in Step 2.
For advanced configurations, refer to boldbi-kubernetes.
- namespace: The namespace where Bold BI will be deployed. Default is
Step 6: Deploy Bold BI
- Install the Helm Chart:
helm install boldbi boldbi/boldbi -f eks-values.yaml --create-namespace --namespace bold-services
- Monitor Deployment:
Wait for all pods to reach thekubectl get pods -n bold-services
Running
state. - Access Bold BI:
- Open the custom domain or ALB endpoint in a web browser.
- If you did not configure the
unlockKey
and database details ineks-values.yaml
, provide these details on the Bold BI startup page.
- Verify Dashboards:
- Log in to Bold BI and verify that dashboards and data connections are functioning correctly.
Upgrading Bold BI
- Update the Helm repository:
helm repo update
- Update
eks-values.yaml
with new configurations or image tags. - Upgrade the release:
helm upgrade boldbi boldbi/boldbi -f eks-values.yaml -n bold-services
Uninstalling Bold BI
- Remove the Helm release:
helm uninstall boldbi -n bold-services