Skip to content

Latest commit

 

History

History
562 lines (473 loc) · 13.7 KB

configuration.md

File metadata and controls

562 lines (473 loc) · 13.7 KB

Advanced Configuration

Client Libraries

The following are the client libraries used in Bold BI by default.

optionalLibs: 'mongodb,mysql,influxdb,snowflake,oracle,google,clickhouse'

Read the optional client library license agreement from the following link.

Consent to deploy client libraries

If you want to include only specific client libraries, note the optional client libraries from the above link as comma-separated names in your values.yaml file.

Cluster Provider

Bold BI supports Azure Kubernetes Service (AKS), Elastic Kubernetes Service (EKS), and Google Kubernetes Engine (GKE). You can enter the value based on your cluster provider.

# your cluster provider name. The supported values are aks, gke,ack and eks.
clusterProvider: ''

Persistent Volume

Name

Persistent volumes were global resources. So if you have already installed Bold BI in your cluster, then the previous persistent volume name will conflict with the current installation. To avoid conflicts with previous Bold BI persistent volumes, change this name.

By default, the persistent volume name used in Bold BI is bold-fileserver.

persistentVolume:
  # persistent volumes were global resources. 
  # so if you already have Bold BI installed in your cluster, 
  # then the previous persistent volume name will conflict with current installation.
  # Change this name to avoid conflicts with previous Bold BI persistent volumes.
  name: bold-fileserver

Capacity

Generally, a PV will have a specific storage capacity. This is set using the PV's capacity attribute. See the Kubernetes Resource Model to understand the units expected by capacity.

By default, the persistent volume capacity used in Bold BI is 3Gi.

persistentVolume:
  capacity: 3Gi

Persistent volume configuration for each cluster

  1. ACK
clusterProvider: ack
    
persistentVolume:
  ack:
    serverName: ''
    filePath: '/bold-services'

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is ack
persistentVolume.ack.serverName The host name of mount target for your NAS file system.
persistentVolume.ack.filePath This field represents the file path of the app_data files. The default location is mentioned as "bold-services.

  1. GKE
clusterProvider: gke
    
persistentVolume:
  gke:
    fileShareName: <file_share_name>
    fileShareIp: <file_share_ip_address>

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is gke
persistentVolume.gke.fileShareName The File share name of your filestore instance.
persistentVolume.gke.fileShareIp The IP address of your filestore instance.

  1. EKS
clusterProvider: eks
    
persistentVolume:
  eks:
    efsFileSystemId: <efs_file_system_id>

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is eks
persistentVolume.eks.efsFileSystemId The File system ID of your EFS file system.

  1. AKS
clusterProvider: aks
    
persistentVolume:
  aks:
    fileShareName: <file_share_name>
    # base64 string
    azureStorageAccountName: <base64_azurestorageaccountname>
    # base64 string
    azureStorageAccountKey: <base64_azurestorageaccountkey>

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is aks
persistentVolume.aks.fileShareName The File share name of your File share instance.
persistentVolume.aks.azureStorageAccountName The base64 encoded storage account name of the File share instance in your storage account.
persistentVolume.aks.azureStorageAccountKey The base64 encoded storage account key of the File share instance in your storage account.

NOTE: The Azure storage account credentials will be maintained in a secret named bold-azure-secret

  1. AKS WITH NFS FILESHARE
clusterProvider: aks
    
persistentVolume:
  aks:
    nfs:
      # fileshare name as 'storageaccountname/filesharename'.
      fileShareName: '<storageaccountname/filesharename>'

      # hostname of the fileshare Ex:premiumstorage1234.file.core.windows.net.
      hostName: '<hostname>'

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is aks
persistentVolume.aks.nfs.fileShareName The Storage account and File share name of your nfs File share instance. Ex: Ex:premiumstorage1234/boldbi
persistentVolume.aks.nfs.hostName The host name of your nfs fileshare instance. Ex: premiumstore12345.file.core.windows.net

NOTE: The premium storage account of the NFS fileshare must be within the same subscription as the AKS cluster.

  1. On-Premise
clusterProvider: onpremise
    
persistentVolume:
  onpremise:
    hostPath: /run/desktop/mnt/host/<local_directory>

Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is onpremise
persistentVolume.onpremise.hostPath The shared folder path in your host machine.

Ex: Create a folder in your machine to store the shared folders for application usage. D://app/shared

The corresponding value for the above shared folder will be, /run/desktop/mnt/host/d/app/shared

Load Balancing

Ingress-Nginx

By default, Nginx is used as a reverse proxy for Bold BI. To configure load balancing in Bold BI, take a look at the following code sample.

loadBalancer:
  type: nginx

The default ingressClassName is nginx. Please refer here for more details.

loadBalancer:
  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
  # ingressClassName: nginx

Istio Ingress Gateway

If you need to configure Bold BI with Istio, then you can change the value as istio in your configuration as follows.

loadBalancer:
  type: istio

Sticky Session

You can change the affinityCookieExpiration time. The default value is 600s.

loadBalancer:
  affinityCookie:
    enable: true
    affinityCookieExpiration: 600

SSL Configuration

If you have an SSL certificate for your DNS and need to configure the site with it, simply pass your DNS with the https protocol to appBaseUrl; this will enable SSL in both Ingress and Istio.

NOTE: Create the TLS secret with the name bold-tls or modify the secret name in the values.yaml file.

Run the following command to create a TLS secret with your SSL certificate.

# Ingress
kubectl create secret tls bold-tls -n bold-services --key <key-path> --cert <certificate-path>

# Istio
kubectl create secret tls bold-tls -n istio-system --key <key-path> --cert <certificate-path>

Map multiple domains

You can map multiple domains in both Ingress Nginx and Istio, as shown below. When mapping multiple domains, you must include the appBaseUrl in one of the host arrays.

For multiple domain scenarios, the singleHost secret will not be considered. You must mention your secret within the multipleHost section.

Ingress Nginx

loadBalancer:
  singleHost:
    secretName: bold-tls

  multipleHost:
    hostArray:
      - hosts: 
          - cd1.abc.com
          - cd2.abc.com
        secretName: tls-secret1
      - hosts: 
          - cd1.xyz.com
          - cd2.xyz.com
        secretName: tls-secret2

Istio Ingress Gateway

loadBalancer:
  singleHost:
    secretName: bold-tls

  multipleHost:
    hostArray:
      - hosts: 
          - cd1.abc.com
          - cd2.abc.com
        secretName: tls-secret

Nginx Annotation Configuration

By default, the necessary annotations are already included in the Nginx Ingress file. If you need to add annotations based on your specific use case, you can specify them in the values.yaml file in the key:value format. Refer to the example below:

  nginxIngressAnnotations:
    # Enter annotations here for adding annotations in nginx ingress
    # Example:
    # cert-manager.io/cluster-issuer: letsencrypt-prod
    # nginx.ingress.kubernetes.io/rewrite-target: /

This configuration allows you to tailor the behavior of the Nginx Ingress Controller to meet your requirements by adding appropriate annotations.

Auto Scaling

By default, autoscaling is enabled in Bold BI, to disable autoscaling, please set autoscaling.Enabled=false.

autoscaling:
  enabled: true
  targetCPUUtilizationPercentage: 80
  targetMemoryUtilizationPercentage: 80
  behavior:
    stabilizationWindowSeconds: 60
    podsValue: 1
    podsPeriodSeconds: 60
    percentValue: 10
    percentPeriodSeconds: 60

Name Description
autoscaling.enabled By default the autoscaling will be enabled. turn this to false to disable the autoscaling functionality.
autoscaling.targetCPUUtilizationPercentage The CPU utilization is the average CPU usage of a all pods in a deployment across the last minute divided by the requested CPU of this deployment.
autoscaling.targetMemoryUtilizationPercentage With this metric the HPA controller will keep the average utilization of the pods in the scaling target at the value mentioned (80%). Utilization is the ratio between the current usage of resource to the requested resources of the pod.
autoscaling.behavior.stabilizationWindowSeconds The stabilization window is used by the autoscaling algorithm to consider the computed desired state from the past to prevent scaling. By default the value is 60 to provide a custom downscale stabilization window of 1 minute.
autoscaling.behavior.podsValue
autoscaling.behavior.podsPeriodSeconds
This policy (Pods) allows 1 replicas to be scaled down in one minute.
autoscaling.behavior.percentValue
autoscaling.behavior.percentPeriodSeconds
This policy (Percent) allows at most 10% of the current replicas to be scaled down in one minute.

Bing Map Widget

If you need to use the Bing Map widget feature, enable this to true and provide an API key value for <widget_bing_map_api_key>. By default, this feature will be set to false.

bingMapWidget:
  enabled: <true / false>
  apiKey: <widget_bing_map_api_key>

Note: The Bing Map keys will be maintained in secret name called bold-secret.

Custom Locale Path

Localization is adapting a website to different linguistic and cultural contexts - involving much more than simple text translation. By default, the Bold BI application is available in English(en-US) localization.

If you have generated a locale.js file, specify its path in <locale.js_file_path>.

localization:
  customLocalePath: '<locale.js_file_path>'