Skip to content

Latest commit

 

History

History
689 lines (456 loc) · 39.9 KB

readme.md

File metadata and controls

689 lines (456 loc) · 39.9 KB

AI Data Advisor (AIDA)

Content

Introduction

AI Data Advisor (AIDA) is a component of HCL Workload Automation since V10.1, based on Artificial Intelligence and Machine Learning techniques. It enables fast and simplified data-driven decision making for an intelligent workload management. By analyzing workload historical data and metrics gathered by HCL Workload Automation and predicting their future patterns, AIDA identifies anomalies in KPIs trend (such as the jobs in plan by status and the jobs in plan by workstation) and sends immediate alerts to prevent problems and delays. Alerts show up on the Workload Dashboard and can be notified via email.

This readme provides the steps for deploying AIDA, using helm charts and container images. Deploy AIDA after deploying HCL Workload Automation. For details about HCL Workload Automation deployment, refer to HCL Workload Automation readme file.

Limitations

  • Limited to amd64 platforms.
  • With AIDA deployment on Kubernetes, you can monitor only HCL Workload Automation servers (not HCL Workload Automation for Z servers).
  • With AIDA deployment on Kubernetes, each single AIDA instance can monitor just one HCL Workload Automation server.
  • With AIDA deployment on Kubernetes, AIDA UI can be accessed only using the AIDA widget on the Workload Dashboard of the Dynamic Workload Console.

Details

AIDA helm chart is composed of the following sub-charts, one for each service:

  • aida-ad - Anomaly detection and alert generation service
  • aida-es - Elasticsearch, to store and analyze data
  • aida-exporter - Exporter service
  • aida-email - Email notification service
  • aida-nginx - As a reverse proxy for AIDA components
  • aida-orchestrator - Orchestrator service
  • aida-predictor - Predictor service
  • aida-redis - Internal event manager
  • aida-ui - AIDA UI

Each sub-chart defines the following Kubernetes resources:

Deployments

Each sub-chart except aida-es defines a deployment named {{ .Release.Name }}-{{ .Chart.Name }}

Pods

Each Deployment generates one or more Pods named {{ .Release.Name }}-{{ .Chart.Name }}-<UID> where is a Unique Identifier generated randomly by Kubernetes.

Stateful Sets

aida-es service defines a StatefulSet named {{ .Release.Name }}-aida-es

Services

Each sub-chart defines a service named {{ .Release.Name }}-{{ .Chart.Name }} of kind ClusterIP.

Persistent Volume Claims

aida-es service defines a PVC generated by the Deployment that is named {{ .Release.Name }}-aida-es

Persistent Volumes

aida-es service generates a PV linked to the PVC if using Dynamic Provisioning, otherwise an existing PV can be used.

Service Accounts

Each sub-chart defines a ServiceAccount named {{ .Release.Name }}-{{ .Chart.Name }} if serviceAccount.create is true, otherwise an existing global.serviceAccountName will be used.

Ingress or Load Balancer or Route

Depends on the type of network enablement that is configured. See Network enablement.

Secrets

The following secrets are defined and contain some default passwords that can be changed. See Modify the Secret files :

- redis-pwd-secret 

- email-pwd-secret 

Supported Platforms

  • Amazon EKS Amazon Elastic Kubernetes Service (EKS) on amd64: 64-bit Intel/AMD x86
  • Microsoft Azure Azure Kubernetes Service (AKS) on amd64: 64-bit Intel/AMD x86
  • Google GKE Google Kubernetes Engine (GKE) on amd64: 64-bit Intel/AMD x86

Openshift support

You can deploy AIDA on Openshift 4.2 or later version by following the instruction in this documentation and using the helm chart. Ensure to modify the value of this parameter in the aida-nginx section of the values.yaml file:

aida-nginx.exposeServiceType

from LoadBalancer to Routes

Accessing the container images

You can access AIDA subcharts and container images from the Entitled Registry (online installation). See Creating the Secret for more information about accessing the registry. The images are as follows:

  • hclcr.io/wa/aida-ad:10.2.1
  • hclcr.io/wa/aida-exporter:10.2.1
  • hclcr.io/wa/aida-email:10.2.1
  • hclcr.io/wa/aida-nginx:10.2.1
  • hclcr.io/wa/aida-orchestrator:10.2.1
  • hclcr.io/wa/aida-predictor:10.2.1
  • hclcr.io/wa/aida-redis:10.2.1
  • hclcr.io/wa/aida-ui:10.2.1

Prerequisites

AIDA requires:

  • HCL Workload Automation V10.1 or higher exposed metrics. For information about HCL Workload Automation exposed metrics, see Exposing metrics to monitor your workload.
  • API key for accessing the Entitled Registry: hclcr.io
  • External container image for OpenSearch 2.3.0 (an Elasticsearch based technology)
  • Supported browsers are:
    • Google Chrome 67.0.3396.99 or higher
    • Mozilla Firefox 61.0.1 or higher
    • Microsoft Edge 79 or higher

AIDA prerequisites are inherited by HCL Workload Automation.

Resources Required

The following resources correspond to the default values required to manage a production environment. These numbers might vary depending on the environment.

Component Container resource limit Container memory request
aida-ad CPU: 2, Memory: 8Gi CPU: 0.5, Memory: 1Gi, Storage: n/a
aida-es CPU: 4, Memory: 8Gi CPU: 0.5, Memory: 1Gi, Storage: 10Gi
aida-exporter CPU: 2, Memory: 4Gi CPU: 0.5, Memory: 0.5Gi, Storage: n/a
aida-email CPU: 1, Memory: 2Gi CPU: 200m, Memory: 0.5Gi, Storage: n/a
aida-nginx CPU: 1, Memory: 1Gi CPU: 200m, Memory: 200Mi, Storage: n/a
aida-orchestrator CPU: 2, Memory: 4Gi CPU: 0.5, Memory: 0.5Gi, Storage: n/a
aida-predictor CPU: 8, Memory: 16Gi CPU: 1, Memory: 1Gi, Storage: n/a
aida-redis CPU: 1, Memory: 500Mi CPU: 200m, Memory: 200Mi, Storage: n/a
aida-ui CPU: 1, Memory: 2Gi CPU: 0.3, Memory: 0.5Gi, Storage: n/a

Preparing for installation

Before installing AIDA, run the following steps:

  1. To use custom SSL certificates for AIDA, in the <install_path>/nginx/cert folder replace aida.crt e aida.key with your own files (do not change the default names).
  2. Verify that aida-exporter.waHostName parameter in the values.yaml file is set to the host name used to reach the WA server. This parameter is not required if AIDA is deployed in the same helm chart as WA.
  3. Verify that aida-exporter.waPort parameter in the values.yaml file is set to the port used to reach the WA server. Its default value is "3116".
  4. Verify that aida-nginx.waConsoleCertSecretName parameter in the values.yaml file is set to the name of the WA console secret used to store the customized SSL certificates.
  5. If you want to receive alert notification via email, properly set the configuration parameters in the aida-email section of the values.yaml file.
  6. To prevent HTTP Host Header attacks, in the values.yaml file add the string EXTERNAL_HOSTNAME=IP where IP is the IP address of the machine where AIDA is being installed.

Installing

Refer to HCL Workload Automation readme file for the general installation procedure that includes AIDA as an HCL Workload Automation component. During the installation procedure, accept the product license when prompted.

In addition, run the following AIDA specific steps:

  1. Creating the Secret by accessing the entitled registry to store an entitlement key for AIDA offering on your cluster.

  2. Modify the Secret files to change the passwords for aida-redis and aida-email.

  3. Verifying the installation.

Creating the Secret

If you already have a license, then you can proceed to obtain your entitlement key. To learn more about acquiring an HCL Workload Automation license, contact HWAinfo@hcl.com. Obtain your entitlement key and store it on your cluster by creating a Kubernetes Secret. Using a Kubernetes secret allows you to securely store the key on your cluster and access the registry to download the chart and product images.

  1. Access the entitled registry. Contact your HCL sales representative for the login details required to access the HCL Entitled Registry: hclcr.io.

  2. To create a pull secret for your entitlement key that enables access to the entitled registry, run the following command:

    kubectl create secret docker-registry -n <workload_automation_namespace> sa-<workload_automation_namespace> --docker-server=<registry_server> --docker-username=<user_name> --docker-password=<password>

    where,

    • <workload_automation_namespace> represents the namespace where the product components are installed
    • <registry_server> is hclcr.io
    • <user_name> is the user name provided by your HCL representative
    • <password> is the entitled key copied from the entitled registry <api_key>

Modify the Secret files

If needed, modify the Secrets files to store the passwords for aida-redis and aida-email.

  1. Modify the aida-helm/templates/redis-pwd-secret.yaml file that stores aida-redis password. The redis-pwd-secret.yaml file has the following content:

    apiVersion: v1

    kind: Secret

    metadata:

    	name: redis-pwd-secret
    

    type: Opaque

    data:

    	REDIS_PASSWORD: <hidden_password>
    

    where:

    • redis-pwd-secret is the value of the global. redisPwdSecretName parameter defined in the Configuration Parameters section;

    • <hidden_password> can be changed; to enter an encrypted password, run the following command in a UNIX shell and copy the output into the yaml file:

      echo -n 'mypassword' | base64v

      The default password is “foobared”.

  2. Modify the aida-helm/charts/aida-email/templates/email-pwd-secret.yaml file that stores aida-email sender email password. The email-pwd-secret.yaml file has the following content:

    apiVersion: v1

    kind: Secret

    metadata:

    	name: email-pwd-secret 
    

    type: Opaque

    data:

    	EMAIL_PASSWORD: <hidden_password>
    

    where:

    • email-pwd-secret is the value of the global.senderEmailPwdSecretName parameter defined in the Configuration Parameters section;

    • <hidden_password> can be changed; to enter an encrypted password, run the following command in a UNIX shell and copy the output into the yaml file:

      echo -n 'mypassword' | base64v

      The default password is “smtpPassword”.

Verifying the installation

After the deployment procedure is complete, you can validate the deployment to ensure that AIDA is working. To manually verify that AIDA was successfully installed, you can perform the following checks:

  1. Run the following command to verify the AIDA pods (see Details) installed in the <workload_automation_namespace>:

       kubectl get pods -n <workload_automation_namespace>
    
  2. Verify that AIDA UI is accessible using the AIDA widget on the Workload Dashboard of the Dynamic Workload Console.

aida widget

Upgrading the Chart

Refer to HCL Workload Automation readme file.

Rolling Back the Chart

Refer to HCL Workload Automation readme file.

Uninstalling the Chart

Refer to HCL Workload Automation readme file.

Configuration Parameters

The following tables list the configurable parameters of the chart values.yaml, and their default values.

AIDA configuration parameters in the values.yaml file are divided in three categories:

  1. Parameters whose value users must provide (Mandatory=Y)
  2. Parameters with a default value that users can optionally customize ( Customizable =Y)
  3. Parameters with a default value that users should not change ( Customizable =N) because their value is inherited by Workload Automation chart or because their customization is for expert users only.

The tables are organized as follows:

Global parameters

AIDA parameters

  • Global parameters

The following table lists the global configurable parameters of the chart and their default values:

Parameter Description Mandatory Customizable Default
license Use accept to agree to the license agreement Y Y notaccepted
serviceAccountName The name of the serviceAccount to use. The Workload Automation default service account (wauser) is used Y (Inherited by WA chart) N
aidaEngineLogLevel Log level in AIDA. It can be DEBUG, INFO, ERROR, WARNING, CRITICAL N N "INFO"
redisPwdSecretName aida-redis password secret name N N "foobared"
defaultShardCount The default number of OpenSearch shards N N 1
defaultReplicaCount The default number of OpenSearch replicas N N 0
  • AIDA parameters

The following tables list the configurable parameters of the chart relative to each service and their default values:

Parameter Description Mandatory Customizable Default
image.repository aida-ad image repository N N hclcr.io/wa/aida-ad
image.tag aida-ad image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CPU requested to run N N 2
resources.limits.memory The maximum memory requested to run N N 8Gi
resources.requests.cpu The minimum CPU requested to run N N 0.5
resources.requests.memory The minimum memory requested to run N N 1Gi
autoscaling.enabled Set this to false to completely disable autoscaling and true to enable it N N true
autoscaling.minReplicas The minimum number of Pods N N 1
autoscaling.maxReplicas The maximum number of Pods N N 10
autoscaling.targetMemoryUtilizationPercentage The value in percentage of memory utilization that each Pod should have N N 80
toleranceMillis The maximum number of milliseconds between a real data point and a predicted data point in order to consider them close and, therefore, usable by the alert detection algorithm N Y 240000
webConcurrency Number of workers of the web server. The more they are, the more there is parallelism (and the more RAM is consumed). Suggested value: 2 N N 2
minimumSeverityForMail Minimum level of severity above which an alert will be sent by email. Can be high, medium or low Y (if you want to receive alerts by email) Y high
host_ip AIDA host IP address for alert email Y (if you want to receive alerts by email) Y ""
Parameter Description Mandatory Customizable Default
image.repository aida-es image repository N N amazon/opensearchproject/opensearch
image.tag aida-es image tag N N 2.3.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created. If false, an existing one with name global.serviceAccountName will be used N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
persistence.enabled If true, StorageClasses are used to dynamically create persistent volumes for the pods N N true
persistence.useDynamicProvisioning If true, StorageClasses are used to dynamically create persistent volumes for the pods N N true
persistence.dataPVC.storageClassName The name of the Storage Class to be used. Leave empty to not use a storage class N N ""
persistence.dataPVC.selector.label Volume label to bind (only limited to single label) N N ""
persistence.dataPVC.selector.value Volume label value to bind (only limited to single value) N N ""
persistence.dataPVC.size The minimum size of the Persistent Volume N N 10Gi
resources.limits.cpu The maximum CUP requested to run N N 4
resources.limits.memory The maximum memory requested to run N N 8Gi
resources.requests.cpu The minimum CPU requested to run N N 0.51
resources.requests.memory The minimum memory requested to run N N 1Gi
Parameter Description Mandatory Customizable Default
waHostName The host name used to reach the WA server. Not required if WA is deployed in the same helm chart as AIDA. N N ""
waPort The port used to reach the WA server N Y 31116
httpAuthUsername The username of WA basic authentication. N N wauser
httpAuthPasswordSecretName The name of the secret that stores the password of WA basic authentication. N ) N
image.repository aida-exporter image repository N N hclcr.io/wa/aida-exporter
image.tag aida-exporter image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CUP requested to run N N 2
resources.limits.memory The maximum memory requested to run N N 4Gi
resources.requests.cpu The minimum CPU requested to run N N 0.5
resources.requests.memory The minimum memory requested to run N N 0.5Gi
maximumDaysOfOlderPredictions How many days of predictions to keep in the past N Y 14
maximumDaysOfOlderData How many days of metrics data to keep in the past N Y 400
resolveAlertsAfterDays Number of days after which alerts will automatically go in "resolved" status N Y 1
Parameter Description Mandatory Customizable Default
smtpServer The smtp server Y (only if you want to enable alerting by email) Y
smtpPort The port of the smtp server Y (only if you want to enable alerting by email) Y 587
senderEmailId The email account of the alert sender Y (only if you want to enable alerting by email) Y
senderEmailPwd The email password of the alert sender Y (only if you want to enable alerting by email) Y
recipientMailIds The list of recipient emails "mail1@mail.com,mail2@mail.com" Y (only if you want to enable alerting by email) Y
image.repository aida-email image repository N N hclcr.io/wa/aida-email
image.tag aida-exporter image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CUP requested to run N N 1
resources.limits.memory The maximum memory requested to run N N 2Gi
resources.requests.cpu The minimum CPU requested to run N N 200m
resources.requests.memory The minimum memory requested to run N N 0.5Gi
Parameter Description Mandatory Customizable Default
waConsoleCertSecretName The name of the WA console secret to store customized SSL certificates N N
image.repository aida-nginx image repository N N hclcr.io/wa/aida-nginx
image.tag aida-nginx image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
routes.enabled If true, the ingress controller rules are enabled N N true
ingress.hostname The virtual hostname defined in the DNS used to reach the WA Console Y (only if the network enablement implementation is INGRESS) N
ingress.secretName The WA Console ingress secret Y (only if the network enablement implementation is INGRESS) N
exposeServiceType The network enablement configuration implemented. Valid values: LoadBalancer, Ingress or Routes N N LoadBalancer
exposeServiceAnnotation Annotations of either the resource of the service or the resource of the ingress, customized in accordance with the cloud provider. Example: networking.gke.io/load-balancer-type: "Internal" N N {}
resources.limits.cpu The maximum CUP requested to run N N 1
resources.limits.memory The maximum memory requested to run N N 1Gi
resources.requests.cpu The minimum CPU requested to run N N 200m
resources.requests.memory The minimum memory requested to run N N 200Mi
Parameter Description Mandatory Customizable Default
prophetOrchestrator Interval in minutes between two subsequent predictions, and between two subsequent alert detections N Y {"schedule":1440},{"schedule_alert":15}
daysOfPrediction How many days to predict in the future N Y 1
image.repository aida-orchestrator image repository N N hclcr.io/wa/aida-orchestrator
image.tag aida-ad image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CUP requested to run N N 2
resources.limits.memory The maximum memory requested to run N N 4Gi
resources.requests.cpu The minimum CPU requested to run N N 0.5
resources.requests.memory The minimum memory requested to run N N 0.5Gi
Parameter Description Mandatory Customizable Default
image.repository aida-predictor image repository N N hclcr.io/wa/aida-predictor
image.tag aida-ad image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CUP requested to run N N 8
resources.limits.memory The maximum memory requested to run N N 16Gi
resources.requests.cpu The minimum CPU requested to run N N 1
resources.requests.memory The minimum memory requested to run N N 1Gi
autoscaling.enabled Set this to false to completely disable autoscaling and true to enable it N N true
autoscaling.minReplicas The minimum number of Pods N N 1
autoscaling.maxReplicas The maximum number of Pods N N 10
autoscaling.targetMemoryUtilizationPercentage The value in percentage of memory utilization that each Pod should have N N 80
webConcurrency Number of workers of the web server. The more they are, the more there is parallelism (and the more RAM is consumed) N N 2
model The Machine Learning model used for predictions N N neural
Parameter Description Mandatory Customizable Default
image.repository aida-redis image repository N N hclcr.io/wa/aida-redis
image.tag aida-ad image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead. N N ""
resources.limits.cpu The maximum CUP requested to run N N 1
resources.limits.memory The maximum memory requested to run N N 500Mi
resources.requests.cpu The minimum CPU requested to run N N 200m
resources.requests.memory The minimum memory requested to run N N 200Mi
Parameter Description Mandatory Customizable Default
uiLogLevel Log level in AIDA UI N N "ERROR:,INFO:,-TRACE:*"
image.repository aida-ui image repository N N hclcr.io/wa/aida-ui
image.tag aida-ad image tag N N 10.2.0.0
image.pullPolicy image pull policy N N Always
serviceAccount.create If true, a new ServiceAccount will be created, if false will be used an existing one with name global.serviceAccountName N N false
serviceAccount.annotations Annotations to add to the created ServiceAccount N N {}
serviceAccount.name The name of the created ServiceAccount. If not set, the Pod name will be used instead N N ""
resources.limits.cpu The maximum CUP requested to run N N 1
resources.limits.memory The maximum memory requested to run N N 2Gi
resources.requests.cpu The minimum CPU requested to run N N 0.3
resources.requests.memory The minimum memory requested to run N N 0.5Gi
autoscaling.enabled Set this to false to completely disable autoscaling and true to enable it N N true
autoscaling.minReplicas The minimum number of Pods N N 1
autoscaling.maxReplicas The maximum number of Pods N N 10
autoscaling.targetMemoryUtilizationPercentage The value in percentage of memory utilization that each Pod should have N N 80

Configuring

The following procedures are ways in which you can configure AIDA default deployment. They include the following configuration topics:

Network enablement

aida-nginx service can use two different ways to route external traffic into the Kubernetes Service cluster:

  • A load balancer service that redirects traffic

  • An ingress service that manages external access to the services in the cluster

You can freely switch between these two types of configuration.

Load balancer service

To configure a load balancer for aida-nginx service, follow these steps:

  1. Locate the following parameters in the aida-nginx section of the values.yaml file:

aida-nginx.exposeServiceType

aida-nginx.exposeServiceAnnotation

For more information about these configurable parameters, see the aida-nginx parameters table.

  1. Set the value of the exposeServiceType parameter to LoadBalancer. Note: You can also set the value of the exposeServiceType parameter to LoadBalancer_sessionAffinity for Azure AKS and Google GKE. This parameter ensures each user session always remains active on the same pod, providing a smooth and seamless user experience.
  2. In the exposeServiceAnnotation section, uncomment the lines in this section as follows:

Amazon EKS

	service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https
	service.beta.kubernetes.io/aws-load-balancer-type: "clb"
	#service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
	service.beta.kubernetes.io/aws-load-balancer-internal: "true"

Microsoft Azure

	service.beta.kubernetes.io/azure-load-balancer-internal: "true"		

Google GKE

	networking.gke.io/load-balancer-type: "Internal"
  1. Specify the load balancer type and set the load balancer to internal by specifying "true".

Ingress service

To configure an ingress for aida-nginx service, follow these steps:

  1. Locate the following parameters in the aida-nginx section of the values.yaml file:

aida-nginx.exposeServiceType

aida-nginx.exposeServiceAnnotation

For more information about these configurable parameters, see the aida-nginx parameters table.

  1. Set the value of the exposeServiceTypeparameter to Ingress.

  2. In the exposeServiceAnnotation section, leave the following lines as comments:

Amazon EKS

	#service.beta.kubernetes.io/aws-load-balancer-type:nlb
	#service.beta.kubernetes.io/aws-load-balancer-internal: "true"

Microsoft Azure

	#service.beta.kubernetes.io/azure-load-balancer-internal: "true"	

Microsoft Azure

            #networking.gke.io/load-balancer-type: "Internal"

Scaling the product

Scaling is only supported by the following services:

  • aida-ad
  • aida-predictor
  • aida-ui

It is enabled by default, and it is not possible to enable it on the other services.

Proportional scaling

For the services that support scaling, it is enabled by default the Kubernetes autoscaling feature, that automatically scales the Pod count based on CPU or RAM utilization.

In AIDA value.yaml file, under the specific service section, you can change the following values to control autoscaling:

autoscaling.enabled: set this to false to completely disable autoscaling and true to enable it

autoscaling.minReplicas: set the minimum number of Pods

autoscaling.maxReplicas: set the maximum number of Pods

autoscaling.targetMemoryUtilizationPercentage: set the value in percentage of memory utilization that each Pod should have.

autoscaling.targetCPUUtilizationPercentage: set the value in percentage of CPU utilization that each Pod should have.

Kubernetes autoscaling feature will automatically increase the number of Pods if the actual utilization of CPU/RAM is higher than the configured target, and decrease the number of Pods if it is lower.

Storage

AIDA storage requirements

AIDA requires persistent storage for the aida-es component that is an Elasticsearch database. To make all of the configuration and runtime data persistent, the Persistent Volume you specify must be mounted in the following container folder:

/usr/share/elasticsearch/data/

The Pod is based on a StatefulSet. This guarantees that each Persistent Volume is mounted in the same Pod when it is scaled up or down.

For test purposes only, you can configure the chart so that persistence is not used.

AIDA can use either dynamic provisioning or static provisioning using a pre-created persistent volume
to allocate storage. You can pre-create Persistent Volumes to be bound to the StatefulSet using Label or StorageClass. It is highly recommended to use persistence with dynamic provisioning. In this case, you must have defined your own Dynamic Persistence Provider. AIDA supports the following provisioning use cases:

  • Kubernetes dynamic volume provisioning to create both a persistent volume and a persistent volume claim. This type of storage uses the default storageClass defined by the Kubernetes admin or by using a custom storageClass which overrides the default. Set the values as follows:

    • aida-es.persistence.enabled:true (default)

    • aida-es.persistence.useDynamicProvisioning:true (default)

Specify a custom storageClassName or leave the value blank to use the default storageClass.

  • Persistent storage using a predefined PersistentVolume set up prior to the deployment of this chart. Pre-create a persistent volume. If you configure the label=value pair described in the following Note, then the persistent volume claim is automatically generated by the Helm chart and bound to the persistent volume you pre-created. Set the values as follows:

    • aida-es.persistence.enabled:true

    • aida-es.persistence.useDynamicProvisioning:false

Note: By configuring the following two parameters, the persistent volume claim is automatically generated. Ensure that this label=value pair is inserted in the persistent volume you created:

  • aida-es.persistence.dataPVC.selector.label

  • aida-es.persistence.dataPVC.selector.value

Let the Kubernetes binding process select a pre-existing volume based on the accessMode and size. Use selector labels to refine the binding process.

Before you deploy all of the components, you have the opportunity to choose your persistent storage from the available persistent storage options in your cloud environment or you can leave the default storageClass.

If you create a storageClass object or use the default one, ensure that you have a sufficient amount of backing storage for the aida-es component.
For more information about the required amount of storage, see Resources Required.

Custom storage class:
Modify the aida-es.persistence.dataPVC.storageClassName parameter in the value.yaml file by specifying the custom storage class name, when you deploy aida-es component.

Default storage class:
Leave the values for the aida-es.persistence.dataPVC.storageClassName parameter blank in the value.yaml file when you deploy aida-es component.

For more information about the storage parameter values to set, see the aida-es parameters table.

Persistent volume storage access modes

AIDA supports only ReadWriteOnce (RWO) access mode. The volume can be mounted as read-write by a single node.

Documentation

For more information about AIDA, see AIDA User's Guide.