From 8db3c5b3c63ad67043b876265ac4687cdcb0f0ff Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Fri, 22 Dec 2023 17:06:54 +0400 Subject: [PATCH] fix: pick correctly base installer image layers Only Talos 1.5+ provides proper optimized image, Talos 1.4 provided a single-layer image (which worked in this case), while Talos 1.2-1.3 have multi-layered images which can't be replaced easily. Signed-off-by: Andrey Smirnov --- pkg/imager/out.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/imager/out.go b/pkg/imager/out.go index 153f0dcc8a..9ac88f321b 100644 --- a/pkg/imager/out.go +++ b/pkg/imager/out.go @@ -306,7 +306,14 @@ func (i *Imager) outInstaller(ctx context.Context, path string, report *reporter return fmt.Errorf("failed to set created at: %w", err) } - newInstallerImg, err = mutate.AppendLayers(newInstallerImg, baseLayers[0]) + // Talos v1.5+ optimizes the install layers to be easily replaceable with new artifacts + // other Talos versions will have an overhead of artifacts being stored twice + if len(baseLayers) == 2 { + // optimized for installer image for artifacts replacements + baseLayers = baseLayers[:1] + } + + newInstallerImg, err = mutate.AppendLayers(newInstallerImg, baseLayers...) if err != nil { return fmt.Errorf("failed to append layers: %w", err) }