Skip to content

Commit 7236b2f

Browse files
fix(k3s): don't attempt to load all platforms when using LoadImages
1 parent 44e5fdb commit 7236b2f

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

modules/k3s/k3s.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import (
77
"os"
88
"path/filepath"
99

10+
"github.com/containerd/platforms"
1011
"github.com/docker/docker/api/types/container"
1112
"github.com/docker/docker/api/types/mount"
1213
"github.com/docker/go-connections/nat"
14+
v1 "github.com/opencontainers/image-spec/specs-go/v1"
1315
"gopkg.in/yaml.v3"
1416

1517
"github.com/testcontainers/testcontainers-go"
@@ -180,15 +182,20 @@ func unmarshal(bytes []byte) (*KubeConfigValue, error) {
180182
}
181183

182184
func (c *K3sContainer) LoadImages(ctx context.Context, images ...string) error {
183-
return c.LoadImagesWithOpts(ctx, images)
185+
return c.LoadImagesWithPlatform(ctx, images, nil)
184186
}
185187

186-
func (c *K3sContainer) LoadImagesWithOpts(ctx context.Context, images []string, opts ...testcontainers.SaveImageOption) error {
188+
func (c *K3sContainer) LoadImagesWithPlatform(ctx context.Context, images []string, platform *v1.Platform) error {
187189
provider, err := testcontainers.ProviderDocker.GetProvider()
188190
if err != nil {
189191
return fmt.Errorf("getting docker provider %w", err)
190192
}
191193

194+
opts := []testcontainers.SaveImageOption{}
195+
if platform != nil {
196+
opts = append(opts, testcontainers.SaveDockerImageWithPlatforms(*platform))
197+
}
198+
192199
// save image
193200
imagesTar, err := os.CreateTemp(os.TempDir(), "images*.tar")
194201
if err != nil {
@@ -209,7 +216,15 @@ func (c *K3sContainer) LoadImagesWithOpts(ctx context.Context, images []string,
209216
return fmt.Errorf("copying image to container %w", err)
210217
}
211218

212-
exit, reader, err := c.Exec(ctx, []string{"ctr", "-n=k8s.io", "images", "import", "--all-platforms", containerPath})
219+
cmd := []string{"ctr", "-n=k8s.io", "images", "import"}
220+
221+
if platform != nil {
222+
cmd = append(cmd, "--platform", platforms.Format(*platform))
223+
}
224+
225+
cmd = append(cmd, containerPath)
226+
227+
exit, reader, err := c.Exec(ctx, cmd)
213228
if err != nil {
214229
return fmt.Errorf("importing image %w", err)
215230
}

0 commit comments

Comments
 (0)