Runners
Runners are containerized services within HEAT that execute node processing for one or more Node Templates. They provide the underlying runtime logic required to handle your data workflows - whether they’re simple transformations or specialized machine-learning tasks.
You can specify your own runners with your own dependencies and code to run securely inside the HEAT infrastructure, leveraging our HEAT Runtime to support claiming tasks, accessing data sources and otherwise interfacing with HEAT.
How Runners Work
-
Task Invocation
When a node in a Session becomes ready to process data (i.e., its dependencies are satisfied), the HEAT scheduler looks up the Runner associated with that node’s Node Template. -
Container Provisioning
If the Runner isn’t already active - or if more capacity is needed - HEAT spins up a container within Kubernetes based on the container image configured for that Runner. -
Unit of Work
The Runner uses the runtime to retrieve a suitable a task describing the data inputs, node configuration, and any additional parameters. It should then perform the required work (e.g., data enrichment, analytics, or format conversion) and use the runtime to post the result back to the HEAT platform. -
Resource Management
Different Runners can have unique CPU and memory limits, allowing HEAT to scale up or down according to demand. Once the processing is finished and no more compatible tasks remain for a period, the Runner may gracefully shut down to free resources.
Defining Runners
You can create and configure Runners using the HEAT API, specifying:
- Name & Description
A human-readable label and summary. - Container Image
The Docker (or OCI-compliant) image to deploy, e.g.,heatglobal.azurecr.io/heat-runner-legacy:latest. - CPU & Memory Limits
Kubernetes resource constraints (e.g.,"cpuLimit": "1","memoryLimit": "1Gi"). - Feature or Internal Name
Identifies the broader feature set or specialized capability provided by the Runner (e.g., “heat-core” is used for our internal tooling and runners). - Enabled/Disabled
Whether the Runner is currently available for task scheduling.
Here’s an example JSON snippet representing a legacy Runner configured for backward compatibility:
{
"id": 2,
"name": "legacy-runner",
"containerImage": "heatglobal.azurecr.io/heat-runner-legacy:latest",
"cpuLimit": "1",
"memoryLimit": "1Gi",
"description": "Legacy runner for V1 based support. Use only for backward compatibility.",
"enabled": true,
"featureInternalName": "heat-core"
}