Skip to content

Workload Types

The controlplane supports various workload types, each mapping to a different Nomad job type.

Workload Type Mapping

Component Type Nomad Job Type Description
webservice service Long-running HTTP services
worker service Background workers
task batch One-shot batch jobs
cron-task batch Periodic batch jobs
daemon system Node-level daemons
containerizedworkload.nomad.oam.dev service Docker/OCI containers
executableworkload.nomad.oam.dev batch Raw executables
vmworkload.nomad.oam.dev service QEMU VMs
batchworkload.nomad.oam.dev batch Batch workloads
systemworkload.nomad.oam.dev system System workloads

Workload Properties

Common Properties

All workload types support these properties:

properties:
  image: string              # Container image
  ports: []Port              # Port definitions
  env: []EnvVar              # Environment variables
  resources: ResourceRequirements  # CPU/Memory
  command: string[]          # Override entrypoint
  args: string[]             # Command arguments

Docker-Specific Properties

properties:
  driver: docker              # Task driver
  imagePullSecret: string    # Registry secret
  ports: []Port
  volumes: []VolumeMount
  readinessProbe: Probe
  livenessProbe: Probe

Batch-Specific Properties

properties:
  driver: docker | raw_exec
  schedule: string           # Cron expression (for cron-task)
  restartPolicy:
    attempts: int
    interval: string
    delay: string
    mode: fail | delay

Examples

WebService

- name: api
  type: webservice
  properties:
    image: myapp/api:v1
    ports:
      - name: http
        port: 8080
        expose: true
    resources:
      cpu: 1000m
      memory: 512Mi

Batch Workload

- name: processor
  type: batchworkload.nomad.oam.dev
  properties:
    driver: docker
    image: batch-processor:latest
    args:
      - --queue
      - default
    resources:
      cpu: 2000m
      memory: 1024Mi
    restartPolicy:
      attempts: 3
      interval: 5m
      delay: 30s

Cron Task

- name: daily-report
  type: cron-task
  properties:
    image: report-generator:latest
    schedule: "0 0 * * *"  # Daily at midnight
    args:
      - generate
      - --date
      - yesterday

System Workload

- name: node-collector
  type: systemworkload.nomad.oam.dev
  properties:
    driver: docker
    image: metrics-collector:latest
    resources:
      cpu: 100m
      memory: 64Mi

Multi-Container

- name: api-service
  type: containerizedworkload.nomad.oam.dev
  properties:
    driver: docker
    containers:
      - name: api
        image: myapp/api:1.0
        ports:
          - name: http
            containerPort: 8080
        resources:
          cpu: 1000m
          memory: 512Mi
      - name: sidecar
        image: log-sidecar:latest
    volumes:
      - source: data
        destination: /data
        readOnly: false