Resource Profile

2 min read

A resource profile is a named preset that expands into a complete Kubernetes resources block — requests and limits — at Katalog load time.

You write a name. Orkestra writes the numbers.


Profiles

ProfileCPU RequestCPU LimitMemory RequestMemory LimitUse case
tiny25m100m64Mi128MiSidecars, health endpoints, minimal utilities
small100m500m128Mi512MiStandard microservices (start here)
medium250m1256Mi1GiProduction web services
large500m2512Mi2GiHigh-traffic or heavier workloads
burst200m2256Mi2GiServices with sudden spikes — low request, high limit
steady300m600m256Mi512MiPredictable, stable workloads
compute-heavy12512Mi1GiCPU-bound work — builds, ML inference, data pipelines
memory-heavy250m500m1Gi2GiMemory-bound work — JVMs, large caches, analytics

Usage

Set resources.profile on any Deployment, StatefulSet, ReplicaSet, Pod, Job, or CronJob:

onCreate:
  deployments:
    - name: "{{ .metadata.name }}-api"
      image: "{{ .spec.image }}"
      resources:
        profile: small

Or dynamically from the CR:

resources:
  profile: '{{ .spec.resourceProfile | default "small" }}'

Rules

Profile or explicit — not both.

resources.profile cannot coexist with resources.requests or resources.limits on the same resource. Orkestra rejects the Katalog at load time if both are present.

# Valid
resources:
  profile: burst

# Valid
resources:
  requests:
    cpu: 500m
    memory: 512Mi
  limits:
    cpu: 2
    memory: 2Gi

# Invalid — rejected at load time
resources:
  profile: burst
  requests:
    cpu: 500m

Unknown profiles fail fast. A typo (buurst, Large) is a Katalog load error.

Template expressions are allowed. When the profile is a template expression, the name is resolved at reconcile time and validated then. An unknown name at runtime causes a reconcile failure on that CR only — other CRs are not affected.


Choosing a profile

SituationProfile
Not sure — default for new servicessmall
Small hits production, limits reachedmedium
Heavy but predictable loadlarge
Mostly idle, occasional spikesburst
Steady throughput, tight cost controlsteady
Sidecar, health check, token rotatortiny
Build jobs, ML inference, data pipelinescompute-heavy
JVM, large in-memory cache, analyticsmemory-heavy