Skip to main content
Version: 0.6.x

How to: roll out jobs with the control plane

Run the same declarative job you debugged locally on a fleet of compute nodes, managed by the control plane Hub.

Prerequisites

The pieces​

┌─────────┐   submit    ┌─────┐   assign    ┌───────┐   run   ┌──────┐
│ You │────────────▶│ Hub │────────────▶│ Agent │────────▶│ Kernel│
└─────────┘ └─────┘ └───────┘ └──────┘
  • Hub — the control plane server. Stores desired job state, leases nodes, assigns jobs, and reconciles.
  • Agent — runs on every compute node. Receives assignments and drives the unified execution kernel.
  • A job validated locally runs unchanged on the fleet because both paths use the same JobSpec.

1. Debug the job locally​

./target/release/arkflow --config examples/jobs_local.yaml --validate
./target/release/arkflow --config examples/jobs_local.yaml

Expected result: the validation passes and the job runs locally — this is the exact JobSpec the Hub will distribute.

2. Start the Hub and register agents​

examples/control_plane_hub.yaml configures a Hub with its API and health-check endpoints; examples/control_plane_example.yaml shows an agent-side deployment configuration:

# terminal 1 — the Hub
./target/release/arkflow --config examples/control_plane_hub.yaml

# terminal 2+ — one Agent per compute node
./target/release/arkflow --config examples/control_plane_example.yaml

Expected result: each agent appears as a leased node in the Hub's fleet API (/api/v1). A node that goes silent keeps appearing in the fleet but stops receiving new assignments until its lease is refreshed.

3. Submit the job and verify​

Submit the job spec through the control plane HTTP API. Desired state is stored by the Hub; agents pick up assignments, run the job through the kernel, and report observed state. Watch reconciliation by killing an agent: the Hub notices the stale lease and reassigns the job to a healthy node.

Operator details — deployment, targeting a specific node, and the full HTTP API — are in the control plane overview and the operations guide.

Troubleshooting​

  • Job stays pending — no healthy agent holds a lease; check agent logs and the fleet listing.
  • Version conflicts on update — job versions are monotonic; submit with version incremented.