ADR 0002: arm64 OKE with podman builds
- Status: accepted
- Date: not recorded
- Decision makers: not recorded
Context and problem statement
The platform runs on OCI. The cluster's worker architecture and the way images are built have to agree, or pods fail to start with an exec format error. Which architecture, and which build tool?
Decision drivers
- Cost and performance of Ampere A1 nodes on OCI.
- Developers build on arm64 Macs, where a native arm64 image needs no emulation.
- Committed manifests carried notes that disagreed about the live architecture.
Considered options
- amd64 nodes with amd64 images.
- arm64 (Ampere A1) nodes with arm64 images.
Decision outcome
arm64 nodes and linux/arm64 images, built with podman build --platform linux/arm64 and pushed to the OCI registry in ap-hyderabad-1. The Terraform OKE module declares an Ampere A1 Flex node pool of three nodes. On 2026-11-07 the live cluster showed three nodes, all arm64.
Consequences
- Good: native builds on developer machines; matches the live nodes.
- Bad: every image and base image must have an arm64 variant. Check the pushed manifest before a rollout.
- Bad: some committed manifests still carry an architecture note or a registry host that does not match the live cluster, so they cannot be applied wholesale.
Confirmation
kubectl get nodes shows arm64. The pushed image manifest shows linux/arm64.
Sources
infra/terraform/modules/oke/main.tf, .kiro/steering/project-commands.md, .agents/tasks/lms-video-studio/plan.md, live node read on 2026-11-07.