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