Deployment Size¶
Deployment size sets the starting CPU, memory and replica count for every service on a runtime plane. You choose it once, when the plane is created, and it seeds the values each service starts with. Individual services can be tuned afterwards; the size itself cannot be changed.
There are three sizes: Small, Medium and Large.
The size is chosen once
Deployment size is recorded when the plane is created and cannot be changed afterwards. To move a running plane to different resources, edit the services you want to change under Kubernetes Configs — see Changing values after creation. Planes created before this feature shipped show their size as Not recorded, and a size cannot be assigned to them retrospectively.
The three sizes¶
| Size | Resources per service | Replicas |
|---|---|---|
| Small | Each service at its default CPU and memory | One of every service |
| Medium | Roughly twice Small, though the exact factor varies by service | 3 for ZooKeeper, Solr, Nebula Metad and Nebula Storaged; 2 for Auditserver and Fluentd |
| Large | Roughly four times Small, again varying by service | Same as Medium |
Medium and Large carry the same replica counts. The two sizes differ in how much CPU and memory each pod gets, not in how many pods run. Choosing Large gives each service more capacity; it does not add more copies of it.
Solr redundancy moves with the pod count. At Medium and Large, Solr runs three pods and each collection keeps two copies of every shard (replicationFactor: 2), so losing a pod does not lose an index. At Small there is one Solr pod and one copy — a second copy has nowhere to go. Two copies also means each collection occupies roughly twice the index space it would at Small, spread across the pods' volumes, which is worth allowing for when sizing Solr storage.
Why the factor varies by service
"Roughly twice" and "roughly four times" are medians, not a rule, and the spread around them is wide. Measured on main-container memory requests across every sized service, Medium ranges from 1x (unchanged) to 8x with a median of 2x, and Large from 1x to 32x with a median of 4x.
Two separate things drive that spread:
- Some services take their tiers from field-tested production values rather than from a flat multiplier, so they grow much faster than the headline (
auditserver,solr,ranger) or not at all (grafana,postgres_db). - At Medium and Large, a service's memory request is raised to equal its limit, which makes the pod guaranteed QoS. Where Small requested well below its limit, that convergence appears as a large increase in the request even though the limit itself grew much less. Compare the request and limit rows for a service to see which of the two is happening.
Read the per-service reference for any single service. The headline figures are a fleet-level orientation only, and should not be used to size a specific workload.
How to set it¶
In the create wizard¶
Choose a size from the Deployment size dropdown on the first step of runtime plane creation. The control summarizes what the selected size changes as you switch between them.
Small is pre-selected. If you skip the field, the plane is created as Small.
Through the API¶
Set deploymentSize in the plane's runtimeConfigs when you create it:
Accepted values are SMALL, MEDIUM and LARGE, case-insensitive. Any other value is rejected at creation rather than deploying something unintended. Deployment size applies to Self-Managed and Partially Managed (D2P) planes. It is not accepted on PrivaceraCloud planes, where Privacera manages the sizing for you.
What size does and does not change¶
It sets CPU requests and limits, memory requests and limits, and replica counts, for the services listed in the reference below. Values are applied when each service's configuration row is created, so services added to a plane later also pick up the plane's size.
It does not change:
- Storage. Volume sizes are identical at every size. Note that volumes are provisioned per replica, so a size that raises a replica count does raise total provisioned storage even though no individual volume grew.
- Observability sidecars. The
otelClientanddiagClientcontainers keep the same resources at every size. - Ranger's replica count. Ranger runs a single replica at every size. Its database schema import is not safe to run concurrently, so the first start must have a single writer. Ranger can be scaled up safely once the plane is running and its schema exists.
Changing values after creation¶
Every value in the reference below is editable per service after the plane exists, under that service's Kubernetes Configs tab. Editing one service does not affect the others, and does not change the plane's recorded size.
Two constraints are worth knowing before you plan a change:
- Volume sizes cannot be reduced, and on a StatefulSet they generally cannot be changed at all once the workload exists. Size volumes before the first deploy on a plane you expect to carry heavy volume.
- Memory requests equal memory limits at Medium and Large, which makes those pods guaranteed QoS. A guaranteed pod needs a node with that much memory actually free, so a Medium or Large plane may need larger nodes — or a cluster autoscaler — where a Small plane schedules immediately.
Per-service reference¶
Values as shipped, generated from the service templates. Select a size to see every service at that size; the Small table is the baseline the other two are built from.
A dash means deployment size does not pin that property for the service, so it deploys at its chart default. Property names match the keys on each service's Kubernetes Configs tab.
| Service | Replicas | CPU request | CPU limit | Memory request | Memory limit |
|---|---|---|---|---|---|
ai_assets_collector | — | 100m | 500m | 1Gi | 1Gi |
auditserver | 1 | 500m | 1000m | 1Gi | 1Gi |
bigquery | — | 500m | 2000m | 2Gi | 4Gi |
databricks_sql_analytics | — | 500m | 2000m | 2Gi | 2Gi |
databricks_unity_catalog | — | 500m | 2000m | 2Gi | 2Gi |
dataserver | — | 100m | 2000m | 2Gi | 2Gi |
diagnostics_server | — | 200m | 400m | 512Mi | 512Mi |
discovery_classifier | — | 500m | 2000m | 1Gi | 4Gi |
fluentd | 1 | 100m | 1000m | 512Mi | 1Gi |
grafana | — | 200m | 1 | 2Gi | 2Gi |
lakeformation | — | 500m | 2000m | 2Gi | 4Gi |
mariadb | — | 100m | 1000m | 2Gi | 2Gi |
mssql | — | 500m | 2000m | 2Gi | 2Gi |
nebula_cluster_manager | — | 50m | 500m | 128Mi | 512Mi |
nebula_console | 0 | 10m | 100m | 32Mi | 128Mi |
nebula_exporter | — | 50m | 200m | 128Mi | 256Mi |
nebula_graphd | 1 | 200m | 2000m | 1Gi | 2Gi |
nebula_metad | 1 | 100m | 1000m | 512Mi | 1Gi |
nebula_storaged | 1 | 200m | 2000m | 1Gi | 2Gi |
nebula_studio | 0 | 200m | 1000m | 256Mi | 1Gi |
omni_connector | — | 100m | 2000m | 1Gi | 2Gi |
omni_metadata | — | 100m | 1000m | 1Gi | 2Gi |
omni_metadata_schema_job | — | 100m | 1000m | 512Mi | 1Gi |
opensearch | 1 | 200m | 2000m | 2Gi | 2Gi |
opensearch_templates_manager | — | 100m | 500m | 256Mi | 512Mi |
otel_collector | — | 200m | 1000m | 2Gi | 2Gi |
portal | 1 | 500m | 2000m | 2Gi | 4Gi |
postgres | — | 500m | 2000m | 2Gi | 2Gi |
postgres_db | — | 100m | 1000m | 2Gi | 2Gi |
prometheus | — | — | — | — | — |
ranger | 1 | 500m | 2000m | 1536Mi | 3Gi |
redshift | — | 500m | 2000m | 2Gi | 2Gi |
runtime_agent | — | 200m | 2000m | 2Gi | 2Gi |
runtime_manager | — | 100m | 1000m | 2Gi | 2Gi |
snowflake | — | 500m | 2000m | 2Gi | 2Gi |
solr | 1 | 100m | 1000m | 2Gi | 2Gi |
solr_collection_manager | — | 50m | 500m | 128Mi | 512Mi |
usersync | — | 500m | 2000m | 2Gi | 2Gi |
zookeeper | 1 | 100m | 500m | 2Gi | 2Gi |
| Service | Replicas | CPU request | CPU limit | Memory request | Memory limit |
|---|---|---|---|---|---|
ai_assets_collector | — | 200m | 1000m | 2Gi | 2Gi |
auditserver | 2 | 2000m | 4000m | 8Gi | 8Gi |
bigquery | — | 1000m | 4000m | 8Gi | 8Gi |
databricks_sql_analytics | — | 1000m | 4000m | 4Gi | 4Gi |
databricks_unity_catalog | — | 1000m | 4000m | 4Gi | 4Gi |
dataserver | — | 200m | 4000m | 4Gi | 4Gi |
diagnostics_server | — | 500m | 1000m | 1Gi | 1Gi |
discovery_classifier | — | 1000m | 4000m | 8Gi | 8Gi |
fluentd | 2 | 200m | 1000m | 1Gi | 1Gi |
grafana | — | 200m | 1 | 2Gi | 2Gi |
lakeformation | — | 1000m | 4000m | 8Gi | 8Gi |
mariadb | — | 1000m | 2000m | 2Gi | 2Gi |
mssql | — | 1000m | 4000m | 4Gi | 4Gi |
nebula_cluster_manager | — | 100m | 1000m | 1Gi | 1Gi |
nebula_console | 0 | 20m | 200m | 256Mi | 256Mi |
nebula_exporter | — | 100m | 400m | 512Mi | 512Mi |
nebula_graphd | 1 | 400m | 4000m | 4Gi | 4Gi |
nebula_metad | 3 | 200m | 2000m | 2Gi | 2Gi |
nebula_storaged | 3 | 400m | 4000m | 4Gi | 4Gi |
nebula_studio | 0 | 400m | 2000m | 2Gi | 2Gi |
omni_connector | — | 200m | 4000m | 4Gi | 4Gi |
omni_metadata | — | 200m | 2000m | 4Gi | 4Gi |
omni_metadata_schema_job | — | 200m | 2000m | 2Gi | 2Gi |
opensearch | 1 | 400m | 4000m | 4Gi | 4Gi |
opensearch_templates_manager | — | 200m | 1000m | 1Gi | 1Gi |
otel_collector | — | 400m | 2000m | 4Gi | 4Gi |
portal | 1 | 1000m | 4000m | 8Gi | 8Gi |
postgres | — | 1000m | 4000m | 4Gi | 4Gi |
postgres_db | — | 100m | 1000m | 2Gi | 2Gi |
prometheus | — | — | — | — | — |
ranger | 1 | 4000m | 8000m | 11008Mi | 11008Mi |
redshift | — | 1000m | 4000m | 4Gi | 4Gi |
runtime_agent | — | 400m | 4000m | 4Gi | 4Gi |
runtime_manager | — | 200m | 2000m | 4Gi | 4Gi |
snowflake | — | 1000m | 4000m | 4Gi | 4Gi |
solr | 3 | 4000m | 8000m | 9984Mi | 9984Mi |
solr_collection_manager | — | 100m | 1000m | 1Gi | 1Gi |
usersync | — | 1000m | 4000m | 4Gi | 4Gi |
zookeeper | 3 | 1000m | 2000m | 2560Mi | 2560Mi |
| Service | Replicas | CPU request | CPU limit | Memory request | Memory limit |
|---|---|---|---|---|---|
ai_assets_collector | — | 400m | 2000m | 4Gi | 4Gi |
auditserver | 2 | 8000m | 16000m | 32Gi | 32Gi |
bigquery | — | 2000m | 8000m | 16Gi | 16Gi |
databricks_sql_analytics | — | 2000m | 8000m | 8Gi | 8Gi |
databricks_unity_catalog | — | 2000m | 8000m | 8Gi | 8Gi |
dataserver | — | 400m | 8000m | 8Gi | 8Gi |
diagnostics_server | — | 1000m | 2000m | 2Gi | 2Gi |
discovery_classifier | — | 2000m | 8000m | 16Gi | 16Gi |
fluentd | 2 | 500m | 1000m | 2Gi | 2Gi |
grafana | — | 200m | 1 | 2Gi | 2Gi |
lakeformation | — | 2000m | 8000m | 16Gi | 16Gi |
mariadb | — | 2000m | 4000m | 4Gi | 4Gi |
mssql | — | 2000m | 8000m | 8Gi | 8Gi |
nebula_cluster_manager | — | 200m | 2000m | 2Gi | 2Gi |
nebula_console | 0 | 40m | 400m | 512Mi | 512Mi |
nebula_exporter | — | 200m | 800m | 1Gi | 1Gi |
nebula_graphd | 1 | 800m | 8000m | 8Gi | 8Gi |
nebula_metad | 3 | 400m | 4000m | 4Gi | 4Gi |
nebula_storaged | 3 | 800m | 8000m | 8Gi | 8Gi |
nebula_studio | 0 | 800m | 4000m | 4Gi | 4Gi |
omni_connector | — | 400m | 8000m | 8Gi | 8Gi |
omni_metadata | — | 400m | 4000m | 8Gi | 8Gi |
omni_metadata_schema_job | — | 400m | 4000m | 4Gi | 4Gi |
opensearch | 1 | 800m | 8000m | 8Gi | 8Gi |
opensearch_templates_manager | — | 400m | 2000m | 2Gi | 2Gi |
otel_collector | — | 800m | 4000m | 8Gi | 8Gi |
portal | 1 | 2000m | 8000m | 16Gi | 16Gi |
postgres | — | 2000m | 8000m | 8Gi | 8Gi |
postgres_db | — | 100m | 1000m | 2Gi | 2Gi |
prometheus | — | — | — | — | — |
ranger | 1 | 8000m | 16000m | 22016Mi | 22016Mi |
redshift | — | 2000m | 8000m | 8Gi | 8Gi |
runtime_agent | — | 800m | 8000m | 8Gi | 8Gi |
runtime_manager | — | 400m | 4000m | 8Gi | 8Gi |
snowflake | — | 2000m | 8000m | 8Gi | 8Gi |
solr | 3 | 8000m | 16000m | 39680Mi | 39680Mi |
solr_collection_manager | — | 200m | 2000m | 2Gi | 2Gi |
usersync | — | 2000m | 8000m | 8Gi | 8Gi |
zookeeper | 3 | 2000m | 4000m | 5Gi | 5Gi |
Three services keep the same resources at every size
grafana, postgres_db and prometheus are unchanged across Small, Medium and Large. Their tiers were set from measured use rather than a multiplier, and nothing about a larger plane makes them need more. If you are comparing the tables and think you have misread a row for one of these, you have not.
Sidecar containers¶
Most services run one or two sidecars alongside the main container. Their resources are identical on every service that has them, and identical at all three sizes — deployment size does not touch them. They are listed once here rather than repeated under each service.
otelClient — the OpenTelemetry sidecar (26 services)
| Property | Small, Medium and Large |
|---|---|
otelClient.resources.limits.cpu | 400m |
otelClient.resources.limits.memory | 512Mi |
otelClient.resources.requests.cpu | 200m |
otelClient.resources.requests.memory | 256Mi |
Runs on: ai_assets_collector, auditserver, bigquery, databricks_sql_analytics, databricks_unity_catalog, diagnostics_server, discovery_classifier, lakeformation, mssql, nebula_console, nebula_exporter, nebula_graphd, nebula_metad, nebula_storaged, nebula_studio, omni_connector, opensearch, portal, postgres, ranger, redshift, runtime_agent, runtime_manager, snowflake, solr, usersync.
diagClient — the diagnostics sidecar (10 services)
| Property | Small, Medium and Large |
|---|---|
diagClient.resources.limits.cpu | 400m |
diagClient.resources.limits.memory | 1024Mi |
diagClient.resources.requests.cpu | 200m |
diagClient.resources.requests.memory | 1024Mi |
Runs on: bigquery, databricks_sql_analytics, databricks_unity_catalog, lakeformation, mssql, postgres, redshift, runtime_agent, snowflake, usersync.
Other properties¶
Settings that belong to a single service — 27 rows across 2 services. Bold marks a value that differs from Small.
prometheus — 4 properties
| Property | Small | Medium | Large |
|---|---|---|---|
server.resources.limits.cpu | 2 | 2 | 2 |
server.resources.limits.memory | 4Gi | 4Gi | 4Gi |
server.resources.requests.cpu | 500m | 500m | 500m |
server.resources.requests.memory | 2Gi | 2Gi | 2Gi |
solr_collection_manager — 23 properties
| Property | Small | Medium | Large |
|---|---|---|---|
collections.admin_audits.replicationFactor | 1 | 2 | 2 |
collections.policysync_audit.replicationFactor | 1 | 2 | 2 |
collections.policysync_resource.replicationFactor | 1 | 2 | 2 |
collections.privacera_alerts.replicationFactor | 1 | 2 | 2 |
collections.privacera_audits.replicationFactor | 1 | 2 | 2 |
collections.privacera_aws_audits.replicationFactor | 1 | 2 | 2 |
collections.privacera_classification.replicationFactor | 1 | 2 | 2 |
collections.privacera_classification_audit_logs.replicationFactor | 1 | 2 | 2 |
collections.privacera_classification_audits.replicationFactor | 1 | 2 | 2 |
collections.privacera_discovery_telemetry.replicationFactor | 1 | 2 | 2 |
collections.privacera_emr_info.replicationFactor | 1 | 2 | 2 |
collections.privacera_lineage.replicationFactor | 1 | 2 | 2 |
collections.privacera_logs.replicationFactor | 1 | 2 | 2 |
collections.privacera_metrics.replicationFactor | 1 | 2 | 2 |
collections.privacera_offline_scan_cleanup.replicationFactor | 1 | 2 | 2 |
collections.privacera_offline_scan_summary.replicationFactor | 1 | 2 | 2 |
collections.privacera_peg_telemetry.replicationFactor | 1 | 2 | 2 |
collections.privacera_resource.replicationFactor | 1 | 2 | 2 |
collections.privacera_resource_meta_info.replicationFactor | 1 | 2 | 2 |
collections.privacera_spark_events.replicationFactor | 1 | 2 | 2 |
collections.privacera_telemetry.replicationFactor | 1 | 2 | 2 |
collections.ranger_audits.replicationFactor | 1 | 2 | 2 |
env.variables.SOLR_EXPECTED_NODES | 1 | 3 | 3 |