Skip to content

Commit bd905bb

Browse files
committed
kvm: Convert to internal driver
Remove the docker-machine-driver-kvm2 wrapper and use the kvm driver as internal driver. To avoid dependency on libvirt shared library on Linux, we build now with libvirt_dlopen tag. With this we don't need libvirt devel libraies during build, and in runtime we will fail if libvirt shared library is not installed. May need more work on checking if libvirt shared library is installed and recommending installing libvirt to use the driver.
1 parent 449928a commit bd905bb

File tree

19 files changed

+19
-414
lines changed

19 files changed

+19
-414
lines changed

Makefile

Lines changed: 12 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ MARKDOWNLINT ?= markdownlint
150150

151151
MINIKUBE_MARKDOWN_FILES := README.md CONTRIBUTING.md CHANGELOG.md
152152

153-
MINIKUBE_BUILD_TAGS :=
153+
# libvirt_dlopen is used only linux to avoid linking with libvirt shared library.
154+
MINIKUBE_BUILD_TAGS := libvirt_dlopen
155+
154156
MINIKUBE_INTEGRATION_BUILD_TAGS := integration $(MINIKUBE_BUILD_TAGS)
155157

156158
CMD_SOURCE_DIRS = cmd pkg deploy/addons translations
@@ -163,9 +165,6 @@ ADDON_FILES = $(shell find "deploy/addons" -type f | grep -v "\.go")
163165
TRANSLATION_FILES = $(shell find "translations" -type f | grep -v "\.go")
164166
ASSET_FILES = $(ADDON_FILES) $(TRANSLATION_FILES)
165167

166-
# kvm2 ldflags
167-
KVM2_LDFLAGS := -X k8s.io/minikube/pkg/drivers/kvm.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=$(COMMIT)
168-
169168
# hyperkit ldflags
170169
HYPERKIT_LDFLAGS := -X k8s.io/minikube/pkg/drivers/hyperkit.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/hyperkit.gitCommitID=$(COMMIT)
171170

@@ -365,18 +364,12 @@ all: cross drivers e2e-cross cross-tars exotic retro out/gvisor-addon ## Build a
365364

366365
# After https://github.com/kubernetes/minikube/issues/19959 is fixed kvm2-arm64 can be added back
367366
.PHONY: drivers
368-
drivers: ## Build Hyperkit and KVM2 drivers
369-
drivers: docker-machine-driver-hyperkit \
370-
docker-machine-driver-kvm2 \
371-
out/docker-machine-driver-kvm2-amd64
372-
367+
drivers: ## Build external drivers
368+
drivers: docker-machine-driver-hyperkit
373369

374370
.PHONY: docker-machine-driver-hyperkit
375371
docker-machine-driver-hyperkit: out/docker-machine-driver-hyperkit ## Build Hyperkit driver
376372

377-
.PHONY: docker-machine-driver-kvm2
378-
docker-machine-driver-kvm2: out/docker-machine-driver-kvm2 ## Build KVM2 driver
379-
380373
.PHONY: integration
381374
integration: out/minikube$(IS_EXE) ## Trigger minikube integration test, logs to ./out/testout_COMMIT.txt
382375
go test -ldflags="${MINIKUBE_LDFLAGS}" -v -test.timeout=90m $(INTEGRATION_TESTS_TO_RUN) --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" $(TEST_ARGS) 2>&1 | tee "./out/testout_$(COMMIT_SHORT).txt"
@@ -476,7 +469,6 @@ checksum: ## Generate checksums
476469
for f in out/minikube-amd64.iso out/minikube-arm64.iso out/minikube-linux-amd64 out/minikube-linux-arm \
477470
out/minikube-linux-arm64 out/minikube-linux-ppc64le out/minikube-linux-s390x \
478471
out/minikube-darwin-amd64 out/minikube-darwin-arm64 out/minikube-windows-amd64.exe \
479-
out/docker-machine-driver-kvm2 out/docker-machine-driver-kvm2-amd64 out/docker-machine-driver-kvm2-arm64 \
480472
out/docker-machine-driver-hyperkit; do \
481473
if [ -f "$${f}" ]; then \
482474
openssl sha256 "$${f}" | awk '{print $$2}' > "$${f}.sha256" ; \
@@ -535,9 +527,9 @@ out/linters/golangci-lint-$(GOLINT_VERSION):
535527
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
536528
lint:
537529
docker run --rm -v `pwd`:/app:Z -w /app golangci/golangci-lint:$(GOLINT_VERSION) \
538-
golangci-lint run ${GOLINT_OPTIONS} ./..."
539-
# --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit"
540-
# The "--skip-dirs" parameter is no longer supported in the V2 version. If you need to skip the directory,
530+
golangci-lint run ${GOLINT_OPTIONS} ./..."
531+
# --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit"
532+
# The "--skip-dirs" parameter is no longer supported in the V2 version. If you need to skip the directory,
541533
# add it under "linters.settings.exclusions.paths" in the ".golangci.yaml" file.
542534
else
543535
lint: out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint
@@ -570,10 +562,7 @@ out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants")
570562

571563
.PHONY: debs ## Build all deb packages
572564
debs: out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb \
573-
out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb \
574-
out/docker-machine-driver-kvm2_$(DEB_VERSION).deb \
575-
out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb
576-
# out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb
565+
out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb
577566

578567
.PHONY: deb_version
579568
deb_version:
@@ -637,8 +626,8 @@ out/repodata/repomd.xml: out/minikube-$(RPM_VERSION).rpm
637626
-u "$(MINIKUBE_RELEASES_URL)/$(VERSION)/" out
638627

639628
.SECONDEXPANSION:
640-
TAR_TARGETS_linux-amd64 := out/minikube-linux-amd64 out/docker-machine-driver-kvm2
641-
TAR_TARGETS_linux-arm64 := out/minikube-linux-arm64 #out/docker-machine-driver-kvm2
629+
TAR_TARGETS_linux-amd64 := out/minikube-linux-amd64
630+
TAR_TARGETS_linux-arm64 := out/minikube-linux-arm64
642631
TAR_TARGETS_darwin-amd64 := out/minikube-darwin-amd64 out/docker-machine-driver-hyperkit
643632
TAR_TARGETS_darwin-arm64 := out/minikube-darwin-arm64 #out/docker-machine-driver-hyperkit
644633
TAR_TARGETS_windows-amd64 := out/minikube-windows-amd64.exe
@@ -850,54 +839,12 @@ update-leaderboard:
850839
update-yearly-leaderboard:
851840
hack/yearly-leaderboard.sh
852841

853-
out/docker-machine-driver-kvm2: out/docker-machine-driver-kvm2-$(GOARCH)
854842
# skipping kvm2-arm64 till https://github.com/kubernetes/minikube/issues/19959 is fixed
855843
ifneq ($(GOARCH),arm64)
856844
$(if $(quiet),@echo " CP $@")
857845
$(Q)cp $< $@
858846
endif
859847

860-
out/docker-machine-driver-kvm2-x86_64: out/docker-machine-driver-kvm2-amd64
861-
$(if $(quiet),@echo " CP $@")
862-
$(Q)cp $< $@
863-
864-
# https://github.com/kubernetes/minikube/issues/19959
865-
out/docker-machine-driver-kvm2-aarch64: out/docker-machine-driver-kvm2-arm64
866-
$(if $(quiet),@echo " CP $@")
867-
$(Q)cp $< $@
868-
869-
870-
out/docker-machine-driver-kvm2_$(DEB_VERSION).deb: out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_amd64.deb
871-
cp $< $@
872-
873-
out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_%.deb: out/docker-machine-driver-kvm2-%
874-
cp -r installers/linux/deb/kvm2_deb_template out/docker-machine-driver-kvm2_$(DEB_VERSION)
875-
chmod 0755 out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN
876-
sed -E -i -e 's/--VERSION--/$(DEB_VERSION)/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control
877-
sed -E -i -e 's/--ARCH--/'$*'/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control
878-
mkdir -p out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin
879-
cp $< out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin/docker-machine-driver-kvm2
880-
fakeroot dpkg-deb --build out/docker-machine-driver-kvm2_$(DEB_VERSION) $@
881-
rm -rf out/docker-machine-driver-kvm2_$(DEB_VERSION)
882-
883-
out/docker-machine-driver-kvm2-$(RPM_VERSION).rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm
884-
cp $< $@
885-
886-
out/docker-machine-driver-kvm2_$(RPM_VERSION).amd64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm
887-
cp $< $@
888-
889-
out/docker-machine-driver-kvm2_$(RPM_VERSION).arm64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.aarch64.rpm
890-
cp $< $@
891-
892-
out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.%.rpm: out/docker-machine-driver-kvm2-%
893-
cp -r installers/linux/rpm/kvm2_rpm_template out/docker-machine-driver-kvm2-$(RPM_VERSION)
894-
sed -E -i -e 's/--VERSION--/'$(RPM_VERSION)'/g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
895-
sed -E -i -e 's|--OUT--|'$(PWD)/out'|g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
896-
rpmbuild -bb -D "_rpmdir $(PWD)/out" --target $* \
897-
out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
898-
@mv out/$*/docker-machine-driver-kvm2-$(RPM_VERSION)-0.$*.rpm out/ && rmdir out/$*
899-
rm -rf out/docker-machine-driver-kvm2-$(RPM_VERSION)
900-
901848
.PHONY: kvm-image-amd64
902849
kvm-image-amd64: installers/linux/kvm/Dockerfile.amd64 ## Convenient alias to build the docker container
903850
docker build --build-arg "GO_VERSION=$(GO_VERSION)" -t $(KVM_BUILD_IMAGE_AMD64) -f $< $(dir $<)
@@ -910,53 +857,6 @@ kvm-image-arm64: installers/linux/kvm/Dockerfile.arm64 docker-multi-arch-build
910857
@echo ""
911858
@echo "$(@) successfully built"
912859

913-
kvm_in_docker:
914-
docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64
915-
rm -f out/docker-machine-driver-kvm2
916-
$(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make out/docker-machine-driver-kvm2 COMMIT=$(COMMIT))
917-
918-
.PHONY: install-kvm-driver
919-
install-kvm-driver: out/docker-machine-driver-kvm2 ## Install KVM Driver
920-
mkdir -p $(GOBIN)
921-
cp out/docker-machine-driver-kvm2 $(GOBIN)/docker-machine-driver-kvm2
922-
923-
924-
out/docker-machine-driver-kvm2-arm64:
925-
@echo "skipping kvm2-arm64 till https://github.com/kubernetes/minikube/issues/19959 is fixed"
926-
# ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
927-
# docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_ARM64) || $(MAKE) kvm-image-arm64
928-
# $(call DOCKER,$(KVM_BUILD_IMAGE_ARM64),/usr/bin/make $@ COMMIT=$(COMMIT))
929-
# else
930-
# $(if $(quiet),@echo " GO $@")
931-
# $(Q)GOARCH=arm64 \
932-
# go build \
933-
# -buildvcs=false \
934-
# -installsuffix "static" \
935-
# -ldflags="$(KVM2_LDFLAGS)" \
936-
# -tags "libvirt_without_lxc" \
937-
# -o $@ \
938-
# k8s.io/minikube/cmd/drivers/kvm
939-
# endif
940-
# chmod +X $@
941-
942-
out/docker-machine-driver-kvm2-%:
943-
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
944-
docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64
945-
$(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make $@ COMMIT=$(COMMIT))
946-
else
947-
$(if $(quiet),@echo " GO $@")
948-
$(Q)GOARCH=$* \
949-
go build \
950-
-buildvcs=false \
951-
-installsuffix "static" \
952-
-ldflags="$(KVM2_LDFLAGS)" \
953-
-tags "libvirt_without_lxc" \
954-
-o $@ \
955-
k8s.io/minikube/cmd/drivers/kvm
956-
endif
957-
chmod +X $@
958-
959-
960860
site/themes/docsy/assets/vendor/bootstrap/package.js: ## update the website docsy theme git submodule
961861
git submodule update -f --init
962862

@@ -1213,7 +1113,7 @@ update-kong-ingress-controller-version:
12131113
update-nvidia-device-plugin-version:
12141114
cd hack && go run update/nvidia_device_plugin_version/nvidia_device_plugin_version.go
12151115

1216-
# for amd gpu
1116+
# for amd gpu
12171117
.PHONY: update-amd-device-plugin-version
12181118
update-amd-device-plugin-version:
12191119
cd hack && go run update/amd_device_gpu_plugin_version/amd_device_gpu_plugin_version.go

cmd/drivers/kvm/main-nolinux.go

Lines changed: 0 additions & 33 deletions
This file was deleted.

cmd/drivers/kvm/main.go

Lines changed: 0 additions & 37 deletions
This file was deleted.

hack/jenkins/minikube_cross_build_and_upload.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ make -j 16 \
4949
out/mkcmp \
5050
out/minikube_${DEB_VER}_amd64.deb \
5151
out/minikube_${DEB_VER}_arm64.deb \
52-
out/docker-machine-driver-kvm2_$(make deb_version_base).deb \
53-
out/docker-machine-driver-kvm2_${DEB_VER}_amd64.deb \
5452
&& failed=$? || failed=$?
5553

5654
BUILT_VERSION=$("out/minikube-$(go env GOOS)-$(go env GOARCH)" version)

hack/jenkins/release_build_and_upload.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ env BUILD_IN_DOCKER=y \
6464
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_armhf.deb" \
6565
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_ppc64el.deb" \
6666
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_s390x.deb" \
67-
"out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_amd64.deb"
68-
# "out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_arm64.deb"
6967

7068
env BUILD_IN_DOCKER=y \
7169
make \
@@ -74,7 +72,6 @@ env BUILD_IN_DOCKER=y \
7472
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.armv7hl.rpm" \
7573
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.ppc64le.rpm" \
7674
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.s390x.rpm" \
77-
"out/docker-machine-driver-kvm2-${RPM_VERSION}-${RPM_REVISION}.x86_64.rpm"
7875

7976
# check if 'commit: <commit-id>' line contains '-dirty' commit suffix
8077
BUILT_VERSION="$(out/minikube-$(go env GOOS)-$(go env GOARCH) version)"

installers/linux/archlinux-driver/.SRCINFO

Lines changed: 0 additions & 17 deletions
This file was deleted.

installers/linux/archlinux-driver/PKGBUILD

Lines changed: 0 additions & 28 deletions
This file was deleted.

installers/linux/archlinux/PKGBUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ depends=(
1515
optdepends=(
1616
'kubectl-bin: to manage the cluster'
1717
'virtualbox'
18-
'docker-machine-driver-kvm2'
1918
)
2019
makedepends=()
2120

installers/linux/deb/kvm2_deb_template/DEBIAN/control

Lines changed: 0 additions & 12 deletions
This file was deleted.

installers/linux/rpm/kvm2_rpm_template/docker-machine-driver-kvm2.spec

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)