Skip to content

Hybrid workflow orchestrator: support Armada backend for hex step #39

Description

@boettiger-lab-llm-agent

Problem

The current workflow.yaml orchestrator is a k8s Job that uses kubectl apply + kubectl wait --for=condition=complete job/<name>-hex to sequence the pipeline steps. This works fine for the k8s backend.

When using --backend armada, the hex jobs are submitted via armadactl submit and land as pods named armada-<id> — there is no corresponding k8s Job object. The orchestrator fails at the hex step because:

  1. It tries to kubectl apply the hex YAML (submits a k8s indexed job, bypassing Armada)
  2. Even if fixed, kubectl wait --for=condition=complete job/<name>-hex has nothing to wait on

Why Armada matters

The Armada backend removes two hard constraints of the k8s backend:

  • 200-pod namespace quota — multiple hex workflows can't run simultaneously on k8s
  • 200-completion indexed job limit — caps chunk granularity

With Armada, we can use --chunk-size 1 (one pod per feature), which eliminates the "one slow pod blocks everything" problem. A chunk containing Russia, China, and Kazakhstan can block a 200-job k8s hex run for 18+ hours, while the same features as individual Armada jobs each run independently.

Desired behaviour

The workflow orchestrator should detect --backend armada and:

  1. Use armadactl submit <hex-armada.yaml> instead of kubectl apply for the hex step
  2. Poll for Armada job set completion (e.g. watch for all pods in the job set to reach Completed state, or use armadactl get if it supports job set status)
  3. Continue to use kubectl apply + kubectl wait for the non-hex steps (setup-bucket, convert, pmtiles, repartition) which remain as standard k8s jobs

Workaround

Currently: manually sequence the steps when using Armada hex. Submit setup-bucket/convert/pmtiles as k8s jobs, armadactl submit the hex YAML, poll pod completion manually, then kubectl apply repartition.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions