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:
- It tries to
kubectl apply the hex YAML (submits a k8s indexed job, bypassing Armada)
- 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:
- Use
armadactl submit <hex-armada.yaml> instead of kubectl apply for the hex step
- 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)
- 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.
Problem
The current
workflow.yamlorchestrator is a k8s Job that useskubectl apply+kubectl wait --for=condition=complete job/<name>-hexto sequence the pipeline steps. This works fine for the k8s backend.When using
--backend armada, the hex jobs are submitted viaarmadactl submitand land as pods namedarmada-<id>— there is no corresponding k8s Job object. The orchestrator fails at the hex step because:kubectl applythe hex YAML (submits a k8s indexed job, bypassing Armada)kubectl wait --for=condition=complete job/<name>-hexhas nothing to wait onWhy Armada matters
The Armada backend removes two hard constraints of the k8s backend:
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 armadaand:armadactl submit <hex-armada.yaml>instead ofkubectl applyfor the hex stepCompletedstate, or usearmadactl getif it supports job set status)kubectl apply+kubectl waitfor the non-hex steps (setup-bucket, convert, pmtiles, repartition) which remain as standard k8s jobsWorkaround
Currently: manually sequence the steps when using Armada hex. Submit setup-bucket/convert/pmtiles as k8s jobs,
armadactl submitthe hex YAML, poll pod completion manually, thenkubectl applyrepartition.