- Status: Accepted
- Date: 2026-07-12
- Deciders: thulasi.ram (architect)
Context
Section titled “Context”Tension: the IR should stay portable/agnostic (0009), but placement is inherently k8s-ish (nodeSelector, tolerations, runtimeClass, resource requests, GPU). Letting pipelines write raw k8s couples the IR and leaks infra into pipeline files; over-abstracting blocks power users (a specific taint, a GPU class).
Decision
Section titled “Decision”Abstracted labels in the IR + admin-configured mapping + a raw escape hatch:
- Pipelines say
runs-on: linux/arm64,resources: { cpu, mem }, optionalsize: large. - A cluster-admin config maps those labels to k8s specifics (nodeSelector / tolerations / runtimeClass / requests).
- A raw pod-spec overlay is available for power users who truly need it.
Portable by default; no ceiling. Infra lives in admin config, not pipeline files.
Consequences
Section titled “Consequences”- IR stays agnostic and multi-frontend-friendly; pipelines are clean.
- Admins own the label→k8s mapping (one place).
- The raw overlay is an explicit, discouraged-by-default escape hatch.
Alternatives considered
Section titled “Alternatives considered”- Raw k8s in the IR — max power, but IR k8s-coupled; infra leaks into every pipeline.
- Fixed sizes only — cleanest, but no escape hatch for niche needs.