From d324740c30c925cdc7076029494a23d3a8b7f429 Mon Sep 17 00:00:00 2001 From: Fredrik Medley Date: Thu, 21 Apr 2022 15:57:07 +0200 Subject: [PATCH] ADR #8: Container image expansion --- 0008-container-image-expansion.md | 39 ++++++++++++++++++++++++++++++ images/0008/bb-overview.png | Bin 0 -> 54519 bytes 2 files changed, 39 insertions(+) create mode 100644 0008-container-image-expansion.md create mode 100644 images/0008/bb-overview.png diff --git a/0008-container-image-expansion.md b/0008-container-image-expansion.md new file mode 100644 index 0000000..0e6c71c --- /dev/null +++ b/0008-container-image-expansion.md @@ -0,0 +1,39 @@ +# Buildbarn Architecture Decision Record #8: Container image expansion + +(c) Copyright 2022, Zenseact AB. All rights reserved. + +Author: Fredrik Medley
+Date: 2022-04-21 + +# Context + +When running remote execution, the clients are usually not providing all the files as inputs. Instead, it is assumed that the action is run in a specific environment. The defacto standard is to specify a container image as part of [the `platform` field](https://github.com/bazelbuild/remote-apis/blob/2af1c432ce11b01e46cf70d7933f71a3310282d6/build/bazel/remote/execution/v2/remote_execution.proto#L520) of the action, using the key `container-image`. + +The problem comes to the split of responsibility where the client specifies the wanted container image and the server needs to prepare runners with that container image. In the general case, the server side cannot predict all different container images the clients would like to use. + +# Proposed change + +In this ADR we propose to add a new `bb-container-expander` service, in front of the `bb-scheduler`. For each specified `container-image` (yes, the protocol accepts multiple entries) among the platform properties, the [input Merkle tree](https://github.com/bazelbuild/remote-apis/blob/2af1c432ce11b01e46cf70d7933f71a3310282d6/build/bazel/remote/execution/v2/remote_execution.proto#L468) will be extended. The resulting action will not specify any `container-image` at all. The worker will also have to employ [`chroot`](https://github.com/buildbarn/bb-remote-execution/blob/c4bbd24a8d272267f40b234533f62c8ccf24d568/pkg/proto/configuration/bb_runner/bb_runner.proto#L36-L39) when executing the actions, optionally moving the original input tree into a specific directory. + +

+ Buildbarn with the proposed bb-container-expander +

+ +The input tree might become very big. This might lead to long times to hard link files to the runner from the worker cache. This can be mitigated by using the FUSE option for the runner build directory. + +The process of expanding a container image will be to: +1. Download the metadata for the image. +1. For each layer, download the layer and upload it as a Merkle tree to the content addressable storage (CAS). +1. Merge Merkle trees for each layer in order. + +Each step will be cached in the action cache (AC), using a "fake" action. It can look like setting the command line as `- bb-container-expander download-metadata ...` which should not collide with any actions provided by the client. + +Assuming that the container image files and the client provided inputs are generally located in different directories, most of the Merkle tree merging will happen close to the root level and therefore not consume much resources. Merging the layers will go deeper in the structures, so a local AC and Merkle tree cache (CAS) is probably necessary. + +# Other considered solutions + +If the set of container images to be used is given, autoscaling in Kubernetes can be used to scale certain images up and others down, depending on the load. This helps to keep the locality of the files, where all actions using the same image will be scheduled on the same runners. + +To support dynamic images, another service would have to listen to the scheduler for operations that do not have any matching runner and quickly spawn such runners. + +This solution was not chosen as it gets limited to Kubernetes, it doesn't work in docker-compose or on a bare deployment. It might also need to be tailored for different Kubernetes suppliers, adding maintenance work. diff --git a/images/0008/bb-overview.png b/images/0008/bb-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..77807326af03a1bb9b03b814f594b7582de1ff00 GIT binary patch literal 54519 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%0A58un)BzM=y|9m^bum}b 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 T;=UhH@SmotF8;Cd#T)+%5E0rV literal 0 HcmV?d00001