Automation Suite
2023.10
false
Banner background image
Automation Suite on EKS/AKS Installation Guide
Last updated Apr 19, 2024

Storage

In addition to Microsoft SQL Server, the Automation Suite cluster requires a storage component for storing the files. Automation Suite requires the objectstore and the block/file storage, depending on the service type you choose. Storage is also required to back up the Automation Suite cluster.

Storage estimate for each Automation Suite components

UiPath® platform services

The following services require the storage component. These are only necessary if you have opted to enable them as part of the Automation Suite installation or later.

Services

Storage type

Purpose

Estimate

Orchestrator

Objectstore

  • NuGet automation packages for deployed automation

  • Queues and their data

Typically, a package is 5 Mb, and buckets, if any, are less than 1 Mb. A mature enterprise deploys around 10 GB of packages and 12 GB of Queues.

Action Center

Objectstore

  • Documents stored by the user in document tasks

Typically, a document takes 0.15 Mb, and the forms to fill take an additional 0.15 Kb. In a mature enterprise, this can roll up to 4GB in total.

Test Manager

Objectstore

  • Attachments and screenshots stored by users

Typically, all files and attachments add up to approximately 5 GB.

Insights

Blockstore

  • Published dashboards and their metadata

2 GB is required for enablement, with the storage footprint growing with the number. A well-established enterprise-scale deployment requires another few GB for all the dashboards. Approximately 10GB of storage should be sufficient.

Apps

Objectstore

  • Attachments that are uploaded to Apps

Typically, the database takes approximately 5 GB, and a typical complex app consumes about 15 Mb.

AI Center

Objectstore / Filestore

  • ML Packages

  • Datasets for analysis

  • Training Pipelines

A typical and established installation will consume 8 GB for five packages and an additional 1 GB for the datasets.

A pipeline may consume an additional 50 GB of block storage, but only when actively running.

Document Understanding

Objectstore

  • ML model

  • OCR model

  • Stored documents

In a mature deployment, 12GB will go to the ML model, 17GB to the OCR, and 50GB to all documents stored.

Task Mining

Objectstore

  • User activity data is required for analyses and to suggest automation patterns.

About 200 GB of activity log data should be analyzed to suggest meaningful automation. Highly repetitive tasks, however, may require much less data.

Automation Suite Robots

Filestore

  • Caching the packages required to run an automation

Typically, a mature enterprise deploys around 10 GB of the packages.

Process Mining

Objectstore

  • SQL files that are required to run queries in the SQL warehouse

The minimal footprint is only used to store the SQL files. Approximately a GB of storage should be enough in the beginning.

Shared suite services

The following shared suite services require the storage component. These are only necessary if you opted to install them as part of the Automation Suite installation.

Services

Storage type

Purpose

Estimate

Monitoring

Block storage

Kubernetes and infrastructure related metrics data

Approximately around 100 GB to store the last ten days of monitoring data

Logging

Block storage

Application running logs

About 20 GB to keep the previous few days of the logs

Objectstore

Automation Suite on EKS and AKS supports the following objectstores:

Kubernetes

Objectstore

Supported authentication

EKS

Amazon S3

  • AWS Instance Profile

  • Access Key and Secret Key

AKS

Azure Storage (blob)

  • Account Key

Additionally, you may have to enable the following CORS policy at the storage account/bucket level if you face any CORS-related error during the S3 connection while using the Automation Suite cluster.

Make sure to replace {{fqdn}} with the FQDN of the Automation Suite cluster in the following CORS policy.

This is the CORS policy in JSON format:

JSON
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "POST",
            "GET",
            "HEAD",
            "DELETE",
            "PUT"
        ],
        "AllowedOrigins": [
            "https://{{fqdn}}"
        ],
        "ExposeHeaders": [
            "etag",
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
][
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "POST",
            "GET",
            "HEAD",
            "DELETE",
            "PUT"
        ],
        "AllowedOrigins": [
            "https://{{fqdn}}"
        ],
        "ExposeHeaders": [
            "etag",
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

This is the CORS policy in XML format:

XML
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>{{fqdn}}</AllowedOrigin>
   <AllowedMethod>HEAD</AllowedMethod>
   <AllowedMethod>GET</AllowedMethod>
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
  <MaxAgeSeconds>3000</MaxAgeSeconds>
  <ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
  <ExposeHeader>x-amz-request-id</ExposeHeader>
  <ExposeHeader>x-amz-id-2</ExposeHeader>
  <ExposeHeader>etag</ExposeHeader>
 </CORSRule>
</CORSConfiguration><CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>{{fqdn}}</AllowedOrigin>
   <AllowedMethod>HEAD</AllowedMethod>
   <AllowedMethod>GET</AllowedMethod>
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
  <MaxAgeSeconds>3000</MaxAgeSeconds>
  <ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
  <ExposeHeader>x-amz-request-id</ExposeHeader>
  <ExposeHeader>x-amz-id-2</ExposeHeader>
  <ExposeHeader>etag</ExposeHeader>
 </CORSRule>
</CORSConfiguration>

Configuration

To configure the objectstore, see External Objectstore Configuration.

Note:

Since the containers are created within the scope of the Azure Storage Account, it is recommended to have a separate container for each service.

Similarly, in AWS, it is highly recommended to have a dedicated bucket for each service installed on Automation Suite. However, if the bucket is created globally, you may face limitations in providing the dedicated bucket for each service. In this case, you can configure a single bucket and use it for all purposes.

The Automation Suite installer supports creating the containers/buckets if you provide make permissions. Alternatively, you can provision the required containers/buckets before installation and their information to the installer.

Storage requirements

Objectstore

500 GB

The size of the objectstore depends on the size of the deployed and running automation. Therefore, it is difficult to provide an accurate objectstore estimate initially during the installation. However, you should expect anything between 350 GB to 500 GB of objectstore size to be a good start. To understand the usage of the objectstore, see Storage estimates for each Automation Suite component.

Note: As your automation scales, you may need to account for the increase in your objectstore size.

Block storage

Block storage must have CSI drivers configured with the Kubernetes storage classes.

The following table provides details of the block storage, storage class, and provisioner:

Kubernetes

Storage

StorageClass

Provisioner

EKS

EBS Volumes

ebs-sc

ebs.csi.aws.com

AKS

Azure Manage Disk

managed-premium

Premium LRS Disk

disk.csi.azure.com

Configuration

You can follow the official guide from AWS and Azure to create a storage class in your EKS and AKS clusters.

The name of the storage class you created for your cluster must be passed to the storage_class parameter in the input.json file.
Note:
  • Sometimes the EKS or AKS cluster already installs the CSI driver and provides the storage class. If these storage classes are not configured, you must configure them before installation.

  • You must make the storage class for the block storage the default one, as shown in the following example.

Example

The following example shows how to configure the StorageClass and how to provide it to input.json during the installation:
 

AKS

EKS

input.json
{
  "storage_class": "managed_premium"
}{
  "storage_class": "managed_premium"
}
{
  "storage_class": "ebs-sc"
}{
  "storage_class": "ebs-sc"
}
StorageClass
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  creationTimestamp: "2023-06-15T09:34:17Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    kubernetes.io/cluster-service: "true"
    storageclass.kubernetes.io/is-default-class: "true"
  name: managed-premium
parameters:
  cachingmode: ReadOnly
  kind: Managed
  storageaccounttype: Premium_LRS
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumerallowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  creationTimestamp: "2023-06-15T09:34:17Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    kubernetes.io/cluster-service: "true"
    storageclass.kubernetes.io/is-default-class: "true"
  name: managed-premium
parameters:
  cachingmode: ReadOnly
  kind: Managed
  storageaccounttype: Premium_LRS
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
  annotations:
   storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumerallowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
  annotations:
   storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

Storage requirements

Block storage

50 GB

The size of the block store depends on the size of the deployed and running automation. Therefore, it is difficult to provide an accurate estimate initially during the installation. However, you should expect approximately 50 GB of storageto be a good start. To understand the usage of the block store, see Storage estimates for each Automation Suite component.

Note: As your automation scales, you may need to account for the increase in your block storage size.

File storage

File storage must have CSI drivers configured with the Kubernetes storage classes.

Kubernetes

Storage

StorageClass

Provisioner

EKS

EFS

efs-sc

efs.csi.aws.com

AKS

Azure Files

azurefile-csi-premium

file.csi.azure.com

Configuration

You can follow the official guide from AWS and Azure to create a storage class in your EKS and AKS clusters.

You must pass the name of the storage class you created for your cluster to the storage_class_single_replica parameter in the input.json file.
Note:

Sometimes the EKS or AKS cluster already installs the CSI driver and provides the storage class. If this storage class is not configured, you must configure it before installation.

Example

The following example shows how to configure the storage class and how to provide it to input.json during the installation:
 

AKS

EKS

input.json

{
  "storage_class_single_replica": "azurefile-csi-premium"
}{
  "storage_class_single_replica": "azurefile-csi-premium"
}
{
  "storage_class_single_replica": "efs-sc"
}{
  "storage_class_single_replica": "efs-sc"
}

StorageClass

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    kubernetes.io/cluster-service: "true"
  name: azurefile-csi
mountOptions:
- mfsymlinks
- actimeo=30
- nosharesock
- dir_mode=0700
- file_mode=0700
- uid=1000
- gid=1000
- nobrl
- cache=none
parameters:
  skuName: Standard_LRS
provisioner: file.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: ImmediateallowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    kubernetes.io/cluster-service: "true"
  name: azurefile-csi
mountOptions:
- mfsymlinks
- actimeo=30
- nosharesock
- dir_mode=0700
- file_mode=0700
- uid=1000
- gid=1000
- nobrl
- cache=none
parameters:
  skuName: Standard_LRS
provisioner: file.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: efs-sc
parameters:
  basePath: /dynamic_provisioning
  directoryPerms: "700"
  fileSystemId: $(EFS_ID)
  gidRangeEnd: "2000"
  gidRangeStart: "1000"
  provisioningMode: efs-ap
provisioner: efs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: ImmediateapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: efs-sc
parameters:
  basePath: /dynamic_provisioning
  directoryPerms: "700"
  fileSystemId: $(EFS_ID)
  gidRangeEnd: "2000"
  gidRangeStart: "1000"
  provisioningMode: efs-ap
provisioner: efs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
Note:
Replace $(EFS_ID) with the actual File Share ID you created while provisioning infrastructure.
Note:

Storage class for the file share must have the required permissions set to 700 for the directory and files.

Additionally, UID and GID must be set to 1000 in Azure, and gidRangeStart and gidRangeEnd to 1000 and 2000, respectively, in AWS.

Storage requirements

File storage

510 GB

The size of the file store depends on the size of the deployed and running automation. Therefore, it is difficult to provide an actual estimate initially during the installation. However, you should expect approximately 510 GB of storage size to be enough to run ten concurrent training pipelines and forAutomation Suite Robots. To understand the usage of the filestore, please refer to Storage estimates for each Automation Suite component.

Note:

As your automation scales, you may need to account for an increase in the size of your file storage.

Backup and restore

To back up the Automation Suite cluster, you need an additional objectstore to back up the cluster configuration and user data.

The following table describes the supported storage for the backup:

Kubernetes

Objectstore

EKS

AWS S3

AKS

Azure Storage Account

Note:

A separate objectstore is recommended for storing the backup.

Was this page helpful?

Get The Help You Need
Learning RPA - Automation Courses
UiPath Community Forum
Uipath Logo White
Trust and Security
© 2005-2024 UiPath. All rights reserved.