Skip to main content

Configuring Requests and Limits for the AtScale Containers

In Kubernetes, requests and limits refer to the amounts of CPU and memory resources a container requires (requests), and the amount of each resource it is allowed to use (limits).

If needed, you can define requests and limits for the AtScale containers in your values override file. You can do this manually, by explicitly defining values with the resources property, or by using one of AtScale's named profiles with resourcesPreset.

Configure requests and limits manually

To configure requests and limits manually, include the resources property for the container. For example, the following configures resources for the engine's gateway container:

atscale-engine:
gateway:
replicaCount: 3

resources:
limits:
cpu: 3
memory: 2Gi
requests:
cpu: 1500m
memory: 1Gi

The following sections provide the minimum request and limit values for running AtScale in development and production environments.

Note

These settings are the minimum requirements for running AtScale in development and production environments. Depending on your usage of AtScale, these settings may need to be changed. You can use a tool like Goldilocks to assess how your cluster is performing under the load of your system.

For additional information on Kubernetes requests and limits, refer to the Kubernetes documentation.

Development

ComponentContainerCPU RequestCPU LimitMemory RequestMemory LimitReplicas
Entitlementmain250m1500Mi1Gi1
EnginecertImage100m250m250Mi500Mi1
Enginegateway121Gi2Gi1
Enginemain4816Gi32Gi1
SMLmain121500Mi3Gi1
AtScale Proxymain121Gi2000Mi1
PostgreSQLpgpool121Gi2500Mi1
PostgreSQLpostgresql124Gi8Gi1
PostgreSQLmetrics200m200m500Mi500Mi1
Redismaster248Gi16Gi1
Redisreplica248Gi16Gi1
Keycloakmain248Gi12Gi1
OTELmain121Gi1Gi1

Production

Important

AtScale's built-in PostgreSQL instance should not be used in production. For production environments, you should use a managed solution from your cloud provider, or set up an operator-based PostgreSQL deployment. For more information, see Configuring an External PostgreSQL Instance.

ComponentContainerCPU RequestCPU LimitMemory RequestMemory LimitReplicas
Entitlementmain250m1500Mi1Gi3
EnginecertImage100m250m250Mi500Mi3
Enginegateway1500m31Gi2Gi3
Enginemain81632Gi32Gi3
SMLmain121500Mi3Gi3
AtScale Proxymain121Gi2000Mi3
PostgreSQLpgpool121Gi2500Mi3
PostgreSQLpostgresql248Gi16Gi3
PostgreSQLmetrics200m200m500Mi500Mi3
Redismaster248Gi16Gi1
Redisreplica248Gi16Gi3
Keycloakmain248Gi16Gi3
OTELmain121Gi2Gi3

Configure requests and limits using named profiles

You can use resourcesPreset to size AtScale pods using named profiles instead of manually setting resources.requests and resources.limits in each service section of your values override file. This can be configured both globally and at the chart level.

Supported values

resourcesPreset supports the following values:

  • none: No resources set (Kubernetes default behavior).
  • poc: Minimal resources for a proof-of-concept.
  • dev: Moderate resources for development.
  • prod: Production-grade resources.

Precedence order

For every container, resources are resolved in the following order (first match wins):

  1. Explicit resources block: If resources: is set directly on a service section, it always takes effect and nothing else is checked.
  2. global.resourcesPreset: If set to anything other than none, it applies to all charts across the umbrella deployment.
  3. Chart-level resourcesPreset: The per-chart fallback when no global override is active.

Configure resourcesPreset at the global level

You can set global.resourcesPreset to apply one preset to all components:

global:
resourcesPreset: "poc" # none | poc | dev | prod

This single value propagates to every AtScale subchart.

Override a single chart

You can also set resourcesPreset at the chart level to override the global value. For example, to override the global value for the atscale-engine chart:

global:
resourcesPreset: "poc"
atscale-engine:
resourcesPreset: "dev" # engine gets dev; all other components get poc

Override a single container with explicit values

Explicit resources always take precedent over any preset:

atscale-engine:
# Main engine container
resources:
requests:
cpu: "16"
memory: "64Gi"
limits:
cpu: "32"
memory: "128Gi"

# cert initContainer
certImage:
resources:
requests:
cpu: "200m"
memory: "512Mi"

# engine-init initContainer
defaultInitContainers:
engineInit:
resources:
requests:
cpu: "2"
memory: "4Gi"

Additional information