Articles in this section
Category / Section

Deploying Bold BI on Amazon EKS Using Helm

Published:

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:
    • AWS CLI - To connect to EKS Cluster
    • kubectl- To communicate with EKS
    • Helm - To deploy Bold BI
  • Node Configuration:
  • 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

  1. Create EKS cluster using your preferable method:
    Via AWS Management Console: Create an Amazon EKS Cluster – AWS Documentation

    Via AWS CLI / Terminal: AWS Console EKS Guide

  2. Set up your AWS credentials using the AWS CLI:

    aws configure
    
  3. Connect to the cluster

    aws eks --region <Region> update-kubeconfig --name <CluterName>
    
  4. Verify connection:

    kubectl get nodes
    

Step 2: Set Up Amazon EFS for Persistent Storage

  1. 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
  2. Ensure the security groups allow communication between EKS nodes and EFS.
  3. Note down the EFS File System ID. You will need it when configuring Helm.
  4. 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
    
  5. 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:

  1. In the AWS Management Console, navigate to RDS and select Create database.
  2. Choose Standard create and select PostgreSQL (version 13.0+).
  3. 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.
  4. Create the database and note the endpoint and port for Bold BI configuration.

Step 4: Initialize Load Balancer

  1. 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
    
  2. 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
    
  3. Retrieve the external endpoint of the nginx-ingress controller:
    kubectl get svc -n ingress-nginx
    
  4. Map your domain with the obtained external Ip from the above step.
  5. 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

  1. Add the Bold BI Helm repository:

    helm repo add boldbi https://boldbi.github.io/boldbi-kubernetes
    helm repo update
    
  2. Download the EKS-specific eks-values.yaml:

    curl -O https://raw.githubusercontent.com/boldbi/boldbi-kubernetes/main/helm/custom-values/eks-values.yaml
    
  3. 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.

Step 6: Deploy Bold BI

  1. Install the Helm Chart:
    helm install boldbi boldbi/boldbi -f eks-values.yaml --create-namespace --namespace bold-services
    
  2. Monitor Deployment:
    kubectl get pods -n bold-services
    
    Wait for all pods to reach the Running state.
  3. Access Bold BI:
    • Open the custom domain or ALB endpoint in a web browser.
    • If you did not configure the unlockKey and database details in eks-values.yaml, provide these details on the Bold BI startup page.
  4. Verify Dashboards:
    • Log in to Bold BI and verify that dashboards and data connections are functioning correctly.

Upgrading Bold BI

  1. Update the Helm repository:
    helm repo update
    
  2. Update eks-values.yaml with new configurations or image tags.
  3. Upgrade the release:
    helm upgrade boldbi boldbi/boldbi -f eks-values.yaml -n bold-services
    

Uninstalling Bold BI

  1. Remove the Helm release:
    helm uninstall boldbi -n bold-services
    

Additional Resources

Was this article useful?
Like
Dislike
Help us improve this page
Please provide feedback or comments
YS
Written by Yogeshkumar Subramaniyam
Updated:
Comments (0)
Please  to leave a comment
Access denied
Access denied