Skip to content

Latest commit

 

History

History
568 lines (485 loc) · 14.2 KB

common-configuration.md

File metadata and controls

568 lines (485 loc) · 14.2 KB

Advanced Configuration

Client Libraries

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

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

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

Consent to deploy client libraries

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

Persistent Volume

Name

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 the current installation. Change this name to avoid conflicts with previous Bold BI persistent volumes.

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 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. OKE
clusterProvider: oke

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: 5Gi
  oke:
    # Mention your filesystem volume handle in the format of <FileSystemOCID>:<MountTargetIP>:<path>
    volumeHandle: '<FileSystemOCID>:<MountTargetIP>:<path>'
<br/>
Name Description
clusterProvider The type of kubernetes cluster provider you are using. In this case the clusterProvider value is oke
persistentVolume.oke.volumeHandle The Volume Handle of your Oracle file system.
where:

FileSystemOCID - is the OCID of the file system defined in the File Storage service.

MountTargetIP - is the IP address assigned to the mount target.

path - is the mount path to the file system relative to the mount target IP address, starting with a slash.
For example: ocid1.filesystem.oc1.iad.aaaa______j2xw:10.0.0.6:/FileSystem1

Image

We need to give an image tag for Bold BI, Bold Reports, and ID. By default set the latest version of image tags. You can change a tag based on requirements and the tag overrides the image tag whose default is in the chart appVersion.

image:
  idRepo: us-docker.pkg.dev/boldbi-294612/boldbi
  biRepo: us-docker.pkg.dev/boldbi-294612/boldbi
  reportsRepo: us-docker.pkg.dev/boldreports/v6-3-24
  # Overrides the image tag whose default is the chart appVersion.
  idTag: 9.1.73
  biTag: 9.1.73
  reportsTag: 6.3.24

Repository details are available in the image section to refer to the image tags. No need to change the repository details for idRepo, biRepo, and reportsRepo.

Version

By default, the latest version of Bold BI, Bold Reports, and IDP is in the version section. You can change a version based on requirements.

versions:
  idp: "4.2.1"
  bi: "9.1.73"
  reports: "6.3.24"

NOTE: We need give a latest version of idp when you have latest version of Bold BI or Bold Reports version

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 below snippet.

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 like below:

loadBalancer:
  type: istio

Kong-API Ingress

If you need to configure Bold BI with Kong Api Gateway then you can change the value as kong in your configuration like below:

loadBalancer:
  type: kong

sticky session

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

loadBalancer:
  affinityCookie:
    enable: true
    affinityCookieExpiration: 600

SSL Configuration

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

NOTE: You have to create the TLS Secret with name bold-tls or else change the secret name in your values.yaml

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

# Nginx Ingress and Kong-API-Gateway 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 like below. While mapping multiple domains you have to include the appBaseUrl in any of the matching host array.

FOr multiple domain scenerio the singleHost secret will not be considered, you have to mention your secret inside 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

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, autoscaling will be enabled. turn this to false to disable the autoscaling functionality.
autoscaling.targetCPUUtilizationPercentage The CPU utilization is the average CPU usage of 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 resources 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 replica 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 Bing Map widget feature, enable this to true and 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 a secret named bold-secret