Title
Page icon
Create new category
Edit page index title
Edit category
Edit link
Resource requirements
By default the charts set no resource requests or limits: pods are scheduled wherever they fit and may consume whatever the node has. That is acceptable for evaluation. For any environment carrying real traffic, set requests and limits explicitly.
Where the load actually is
The components have very different resource profiles.
Component | Profile |
|---|---|
| By far the heaviest. Runs the scan engines: CPU-bound during scanning, memory-hungry per concurrent file, and writes scan temporary files to disk. Size this first. |
| Moderate. Handles file upload and hand-off; throughput scales with concurrent connections and file size. |
| Light. Outbound webhook delivery. |
| Moderate and steady. Orchestration and database traffic, not file processing. |
| Light. Authentication requests only. |
| Moderate CPU, heavy disk. Store and retrieve scanned files. |
| Moderate to heavy depending on retention and throughput. |
The published baseline
Per-component minimums are maintained in System requirements, which is the authoritative source. Those figures describe a conventional install — one component per host — but they translate directly into Kubernetes resource requests, because a request is exactly "the capacity this container needs to have to itself".
Component | CPU | Memory | Storage |
|---|---|---|---|
| 8 | 16Gi | 1Ti SSD/NVMe |
| 2 | 32Gi | 20Gi |
| 4 | 8Gi | 100Gi |
| 8 | 8Gi | 1Ti SSD/NVMe |
| 4 | 4Gi | 100Gi |
| 4 | 4Gi | 50Gi |
| 4 | 8Gi | 50Gi |
| 4 | 8Gi | 50Gi |
| See the MetaDefender Core requirements |
Two things to read carefully there rather than from this page:
ometascanis not sized on that page at all — it defers to the MetaDefender Core requirements, because its needs scale with your licence type and the number of enabled engines.The storage column is not ephemeral storage. For
postgresandfile-storageit is persistent-volume sizing — see Storage configuration. For the others it is host disk on a conventional install, and in Kubernetes maps toephemeral-storage, which is far smaller in practice because logs are the only thing written there.
Note also that the published requirements track the conventional installer and may name different dependency versions than the charts ship. The charts currently deploy postgres:16, redis:8 and rabbitmq:4.2.5-management; check the requirements page for the versions supported by your release, and override postgres.image / redis.image / rabbitmq.image if you need to match them exactly.
Assigning CPU and memory
Requests and limits use the standard Kubernetes resources block. Every component in both charts accepts it.
MetaDefender Core services and bundled infrastructure take the same block:
Disk space: ephemeral storage
Set ephemeral-storage on any MetaDefender Cluster Worker that processes files, sized for the deployed engine plus peak concurrent scan temporary data. Keep the CPU and memory figures consistent with what you chose above — the block below adds only the storage line:
The MetaDefender Core services need a modest allowance too. Every service writes its log file to the container filesystem at /app/log and tails it to stdout. A long-running MetaDefender Cluster Control Center pod can therefore be evicted for log growth alone. Give them a bounded allowance:
Lowering the log level (see the Configuration reference] reduces the growth rate but does not bound it.
Persistent storage — for MetaDefender Cluster File Storage and PostgreSQL — is configured separately. See Storage configuration.
Database requirements
The bundled PostgreSQL holds four databases: md_cluster_control_center, md_cluster_datalake, md_cluster_datawarehouse and md_cluster_identity_service. It starts with max_connections=200.
Connection demand grows with the number of pods, since MetaDefender Cluster Control Center, MetaDefender Cluster Identity Service and each MetaDefender Cluster Worker all hold connections. If you raise replica counts substantially, raise the limit to match:
Storage demand is driven by the datalake and data warehouse, which retain processing history — roughly 4 GB per million objects in a five-instance, eight-engine configuration. Size the volume for your retention policy; the published baseline is 1 TB on SSD or NVMe. See Storage configuration.
For production, run PostgreSQL externally rather than as the bundled single pod. See High availability.