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
Recommended settings
The following sections provide the minimum request and limit values for running AtScale in development and production environments.
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
| Component | Container | CPU Request | CPU Limit | Memory Request | Memory Limit | Replicas |
|---|---|---|---|---|---|---|
| Entitlement | main | 250m | 1 | 500Mi | 1Gi | 1 |
| Engine | certImage | 100m | 250m | 250Mi | 500Mi | 1 |
| Engine | gateway | 1 | 2 | 1Gi | 2Gi | 1 |
| Engine | main | 4 | 8 | 16Gi | 32Gi | 1 |
| SML | main | 1 | 2 | 1500Mi | 3Gi | 1 |
| AtScale Proxy | main | 1 | 2 | 1Gi | 2000Mi | 1 |
| PostgreSQL | pgpool | 1 | 2 | 1Gi | 2500Mi | 1 |
| PostgreSQL | postgresql | 1 | 2 | 4Gi | 8Gi | 1 |
| PostgreSQL | metrics | 200m | 200m | 500Mi | 500Mi | 1 |
| Redis | master | 2 | 4 | 8Gi | 16Gi | 1 |
| Redis | replica | 2 | 4 | 8Gi | 16Gi | 1 |
| Keycloak | main | 2 | 4 | 8Gi | 12Gi | 1 |
| OTEL | main | 1 | 2 | 1Gi | 1Gi | 1 |
Production
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.
| Component | Container | CPU Request | CPU Limit | Memory Request | Memory Limit | Replicas |
|---|---|---|---|---|---|---|
| Entitlement | main | 250m | 1 | 500Mi | 1Gi | 3 |
| Engine | certImage | 100m | 250m | 250Mi | 500Mi | 3 |
| Engine | gateway | 1500m | 3 | 1Gi | 2Gi | 3 |
| Engine | main | 8 | 16 | 32Gi | 32Gi | 3 |
| SML | main | 1 | 2 | 1500Mi | 3Gi | 3 |
| AtScale Proxy | main | 1 | 2 | 1Gi | 2000Mi | 3 |
| PostgreSQL | pgpool | 1 | 2 | 1Gi | 2500Mi | 3 |
| PostgreSQL | postgresql | 2 | 4 | 8Gi | 16Gi | 3 |
| PostgreSQL | metrics | 200m | 200m | 500Mi | 500Mi | 3 |
| Redis | master | 2 | 4 | 8Gi | 16Gi | 1 |
| Redis | replica | 2 | 4 | 8Gi | 16Gi | 3 |
| Keycloak | main | 2 | 4 | 8Gi | 16Gi | 3 |
| OTEL | main | 1 | 2 | 1Gi | 2Gi | 3 |
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):
- Explicit
resourcesblock: Ifresources:is set directly on a service section, it always takes effect and nothing else is checked. global.resourcesPreset: If set to anything other thannone, it applies to all charts across the umbrella deployment.- 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"