From 0c68a59f076de60a8f9f2583b9ae6e57c924d57b Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 13 Dec 2020 18:59:19 -0800 Subject: [PATCH 01/36] kic-base-image-multiarch target --- Makefile | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Makefile b/Makefile index 5f2a7f35a9..094d41e96a 100644 --- a/Makefile +++ b/Makefile @@ -600,6 +600,24 @@ kic-base-image: ## builds the kic base image and tags local/kicbase:latest and l docker tag local/kicbase:$(KIC_VERSION) local/kicbase:latest docker tag local/kicbase:$(KIC_VERSION) local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) +X_DOCKER_BUILDER ?= minikube-builder +X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled +.PHONY: docker-multi-arch-builder +docker-multi-arch-builder: + env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true + +KICBASE_ARCH = linux/arm64,linux/amd64 +X_IMG = gcr.io/kicbase/kicbase + +.PHONY: kic-base-image-x +kic-base-image-x: docker-multi-arch-builder + env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) -t $(X_IMG):$(KIC_VERSION) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase + + + + + .PHONY: upload-preloaded-images-tar upload-preloaded-images-tar: out/minikube # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS. go build -ldflags="$(MINIKUBE_LDFLAGS)" -o out/upload-preload ./hack/preload-images/*.go From 1860291cac1798fb4bb0140b1b028694031d48fb Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 13 Dec 2020 19:21:45 -0800 Subject: [PATCH 02/36] kic-base-image-multiarch target --- Makefile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 094d41e96a..915e01ffbe 100644 --- a/Makefile +++ b/Makefile @@ -600,23 +600,24 @@ kic-base-image: ## builds the kic base image and tags local/kicbase:latest and l docker tag local/kicbase:$(KIC_VERSION) local/kicbase:latest docker tag local/kicbase:$(KIC_VERSION) local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) +# multi-arch docker images X_DOCKER_BUILDER ?= minikube-builder X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled + .PHONY: docker-multi-arch-builder docker-multi-arch-builder: env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true KICBASE_ARCH = linux/arm64,linux/amd64 -X_IMG = gcr.io/kicbase/kicbase - -.PHONY: kic-base-image-x -kic-base-image-x: docker-multi-arch-builder - env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) -t $(X_IMG):$(KIC_VERSION) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase - - - +MA_KICBASE_IMAGE_REGISTRY = $(REGISTRY)/kicbase-multiarch:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) +.PHONY: kic-base-image-multi-arch +kic-base-image-multi-arch: docker-multi-arch-builder +# docker login gcr.io/k8s-minikube +# docker login docker.pkg.github.com +# docker login + env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) $(addprefix -t ,$(MA_KICBASE_IMAGE_REGISTRY)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase .PHONY: upload-preloaded-images-tar upload-preloaded-images-tar: out/minikube # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS. From d1160305d23089c64042b412949dbdb5b733dd9e Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 13 Dec 2020 19:39:46 -0800 Subject: [PATCH 03/36] allow to override the list of ma-kicbase registries --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 915e01ffbe..af141d7fa3 100644 --- a/Makefile +++ b/Makefile @@ -610,7 +610,7 @@ docker-multi-arch-builder: env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true KICBASE_ARCH = linux/arm64,linux/amd64 -MA_KICBASE_IMAGE_REGISTRY = $(REGISTRY)/kicbase-multiarch:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) +MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase-multiarch:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) .PHONY: kic-base-image-multi-arch kic-base-image-multi-arch: docker-multi-arch-builder From 405ccc57dfbfbddf7ea5a24af70afd82a49e31d6 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 13 Dec 2020 21:10:51 -0800 Subject: [PATCH 04/36] skip docker login if AUTOPUSH is not defined --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index af141d7fa3..770c9575f7 100644 --- a/Makefile +++ b/Makefile @@ -614,9 +614,11 @@ MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase-multiarch:$(KIC_VERSION) $(REGI .PHONY: kic-base-image-multi-arch kic-base-image-multi-arch: docker-multi-arch-builder -# docker login gcr.io/k8s-minikube -# docker login docker.pkg.github.com -# docker login +ifdef AUTOPUSH + docker login gcr.io/k8s-minikube + docker login docker.pkg.github.com + docker login +endif env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) $(addprefix -t ,$(MA_KICBASE_IMAGE_REGISTRY)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase .PHONY: upload-preloaded-images-tar From 6044006afee7eb8964c384a01087b3f1cc5efb4a Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Sun, 13 Dec 2020 22:29:17 -0800 Subject: [PATCH 05/36] add multi-arch images to kic driver list --- pkg/drivers/kic/types.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 32f314ba4a..757f8ab599 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -26,15 +26,29 @@ const ( // Version is the current version of kic Version = "v0.0.15-snapshot4" // SHA of the kic base image - baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" + baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" + baseMultiArchImageSHA = "todo" ) var ( // BaseImage is the base image is used to spin up kic containers. it uses same base-image as kind. - BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA) + BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase-multiarch:%s@sha256:%s", Version, baseMultiArchImageSHA) // FallbackImages are backup base images in case gcr isn't available FallbackImages = []string{ + + // the fallback of multi-arch BaseImage in case gcr.io is not available. stored in docker hub + // same image is push to https://github.com/kicbase/stable + fmt.Sprintf("kicbase/stable-multiarch:%s@sha256:%s", Version, baseMultiArchImageSHA), + + // the fallback of multi-arch BaseImage in case gcr.io is not available. stored in github packages https://github.com/kubernetes/minikube/packages/206071 + // github packages docker does _NOT_ support pulling by sha as mentioned in the docs: + // https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages + fmt.Sprintf("docker.pkg.github.com/kubernetes/minikube/kicbase-multiarch:%s", Version), + + // the amd64 only base image is used to spin up kic containers + fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA), + // the fallback of BaseImage in case gcr.io is not available. stored in docker hub // same image is push to https://github.com/kicbase/stable fmt.Sprintf("kicbase/stable:%s@sha256:%s", Version, baseImageSHA), From 342b34c3392b512bf0c8b6479a87f6d9cd9369be Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 15 Dec 2020 11:20:20 -0800 Subject: [PATCH 06/36] fix unit tests --- site/content/en/docs/commands/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index b5bf841feb..e922522373 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.15-snapshot4@sha256:ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-multiarch:v0.0.15-snapshot4@sha256:todo") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") From 63356581032dfe78f0bf48acd752cea934feeef3 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 5 Jan 2021 16:29:10 -0800 Subject: [PATCH 07/36] Revert single-arch kicbase fallback support --- Makefile | 2 +- pkg/drivers/kic/types.go | 15 ++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 770c9575f7..f63abd40ad 100644 --- a/Makefile +++ b/Makefile @@ -610,7 +610,7 @@ docker-multi-arch-builder: env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true KICBASE_ARCH = linux/arm64,linux/amd64 -MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase-multiarch:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) +MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) .PHONY: kic-base-image-multi-arch kic-base-image-multi-arch: docker-multi-arch-builder diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 757f8ab599..af2b0689f4 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -26,26 +26,15 @@ const ( // Version is the current version of kic Version = "v0.0.15-snapshot4" // SHA of the kic base image - baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" - baseMultiArchImageSHA = "todo" + baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" ) var ( // BaseImage is the base image is used to spin up kic containers. it uses same base-image as kind. - BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase-multiarch:%s@sha256:%s", Version, baseMultiArchImageSHA) + BaseImage = fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA) // FallbackImages are backup base images in case gcr isn't available FallbackImages = []string{ - - // the fallback of multi-arch BaseImage in case gcr.io is not available. stored in docker hub - // same image is push to https://github.com/kicbase/stable - fmt.Sprintf("kicbase/stable-multiarch:%s@sha256:%s", Version, baseMultiArchImageSHA), - - // the fallback of multi-arch BaseImage in case gcr.io is not available. stored in github packages https://github.com/kubernetes/minikube/packages/206071 - // github packages docker does _NOT_ support pulling by sha as mentioned in the docs: - // https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages - fmt.Sprintf("docker.pkg.github.com/kubernetes/minikube/kicbase-multiarch:%s", Version), - // the amd64 only base image is used to spin up kic containers fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA), From df47190cca7938987d588334d4d5b7ae3556d82b Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Wed, 6 Jan 2021 11:54:22 -0800 Subject: [PATCH 08/36] fix docker builder creation args --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 55a6d60192..63b9fefbf6 100644 --- a/Makefile +++ b/Makefile @@ -607,7 +607,7 @@ X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled .PHONY: docker-multi-arch-builder docker-multi-arch-builder: env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --use || true + env $(X_BUILD_ENV) docker buildx create --node --name kicbase-builder --use || true KICBASE_ARCH = linux/arm64,linux/amd64 MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) From e127bc23fef1c3f6bd252102f63064da9d40b9e1 Mon Sep 17 00:00:00 2001 From: Ling Samuel Date: Fri, 8 Jan 2021 12:04:36 +0800 Subject: [PATCH 09/36] Ignore non-socks5 ALL_PROXY env var when checking docker status Signed-off-by: Ling Samuel --- cmd/minikube/cmd/docker-env.go | 33 +++++++++++++++++++++++++++ cmd/minikube/cmd/docker-env_test.go | 35 +++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 3cfced47bc..159ad7df4d 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -23,6 +23,7 @@ import ( "fmt" "io" "net" + "net/url" "os" "os/exec" "strconv" @@ -455,9 +456,41 @@ func dockerEnvVarsList(ec DockerEnvConfig) []string { } } +func isValidDockerProxy(env string) bool { + val := os.Getenv(env) + if val == "" { + return true + } + + u, err := url.Parse(val) + if err != nil { + klog.Warningf("Parsing proxy env variable %s=%s error: %v", env, val, err) + return false + } + switch u.Scheme { + // See moby/moby#25740 + case "socks5", "socks5h": + return true + default: + return false + } +} + +func removeInvalidDockerProxy() { + for _, env := range []string{"ALL_PROXY", "all_proxy"} { + if !isValidDockerProxy(env) { + klog.Warningf("Ignoring non socks5 proxy env variable %s=%s", env, os.Getenv(env)) + os.Unsetenv(env) + } + } +} + // tryDockerConnectivity will try to connect to docker env from user's POV to detect the problem if it needs reset or not func tryDockerConnectivity(bin string, ec DockerEnvConfig) ([]byte, error) { c := exec.Command(bin, "version", "--format={{.Server}}") + + // See #10098 for details + removeInvalidDockerProxy() c.Env = append(os.Environ(), dockerEnvVarsList(ec)...) klog.Infof("Testing Docker connectivity with: %v", c) return c.CombinedOutput() diff --git a/cmd/minikube/cmd/docker-env_test.go b/cmd/minikube/cmd/docker-env_test.go index 9f7b0193f1..915b3da622 100644 --- a/cmd/minikube/cmd/docker-env_test.go +++ b/cmd/minikube/cmd/docker-env_test.go @@ -18,6 +18,7 @@ package cmd import ( "bytes" + "os" "testing" "github.com/google/go-cmp/cmp" @@ -306,3 +307,37 @@ MINIKUBE_ACTIVE_DOCKERD }) } } + +func TestValidDockerProxy(t *testing.T) { + var tests = []struct { + proxy string + isValid bool + }{ + { + proxy: "socks5://192.168.0.1:1080", + isValid: true, + }, + { + proxy: "", + isValid: true, + }, + { + proxy: "socks://192.168.0.1:1080", + isValid: false, + }, + { + proxy: "http://192.168.0.1:1080", + isValid: false, + }, + } + + for _, tc := range tests { + os.Setenv("ALL_PROXY", tc.proxy) + valid := isValidDockerProxy("ALL_PROXY") + if tc.isValid && valid != tc.isValid { + t.Errorf("Expect %#v to be valid docker proxy", tc.proxy) + } else if !tc.isValid && valid != tc.isValid { + t.Errorf("Expect %#v to be invalid docker proxy", tc.proxy) + } + } +} From 3aaf9c0f7c8092971f5acb0050daec04e6596e5d Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 10:40:54 -0800 Subject: [PATCH 10/36] Add buildx debug flags --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 63b9fefbf6..935ce04679 100644 --- a/Makefile +++ b/Makefile @@ -607,7 +607,7 @@ X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled .PHONY: docker-multi-arch-builder docker-multi-arch-builder: env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - env $(X_BUILD_ENV) docker buildx create --node --name kicbase-builder --use || true + env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --buildkitd-flags '--debug' --use || true KICBASE_ARCH = linux/arm64,linux/amd64 MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) From 1993e2eab622b9d950324c60960a3c7f1b711896 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 10:57:08 -0800 Subject: [PATCH 11/36] fix kicbase image name --- Makefile | 2 +- site/content/en/docs/commands/start.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 935ce04679..ee4c7dc5a9 100644 --- a/Makefile +++ b/Makefile @@ -610,7 +610,7 @@ docker-multi-arch-builder: env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --buildkitd-flags '--debug' --use || true KICBASE_ARCH = linux/arm64,linux/amd64 -MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase-multiarch:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) +MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) .PHONY: kic-base-image-multi-arch kic-base-image-multi-arch: docker-multi-arch-builder diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index d05d47888b..edaea7cb3a 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-multiarch:v0.0.15-snapshot4@sha256:todo") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.15-snapshot4@sha256:ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") From 9184efeb370e71040755405c394957bde4fc66a5 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 11:06:37 -0800 Subject: [PATCH 12/36] fix Makefile rules --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ee4c7dc5a9..5f98ea01be 100644 --- a/Makefile +++ b/Makefile @@ -610,16 +610,16 @@ docker-multi-arch-builder: env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --buildkitd-flags '--debug' --use || true KICBASE_ARCH = linux/arm64,linux/amd64 -MA_KICBASE_IMAGE_REGISTRY ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase:$(KIC_VERSION) kicbase/stable-multiarch:$(KIC_VERSION) +KICBASE_IMAGE_REGISTRIES ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase:$(KIC_VERSION) kicbase/stable:$(KIC_VERSION) -.PHONY: kic-base-image-multi-arch -kic-base-image-multi-arch: docker-multi-arch-builder +.PHONY: push-kic-base-image: +push-kic-base-image: docker-multi-arch-builder ifdef AUTOPUSH docker login gcr.io/k8s-minikube docker login docker.pkg.github.com docker login endif - env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) $(addprefix -t ,$(MA_KICBASE_IMAGE_REGISTRY)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase + env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) $(addprefix -t ,$(KICBASE_IMAGE_REGISTRIES)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase .PHONY: upload-preloaded-images-tar upload-preloaded-images-tar: out/minikube # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS. @@ -669,8 +669,8 @@ push-kic-base-image-hub: kic-base-image ## Push kic-base to docker hub docker tag local/kicbase:latest $(KIC_BASE_IMAGE_HUB) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_HUB) -.PHONY: push-kic-base-image -push-kic-base-image: ## Push local/kicbase:latest to all remote registries +.PHONY: push-kic-base-image-x86 +push-kic-base-image-x86: ## Push local/kicbase:latest to all remote registries ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true From da87abd016bfe410d26e7571ac5b33fc93f2c86f Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 11:24:08 -0800 Subject: [PATCH 13/36] enable docker driver for arm64 --- pkg/minikube/registry/drvs/docker/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 4a16ded746..9bfb61581b 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -84,7 +84,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { } func status() registry.State { - if runtime.GOARCH != "amd64" { + if runtime.GOARCH != "amd64" && runtime.GOARCH != "arm64" { return registry.State{Error: fmt.Errorf("docker driver is not supported on %q systems yet", runtime.GOARCH), Installed: false, Healthy: false, Fix: "Try other drivers", Doc: docURL} } From 36d94a2d88e5981607845f848ebe12f34a92eb48 Mon Sep 17 00:00:00 2001 From: Daehyeok Mun Date: Fri, 8 Jan 2021 11:26:10 -0800 Subject: [PATCH 14/36] Migrate MachineName function. Migrate MachineName function from driver package to config package. --- cmd/minikube/cmd/config/profile_list.go | 2 +- cmd/minikube/cmd/delete.go | 8 +-- cmd/minikube/cmd/node_delete.go | 3 +- cmd/minikube/cmd/node_list.go | 4 +- cmd/minikube/cmd/node_start.go | 4 +- cmd/minikube/cmd/node_stop.go | 4 +- cmd/minikube/cmd/pause.go | 4 +- cmd/minikube/cmd/ssh-key.go | 4 +- cmd/minikube/cmd/start.go | 2 +- cmd/minikube/cmd/status.go | 4 +- cmd/minikube/cmd/stop.go | 3 +- cmd/minikube/cmd/unpause.go | 4 +- pkg/addons/addons.go | 6 +- pkg/minikube/bootstrapper/bsutil/kubelet.go | 2 +- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 2 +- pkg/minikube/cluster/cluster.go | 3 +- pkg/minikube/config/config_test.go | 54 ++++++++++++++++++ pkg/minikube/config/profile.go | 10 ++++ pkg/minikube/driver/driver.go | 10 ---- pkg/minikube/driver/driver_test.go | 56 +------------------ pkg/minikube/machine/cache_images.go | 3 +- pkg/minikube/machine/cluster_test.go | 14 ++--- pkg/minikube/machine/delete.go | 2 +- pkg/minikube/machine/fix.go | 4 +- pkg/minikube/machine/ssh.go | 3 +- pkg/minikube/machine/start.go | 2 +- pkg/minikube/mustload/mustload.go | 2 +- pkg/minikube/node/node.go | 4 +- pkg/minikube/node/start.go | 6 +- pkg/minikube/registry/drvs/docker/docker.go | 2 +- .../registry/drvs/hyperkit/hyperkit.go | 2 +- pkg/minikube/registry/drvs/hyperv/hyperv.go | 2 +- pkg/minikube/registry/drvs/kvm2/kvm2.go | 2 +- pkg/minikube/registry/drvs/none/none.go | 2 +- .../registry/drvs/parallels/parallels.go | 2 +- pkg/minikube/registry/drvs/podman/podman.go | 2 +- .../registry/drvs/virtualbox/virtualbox.go | 2 +- pkg/minikube/registry/drvs/vmware/vmware.go | 2 +- 38 files changed, 122 insertions(+), 125 deletions(-) diff --git a/cmd/minikube/cmd/config/profile_list.go b/cmd/minikube/cmd/config/profile_list.go index bf316b17d2..1189fc14ff 100644 --- a/cmd/minikube/cmd/config/profile_list.go +++ b/cmd/minikube/cmd/config/profile_list.go @@ -92,7 +92,7 @@ func profileStatus(p *config.Profile, api libmachine.API) string { exit.Error(reason.GuestCpConfig, "error getting primary control plane", err) } - host, err := machine.LoadHost(api, driver.MachineName(*p.Config, cp)) + host, err := machine.LoadHost(api, config.MachineName(*p.Config, cp)) if err != nil { klog.Warningf("error loading profiles: %v", err) return "Unknown" diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index 7bfe9bfda2..6afb85924b 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -288,7 +288,7 @@ func deleteProfile(profile *config.Profile) error { if driver.IsKIC(profile.Config.Driver) { out.Step(style.DeletingHost, `Deleting "{{.profile_name}}" in {{.driver_name}} ...`, out.V{"profile_name": profile.Name, "driver_name": profile.Config.Driver}) for _, n := range profile.Config.Nodes { - machineName := driver.MachineName(*profile.Config, n) + machineName := config.MachineName(*profile.Config, n) deletePossibleKicLeftOver(machineName, profile.Config.Driver) } } @@ -347,7 +347,7 @@ func deleteHosts(api libmachine.API, cc *config.ClusterConfig) { if cc != nil { for _, n := range cc.Nodes { - machineName := driver.MachineName(*cc, n) + machineName := config.MachineName(*cc, n) if err := machine.DeleteHost(api, machineName); err != nil { switch errors.Cause(err).(type) { case mcnerror.ErrHostDoesNotExist: @@ -412,7 +412,7 @@ func profileDeletionErr(cname string, additionalInfo string) error { func uninstallKubernetes(api libmachine.API, cc config.ClusterConfig, n config.Node, bsName string) error { out.Step(style.Resetting, "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...", out.V{"kubernetes_version": cc.KubernetesConfig.KubernetesVersion, "bootstrapper_name": bsName}) - host, err := machine.LoadHost(api, driver.MachineName(cc, n)) + host, err := machine.LoadHost(api, config.MachineName(cc, n)) if err != nil { return DeletionError{Err: fmt.Errorf("unable to load host: %v", err), Errtype: MissingCluster} } @@ -500,7 +500,7 @@ func deleteProfileDirectory(profile string) { func deleteMachineDirectories(cc *config.ClusterConfig) { if cc != nil { for _, n := range cc.Nodes { - machineName := driver.MachineName(*cc, n) + machineName := config.MachineName(*cc, n) deleteProfileDirectory(machineName) } } diff --git a/cmd/minikube/cmd/node_delete.go b/cmd/minikube/cmd/node_delete.go index ae04fab410..56e14d9e2d 100644 --- a/cmd/minikube/cmd/node_delete.go +++ b/cmd/minikube/cmd/node_delete.go @@ -18,6 +18,7 @@ package cmd import ( "github.com/spf13/cobra" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/mustload" @@ -46,7 +47,7 @@ var nodeDeleteCmd = &cobra.Command{ } if driver.IsKIC(co.Config.Driver) { - machineName := driver.MachineName(*co.Config, *n) + machineName := config.MachineName(*co.Config, *n) deletePossibleKicLeftOver(machineName, co.Config.Driver) } diff --git a/cmd/minikube/cmd/node_list.go b/cmd/minikube/cmd/node_list.go index 83c0ee04c0..006366b8cc 100644 --- a/cmd/minikube/cmd/node_list.go +++ b/cmd/minikube/cmd/node_list.go @@ -22,7 +22,7 @@ import ( "github.com/spf13/cobra" "k8s.io/klog/v2" - "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/mustload" "k8s.io/minikube/pkg/minikube/reason" @@ -47,7 +47,7 @@ var nodeListCmd = &cobra.Command{ } for _, n := range cc.Nodes { - machineName := driver.MachineName(*cc, n) + machineName := config.MachineName(*cc, n) fmt.Printf("%s\t%s\n", machineName, n.IP) } os.Exit(0) diff --git a/cmd/minikube/cmd/node_start.go b/cmd/minikube/cmd/node_start.go index 7470d62431..dda95ca8eb 100644 --- a/cmd/minikube/cmd/node_start.go +++ b/cmd/minikube/cmd/node_start.go @@ -21,7 +21,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" - "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/mustload" @@ -49,7 +49,7 @@ var nodeStartCmd = &cobra.Command{ exit.Error(reason.GuestNodeRetrieve, "retrieving node", err) } - machineName := driver.MachineName(*cc, *n) + machineName := config.MachineName(*cc, *n) if machine.IsRunning(api, machineName) { out.Step(style.Check, "{{.name}} is already running", out.V{"name": name}) os.Exit(0) diff --git a/cmd/minikube/cmd/node_stop.go b/cmd/minikube/cmd/node_stop.go index db718f311e..65c92f71f8 100644 --- a/cmd/minikube/cmd/node_stop.go +++ b/cmd/minikube/cmd/node_stop.go @@ -18,7 +18,7 @@ package cmd import ( "github.com/spf13/cobra" - "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/mustload" @@ -45,7 +45,7 @@ var nodeStopCmd = &cobra.Command{ exit.Error(reason.GuestNodeRetrieve, "retrieving node", err) } - machineName := driver.MachineName(*cc, *n) + machineName := config.MachineName(*cc, *n) err = machine.StopHost(api, machineName) if err != nil { diff --git a/cmd/minikube/cmd/pause.go b/cmd/minikube/cmd/pause.go index 858d3bef7d..9cb6b46071 100644 --- a/cmd/minikube/cmd/pause.go +++ b/cmd/minikube/cmd/pause.go @@ -24,9 +24,9 @@ import ( "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/cluster" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/cruntime" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/machine" @@ -73,7 +73,7 @@ func runPause(cmd *cobra.Command, args []string) { out.Step(style.Pause, "Pausing node {{.name}} ... ", out.V{"name": name}) - host, err := machine.LoadHost(co.API, driver.MachineName(*co.Config, n)) + host, err := machine.LoadHost(co.API, config.MachineName(*co.Config, n)) if err != nil { exit.Error(reason.GuestLoadHost, "Error getting host", err) } diff --git a/cmd/minikube/cmd/ssh-key.go b/cmd/minikube/cmd/ssh-key.go index 99db155c5e..7cdf6b564e 100644 --- a/cmd/minikube/cmd/ssh-key.go +++ b/cmd/minikube/cmd/ssh-key.go @@ -20,7 +20,7 @@ import ( "path/filepath" "github.com/spf13/cobra" - "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/mustload" @@ -41,7 +41,7 @@ var sshKeyCmd = &cobra.Command{ exit.Error(reason.GuestNodeRetrieve, "retrieving node", err) } - out.Ln(filepath.Join(localpath.MiniPath(), "machines", driver.MachineName(*cc, *n), "id_rsa")) + out.Ln(filepath.Join(localpath.MiniPath(), "machines", config.MachineName(*cc, *n), "id_rsa")) }, } diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 1c1d7b6c6a..13df195611 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -625,7 +625,7 @@ func hostDriver(existing *config.ClusterConfig) string { klog.Warningf("Unable to get control plane from existing config: %v", err) return existing.Driver } - machineName := driver.MachineName(*existing, cp) + machineName := config.MachineName(*existing, cp) h, err := api.Load(machineName) if err != nil { klog.Warningf("api.Load failed for %s: %v", machineName, err) diff --git a/cmd/minikube/cmd/status.go b/cmd/minikube/cmd/status.go index 82f0c729c0..43b191973b 100644 --- a/cmd/minikube/cmd/status.go +++ b/cmd/minikube/cmd/status.go @@ -237,7 +237,7 @@ func writeStatusesAtInterval(duration time.Duration, api libmachine.API, cc *con statuses = append(statuses, st) } else { for _, n := range cc.Nodes { - machineName := driver.MachineName(*cc, n) + machineName := config.MachineName(*cc, n) klog.Infof("checking status of %s ...", machineName) st, err := nodeStatus(api, *cc, n) klog.Infof("%s status: %+v", machineName, st) @@ -301,7 +301,7 @@ func exitCode(statuses []*Status) int { // nodeStatus looks up the status of a node func nodeStatus(api libmachine.API, cc config.ClusterConfig, n config.Node) (*Status, error) { controlPlane := n.ControlPlane - name := driver.MachineName(cc, n) + name := config.MachineName(cc, n) st := &Status{ Name: name, diff --git a/cmd/minikube/cmd/stop.go b/cmd/minikube/cmd/stop.go index 4fd0fadabc..bc2e2d6b51 100644 --- a/cmd/minikube/cmd/stop.go +++ b/cmd/minikube/cmd/stop.go @@ -28,7 +28,6 @@ import ( "github.com/spf13/viper" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/config" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/kubeconfig" "k8s.io/minikube/pkg/minikube/localpath" @@ -138,7 +137,7 @@ func stopProfile(profile string) int { defer api.Close() for _, n := range cc.Nodes { - machineName := driver.MachineName(*cc, n) + machineName := config.MachineName(*cc, n) nonexistent := stop(api, machineName) if !nonexistent { diff --git a/cmd/minikube/cmd/unpause.go b/cmd/minikube/cmd/unpause.go index 3bf538c8f5..0f52ca240d 100644 --- a/cmd/minikube/cmd/unpause.go +++ b/cmd/minikube/cmd/unpause.go @@ -24,9 +24,9 @@ import ( "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/cluster" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/cruntime" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/machine" @@ -71,7 +71,7 @@ var unpauseCmd = &cobra.Command{ out.Step(style.Pause, "Unpausing node {{.name}} ... ", out.V{"name": name}) - machineName := driver.MachineName(*co.Config, n) + machineName := config.MachineName(*co.Config, n) host, err := machine.LoadHost(co.API, machineName) if err != nil { exit.Error(reason.GuestLoadHost, "Error getting host", err) diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index 9ef47ce7e7..3600016c6a 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -186,7 +186,7 @@ https://github.com/kubernetes/minikube/issues/7332`, out.V{"driver_name": cc.Dri exit.Error(reason.GuestCpConfig, "Error getting primary control plane", err) } - mName := driver.MachineName(*cc, cp) + mName := config.MachineName(*cc, cp) host, err := machine.LoadHost(api, mName) if err != nil || !machine.IsRunning(api, mName) { klog.Warningf("%q is not running, setting %s=%v and skipping enablement (err=%v)", mName, addon.Name(), enable, err) @@ -296,8 +296,8 @@ func enableOrDisableStorageClasses(cc *config.ClusterConfig, name string, val st if err != nil { return errors.Wrap(err, "getting control plane") } - if !machine.IsRunning(api, driver.MachineName(*cc, cp)) { - klog.Warningf("%q is not running, writing %s=%v to disk and skipping enablement", driver.MachineName(*cc, cp), name, val) + if !machine.IsRunning(api, config.MachineName(*cc, cp)) { + klog.Warningf("%q is not running, writing %s=%v to disk and skipping enablement", config.MachineName(*cc, cp), name, val) return enableOrDisableAddon(cc, name, val) } diff --git a/pkg/minikube/bootstrapper/bsutil/kubelet.go b/pkg/minikube/bootstrapper/bsutil/kubelet.go index d8a4b7e645..76043824af 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubelet.go +++ b/pkg/minikube/bootstrapper/bsutil/kubelet.go @@ -123,5 +123,5 @@ func KubeNodeName(cc config.ClusterConfig, n config.Node) string { hostname, _ := os.Hostname() return hostname } - return driver.MachineName(cc, n) + return config.MachineName(cc, n) } diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 88ab7ae500..4b0fc2e108 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -709,7 +709,7 @@ func (k *Bootstrapper) JoinCluster(cc config.ClusterConfig, n config.Node, joinC }() // Join the master by specifying its token - joinCmd = fmt.Sprintf("%s --node-name=%s", joinCmd, driver.MachineName(cc, n)) + joinCmd = fmt.Sprintf("%s --node-name=%s", joinCmd, config.MachineName(cc, n)) join := func() error { // reset first to clear any possibly existing state diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index e035cdf401..01f6755795 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -27,7 +27,6 @@ import ( "k8s.io/minikube/pkg/minikube/bootstrapper/kubeadm" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/config" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/machine" ) @@ -61,7 +60,7 @@ func ControlPlaneBootstrapper(mAPI libmachine.API, cc *config.ClusterConfig, boo if err != nil { return nil, nil, errors.Wrap(err, "getting primary control plane") } - h, err := machine.LoadHost(mAPI, driver.MachineName(*cc, cp)) + h, err := machine.LoadHost(mAPI, config.MachineName(*cc, cp)) if err != nil { return nil, nil, errors.Wrap(err, "getting control plane host") } diff --git a/pkg/minikube/config/config_test.go b/pkg/minikube/config/config_test.go index 028d094443..4b4a196950 100644 --- a/pkg/minikube/config/config_test.go +++ b/pkg/minikube/config/config_test.go @@ -188,3 +188,57 @@ func TestEncode(t *testing.T) { b.Reset() } } + +func TestMachineName(t *testing.T) { + testsCases := []struct { + ClusterConfig ClusterConfig + Want string + }{ + { + ClusterConfig: ClusterConfig{Name: "minikube", + Nodes: []Node{ + { + Name: "", + IP: "172.17.0.3", + Port: 8443, + KubernetesVersion: "v1.19.2", + ControlPlane: true, + Worker: true, + }, + }, + }, + Want: "minikube", + }, + + { + ClusterConfig: ClusterConfig{Name: "p2", + Nodes: []Node{ + { + Name: "", + IP: "172.17.0.3", + Port: 8443, + KubernetesVersion: "v1.19.2", + ControlPlane: true, + Worker: true, + }, + { + Name: "m2", + IP: "172.17.0.4", + Port: 0, + KubernetesVersion: "v1.19.2", + ControlPlane: false, + Worker: true, + }, + }, + }, + Want: "p2-m2", + }, + } + + for _, tc := range testsCases { + got := MachineName(tc.ClusterConfig, tc.ClusterConfig.Nodes[len(tc.ClusterConfig.Nodes)-1]) + if got != tc.Want { + t.Errorf("Expected MachineName to be %q but got %q", tc.Want, got) + } + } +} diff --git a/pkg/minikube/config/profile.go b/pkg/minikube/config/profile.go index 5bb5fc2f9d..a632f04859 100644 --- a/pkg/minikube/config/profile.go +++ b/pkg/minikube/config/profile.go @@ -18,6 +18,7 @@ package config import ( "encoding/json" + "fmt" "io/ioutil" "os" "path/filepath" @@ -286,3 +287,12 @@ func ProfileFolderPath(profile string, miniHome ...string) string { } return filepath.Join(miniPath, "profiles", profile) } + +// MachineName returns the name of the machine, as seen by the hypervisor given the cluster and node names +func MachineName(cc ClusterConfig, n Node) string { + // For single node cluster, default to back to old naming + if len(cc.Nodes) == 1 || n.ControlPlane { + return cc.Name + } + return fmt.Sprintf("%s-%s", cc.Name, n.Name) +} diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index 07974b9be1..261f8be5db 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -26,7 +26,6 @@ import ( "k8s.io/klog/v2" "k8s.io/minikube/pkg/drivers/kic/oci" - "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/registry" ) @@ -305,15 +304,6 @@ func SetLibvirtURI(v string) { } -// MachineName returns the name of the machine, as seen by the hypervisor given the cluster and node names -func MachineName(cc config.ClusterConfig, n config.Node) string { - // For single node cluster, default to back to old naming - if len(cc.Nodes) == 1 || n.ControlPlane { - return cc.Name - } - return fmt.Sprintf("%s-%s", cc.Name, n.Name) -} - // IndexFromMachineName returns the order of the container based on it is name func IndexFromMachineName(machineName string) int { // minikube-m02 diff --git a/pkg/minikube/driver/driver_test.go b/pkg/minikube/driver/driver_test.go index 1f6ab86f74..b18fc36cab 100644 --- a/pkg/minikube/driver/driver_test.go +++ b/pkg/minikube/driver/driver_test.go @@ -203,60 +203,6 @@ func TestSuggest(t *testing.T) { } } -func TestMachineName(t *testing.T) { - testsCases := []struct { - ClusterConfig config.ClusterConfig - Want string - }{ - { - ClusterConfig: config.ClusterConfig{Name: "minikube", - Nodes: []config.Node{ - { - Name: "", - IP: "172.17.0.3", - Port: 8443, - KubernetesVersion: "v1.19.2", - ControlPlane: true, - Worker: true, - }, - }, - }, - Want: "minikube", - }, - - { - ClusterConfig: config.ClusterConfig{Name: "p2", - Nodes: []config.Node{ - { - Name: "", - IP: "172.17.0.3", - Port: 8443, - KubernetesVersion: "v1.19.2", - ControlPlane: true, - Worker: true, - }, - { - Name: "m2", - IP: "172.17.0.4", - Port: 0, - KubernetesVersion: "v1.19.2", - ControlPlane: false, - Worker: true, - }, - }, - }, - Want: "p2-m2", - }, - } - - for _, tc := range testsCases { - got := MachineName(tc.ClusterConfig, tc.ClusterConfig.Nodes[len(tc.ClusterConfig.Nodes)-1]) - if got != tc.Want { - t.Errorf("Expected MachineName to be %q but got %q", tc.Want, got) - } - } -} - func TestIndexFromMachineName(t *testing.T) { testCases := []struct { Name string @@ -352,7 +298,7 @@ func TestIndexFromMachineNameClusterConfig(t *testing.T) { } for _, tc := range testsCases { - got := IndexFromMachineName(MachineName(tc.ClusterConfig, tc.ClusterConfig.Nodes[len(tc.ClusterConfig.Nodes)-1])) + got := IndexFromMachineName(config.MachineName(tc.ClusterConfig, tc.ClusterConfig.Nodes[len(tc.ClusterConfig.Nodes)-1])) if got != tc.Want { t.Errorf("expected IndexFromMachineName to be %d but got %d", tc.Want, got) } diff --git a/pkg/minikube/machine/cache_images.go b/pkg/minikube/machine/cache_images.go index fdb21b0f1f..3b5f2d379e 100644 --- a/pkg/minikube/machine/cache_images.go +++ b/pkg/minikube/machine/cache_images.go @@ -36,7 +36,6 @@ import ( "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/cruntime" - "k8s.io/minikube/pkg/minikube/driver" "k8s.io/minikube/pkg/minikube/image" "k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/vmpath" @@ -194,7 +193,7 @@ func CacheAndLoadImages(images []string) error { } for _, n := range c.Nodes { - m := driver.MachineName(*c, n) + m := config.MachineName(*c, n) status, err := Status(api, m) if err != nil { diff --git a/pkg/minikube/machine/cluster_test.go b/pkg/minikube/machine/cluster_test.go index 1710713127..ea32cc36a7 100644 --- a/pkg/minikube/machine/cluster_test.go +++ b/pkg/minikube/machine/cluster_test.go @@ -342,7 +342,7 @@ func TestStopHost(t *testing.T) { cc := defaultClusterConfig cc.Name = viper.GetString("profile") - m := driver.MachineName(cc, config.Node{Name: "minikube"}) + m := config.MachineName(cc, config.Node{Name: "minikube"}) if err := StopHost(api, m); err != nil { t.Fatalf("Unexpected error stopping machine: %v", err) } @@ -364,7 +364,7 @@ func TestDeleteHost(t *testing.T) { cc := defaultClusterConfig cc.Name = viper.GetString("profile") - if err := DeleteHost(api, driver.MachineName(cc, config.Node{Name: "minikube"}), false); err != nil { + if err := DeleteHost(api, config.MachineName(cc, config.Node{Name: "minikube"}), false); err != nil { t.Fatalf("Unexpected error deleting host: %v", err) } } @@ -383,7 +383,7 @@ func TestDeleteHostErrorDeletingVM(t *testing.T) { d := &tests.MockDriver{RemoveError: true, T: t} h.Driver = d - if err := DeleteHost(api, driver.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { + if err := DeleteHost(api, config.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { t.Fatal("Expected error deleting host.") } } @@ -399,7 +399,7 @@ func TestDeleteHostErrorDeletingFiles(t *testing.T) { t.Errorf("createHost failed: %v", err) } - if err := DeleteHost(api, driver.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { + if err := DeleteHost(api, config.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { t.Fatal("Expected error deleting host.") } } @@ -417,7 +417,7 @@ func TestDeleteHostErrMachineNotExist(t *testing.T) { t.Errorf("createHost failed: %v", err) } - if err := DeleteHost(api, driver.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { + if err := DeleteHost(api, config.MachineName(defaultClusterConfig, config.Node{Name: "minikube"}), false); err == nil { t.Fatal("Expected error deleting host.") } } @@ -432,7 +432,7 @@ func TestStatus(t *testing.T) { cc := defaultClusterConfig cc.Name = viper.GetString("profile") - m := driver.MachineName(cc, config.Node{Name: "minikube"}) + m := config.MachineName(cc, config.Node{Name: "minikube"}) checkState := func(expected string, machineName string) { s, err := Status(api, machineName) @@ -452,7 +452,7 @@ func TestStatus(t *testing.T) { cc.Name = viper.GetString("profile") - m = driver.MachineName(cc, config.Node{Name: "minikube"}) + m = config.MachineName(cc, config.Node{Name: "minikube"}) checkState(state.Running.String(), m) diff --git a/pkg/minikube/machine/delete.go b/pkg/minikube/machine/delete.go index 636c5bc729..14023c61c6 100644 --- a/pkg/minikube/machine/delete.go +++ b/pkg/minikube/machine/delete.go @@ -120,7 +120,7 @@ func delete(api libmachine.API, h *host.Host, machineName string) error { // demolish destroys a host by any means necessary - use only if state is inconsistent func demolish(api libmachine.API, cc config.ClusterConfig, n config.Node, h *host.Host) { - machineName := driver.MachineName(cc, n) + machineName := config.MachineName(cc, n) klog.Infof("DEMOLISHING %s ...", machineName) // This will probably fail diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 8e0eeb7f77..929077e622 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -56,7 +56,7 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos klog.Infof("fixHost completed within %s", time.Since(start)) }() - h, err := api.Load(driver.MachineName(*cc, *n)) + h, err := api.Load(config.MachineName(*cc, *n)) if err != nil { return h, errors.Wrap(err, "Error loading existing host. Please try running [minikube delete], then run [minikube start] again.") } @@ -99,7 +99,7 @@ func fixHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node) (*hos } func recreateIfNeeded(api libmachine.API, cc *config.ClusterConfig, n *config.Node, h *host.Host) (*host.Host, error) { - machineName := driver.MachineName(*cc, *n) + machineName := config.MachineName(*cc, *n) machineType := driver.MachineType(cc.Driver) recreated := false s, serr := h.Driver.GetState() diff --git a/pkg/minikube/machine/ssh.go b/pkg/minikube/machine/ssh.go index 7d8404e8c6..8f7cc84f86 100644 --- a/pkg/minikube/machine/ssh.go +++ b/pkg/minikube/machine/ssh.go @@ -26,11 +26,10 @@ import ( "github.com/docker/machine/libmachine/state" "github.com/pkg/errors" "k8s.io/minikube/pkg/minikube/config" - "k8s.io/minikube/pkg/minikube/driver" ) func getHost(api libmachine.API, cc config.ClusterConfig, n config.Node) (*host.Host, error) { - machineName := driver.MachineName(cc, n) + machineName := config.MachineName(cc, n) host, err := LoadHost(api, machineName) if err != nil { return nil, errors.Wrap(err, "host exists and load") diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 7e0c3d795c..301286257b 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -68,7 +68,7 @@ var requiredDirectories = []string{ // StartHost starts a host VM. func StartHost(api libmachine.API, cfg *config.ClusterConfig, n *config.Node) (*host.Host, bool, error) { - machineName := driver.MachineName(*cfg, *n) + machineName := config.MachineName(*cfg, *n) // Prevent machine-driver boot races, as well as our own certificate race releaser, err := acquireMachinesLock(machineName, cfg.Driver) diff --git a/pkg/minikube/mustload/mustload.go b/pkg/minikube/mustload/mustload.go index d3e67adcc4..934ab33373 100644 --- a/pkg/minikube/mustload/mustload.go +++ b/pkg/minikube/mustload/mustload.go @@ -90,7 +90,7 @@ func Running(name string) ClusterController { exit.Error(reason.GuestCpConfig, "Unable to find control plane", err) } - machineName := driver.MachineName(*cc, cp) + machineName := config.MachineName(*cc, cp) hs, err := machine.Status(api, machineName) if err != nil { exit.Error(reason.GuestStatus, "Unable to get machine status", err) diff --git a/pkg/minikube/node/node.go b/pkg/minikube/node/node.go index 6785448d78..672e52276d 100644 --- a/pkg/minikube/node/node.go +++ b/pkg/minikube/node/node.go @@ -67,7 +67,7 @@ func Delete(cc config.ClusterConfig, name string) (*config.Node, error) { return n, errors.Wrap(err, "retrieve") } - m := driver.MachineName(cc, *n) + m := config.MachineName(cc, *n) api, err := machine.NewAPIClient() if err != nil { return n, err @@ -125,7 +125,7 @@ func Retrieve(cc config.ClusterConfig, name string) (*config.Node, int, error) { } // Accept full machine name as well as just node name - if driver.MachineName(cc, n) == name { + if config.MachineName(cc, n) == name { klog.Infof("Couldn't find node name %s, but found it as a machine name, returning it anyway.", name) return &n, i, nil } diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index 5995270aab..d1081fd7bb 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -210,7 +210,7 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) { // Provision provisions the machine/container for the node func Provision(cc *config.ClusterConfig, n *config.Node, apiServer bool, delOnFail bool) (command.Runner, bool, libmachine.API, *host.Host, error) { register.Reg.SetStep(register.StartingNode) - name := driver.MachineName(*cc, *n) + name := config.MachineName(*cc, *n) if apiServer { out.Step(style.ThumbsUp, "Starting control plane node {{.name}} in cluster {{.cluster}}", out.V{"name": name, "cluster": cc.Name}) } else { @@ -377,7 +377,7 @@ func startHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node, del klog.Warningf("error starting host: %v", err) // NOTE: People get very cranky if you delete their prexisting VM. Only delete new ones. if !exists { - err := machine.DeleteHost(api, driver.MachineName(*cc, *n)) + err := machine.DeleteHost(api, config.MachineName(*cc, *n)) if err != nil { klog.Warningf("delete host: %v", err) } @@ -396,7 +396,7 @@ func startHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node, del if delOnFail { klog.Info("Deleting existing host since delete-on-failure was set.") // Delete the failed existing host - err := machine.DeleteHost(api, driver.MachineName(*cc, *n)) + err := machine.DeleteHost(api, config.MachineName(*cc, *n)) if err != nil { klog.Warningf("delete host: %v", err) } diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 4a16ded746..548e4daf14 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -68,7 +68,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { return kic.NewDriver(kic.Config{ ClusterName: cc.Name, - MachineName: driver.MachineName(cc, n), + MachineName: config.MachineName(cc, n), StorePath: localpath.MiniPath(), ImageDigest: cc.KicBaseImage, Mounts: mounts, diff --git a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go index 1e3dc9c7b1..33d0caf3f3 100644 --- a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go +++ b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go @@ -66,7 +66,7 @@ func configure(cfg config.ClusterConfig, n config.Node) (interface{}, error) { return &hyperkit.Driver{ BaseDriver: &drivers.BaseDriver{ - MachineName: driver.MachineName(cfg, n), + MachineName: config.MachineName(cfg, n), StorePath: localpath.MiniPath(), SSHUser: "docker", }, diff --git a/pkg/minikube/registry/drvs/hyperv/hyperv.go b/pkg/minikube/registry/drvs/hyperv/hyperv.go index a6f371fdc2..7f324939d1 100644 --- a/pkg/minikube/registry/drvs/hyperv/hyperv.go +++ b/pkg/minikube/registry/drvs/hyperv/hyperv.go @@ -54,7 +54,7 @@ func init() { } func configure(cfg config.ClusterConfig, n config.Node) (interface{}, error) { - d := hyperv.NewDriver(driver.MachineName(cfg, n), localpath.MiniPath()) + d := hyperv.NewDriver(config.MachineName(cfg, n), localpath.MiniPath()) d.Boot2DockerURL = download.LocalISOResource(cfg.MinikubeISO) d.VSwitch = cfg.HypervVirtualSwitch if d.VSwitch == "" && cfg.HypervUseExternalSwitch { diff --git a/pkg/minikube/registry/drvs/kvm2/kvm2.go b/pkg/minikube/registry/drvs/kvm2/kvm2.go index 55174110ba..4dbce061d1 100644 --- a/pkg/minikube/registry/drvs/kvm2/kvm2.go +++ b/pkg/minikube/registry/drvs/kvm2/kvm2.go @@ -70,7 +70,7 @@ type kvmDriver struct { } func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { - name := driver.MachineName(cc, n) + name := config.MachineName(cc, n) return kvmDriver{ BaseDriver: &drivers.BaseDriver{ MachineName: name, diff --git a/pkg/minikube/registry/drvs/none/none.go b/pkg/minikube/registry/drvs/none/none.go index 6ca39eb10a..8d3955b51d 100644 --- a/pkg/minikube/registry/drvs/none/none.go +++ b/pkg/minikube/registry/drvs/none/none.go @@ -45,7 +45,7 @@ func init() { func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { return none.NewDriver(none.Config{ - MachineName: driver.MachineName(cc, n), + MachineName: config.MachineName(cc, n), StorePath: localpath.MiniPath(), ContainerRuntime: cc.KubernetesConfig.ContainerRuntime, }), nil diff --git a/pkg/minikube/registry/drvs/parallels/parallels.go b/pkg/minikube/registry/drvs/parallels/parallels.go index 8899e74df8..45e888d660 100644 --- a/pkg/minikube/registry/drvs/parallels/parallels.go +++ b/pkg/minikube/registry/drvs/parallels/parallels.go @@ -46,7 +46,7 @@ func init() { } func configure(cfg config.ClusterConfig, n config.Node) (interface{}, error) { - d := parallels.NewDriver(driver.MachineName(cfg, n), localpath.MiniPath()).(*parallels.Driver) + d := parallels.NewDriver(config.MachineName(cfg, n), localpath.MiniPath()).(*parallels.Driver) d.Boot2DockerURL = download.LocalISOResource(cfg.MinikubeISO) d.Memory = cfg.Memory d.CPU = cfg.CPUs diff --git a/pkg/minikube/registry/drvs/podman/podman.go b/pkg/minikube/registry/drvs/podman/podman.go index c33572760a..9c5ddc9316 100644 --- a/pkg/minikube/registry/drvs/podman/podman.go +++ b/pkg/minikube/registry/drvs/podman/podman.go @@ -77,7 +77,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { return kic.NewDriver(kic.Config{ ClusterName: cc.Name, - MachineName: driver.MachineName(cc, n), + MachineName: config.MachineName(cc, n), StorePath: localpath.MiniPath(), ImageDigest: strings.Split(cc.KicBaseImage, "@")[0], // for podman does not support docker images references with both a tag and digest. Mounts: mounts, diff --git a/pkg/minikube/registry/drvs/virtualbox/virtualbox.go b/pkg/minikube/registry/drvs/virtualbox/virtualbox.go index c90f524a65..1d7cdac97f 100644 --- a/pkg/minikube/registry/drvs/virtualbox/virtualbox.go +++ b/pkg/minikube/registry/drvs/virtualbox/virtualbox.go @@ -52,7 +52,7 @@ func init() { } func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { - d := virtualbox.NewDriver(driver.MachineName(cc, n), localpath.MiniPath()) + d := virtualbox.NewDriver(config.MachineName(cc, n), localpath.MiniPath()) d.Boot2DockerURL = download.LocalISOResource(cc.MinikubeISO) d.Memory = cc.Memory d.CPU = cc.CPUs diff --git a/pkg/minikube/registry/drvs/vmware/vmware.go b/pkg/minikube/registry/drvs/vmware/vmware.go index c6e5e0d684..c422b4b60b 100644 --- a/pkg/minikube/registry/drvs/vmware/vmware.go +++ b/pkg/minikube/registry/drvs/vmware/vmware.go @@ -41,7 +41,7 @@ func init() { } func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { - d := vmwcfg.NewConfig(driver.MachineName(cc, n), localpath.MiniPath()) + d := vmwcfg.NewConfig(config.MachineName(cc, n), localpath.MiniPath()) d.Boot2DockerURL = download.LocalISOResource(cc.MinikubeISO) d.Memory = cc.Memory d.CPU = cc.CPUs From f24a3e0a5149780a4d48a3c590f3bbe76b075306 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 11:31:14 -0800 Subject: [PATCH 15/36] fix Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5f98ea01be..867e3f43ce 100644 --- a/Makefile +++ b/Makefile @@ -612,7 +612,7 @@ docker-multi-arch-builder: KICBASE_ARCH = linux/arm64,linux/amd64 KICBASE_IMAGE_REGISTRIES ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase:$(KIC_VERSION) kicbase/stable:$(KIC_VERSION) -.PHONY: push-kic-base-image: +.PHONY: push-kic-base-image push-kic-base-image: docker-multi-arch-builder ifdef AUTOPUSH docker login gcr.io/k8s-minikube From 6c860a48fe94cbfeb970297fabdb4137472d31e1 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 11:49:10 -0800 Subject: [PATCH 16/36] confirm kicbase push --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 867e3f43ce..bd0b4b4486 100644 --- a/Makefile +++ b/Makefile @@ -607,6 +607,7 @@ X_BUILD_ENV ?= DOCKER_CLI_EXPERIMENTAL=enabled .PHONY: docker-multi-arch-builder docker-multi-arch-builder: env $(X_BUILD_ENV) docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + env $(X_BUILD_ENV) docker buildx rm --builder $(X_DOCKER_BUILDER) || true env $(X_BUILD_ENV) docker buildx create --name kicbase-builder --buildkitd-flags '--debug' --use || true KICBASE_ARCH = linux/arm64,linux/amd64 @@ -618,6 +619,11 @@ ifdef AUTOPUSH docker login gcr.io/k8s-minikube docker login docker.pkg.github.com docker login +endif + $(foreach REG,$(KICBASE_IMAGE_REGISTRIES), \ + @docker pull $(REG) && echo "Image already exist in registry" && exit 1 || echo "Image doesn't exist in registry";) +ifndef AUTOPUSH + $(call user_confirm, 'Are you sure you want to push $(KICBASE_IMAGE_REGISTRIES) ?') endif env $(X_BUILD_ENV) docker buildx build --platform $(KICBASE_ARCH) $(addprefix -t ,$(KICBASE_IMAGE_REGISTRIES)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase From 921306d88a22a106f80b83b5396ee76d7970991c Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 13:31:13 -0800 Subject: [PATCH 17/36] fix fallback kicbaseimages list --- pkg/drivers/kic/types.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 204422704d..e060fec10b 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -35,9 +35,6 @@ var ( // FallbackImages are backup base images in case gcr isn't available FallbackImages = []string{ - // the amd64 only base image is used to spin up kic containers - fmt.Sprintf("gcr.io/k8s-minikube/kicbase:%s@sha256:%s", Version, baseImageSHA), - // the fallback of BaseImage in case gcr.io is not available. stored in docker hub // same image is push to https://github.com/kicbase/stable fmt.Sprintf("kicbase/stable:%s@sha256:%s", Version, baseImageSHA), From 2622e9583c8480cee7265f00577e4313c4efe5e6 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Fri, 8 Jan 2021 13:49:27 -0800 Subject: [PATCH 18/36] bump kicbase version to v0.0.16-snapshot1 --- pkg/drivers/kic/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index e060fec10b..597d83c3fc 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,7 +24,7 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.15-snapshot4" + Version = "v0.0.16-snapshot1" // SHA of the kic base image baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" ) From 4b8b2bc6dbe5e03e598237f0a9efc543ed27c16f Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Sat, 9 Jan 2021 18:46:40 +0000 Subject: [PATCH 19/36] Fix flackness of docker-env in parrallel --- cmd/minikube/cmd/delete.go | 9 +++++++++ cmd/minikube/cmd/docker-env.go | 2 +- pkg/provision/provision.go | 36 +++++++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index 7bfe9bfda2..ac300620ab 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -495,6 +495,15 @@ func deleteProfileDirectory(profile string) { exit.Error(reason.GuestProfileDeletion, "Unable to remove machine directory", err) } } + + certDir := filepath.Join(localpath.MiniPath(), profile) + if _, err := os.Stat(certDir); err == nil { + out.Step(style.DeletingHost, `Removing {{.directory}} ...`, out.V{"directory": certDir}) + err := os.RemoveAll(certDir) + if err != nil { + exit.Error(reason.GuestProfileDeletion, "Unable to remove machine directory", err) + } + } } func deleteMachineDirectories(cc *config.ClusterConfig) { diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 3cfced47bc..d79928a357 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -306,7 +306,7 @@ var dockerEnvCmd = &cobra.Command{ ssh: sshHost, hostIP: hostIP, port: port, - certsDir: localpath.MakeMiniPath("certs"), + certsDir: localpath.MakeMiniPath(cname), noProxy: noProxy, username: d.GetSSHUsername(), hostname: hostname, diff --git a/pkg/provision/provision.go b/pkg/provision/provision.go index 20fa0ddb65..72f3d22793 100644 --- a/pkg/provision/provision.go +++ b/pkg/provision/provision.go @@ -40,6 +40,7 @@ import ( "k8s.io/minikube/pkg/minikube/assets" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/config" + "k8s.io/minikube/pkg/minikube/localpath" ) // generic interface for minikube provisioner @@ -102,7 +103,11 @@ func configureAuth(p miniProvisioner) error { return errors.Wrap(err, "error getting ssh hostname during provisioning") } - if err := copyHostCerts(authOptions); err != nil { + //if err := copyHostCerts(authOptions); err != nil { + // return err + //} + + if err := copyCertsForDockEnv(authOptions, machineName); err != nil { return err } @@ -161,6 +166,35 @@ func copyHostCerts(authOptions auth.Options) error { return nil } +func copyCertsForDockEnv(authOptions auth.Options, machineName string) error { + klog.Infof("copyCertsForDockEnv") + + storePath := localpath.MakeMiniPath(machineName) + err := os.MkdirAll(storePath, 0700) + if err != nil { + klog.Errorf("mkdir failed: %v", err) + } + + hostCerts := map[string]string{ + authOptions.CaCertPath: path.Join(storePath, "ca.pem"), + authOptions.ClientCertPath: path.Join(storePath, "cert.pem"), + authOptions.ClientKeyPath: path.Join(storePath, "key.pem"), + } + + execRunner := command.NewExecRunner(false) + for src, dst := range hostCerts { + f, err := assets.NewFileAsset(src, path.Dir(dst), filepath.Base(dst), "0777") + if err != nil { + return errors.Wrapf(err, "open cert file: %s", src) + } + if err := execRunner.Copy(f); err != nil { + return errors.Wrapf(err, "transferring file: %+v", f) + } + } + + return nil +} + func copyRemoteCerts(authOptions auth.Options, driver drivers.Driver) error { klog.Infof("copyRemoteCerts") From a08f6e946fe5ab060989ca8e1f5c7f944750ce50 Mon Sep 17 00:00:00 2001 From: alonyb Date: Mon, 11 Jan 2021 21:19:46 -0500 Subject: [PATCH 20/36] add spinner stop in err messages --- pkg/minikube/out/out.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/minikube/out/out.go b/pkg/minikube/out/out.go index 50f09600f5..74b7e0821c 100644 --- a/pkg/minikube/out/out.go +++ b/pkg/minikube/out/out.go @@ -180,6 +180,10 @@ func Err(format string, a ...interface{}) { klog.Warningf(format, a...) + // if spin is active from a previous step, it will stop spinner displaying + if spin.Active() { + spin.Stop() + } _, err := fmt.Fprintf(errFile, format, a...) if err != nil { klog.Errorf("Fprint failed: %v", err) From 7ca15031e8e597dd787cd16ec8aac4e9e98b5b0b Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Mon, 11 Jan 2021 18:30:39 -0800 Subject: [PATCH 21/36] fix kicbase sha1 --- pkg/drivers/kic/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 597d83c3fc..f126f6fe8f 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -26,7 +26,7 @@ const ( // Version is the current version of kic Version = "v0.0.16-snapshot1" // SHA of the kic base image - baseImageSHA = "ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16" + baseImageSHA = "dff16232547bb3ac3f2a9e09a42246a96ecf8f40d9a1c5bcf5a37953690954b6" ) var ( From d8866394797410f44663052083b82f0134031a9f Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 12 Jan 2021 11:31:09 -0800 Subject: [PATCH 22/36] fix unit tests --- site/content/en/docs/commands/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index aac90df39d..fe1ae89539 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.15-snapshot4@sha256:ef1f485b5a1cfa4c989bc05e153f0a8525968ec999e242efff871cbb31649c16") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.16-snapshot1@sha256:dff16232547bb3ac3f2a9e09a42246a96ecf8f40d9a1c5bcf5a37953690954b6") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") From 480c36d0c060f20712f57ddd7708d6ff467b6bba Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 12 Jan 2021 13:55:22 -0800 Subject: [PATCH 23/36] trigger build --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index bd0b4b4486..a23e06f47a 100644 --- a/Makefile +++ b/Makefile @@ -845,3 +845,4 @@ else export UPDATE_TARGET="all" && \ go run update_kubernetes_version.go) endif + From a13d15fe8592d6061cef54b3ddf74bcb0e1377c9 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 12 Jan 2021 15:56:07 -0800 Subject: [PATCH 24/36] remove old make target for pushing kicbase --- Makefile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Makefile b/Makefile index a23e06f47a..964b049e27 100644 --- a/Makefile +++ b/Makefile @@ -675,15 +675,6 @@ push-kic-base-image-hub: kic-base-image ## Push kic-base to docker hub docker tag local/kicbase:latest $(KIC_BASE_IMAGE_HUB) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_HUB) -.PHONY: push-kic-base-image-x86 -push-kic-base-image-x86: ## Push local/kicbase:latest to all remote registries -ifndef AUTOPUSH - $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') - $(MAKE) push-kic-base-image AUTOPUSH=true -else - $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh -endif - .PHONY: out/gvisor-addon out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Build gvisor addon $(if $(quiet),@echo " GO $@") From 837cfb7aca14b02b3736d3926b31806b6640474e Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 12 Jan 2021 15:57:48 -0800 Subject: [PATCH 25/36] Revert "remove old make target for pushing kicbase" This reverts commit a13d15fe8592d6061cef54b3ddf74bcb0e1377c9. --- Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile b/Makefile index 964b049e27..a23e06f47a 100644 --- a/Makefile +++ b/Makefile @@ -675,6 +675,15 @@ push-kic-base-image-hub: kic-base-image ## Push kic-base to docker hub docker tag local/kicbase:latest $(KIC_BASE_IMAGE_HUB) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_HUB) +.PHONY: push-kic-base-image-x86 +push-kic-base-image-x86: ## Push local/kicbase:latest to all remote registries +ifndef AUTOPUSH + $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') + $(MAKE) push-kic-base-image AUTOPUSH=true +else + $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh +endif + .PHONY: out/gvisor-addon out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Build gvisor addon $(if $(quiet),@echo " GO $@") From 2ca3cd204f575e2e1855fbe46458f1bc2f2dfd27 Mon Sep 17 00:00:00 2001 From: Ilya Zuyev Date: Tue, 12 Jan 2021 16:02:27 -0800 Subject: [PATCH 26/36] Fix Makefile --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index a23e06f47a..7e4ca12576 100644 --- a/Makefile +++ b/Makefile @@ -614,7 +614,7 @@ KICBASE_ARCH = linux/arm64,linux/amd64 KICBASE_IMAGE_REGISTRIES ?= $(REGISTRY)/kicbase:$(KIC_VERSION) $(REGISTRY_GH)/kicbase:$(KIC_VERSION) kicbase/stable:$(KIC_VERSION) .PHONY: push-kic-base-image -push-kic-base-image: docker-multi-arch-builder +push-kic-base-image: docker-multi-arch-builder ## Push multi-arch local/kicbase:latest to all remote registries ifdef AUTOPUSH docker login gcr.io/k8s-minikube docker login docker.pkg.github.com @@ -675,8 +675,8 @@ push-kic-base-image-hub: kic-base-image ## Push kic-base to docker hub docker tag local/kicbase:latest $(KIC_BASE_IMAGE_HUB) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_HUB) -.PHONY: push-kic-base-image-x86 -push-kic-base-image-x86: ## Push local/kicbase:latest to all remote registries +.PHONY: push-kic-base-image-x86-deprecated +push-kic-base-image-x86-deprecated: ## Push legacy, non-multiarch local/kicbase:latest to all remote registries ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true From 44b453019e5003b485af81180f79ad5a4bb4e6dd Mon Sep 17 00:00:00 2001 From: alonyb Date: Tue, 12 Jan 2021 21:33:44 -0500 Subject: [PATCH 27/36] add spin stop in WarningT output --- pkg/minikube/out/out.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/minikube/out/out.go b/pkg/minikube/out/out.go index 74b7e0821c..976d7ca743 100644 --- a/pkg/minikube/out/out.go +++ b/pkg/minikube/out/out.go @@ -208,6 +208,10 @@ func FatalT(format string, a ...V) { // WarningT is a shortcut for writing a templated warning message to stderr func WarningT(format string, a ...V) { if JSON { + // if spin is active from a previous step, it will stop spinner displaying + if spin.Active() { + spin.Stop() + } st, _ := stylized(style.Warning, useColor, format, a...) register.PrintWarning(st) return From baf929b14e7fca3f25407e5b97f2b5dae791ce4d Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 07:21:31 +0000 Subject: [PATCH 28/36] Add file lock for protect certs generation --- cmd/minikube/cmd/delete.go | 9 --------- cmd/minikube/cmd/docker-env.go | 2 +- go.mod | 1 + go.sum | 2 ++ pkg/minikube/machine/client.go | 14 ++++++++++++- pkg/provision/provision.go | 36 +--------------------------------- 6 files changed, 18 insertions(+), 46 deletions(-) diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index ac300620ab..7bfe9bfda2 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -495,15 +495,6 @@ func deleteProfileDirectory(profile string) { exit.Error(reason.GuestProfileDeletion, "Unable to remove machine directory", err) } } - - certDir := filepath.Join(localpath.MiniPath(), profile) - if _, err := os.Stat(certDir); err == nil { - out.Step(style.DeletingHost, `Removing {{.directory}} ...`, out.V{"directory": certDir}) - err := os.RemoveAll(certDir) - if err != nil { - exit.Error(reason.GuestProfileDeletion, "Unable to remove machine directory", err) - } - } } func deleteMachineDirectories(cc *config.ClusterConfig) { diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index d79928a357..3cfced47bc 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -306,7 +306,7 @@ var dockerEnvCmd = &cobra.Command{ ssh: sshHost, hostIP: hostIP, port: port, - certsDir: localpath.MakeMiniPath(cname), + certsDir: localpath.MakeMiniPath("certs"), noProxy: noProxy, username: d.GetSSHUsername(), hostname: hostname, diff --git a/go.mod b/go.mod index 0ecc3be78e..eb451d571e 100644 --- a/go.mod +++ b/go.mod @@ -46,6 +46,7 @@ require ( github.com/johanneswuerbach/nfsexports v0.0.0-20200318065542-c48c3734757f github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d // indirect + github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect github.com/juju/mutex v0.0.0-20180619145857-d21b13acf4bf github.com/juju/retry v0.0.0-20180821225755-9058e192b216 // indirect diff --git a/go.sum b/go.sum index 1ce4cf5266..3a67a7831b 100644 --- a/go.sum +++ b/go.sum @@ -720,6 +720,8 @@ github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c h1:3UvYABOQRhJAApj9MdCN github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d h1:hJXjZMxj0SWlMoQkzeZDLi2cmeiWKa7y1B8Rg+qaoEc= github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b h1:FQ7+9fxhyp82ks9vAuyPzG0/vVbWwMwLJ+P6yJI5FN8= +github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b/go.mod h1:HMcgvsgd0Fjj4XXDkbjdmlbI505rUPBs6WBMYg2pXks= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= github.com/juju/mutex v0.0.0-20180619145857-d21b13acf4bf h1:2d3cilQly1OpAfZcn4QRuwDOdVoHsM4cDTkcKbmO760= diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index bbc5397e22..1f55955f55 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -40,6 +40,7 @@ import ( "github.com/docker/machine/libmachine/state" "github.com/docker/machine/libmachine/swarm" "github.com/docker/machine/libmachine/version" + "github.com/juju/fslock" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/command" @@ -71,6 +72,7 @@ func NewAPIClient(miniHome ...string) (libmachine.API, error) { storePath: storePath, Filestore: persist.NewFilestore(storePath, certsDir, certsDir), legacyClient: NewRPCClient(storePath, certsDir), + flock: fslock.New(localpath.MakeMiniPath("fileLock.txt")), }, nil } @@ -81,6 +83,7 @@ type LocalClient struct { storePath string *persist.Filestore legacyClient libmachine.API + flock *fslock.Lock } // NewHost creates a new Host @@ -183,7 +186,16 @@ func (api *LocalClient) Create(h *host.Host) error { }{ { "bootstrapping certificates", - func() error { return cert.BootstrapCertificates(h.AuthOptions()) }, + func() error { + // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error + lockErr := api.flock.LockWithTimeout(time.Second * 5) + if lockErr != nil { + return fmt.Errorf("falied to acquire lock > " + lockErr.Error()) + } + certErr := cert.BootstrapCertificates(h.AuthOptions()) + api.flock.Unlock() + return certErr + }, }, { "precreate", diff --git a/pkg/provision/provision.go b/pkg/provision/provision.go index 72f3d22793..20fa0ddb65 100644 --- a/pkg/provision/provision.go +++ b/pkg/provision/provision.go @@ -40,7 +40,6 @@ import ( "k8s.io/minikube/pkg/minikube/assets" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/config" - "k8s.io/minikube/pkg/minikube/localpath" ) // generic interface for minikube provisioner @@ -103,11 +102,7 @@ func configureAuth(p miniProvisioner) error { return errors.Wrap(err, "error getting ssh hostname during provisioning") } - //if err := copyHostCerts(authOptions); err != nil { - // return err - //} - - if err := copyCertsForDockEnv(authOptions, machineName); err != nil { + if err := copyHostCerts(authOptions); err != nil { return err } @@ -166,35 +161,6 @@ func copyHostCerts(authOptions auth.Options) error { return nil } -func copyCertsForDockEnv(authOptions auth.Options, machineName string) error { - klog.Infof("copyCertsForDockEnv") - - storePath := localpath.MakeMiniPath(machineName) - err := os.MkdirAll(storePath, 0700) - if err != nil { - klog.Errorf("mkdir failed: %v", err) - } - - hostCerts := map[string]string{ - authOptions.CaCertPath: path.Join(storePath, "ca.pem"), - authOptions.ClientCertPath: path.Join(storePath, "cert.pem"), - authOptions.ClientKeyPath: path.Join(storePath, "key.pem"), - } - - execRunner := command.NewExecRunner(false) - for src, dst := range hostCerts { - f, err := assets.NewFileAsset(src, path.Dir(dst), filepath.Base(dst), "0777") - if err != nil { - return errors.Wrapf(err, "open cert file: %s", src) - } - if err := execRunner.Copy(f); err != nil { - return errors.Wrapf(err, "transferring file: %+v", f) - } - } - - return nil -} - func copyRemoteCerts(authOptions auth.Options, driver drivers.Driver) error { klog.Infof("copyRemoteCerts") From cbf602e7f08b2feb758b383497c8d1e990f72da2 Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 07:37:23 +0000 Subject: [PATCH 29/36] change unlock to defer --- pkg/minikube/machine/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 1f55955f55..25cd16cb4d 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -192,8 +192,8 @@ func (api *LocalClient) Create(h *host.Host) error { if lockErr != nil { return fmt.Errorf("falied to acquire lock > " + lockErr.Error()) } + defer api.flock.Unlock() certErr := cert.BootstrapCertificates(h.AuthOptions()) - api.flock.Unlock() return certErr }, }, From 948c1b5f090a6ca895b6f92bc25bb4cf3381227c Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 07:52:27 +0000 Subject: [PATCH 30/36] check unlock return value --- pkg/minikube/machine/client.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 25cd16cb4d..aaf84359ee 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -192,7 +192,12 @@ func (api *LocalClient) Create(h *host.Host) error { if lockErr != nil { return fmt.Errorf("falied to acquire lock > " + lockErr.Error()) } - defer api.flock.Unlock() + defer func() { + lockErr = api.flock.Unlock() + if lockErr != nil { + klog.Errorf("falied to release lock > %s", lockErr.Error()) + } + }() certErr := cert.BootstrapCertificates(h.AuthOptions()) return certErr }, From 376399cc32e5678c142d20016b63c83a678872e3 Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 17:37:48 +0000 Subject: [PATCH 31/36] Change naming of lock and log format --- pkg/minikube/machine/client.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index aaf84359ee..73db9e0de5 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -72,7 +72,7 @@ func NewAPIClient(miniHome ...string) (libmachine.API, error) { storePath: storePath, Filestore: persist.NewFilestore(storePath, certsDir, certsDir), legacyClient: NewRPCClient(storePath, certsDir), - flock: fslock.New(localpath.MakeMiniPath("fileLock.txt")), + flock: fslock.New(localpath.MakeMiniPath("machine_client.lock")), }, nil } @@ -190,12 +190,12 @@ func (api *LocalClient) Create(h *host.Host) error { // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error lockErr := api.flock.LockWithTimeout(time.Second * 5) if lockErr != nil { - return fmt.Errorf("falied to acquire lock > " + lockErr.Error()) + return fmt.Errorf("failed to acquire bootstrap client lock: %v " + lockErr.Error()) } defer func() { lockErr = api.flock.Unlock() if lockErr != nil { - klog.Errorf("falied to release lock > %s", lockErr.Error()) + klog.Errorf("falied to release bootstrap cert client lock %v", lockErr.Error()) } }() certErr := cert.BootstrapCertificates(h.AuthOptions()) From bbbf0d9bb6fd34985e4bb5f930e29453341dbba4 Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 18:39:23 +0000 Subject: [PATCH 32/36] Add issue link and comment --- pkg/minikube/machine/client.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 73db9e0de5..59f134ece2 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -187,7 +187,9 @@ func (api *LocalClient) Create(h *host.Host) error { { "bootstrapping certificates", func() error { - // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error + // Due to https://github.com/docker/machine/issues/3634, we need to have lock for certs generation, otherwise + // it will break Docker-Env test in parallel tesing. + // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error. lockErr := api.flock.LockWithTimeout(time.Second * 5) if lockErr != nil { return fmt.Errorf("failed to acquire bootstrap client lock: %v " + lockErr.Error()) @@ -195,7 +197,7 @@ func (api *LocalClient) Create(h *host.Host) error { defer func() { lockErr = api.flock.Unlock() if lockErr != nil { - klog.Errorf("falied to release bootstrap cert client lock %v", lockErr.Error()) + klog.Errorf("falied to release bootstrap cert client lock: %v", lockErr.Error()) } }() certErr := cert.BootstrapCertificates(h.AuthOptions()) From 4e368f0c40fe18970707b3e49677b7340cba8d07 Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 18:45:09 +0000 Subject: [PATCH 33/36] Modify comment --- pkg/minikube/machine/client.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 59f134ece2..221c54af4e 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -187,8 +187,7 @@ func (api *LocalClient) Create(h *host.Host) error { { "bootstrapping certificates", func() error { - // Due to https://github.com/docker/machine/issues/3634, we need to have lock for certs generation, otherwise - // it will break Docker-Env test in parallel tesing. + // because issue #10107 lock is needed to avoid race conditiion minikube in paralel Docker-Env test. // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error. lockErr := api.flock.LockWithTimeout(time.Second * 5) if lockErr != nil { From e933166cf2923c0df528b964222dd6ff39602935 Mon Sep 17 00:00:00 2001 From: Yanshu Zhao Date: Wed, 13 Jan 2021 18:47:12 +0000 Subject: [PATCH 34/36] Modify again --- pkg/minikube/machine/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 221c54af4e..1ad2263ae5 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -187,7 +187,7 @@ func (api *LocalClient) Create(h *host.Host) error { { "bootstrapping certificates", func() error { - // because issue #10107 lock is needed to avoid race conditiion minikube in paralel Docker-Env test. + // Lock is needed to avoid race conditiion in parallel Docker-Env test because issue #10107. // CA cert and client cert should be generated atomically, otherwise might cause bad certificate error. lockErr := api.flock.LockWithTimeout(time.Second * 5) if lockErr != nil { From 94ea2bacefc22c809ee5b35fc278c57df49fd304 Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Wed, 13 Jan 2021 18:22:29 -0700 Subject: [PATCH 35/36] Removed exec permission from files that should not have --- site/content/en/docs/_index.md | 0 site/content/en/docs/handbook/controls.md | 0 site/content/en/docs/tutorials/_index.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 site/content/en/docs/_index.md mode change 100755 => 100644 site/content/en/docs/handbook/controls.md mode change 100755 => 100644 site/content/en/docs/tutorials/_index.md diff --git a/site/content/en/docs/_index.md b/site/content/en/docs/_index.md old mode 100755 new mode 100644 diff --git a/site/content/en/docs/handbook/controls.md b/site/content/en/docs/handbook/controls.md old mode 100755 new mode 100644 diff --git a/site/content/en/docs/tutorials/_index.md b/site/content/en/docs/tutorials/_index.md old mode 100755 new mode 100644 From 85eca7d7b7e8106f2abf2e363f56a902b314f6d7 Mon Sep 17 00:00:00 2001 From: Ling Samuel Date: Wed, 13 Jan 2021 16:52:45 +0800 Subject: [PATCH 36/36] Increase functional test DockerEnv timeout Signed-off-by: Ling Samuel --- test/integration/functional_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 1b4b009906..2342152524 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -161,7 +161,7 @@ func validateNodeLabels(ctx context.Context, t *testing.T, profile string) { // check functionality of minikube after evaling docker-env func validateDockerEnv(ctx context.Context, t *testing.T, profile string) { defer PostMortemLogs(t, profile) - mctx, cancel := context.WithTimeout(ctx, Seconds(30)) + mctx, cancel := context.WithTimeout(ctx, Seconds(120)) defer cancel() var rr *RunResult var err error @@ -183,7 +183,7 @@ func validateDockerEnv(ctx context.Context, t *testing.T, profile string) { t.Fatalf("expected status output to include 'Running' after eval docker-env but got: *%s*", rr.Output()) } - mctx, cancel = context.WithTimeout(ctx, Seconds(30)) + mctx, cancel = context.WithTimeout(ctx, Seconds(60)) defer cancel() // do a eval $(minikube -p profile docker-env) and check if we are point to docker inside minikube if runtime.GOOS == "windows" { // testing docker-env eval in powershell