From 9a5d81419c51a6c3c4fef58cf8d1de8416716248 Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Tue, 30 Jan 2024 15:11:54 -0800 Subject: [PATCH] addons gvisor: Add arm64 support --- pkg/addons/config.go | 2 +- pkg/addons/validations.go | 14 -------------- pkg/gvisor/enable.go | 21 +++++++++++++++++---- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/pkg/addons/config.go b/pkg/addons/config.go index bbfc8a9011f9..1db72c978b1d 100644 --- a/pkg/addons/config.go +++ b/pkg/addons/config.go @@ -71,7 +71,7 @@ var Addons = []*Addon{ { name: "gvisor", set: SetBool, - validations: []setFn{SupportsAmd64, IsRuntimeContainerd}, + validations: []setFn{IsRuntimeContainerd}, callbacks: []setFn{EnableOrDisableAddon, verifyAddonStatus}, }, { diff --git a/pkg/addons/validations.go b/pkg/addons/validations.go index ccef1c3c09ca..9cefbe321f3a 100644 --- a/pkg/addons/validations.go +++ b/pkg/addons/validations.go @@ -18,14 +18,12 @@ package addons import ( "fmt" - "runtime" "strconv" "github.com/spf13/viper" "k8s.io/minikube/pkg/minikube/assets" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/cruntime" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/out" ) @@ -95,15 +93,3 @@ func contains(slice []string, val string) bool { } return false } - -// SupportsAmd64 ensures that the cluster supports running amd64 images -func SupportsAmd64(cc *config.ClusterConfig, name, _ string) error { - // KIC can run amd64 images on a non-amd64 environment - if driver.IsKIC(cc.Driver) { - return nil - } - if runtime.GOARCH == "amd64" { - return nil - } - return fmt.Errorf("the %q addon requires a cluster that supports running amd64 images", name) -} diff --git a/pkg/gvisor/enable.go b/pkg/gvisor/enable.go index f8c187f0d845..6599812c2962 100644 --- a/pkg/gvisor/enable.go +++ b/pkg/gvisor/enable.go @@ -25,6 +25,7 @@ import ( "os/exec" "os/signal" "path/filepath" + "runtime" "syscall" "github.com/docker/machine/libmachine/mcnutils" @@ -36,10 +37,6 @@ const ( containerdConfigPath = "/etc/containerd/config.toml" containerdConfigBackupPath = "/tmp/containerd-config.toml.bak" - releaseURL = "https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/" - shimURL = releaseURL + "containerd-shim-runsc-v1" - gvisorURL = releaseURL + "runsc" - configFragment = ` [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" @@ -47,6 +44,22 @@ const ( ` ) +var ( + shimURL = releaseURL() + "containerd-shim-runsc-v1" + gvisorURL = releaseURL() + "runsc" +) + +func releaseURL() string { + arch := runtime.GOARCH + switch arch { + case "amd64": + arch = "x86_64" + case "arm64": + arch = "aarch64" + } + return fmt.Sprintf("https://storage.googleapis.com/gvisor/releases/release/latest/%s/", arch) +} + // Enable follows these steps for enabling gvisor in minikube: // 1. creates necessary directories for storing binaries and runsc logs // 2. downloads runsc and gvisor-containerd-shim