Skip to main content

Resource Configuration

It's important that the Appcircle services have enough resources to actually run in a Kubernetes or OpenShift cluster. Although the Appcircle server might work fine without setting any resource "requests" and "limits" using the default values, as a best practice, it's recommended to configure them for production workload and fine-tune the resources to fit your cluster resources when you need them.

Setting the resources.requests and resources.limits for each Appcircle service will allow Kubernetes or OpenShift to better dispatch the pods across the nodes.

Following the guide here, you will learn how to configure "requests" and "limits" for the Appcircle server to guarantee minimum resources for the services in the production environment while preventing overconsumption with maximum thresholds.

tip

If you are not familiar with the resource configuration concepts, you can get a quick overview from here.

info

This document contains the Appcircle services, which are included in the "Appcircle Server" box in the Kubernetes/OpenShift Architecture Using Helm Chart diagram, and it is based on a production setup.

Therefore, it does not include resource requirements for the external services since they are documented in their own sections in detail considering the production requirements.

When you install the Appcircle Helm chart with the default configuration and deploy all the required services to the cluster for testing or trial purposes, there will be some other services that are not within the scope of this document. These are recommended to be outside of the "Appcircle Server" box.

  • auth-postgresql
  • minio
  • mongodb

One exception for that is the HashiCorp Vault service. Since it has a recommended production option as External Data Store, you have an option to deploy the vault service to the cluster within the "Appcircle Server" box. You can find its resource requirements for this kind of setup in the following sections. You should ignore it if you are using the vault as an External Vault Service.

Resource Requests and Limits

The "requests" and "limits" define how much CPU and memory an Appcircle service is guaranteed and allowed to use.

  • The "requests" ensures that the service always gets the minimum resources it needs.
  • The "limits" covers the maximum usage to prevent overconsumption.

Below is the table of Appcircle services with their recommended "requests" and "limits" for production environments.

Setting these, as guided below, improves the stability of production workloads while avoiding resource contention and keeping resource costs optimized, especially for shared clusters.

Requests CPURequests MemoryLimits CPULimits Memory
agentcache20m512Mi100m1000Mi
agentcache-redis10m25Mi50m100Mi
apigateway400m800Mi1500m1200Mi
apigateway-redis10m25Mi50m100Mi
appparser50m650Mi200m1500Mi
auth-keycloak250m1280Mi600m2000Mi
build 100m850Mi300m1500Mi
build-redis10m25Mi50m100Mi
distribution-server100m720Mi250m1200Mi
distribution-server-redis10m25Mi50m100Mi
distribution-testeradmin50m410Mi200m600Mi
distribution-testerapi50m750Mi200m1300Mi
distribution-testerapi-redis10m25Mi50m100Mi
distribution-testerweb50m300Mi200m400Mi
distribution-testerweb-redis10m25Mi50m100Mi
kafka300m2000Mi1500m3000Mi
license50m260Mi200m320Mi
license-redis10m25Mi50m100Mi
notification50m300Mi200m450Mi
otp50m75Mi200m120Mi
otp-redis10m25Mi50m100Mi
publish50m380Mi200m720Mi
publish-redis10m25Mi50m100Mi
reporting50m320Mi200m400Mi
resign50m150Mi200m220Mi
resource50m1000Mi200m1500Mi
resource-redis10m25Mi50m100Mi
schedulemanager50m270Mi200m350Mi
schedulemanager-redis10m25Mi50m100Mi
signingidentity50m460Mi200m600Mi
signingidentity-redis10m25Mi50m100Mi
store-admin50m240Mi200m350Mi
store-api50m330Mi200m420Mi
store-api-redis10m25Mi50m100Mi
store-profile50m380Mi200m450Mi
store-report50m300Mi200m400Mi
store-web50m340Mi200m450Mi
store-web-redis10m25Mi50m100Mi
storesubmit50m265Mi200m350Mi
storesubmit-redis10m25Mi50m100Mi
taskserver50m135Mi200m200Mi
taskserver-redis10m25Mi50m100Mi
vault40m200Mi200m650Mi
web-app8m80Mi60m150Mi
web-event50m110Mi200m300Mi
web-redis10m25Mi 50m100Mi
webeventredis-master100m1000Mi500m2000Mi
webeventredis-replica100m1000Mi500m2000Mi
webhook50m210Mi200m350Mi
tip

Using the table above, you can also find out the total resource requirements of the Appcircle server for the production environment.

Keep in mind that the "requests" and "limits" here are for one replica. When you have more than one replica, you need to multiply them by the replica count to see the whole picture.

For the recommended replica counts, please refer to the details in the Increase the Replica Counts section.

In the following section you can find the Helm chart details for the recommended configuration. You should update your values.yaml file using the relevant sections below.

Click to view the Helm chart values for the requests and limits.
caution

Some keys might already exist in your values.yaml file that come from other configurations.

Make sure to update existing ones instead of adding new ones for them to avoid duplicate keys.

agentcache:
resources:
requests:
cpu: 20m
memory: 512Mi
limits:
cpu: 100m
memory: 1000Mi
agentcache-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

apigateway:
resources:
requests:
cpu: 400m
memory: 800Mi
limits:
cpu: 1500m
memory: 1200Mi
apigateway-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

appparser:
resources:
requests:
cpu: 50m
memory: 650Mi
limits:
cpu: 200m
memory: 1500Mi

auth:
auth-keycloak:
resources:
requests:
cpu: 250m
memory: 1280Mi
limits:
cpu: 600m
memory: 2000Mi

build:
resources:
requests:
cpu: 100m
memory: 850Mi
limits:
cpu: 300m
memory: 1500Mi
build-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

distribution:
distribution-server:
resources:
requests:
cpu: 100m
memory: 720Mi
limits:
cpu: 250m
memory: 1200Mi
distribution-server-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi
distribution-testeradmin:
resources:
requests:
cpu: 50m
memory: 410Mi
limits:
cpu: 200m
memory: 600Mi
distribution-testerapi:
resources:
requests:
cpu: 50m
memory: 750Mi
limits:
cpu: 200m
memory: 1300Mi
distribution-testerapi-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi
distribution-testerweb:
resources:
requests:
cpu: 50m
memory: 300Mi
limits:
cpu: 200m
memory: 400Mi
distribution-testerweb-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

kafka:
controller:
resources:
requests:
cpu: 300m
memory: 2000Mi
limits:
cpu: 1500m
memory: 3000Mi

license:
resources:
requests:
cpu: 50m
memory: 260Mi
limits:
cpu: 200m
memory: 320Mi
license-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

notification:
resources:
requests:
cpu: 50m
memory: 300Mi
limits:
cpu: 200m
memory: 450Mi

otp:
resources:
requests:
cpu: 50m
memory: 75Mi
limits:
cpu: 200m
memory: 120Mi
otp-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

publish:
resources:
requests:
cpu: 50m
memory: 380Mi
limits:
cpu: 200m
memory: 720Mi
publish-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

reporting:
resources:
requests:
cpu: 50m
memory: 320Mi
limits:
cpu: 200m
memory: 400Mi

resign:
resources:
requests:
cpu: 50m
memory: 150Mi
limits:
cpu: 200m
memory: 220Mi

resource:
resources:
requests:
cpu: 50m
memory: 1000Mi
limits:
cpu: 200m
memory: 1500Mi
resource-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

schedulemanager:
resources:
requests:
cpu: 50m
memory: 270Mi
limits:
cpu: 200m
memory: 350Mi
schedulemanager-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

signingidentity:
resources:
requests:
cpu: 50m
memory: 460Mi
limits:
cpu: 200m
memory: 600Mi
signingidentity-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

store:
store-web:
resources:
requests:
cpu: 50m
memory: 340Mi
limits:
cpu: 200m
memory: 450Mi
store-web-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi
store-admin:
resources:
requests:
cpu: 50m
memory: 240Mi
limits:
cpu: 200m
memory: 350Mi
store-api:
resources:
requests:
cpu: 50m
memory: 330Mi
limits:
cpu: 200m
memory: 420Mi
store-api-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi
store-profile:
resources:
requests:
cpu: 50m
memory: 380Mi
limits:
cpu: 200m
memory: 450Mi
store-report:
resources:
requests:
cpu: 50m
memory: 300Mi
limits:
cpu: 200m
memory: 400Mi

storesubmit:
resources:
requests:
cpu: 50m
memory: 265Mi
limits:
cpu: 200m
memory: 350Mi
storesubmit-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

taskserver:
resources:
requests:
cpu: 50m
memory: 135Mi
limits:
cpu: 200m
memory: 200Mi
taskserver-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

vault:
server:
resources:
requests:
cpu: 40m
memory: 200Mi
limits:
cpu: 200m
memory: 650Mi

web:
web-app:
resources:
requests:
cpu: 8m
memory: 80Mi
limits:
cpu: 60m
memory: 150Mi
web-event:
resources:
requests:
cpu: 50m
memory: 110Mi
limits:
cpu: 200m
memory: 300Mi
web-redis:
master:
resources:
requests:
cpu: 10m
memory: 25Mi
limits:
cpu: 50m
memory: 100Mi

webeventredis:
master:
resources:
requests:
cpu: 100m
memory: 1000Mi
limits:
cpu: 500m
memory: 2000Mi
replica:
resources:
requests:
cpu: 100m
memory: 1000Mi
limits:
cpu: 500m
memory: 2000Mi

webhook:
resources:
requests:
cpu: 50m
memory: 210Mi
limits:
cpu: 200m
memory: 350Mi

Applying Configuration Changes

To apply configuration changes to the Appcircle server installation, update the Helm release with the new configuration using the following command:

info

The arguments used for the helm upgrade parameters in the sample command below are based on the installation document, and it is compatible with a default installation.

  • Release: appcircle-server
  • Chart: appcircle/appcircle
  • Namespace: appcircle

If you have customized these values while installing the Appcircle server, change the values to your customized ones.

helm upgrade appcircle-server appcircle/appcircle \
-n appcircle \
-f values.yaml

Need help?

Get help from Appcircle's support team, or see how others are using Appcircle by joining our Slack Channel.

Preview of Slack