logo

Building Multi-Architecture Images With Buildpacks

2022-10-26

Authors:   Aidan Delaney


Summary

The presentation discusses multi-architecture images and their implementation in Buildpacks.
  • Buildpacks are a declarative way to translate application source code into a production image.
  • Multi-architecture images are becoming increasingly important as developers require their applications to run on both x86_64 and ARM64.
  • The current platform specification maps a platform onto a single architecture, so there is a need to explore approaches to implementing multi-architecture images.
  • Three high-level approaches to implementing multi-architecture images are presented.
  • The talk aims to accelerate the discussion around multi-architecture images and encourage design questions around it.
The speaker introduces himself as part of a team in Bloomberg that develops platforms for AI engineers, and highlights the critical role of Buildpacks in achieving high velocity when iterating on experiments.

Abstract

Buildpacks transforms source applications into images that run on any cloud. We will introduce the key architecture of Buildpacks and explain the separation of concerns between the buildpack and the platform API. In addition, we will take a deeper dive into two platform implementations. We deep-dive into a stand-alone buildpack builder (pack) and a Kubernetes native buildpack service (kpack), detailing how both use the lifecycle component to build source applications into images.Having established a deeper understanding of how a platform works, we workshop approaches to supporting multi-architecture builds. It is increasingly common for developers to require their application to run on both x86_64 and ARM64. The current platform specification maps a platform onto a single architecture and implementations build x86_64 images on x86_64 build platforms and ARM64 images on ARM64 platforms. We ask how applications can be built on x86_64 and produce images for both x86_64 and ARM64? Are the necessary changes to the platform and Buildpacks APIs backward compatible? Is it feasible for pack and kpack to produce muti-architecture output?

Materials:

Post a comment