Skip to content

build: select target platform for runtime image - #6460

Merged
brancz merged 3 commits into
mainfrom
fix/arm64-runtime-base
Oct 30, 2026
Merged

brancz merged 3 commits into
mainfrom
fix/arm64-runtime-base

Conversation

@brancz

@brancz brancz commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

Declare TARGETPLATFORM before FROM so Podman 4.9.4 resolves the runtime base for each target instead of falling back to AMD64. The published ARM64 image contains an ARM64 Parca binary but an x86-64 BusyBox, causing /bin/sh to fail with exec format error on ARM nodes. Create /data in the build-platform stage and copy it with its original ownership so cross-architecture builds do not require emulation.

Replace exec health probes with Kubernetes native gRPC probes against Parca's existing health service. Remove the health-probe executable from production and development images and its Renovate rule.

Verified AMD64 and ARM64 builds with the publishing workflow's Podman 4.9.4 and ARM emulation disabled. Shell and Parca execute on both, with ARM64 runtime checks under QEMU, and nobody can write /data. A native gRPC health request returns SERVING; Jsonnet renders pass for main, OpenShift, dev, and a custom port.

Declare TARGETPLATFORM before FROM so Podman 4.9.4 resolves the runtime
base for each target instead of falling back to amd64. The previous ARM64
image contained an ARM64 Parca binary but an x86-64 shell.

Check the ELF machine of BusyBox, Parca, and the health probe for both
platforms before publishing development or release images.

Amp-Thread-ID: https://ampcode.com/threads/T-517b18b9-24b8-42c5-a008-0543f6960b36
Co-authored-by: Amp <amp@ampcode.com>
@alwaysmeticulous

alwaysmeticulous Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

✅ Meticulous spotted 0 visual differences across 14 screens tested: view results.

Meticulous evaluated ~4 hours of user flows against your PR.

Expected differences? Click here. Last updated for commit 839dd4c build: avoid target-architecture runtime instructions. This comment will update as new commits are pushed.

Remove the bundled health-probe executable from runtime and development
images. Kubernetes probes call Parca's existing gRPC health service.

Keep the runtime platform fix without the additional Make target or
publishing workflow checks.

Amp-Thread-ID: https://ampcode.com/threads/T-517b18b9-24b8-42c5-a008-0543f6960b36
Co-authored-by: Amp <amp@ampcode.com>

@metalmatze metalmatze left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace exec health probes with Kubernetes native gRPC probes

Finally the future is now.

Create the data directory in the build-platform stage and copy it into
the runtime image with its original ownership. Multi-architecture builds
then need no ARM emulation on the AMD64 publishing runner.

Amp-Thread-ID: https://ampcode.com/threads/T-517b18b9-24b8-42c5-a008-0543f6960b36
Co-authored-by: Amp <amp@ampcode.com>
@brancz
brancz merged commit a72c346 into main Oct 30, 2026
33 checks passed
@brancz
brancz deleted the fix/arm64-runtime-base branch October 30, 2026 18:02

This branch was successfully deployed

1 active deployment
Preview – parca-ui — 839dd4c6 Deployed Oct 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants