Merge
commit
82231dc0ee
24
.travis.yml
24
.travis.yml
|
@ -3,40 +3,38 @@
|
|||
os: linux
|
||||
language: go
|
||||
go:
|
||||
- 1.12.12
|
||||
- 1.13.4
|
||||
env:
|
||||
global:
|
||||
- GOPROXY=https://proxy.golang.org
|
||||
matrix:
|
||||
include:
|
||||
- language: go
|
||||
name: Check Boilerplate
|
||||
go: 1.12.12
|
||||
env:
|
||||
- TESTSUITE=boilerplate
|
||||
script: make test
|
||||
|
||||
- language: go
|
||||
name: Code Lint
|
||||
go: 1.12.12
|
||||
go: 1.13.4
|
||||
env:
|
||||
- TESTSUITE=lint
|
||||
- TESTSUITE=lintall
|
||||
before_install:
|
||||
- sudo apt-get install -y libvirt-dev
|
||||
script: make test
|
||||
|
||||
- language: go
|
||||
name: Unit Test
|
||||
go: 1.12.12
|
||||
go: 1.13.4
|
||||
env:
|
||||
- TESTSUITE=unittest
|
||||
before_install:
|
||||
- sudo apt-get install -y libvirt-dev
|
||||
script: make test
|
||||
|
||||
- language: go
|
||||
name: Build
|
||||
go: 1.13.4
|
||||
script: make
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
travisBuddy:
|
||||
regex: (FAIL:|\.go:\d+:|^panic:|failed$)
|
||||
travisBuddy:
|
||||
regex: (FAIL:|\.go:\d+:|^panic:|failed$)
|
||||
notifications:
|
||||
webhooks:
|
||||
urls:
|
||||
|
|
128
Makefile
128
Makefile
|
@ -26,7 +26,7 @@ DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
|
|||
RPM_VERSION ?= $(DEB_VERSION)
|
||||
|
||||
# used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below
|
||||
GO_VERSION ?= 1.12.12
|
||||
GO_VERSION ?= 1.13.4
|
||||
|
||||
INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1)
|
||||
BUILDROOT_BRANCH ?= 2019.02.6
|
||||
|
@ -106,6 +106,9 @@ CMD_SOURCE_DIRS = cmd pkg
|
|||
SOURCE_DIRS = $(CMD_SOURCE_DIRS) test
|
||||
SOURCE_PACKAGES = ./cmd/... ./pkg/... ./test/...
|
||||
|
||||
SOURCE_GENERATED = pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
||||
SOURCE_FILES = $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go" | grep -v _test.go)
|
||||
|
||||
# kvm2 ldflags
|
||||
KVM2_LDFLAGS := -X k8s.io/minikube/pkg/drivers/kvm.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=$(COMMIT)
|
||||
|
||||
|
@ -139,8 +142,12 @@ else
|
|||
endif
|
||||
|
||||
|
||||
out/minikube$(IS_EXE): out/minikube-$(GOOS)-$(GOARCH)$(IS_EXE)
|
||||
cp $< $@
|
||||
out/minikube$(IS_EXE): $(SOURCE_GENERATED) $(SOURCE_FILES) go.mod
|
||||
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
|
||||
$(call DOCKER,$(BUILD_IMAGE),GOOS=$(GOOS) GOARCH=$(GOARCH) /usr/bin/make $@)
|
||||
else
|
||||
go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -o $@ k8s.io/minikube/cmd/minikube
|
||||
endif
|
||||
|
||||
out/minikube-windows-amd64.exe: out/minikube-windows-amd64
|
||||
cp $< $@
|
||||
|
@ -152,22 +159,23 @@ out/minikube-linux-aarch64: out/minikube-linux-arm64
|
|||
cp $< $@
|
||||
|
||||
.PHONY: minikube-linux-amd64 minikube-linux-arm64 minikube-darwin-amd64 minikube-windows-amd64.exe
|
||||
minikube-linux-amd64: out/minikube-linux-amd64
|
||||
minikube-linux-arm64: out/minikube-linux-arm64
|
||||
minikube-darwin-amd64: out/minikube-darwin-amd64
|
||||
minikube-windows-amd64.exe: out/minikube-windows-amd64.exe
|
||||
minikube-linux-amd64: out/minikube-linux-amd64 ## Build Minikube for Linux 64bit
|
||||
minikube-linux-arm64: out/minikube-linux-arm64 ## Build Minikube for ARM 64bit
|
||||
minikube-darwin-amd64: out/minikube-darwin-amd64 ## Build Minikube for Darwin 64bit
|
||||
minikube-windows-amd64.exe: out/minikube-windows-amd64.exe ## Build Minikube for Windows 64bit
|
||||
|
||||
out/minikube-%: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go")
|
||||
out/minikube-%: $(SOURCE_GENERATED) $(SOURCE_FILES)
|
||||
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
|
||||
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
|
||||
else
|
||||
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$(subst $(IS_EXE), ,$*)))" go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
|
||||
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$(subst $(IS_EXE), ,$*)))" \
|
||||
go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
|
||||
endif
|
||||
|
||||
.PHONY: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe
|
||||
e2e-linux-amd64: out/e2e-linux-amd64
|
||||
e2e-darwin-amd64: out/e2e-darwin-amd64
|
||||
e2e-windows-amd64.exe: out/e2e-windows-amd64.exe
|
||||
e2e-linux-amd64: out/e2e-linux-amd64 ## Execute end-to-end testing for Linux 64bit
|
||||
e2e-darwin-amd64: out/e2e-darwin-amd64 ## Execute end-to-end testing for Darwin 64bit
|
||||
e2e-windows-amd64.exe: out/e2e-windows-amd64.exe ## Execute end-to-end testing for Windows 64bit
|
||||
|
||||
out/e2e-%: out/minikube-%
|
||||
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$(subst $(IS_EXE), ,$*)))" go test -c k8s.io/minikube/test/integration --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" -o $@
|
||||
|
@ -187,13 +195,13 @@ minikube_iso: # old target kept for making tests happy
|
|||
|
||||
# Change buildroot configuration for the minikube ISO
|
||||
.PHONY: iso-menuconfig
|
||||
iso-menuconfig:
|
||||
iso-menuconfig: ## Configure buildroot configuration
|
||||
$(MAKE) -C $(BUILD_DIR)/buildroot menuconfig
|
||||
$(MAKE) -C $(BUILD_DIR)/buildroot savedefconfig
|
||||
|
||||
# Change the kernel configuration for the minikube ISO
|
||||
.PHONY: linux-menuconfig
|
||||
linux-menuconfig:
|
||||
linux-menuconfig: ## Configure Linux kernel configuration
|
||||
$(MAKE) -C $(BUILD_DIR)/buildroot/output/build/linux-$(KERNEL_VERSION)/ menuconfig
|
||||
$(MAKE) -C $(BUILD_DIR)/buildroot/output/build/linux-$(KERNEL_VERSION)/ savedefconfig
|
||||
cp $(BUILD_DIR)/buildroot/output/build/linux-$(KERNEL_VERSION)/defconfig deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig
|
||||
|
@ -216,39 +224,39 @@ test-iso: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
|||
go test -v ./test/integration --tags=iso --minikube-start-args="--iso-url=file://$(shell pwd)/out/buildroot/output/images/rootfs.iso9660"
|
||||
|
||||
.PHONY: test-pkg
|
||||
test-pkg/%: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
||||
test-pkg/%: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Trigger packaging test
|
||||
go test -v -test.timeout=60m ./$* --tags="$(MINIKUBE_BUILD_TAGS)"
|
||||
|
||||
.PHONY: all
|
||||
all: cross drivers e2e-cross out/gvisor-addon
|
||||
all: cross drivers e2e-cross out/gvisor-addon ## Build all different minikube components
|
||||
|
||||
.PHONY: drivers
|
||||
drivers: docker-machine-driver-hyperkit docker-machine-driver-kvm2
|
||||
drivers: docker-machine-driver-hyperkit docker-machine-driver-kvm2 ## Build Hyperkit and KVM2 drivers
|
||||
|
||||
.PHONY: docker-machine-driver-hyperkit
|
||||
docker-machine-driver-hyperkit: out/docker-machine-driver-hyperkit
|
||||
docker-machine-driver-hyperkit: out/docker-machine-driver-hyperkit ## Build Hyperkit driver
|
||||
|
||||
.PHONY: docker-machine-driver-kvm2
|
||||
docker-machine-driver-kvm2: out/docker-machine-driver-kvm2
|
||||
docker-machine-driver-kvm2: out/docker-machine-driver-kvm2 ## Build KVM2 driver
|
||||
|
||||
.PHONY: integration
|
||||
integration: out/minikube
|
||||
integration: out/minikube ## Trigger minikube integration test
|
||||
go test -v -test.timeout=60m ./test/integration --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" $(TEST_ARGS)
|
||||
|
||||
.PHONY: integration-none-driver
|
||||
integration-none-driver: e2e-linux-$(GOARCH) out/minikube-linux-$(GOARCH)
|
||||
integration-none-driver: e2e-linux-$(GOARCH) out/minikube-linux-$(GOARCH) ## Trigger minikube none driver test
|
||||
sudo -E out/e2e-linux-$(GOARCH) -testdata-dir "test/integration/testdata" -minikube-start-args="--vm-driver=none" -test.v -test.timeout=60m -binary=out/minikube-linux-amd64 $(TEST_ARGS)
|
||||
|
||||
.PHONY: integration-versioned
|
||||
integration-versioned: out/minikube
|
||||
integration-versioned: out/minikube ## Trigger minikube integration testing
|
||||
go test -v -test.timeout=60m ./test/integration --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS) versioned" $(TEST_ARGS)
|
||||
|
||||
.PHONY: test
|
||||
test: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
||||
test: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Trigger minikube test
|
||||
./test.sh
|
||||
|
||||
.PHONY: extract
|
||||
extract:
|
||||
extract: ## Compile extract tool
|
||||
go run cmd/extract/extract.go
|
||||
|
||||
# Regenerates assets.go when template files have been updated
|
||||
|
@ -275,22 +283,22 @@ endif
|
|||
@sed -i -e 's/Json/JSON/' $@ && rm -f ./-e
|
||||
|
||||
.PHONY: cross
|
||||
cross: minikube-linux-amd64 minikube-linux-arm64 minikube-darwin-amd64 minikube-windows-amd64.exe
|
||||
cross: minikube-linux-amd64 minikube-linux-arm64 minikube-darwin-amd64 minikube-windows-amd64.exe ## Build minikube for all platform
|
||||
|
||||
.PHONY: windows
|
||||
windows: minikube-windows-amd64.exe
|
||||
windows: minikube-windows-amd64.exe ## Build minikube for Windows 64bit
|
||||
|
||||
.PHONY: darwin
|
||||
darwin: minikube-darwin-amd64
|
||||
darwin: minikube-darwin-amd64 ## Build minikube for Darwin 64bit
|
||||
|
||||
.PHONY: linux
|
||||
linux: minikube-linux-amd64
|
||||
linux: minikube-linux-amd64 ## Build minikube for Linux 64bit
|
||||
|
||||
.PHONY: e2e-cross
|
||||
e2e-cross: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe
|
||||
e2e-cross: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe ## End-to-end cross test
|
||||
|
||||
.PHONY: checksum
|
||||
checksum:
|
||||
checksum: ## Generate checksums
|
||||
for f in out/minikube.iso out/minikube-linux-amd64 minikube-linux-arm64 \
|
||||
out/minikube-darwin-amd64 out/minikube-windows-amd64.exe \
|
||||
out/docker-machine-driver-kvm2 out/docker-machine-driver-hyperkit; do \
|
||||
|
@ -300,34 +308,34 @@ checksum:
|
|||
done
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
clean: ## Clean build
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -f pkg/minikube/assets/assets.go
|
||||
rm -f pkg/minikube/translate/translations.go
|
||||
rm -rf ./vendor
|
||||
|
||||
.PHONY: gendocs
|
||||
gendocs: out/docs/minikube.md
|
||||
gendocs: out/docs/minikube.md ## Generate documentation
|
||||
|
||||
.PHONY: fmt
|
||||
fmt:
|
||||
fmt: ## Run go fmt and modify files in place
|
||||
@gofmt -s -w $(SOURCE_DIRS)
|
||||
|
||||
.PHONY: gofmt
|
||||
gofmt:
|
||||
gofmt: ## Run go fmt and list the files differs from gofmt's
|
||||
@gofmt -s -l $(SOURCE_DIRS)
|
||||
@test -z "`gofmt -s -l $(SOURCE_DIRS)`"
|
||||
|
||||
.PHONY: vet
|
||||
vet:
|
||||
vet: ## Run go vet
|
||||
@go vet $(SOURCE_PACKAGES)
|
||||
|
||||
.PHONY: golint
|
||||
golint: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
||||
golint: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Run golint
|
||||
@golint -set_exit_status $(SOURCE_PACKAGES)
|
||||
|
||||
.PHONY: gocyclo
|
||||
gocyclo:
|
||||
gocyclo: ## Run gocyclo (calculates cyclomatic complexities)
|
||||
@gocyclo -over 15 `find $(SOURCE_DIRS) -type f -name "*.go"`
|
||||
|
||||
out/linters/golangci-lint-$(GOLINT_VERSION):
|
||||
|
@ -337,17 +345,17 @@ out/linters/golangci-lint-$(GOLINT_VERSION):
|
|||
|
||||
# this one is meant for local use
|
||||
.PHONY: lint
|
||||
lint: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go out/linters/golangci-lint-$(GOLINT_VERSION)
|
||||
lint: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint
|
||||
./out/linters/golangci-lint-$(GOLINT_VERSION) run ${GOLINT_OPTIONS} ./...
|
||||
|
||||
# lint-ci is slower version of lint and is meant to be used in ci (travis) to avoid out of memory leaks.
|
||||
.PHONY: lint-ci
|
||||
lint-ci: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go out/linters/golangci-lint-$(GOLINT_VERSION)
|
||||
lint-ci: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint-ci
|
||||
GOGC=${GOLINT_GOGC} ./out/linters/golangci-lint-$(GOLINT_VERSION) run \
|
||||
--concurrency ${GOLINT_JOBS} ${GOLINT_OPTIONS} ./...
|
||||
|
||||
.PHONY: reportcard
|
||||
reportcard:
|
||||
reportcard: ## Run goreportcard for minikube
|
||||
goreportcard-cli -v
|
||||
# "disabling misspell on large repo..."
|
||||
-misspell -error $(SOURCE_DIRS)
|
||||
|
@ -385,7 +393,7 @@ out/minikube-$(RPM_VERSION)-0.%.rpm: out/minikube-linux-%
|
|||
rm -rf out/minikube-$(RPM_VERSION)
|
||||
|
||||
.PHONY: apt
|
||||
apt: out/Release
|
||||
apt: out/Release ## Generate apt package file
|
||||
|
||||
out/Release: out/minikube_$(DEB_VERSION).deb
|
||||
( cd out && apt-ftparchive packages . ) | gzip -c > out/Packages.gz
|
||||
|
@ -407,7 +415,7 @@ out/minikube-%.tar.gz: $$(TAR_TARGETS_$$*)
|
|||
tar -cvzf $@ $^
|
||||
|
||||
.PHONY: cross-tars
|
||||
cross-tars: out/minikube-linux-amd64.tar.gz out/minikube-linux-arm64.tar.gz \
|
||||
cross-tars: out/minikube-linux-amd64.tar.gz out/minikube-linux-arm64.tar.gz \ ## Cross-compile minikube
|
||||
out/minikube-windows-amd64.tar.gz out/minikube-darwin-amd64.tar.gz
|
||||
-cd out && $(SHA512SUM) *.tar.gz > SHA512SUM
|
||||
|
||||
|
@ -439,19 +447,19 @@ hyperkit_in_docker:
|
|||
$(call DOCKER,$(HYPERKIT_BUILD_IMAGE),CC=o64-clang CXX=o64-clang++ /usr/bin/make out/docker-machine-driver-hyperkit)
|
||||
|
||||
.PHONY: install-hyperkit-driver
|
||||
install-hyperkit-driver: out/docker-machine-driver-hyperkit
|
||||
install-hyperkit-driver: out/docker-machine-driver-hyperkit ## Install hyperkit to local machine
|
||||
mkdir -p $(HOME)/bin
|
||||
sudo cp out/docker-machine-driver-hyperkit $(HOME)/bin/docker-machine-driver-hyperkit
|
||||
sudo chown root:wheel $(HOME)/bin/docker-machine-driver-hyperkit
|
||||
sudo chmod u+s $(HOME)/bin/docker-machine-driver-hyperkit
|
||||
|
||||
.PHONY: release-hyperkit-driver
|
||||
release-hyperkit-driver: install-hyperkit-driver checksum
|
||||
release-hyperkit-driver: install-hyperkit-driver checksum ## Copy hyperkit using gsutil
|
||||
gsutil cp $(GOBIN)/docker-machine-driver-hyperkit gs://minikube/drivers/hyperkit/$(VERSION)/
|
||||
gsutil cp $(GOBIN)/docker-machine-driver-hyperkit.sha256 gs://minikube/drivers/hyperkit/$(VERSION)/
|
||||
|
||||
.PHONY: check-release
|
||||
check-release:
|
||||
check-release: ## Execute go test
|
||||
go test -v ./deploy/minikube/release_sanity_test.go -tags=release
|
||||
|
||||
buildroot-image: $(ISO_BUILD_IMAGE) # convenient alias to build the docker container
|
||||
|
@ -464,7 +472,7 @@ out/storage-provisioner:
|
|||
GOOS=linux go build -o $@ -ldflags=$(PROVISIONER_LDFLAGS) cmd/storage-provisioner/main.go
|
||||
|
||||
.PHONY: storage-provisioner-image
|
||||
storage-provisioner-image: out/storage-provisioner
|
||||
storage-provisioner-image: out/storage-provisioner ## Build storage-provisioner docker image
|
||||
ifeq ($(GOARCH),amd64)
|
||||
docker build -t $(REGISTRY)/storage-provisioner:$(STORAGE_PROVISIONER_TAG) -f deploy/storage-provisioner/Dockerfile .
|
||||
else
|
||||
|
@ -472,7 +480,7 @@ else
|
|||
endif
|
||||
|
||||
.PHONY: push-storage-provisioner-image
|
||||
push-storage-provisioner-image: storage-provisioner-image
|
||||
push-storage-provisioner-image: storage-provisioner-image ## Push storage-provisioner docker image using gcloud
|
||||
ifeq ($(GOARCH),amd64)
|
||||
gcloud docker -- push $(REGISTRY)/storage-provisioner:$(STORAGE_PROVISIONER_TAG)
|
||||
else
|
||||
|
@ -480,11 +488,11 @@ else
|
|||
endif
|
||||
|
||||
.PHONY: out/gvisor-addon
|
||||
out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
|
||||
out/gvisor-addon: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Build gvisor addon
|
||||
GOOS=linux CGO_ENABLED=0 go build -o $@ cmd/gvisor/gvisor.go
|
||||
|
||||
.PHONY: gvisor-addon-image
|
||||
gvisor-addon-image: out/gvisor-addon
|
||||
gvisor-addon-image: out/gvisor-addon ## Build docker image for gvisor
|
||||
docker build -t $(REGISTRY)/gvisor-addon:$(GVISOR_IMAGE_VERSION) -f deploy/gvisor/Dockerfile .
|
||||
|
||||
.PHONY: push-gvisor-addon-image
|
||||
|
@ -492,12 +500,12 @@ push-gvisor-addon-image: gvisor-addon-image
|
|||
gcloud docker -- push $(REGISTRY)/gvisor-addon:$(GVISOR_IMAGE_VERSION)
|
||||
|
||||
.PHONY: release-iso
|
||||
release-iso: minikube_iso checksum
|
||||
release-iso: minikube_iso checksum ## Build and release .iso file
|
||||
gsutil cp out/minikube.iso gs://$(ISO_BUCKET)/minikube-$(ISO_VERSION).iso
|
||||
gsutil cp out/minikube.iso.sha256 gs://$(ISO_BUCKET)/minikube-$(ISO_VERSION).iso.sha256
|
||||
|
||||
.PHONY: release-minikube
|
||||
release-minikube: out/minikube checksum
|
||||
release-minikube: out/minikube checksum ## Minikube release
|
||||
gsutil cp out/minikube-$(GOOS)-$(GOARCH) $(MINIKUBE_UPLOAD_LOCATION)/$(MINIKUBE_VERSION)/minikube-$(GOOS)-$(GOARCH)
|
||||
gsutil cp out/minikube-$(GOOS)-$(GOARCH).sha256 $(MINIKUBE_UPLOAD_LOCATION)/$(MINIKUBE_VERSION)/minikube-$(GOOS)-$(GOARCH).sha256
|
||||
|
||||
|
@ -534,8 +542,8 @@ out/docker-machine-driver-kvm2-$(RPM_VERSION).rpm: out/docker-machine-driver-kvm
|
|||
out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
|
||||
rm -rf out/docker-machine-driver-kvm2-$(RPM_VERSION)
|
||||
|
||||
.PHONY: kvm-image # convenient alias to build the docker container
|
||||
kvm-image: installers/linux/kvm/Dockerfile
|
||||
.PHONY: kvm-image
|
||||
kvm-image: installers/linux/kvm/Dockerfile ## Convenient alias to build the docker container
|
||||
docker build --build-arg "GO_VERSION=$(GO_VERSION)" -t $(KVM_BUILD_IMAGE) -f $< $(dir $<)
|
||||
@echo ""
|
||||
@echo "$(@) successfully built"
|
||||
|
@ -546,27 +554,25 @@ kvm_in_docker:
|
|||
$(call DOCKER,$(KVM_BUILD_IMAGE),/usr/bin/make out/docker-machine-driver-kvm2 COMMIT=$(COMMIT))
|
||||
|
||||
.PHONY: install-kvm-driver
|
||||
install-kvm-driver: out/docker-machine-driver-kvm2
|
||||
install-kvm-driver: out/docker-machine-driver-kvm2 ## Install KVM Driver
|
||||
mkdir -p $(GOBIN)
|
||||
cp out/docker-machine-driver-kvm2 $(GOBIN)/docker-machine-driver-kvm2
|
||||
|
||||
.PHONY: release-kvm-driver
|
||||
release-kvm-driver: install-kvm-driver checksum
|
||||
release-kvm-driver: install-kvm-driver checksum ## Release KVM Driver
|
||||
gsutil cp $(GOBIN)/docker-machine-driver-kvm2 gs://minikube/drivers/kvm/$(VERSION)/
|
||||
gsutil cp $(GOBIN)/docker-machine-driver-kvm2.sha256 gs://minikube/drivers/kvm/$(VERSION)/
|
||||
|
||||
site/themes/docsy/assets/vendor/bootstrap/package.js:
|
||||
git submodule update -f --init --recursive
|
||||
|
||||
# hugo for generating site previews
|
||||
out/hugo/hugo:
|
||||
mkdir -p out
|
||||
test -d out/hugo || git clone https://github.com/gohugoio/hugo.git out/hugo
|
||||
(cd out/hugo && go build --tags extended)
|
||||
|
||||
# Serve the documentation site to localhost
|
||||
.PHONY: site
|
||||
site: site/themes/docsy/assets/vendor/bootstrap/package.js out/hugo/hugo
|
||||
site: site/themes/docsy/assets/vendor/bootstrap/package.js out/hugo/hugo ## Serve the documentation site to localhost
|
||||
(cd site && ../out/hugo/hugo serve \
|
||||
--disableFastRender \
|
||||
--navigateToChanged \
|
||||
|
@ -576,3 +582,9 @@ site: site/themes/docsy/assets/vendor/bootstrap/package.js out/hugo/hugo
|
|||
.PHONY: out/mkcmp
|
||||
out/mkcmp:
|
||||
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $@ cmd/performance/main.go
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
@printf "\033[1mAvailable targets for minikube ${VERSION}\033[21m\n"
|
||||
@printf "\033[1m--------------------------------------\033[21m\n"
|
||||
@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
|
|
2
OWNERS
2
OWNERS
|
@ -8,6 +8,7 @@ reviewers:
|
|||
- medyagh
|
||||
- josedonizetti
|
||||
- blueelvis
|
||||
- priyawadhwa
|
||||
approvers:
|
||||
- tstromberg
|
||||
- afbjorklund
|
||||
|
@ -15,6 +16,7 @@ approvers:
|
|||
- RA489
|
||||
- medyagh
|
||||
- josedonizetti
|
||||
- priyawadhwa
|
||||
emeritus_approvers:
|
||||
- dlorenc
|
||||
- luxas
|
||||
|
|
|
@ -25,7 +25,7 @@ import (
|
|||
var AddonsCmd = &cobra.Command{
|
||||
Use: "addons SUBCOMMAND [flags]",
|
||||
Short: "Modify minikube's kubernetes addons",
|
||||
Long: `addons modifies minikube addons files using subcommands like "minikube addons enable heapster"`,
|
||||
Long: `addons modifies minikube addons files using subcommands like "minikube addons enable dashboard"`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if err := cmd.Help(); err != nil {
|
||||
glog.Errorf("help: %v", err)
|
||||
|
|
|
@ -159,12 +159,6 @@ var settings = []Setting{
|
|||
validations: []setFn{IsValidAddon},
|
||||
callbacks: []setFn{EnableOrDisableStorageClasses},
|
||||
},
|
||||
{
|
||||
name: "heapster",
|
||||
set: SetBool,
|
||||
validations: []setFn{IsValidAddon},
|
||||
callbacks: []setFn{EnableOrDisableAddon},
|
||||
},
|
||||
{
|
||||
name: "efk",
|
||||
set: SetBool,
|
||||
|
|
|
@ -90,8 +90,9 @@ func TestIsAddonAlreadySet(t *testing.T) {
|
|||
{
|
||||
addonName: "ingress",
|
||||
},
|
||||
|
||||
{
|
||||
addonName: "heapster",
|
||||
addonName: "registry",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -142,7 +142,6 @@ func init() {
|
|||
if err := viper.BindPFlags(startCmd.Flags()); err != nil {
|
||||
exit.WithError("unable to bind flags", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// initMinikubeFlags includes commandline flags for minikube.
|
||||
|
@ -297,7 +296,7 @@ func runStart(cmd *cobra.Command, args []string) {
|
|||
glog.Errorf("Error autoSetOptions : %v", err)
|
||||
}
|
||||
|
||||
validateFlags(driverName)
|
||||
validateFlags(cmd, driverName)
|
||||
validateUser(driverName)
|
||||
|
||||
// No need to install a driver in download-only mode
|
||||
|
@ -633,14 +632,20 @@ func validateDriver(name string, existing *cfg.Config) {
|
|||
return
|
||||
}
|
||||
|
||||
out.ErrT(out.Conflict, `The existing "{{.profile_name}}" VM that was created using the "{{.old_driver}}" driver, and is incompatible with the "{{.driver}}" driver.`,
|
||||
out.ErrT(out.Conflict, `The existing "{{.profile_name}}" cluster was created using the "{{.old_driver}}" driver, and cannot be started using the "{{.driver}}" driver.`,
|
||||
out.V{"profile_name": cfg.GetMachineName(), "driver": name, "old_driver": h.Driver.DriverName()})
|
||||
|
||||
out.ErrT(out.Workaround, `To proceed, either:
|
||||
1) Delete the existing VM using: '{{.command}} delete'
|
||||
or
|
||||
2) Restart with the existing driver: '{{.command}} start --vm-driver={{.old_driver}}'`, out.V{"command": minikubeCmd(), "old_driver": h.Driver.DriverName()})
|
||||
exit.WithCodeT(exit.Config, "Exiting due to driver incompatibility")
|
||||
|
||||
1) Delete the existing "{{.profile_name}}" cluster using: '{{.command}} delete'
|
||||
|
||||
* or *
|
||||
|
||||
2) Start the existing "{{.profile_name}}" cluster using: '{{.command}} start --vm-driver={{.old_driver}}'
|
||||
`, out.V{"command": minikubeCmd(), "old_driver": h.Driver.DriverName(), "profile_name": cfg.GetMachineName()})
|
||||
|
||||
exit.WithCodeT(exit.Config, "Exiting.")
|
||||
return
|
||||
}
|
||||
|
||||
func selectImageRepository(mirrorCountry string, k8sVersion string) (bool, string, error) {
|
||||
|
@ -737,7 +742,7 @@ func validateUser(drvName string) {
|
|||
}
|
||||
|
||||
// validateFlags validates the supplied flags against known bad combinations
|
||||
func validateFlags(drvName string) {
|
||||
func validateFlags(cmd *cobra.Command, drvName string) {
|
||||
diskSizeMB := pkgutil.CalculateSizeInMB(viper.GetString(humanReadableDiskSize))
|
||||
if diskSizeMB < pkgutil.CalculateSizeInMB(minimumDiskSize) && !viper.GetBool(force) {
|
||||
exit.WithCodeT(exit.Config, "Requested disk size {{.requested_size}} is less than minimum of {{.minimum_size}}", out.V{"requested_size": diskSizeMB, "minimum_size": pkgutil.CalculateSizeInMB(minimumDiskSize)})
|
||||
|
@ -758,6 +763,18 @@ func validateFlags(drvName string) {
|
|||
exit.WithCodeT(exit.Config, "The 'none' driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/")
|
||||
}
|
||||
|
||||
if cmd.Flags().Changed(cpus) {
|
||||
out.WarningT("The 'none' driver does not respect the --cpus flag")
|
||||
}
|
||||
if cmd.Flags().Changed(memory) {
|
||||
out.WarningT("The 'none' driver does not respect the --memory flag")
|
||||
}
|
||||
|
||||
runtime := viper.GetString(containerRuntime)
|
||||
if runtime != "docker" {
|
||||
out.WarningT("Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!", out.V{"runtime": runtime})
|
||||
}
|
||||
|
||||
// Uses the gopsutil cpu package to count the number of physical cpu cores
|
||||
ci, err := cpu.Counts(false)
|
||||
if err != nil {
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
# Copyright 2017 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/name: monitoring-grafana
|
||||
kubernetes.io/minikube-addons: heapster
|
||||
kubernetes.io/minikube-addons-endpoint: heapster
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
name: monitoring-grafana
|
||||
namespace: kube-system
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- port: 80
|
||||
nodePort: 30002
|
||||
protocol: TCP
|
||||
targetPort: ui
|
||||
selector:
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
k8s-app: influx-grafana
|
|
@ -1,54 +0,0 @@
|
|||
# Copyright 2017 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: v1
|
||||
kind: ReplicationController
|
||||
metadata:
|
||||
labels:
|
||||
k8s-app: heapster
|
||||
kubernetes.io/minikube-addons: heapster
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
version: v1.5.3
|
||||
name: heapster
|
||||
namespace: kube-system
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
k8s-app: heapster
|
||||
version: v1.5.3
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
k8s-app: heapster
|
||||
version: v1.5.3
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
spec:
|
||||
containers:
|
||||
- name: heapster
|
||||
image: {{default "k8s.gcr.io" .ImageRepository}}/heapster-{{.Arch}}:v1.5.3
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /heapster
|
||||
- --source=kubernetes.summary_api:''
|
||||
- --sink=influxdb:http://monitoring-influxdb:8086
|
||||
- --metric_resolution=60s
|
||||
volumeMounts:
|
||||
- name: ssl-certs
|
||||
mountPath: /etc/ssl/certs
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: ssl-certs
|
||||
hostPath:
|
||||
path: /etc/ssl/certs
|
|
@ -1,31 +0,0 @@
|
|||
# Copyright 2017 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/name: heapster
|
||||
kubernetes.io/minikube-addons: heapster
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
kubernetes.io/minikube-addons-endpoint: heapster
|
||||
name: heapster
|
||||
namespace: kube-system
|
||||
spec:
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 8082
|
||||
selector:
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
k8s-app: heapster
|
|
@ -1,75 +0,0 @@
|
|||
# Copyright 2017 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: v1
|
||||
kind: ReplicationController
|
||||
metadata:
|
||||
name: influxdb-grafana
|
||||
labels:
|
||||
k8s-app: influx-grafana
|
||||
kubernetes.io/minikube-addons: heapster
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
namespace: kube-system
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
k8s-app: influx-grafana
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
k8s-app: influx-grafana
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
spec:
|
||||
containers:
|
||||
- name: influxdb
|
||||
image: {{default "k8s.gcr.io" .ImageRepository}}/heapster-influxdb-{{.Arch}}:v1.3.3
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8083
|
||||
- name: api
|
||||
containerPort: 8086
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: influxdb-storage
|
||||
- name: grafana
|
||||
image: {{default "k8s.gcr.io" .ImageRepository}}/heapster-grafana-{{.Arch}}:v4.4.3
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: INFLUXDB_SERVICE_URL
|
||||
value: http://localhost:8086
|
||||
# The following env variables are required to make Grafana accessible via
|
||||
# the kubernetes api-server proxy. On production clusters, we recommend
|
||||
# removing these env variables, setup auth for grafana, and expose the grafana
|
||||
# service using a LoadBalancer or a public IP.
|
||||
- name: GF_AUTH_BASIC_ENABLED
|
||||
value: "false"
|
||||
- name: GF_AUTH_ANONYMOUS_ENABLED
|
||||
value: "true"
|
||||
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
|
||||
value: Admin
|
||||
- name: GF_SERVER_ROOT_URL
|
||||
value: /
|
||||
ports:
|
||||
- name: ui
|
||||
containerPort: 3000
|
||||
volumeMounts:
|
||||
- mountPath: /var
|
||||
name: grafana-storage
|
||||
volumes:
|
||||
- name: influxdb-storage
|
||||
emptyDir: {}
|
||||
- name: grafana-storage
|
||||
emptyDir: {}
|
|
@ -1,34 +0,0 @@
|
|||
# Copyright 2017 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/name: monitoring-influxdb
|
||||
kubernetes.io/minikube-addons: heapster
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
name: monitoring-influxdb
|
||||
namespace: kube-system
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 8083
|
||||
targetPort: 8083
|
||||
- name: api
|
||||
port: 8086
|
||||
targetPort: 8086
|
||||
selector:
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
k8s-app: influx-grafana
|
|
@ -1,13 +1,13 @@
|
|||
# Enhancements
|
||||
|
||||
The *minikube enhancement process (MEP)* is a way to propose, communicate, and coordinate on new efforts for the minikube project. You can read the full details in the (MEP proposal)[proposed/20190925-minikube-enhancement-process.md]
|
||||
The *minikube enhancement process (MEP)* is a way to propose, communicate, and coordinate on new efforts for the minikube project. You can read the full details in the [MEP proposal](implemented/20190925-minikube-enhancement-process/README.md)
|
||||
|
||||
MEP is based on a simplification of the [Kubernetes Enhancement Process](https://github.com/kubernetes/enhancements/blob/master/keps/0001-kubernetes-enhancement-proposal-process.md).
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Copy `template.md` to `proposed/<date>-title.md`
|
||||
1. Send PR out for review, titled: `Proposal: <title>`
|
||||
1. Copy `template.md` to `proposed/<date>-title/README.md`. Include supporting documents in the `proposed/<date>-title/` directory.
|
||||
1. Send PR out for review, titled: `MEP: <title>`
|
||||
1. Proposal will be discussed at the bi-weekly minikube office hours
|
||||
1. After a 2-week review window, the proposal can be merged once there are 3 approving maintainers or reviewers. To keep proposals neutral, each reviewer must be independent and/or represent a different company.
|
||||
1. In your PR that implements the enhancement, move the proposal to the `implemented/` folder.
|
||||
|
|
4
go.mod
4
go.mod
|
@ -1,6 +1,6 @@
|
|||
module k8s.io/minikube
|
||||
|
||||
go 1.12
|
||||
go 1.13
|
||||
|
||||
require github.com/google/go-containerregistry v0.0.0-20180731221751-697ee0b3d46e
|
||||
|
||||
|
@ -86,7 +86,7 @@ require (
|
|||
|
||||
replace (
|
||||
git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
|
||||
github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20190910053320-21bd2f51b8ea
|
||||
github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20191109154235-b39d5b50de51
|
||||
github.com/hashicorp/go-getter => github.com/afbjorklund/go-getter v1.4.1-0.20190910175809-eb9f6c26742c
|
||||
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20190623232353-8c3b7d7679cc
|
||||
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20190623232353-8c3b7d7679cc
|
||||
|
|
4
go.sum
4
go.sum
|
@ -329,8 +329,8 @@ github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z
|
|||
github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1 h1:+E1IKKk+6kaQrCPg6edJZ/zISZijuZTPnzy6RE4C/Ho=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1/go.mod h1:ej014C83EmSnxJeJ8PtVb8OLJ91PJKO1Q8Y7sM5CK0o=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20190910053320-21bd2f51b8ea h1:HVlxRL2rDz7hmchX5ZtvCArWmki1Z4pQg19FHrwQCgw=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20190910053320-21bd2f51b8ea/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20191109154235-b39d5b50de51 h1:ra4e+hU8Ca02yNyF8WM89aOShgXEPWRqerGpsmfqgTA=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20191109154235-b39d5b50de51/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk=
|
||||
github.com/magiconair/properties v0.0.0-20160816085511-61b492c03cf4/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
|
|
|
@ -132,38 +132,6 @@ var Addons = map[string]*Addon{
|
|||
"0640",
|
||||
false),
|
||||
}, false, "storage-provisioner-gluster"),
|
||||
"heapster": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/heapster/influx-grafana-rc.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"influxGrafana-rc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/heapster/grafana-svc.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"grafana-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/heapster/influxdb-svc.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"influxdb-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/heapster/heapster-rc.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"heapster-rc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/heapster/heapster-svc.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"heapster-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "heapster"),
|
||||
"efk": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/elasticsearch-rc.yaml.tmpl",
|
||||
|
|
|
@ -66,7 +66,7 @@ Wants=crio.service
|
|||
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=/var/lib/minikube/binaries/v1.16.2/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --config=/var/lib/kubelet/config.yaml --container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock --fail-swap-on=false --hostname-override=minikube --image-service-endpoint=/var/run/crio/crio.sock --kubeconfig=/etc/kubernetes/kubelet.conf --node-ip=192.168.1.100 --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m
|
||||
ExecStart=/var/lib/minikube/binaries/v1.17.0-beta.1/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --config=/var/lib/kubelet/config.yaml --container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock --fail-swap-on=false --hostname-override=minikube --image-service-endpoint=/var/run/crio/crio.sock --kubeconfig=/etc/kubernetes/kubelet.conf --node-ip=192.168.1.100 --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m
|
||||
|
||||
[Install]
|
||||
`,
|
||||
|
@ -211,7 +211,7 @@ func getExtraOptsPodCidr() []config.ExtraOption {
|
|||
|
||||
func recentReleases() ([]string, error) {
|
||||
// test the 6 most recent releases
|
||||
versions := []string{"v1.16", "v1.15", "v1.14", "v1.13", "v1.12", "v1.11"}
|
||||
versions := []string{"v1.17", "v1.16", "v1.15", "v1.14", "v1.13", "v1.12", "v1.11"}
|
||||
foundNewest := false
|
||||
foundDefault := false
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 12345
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /run/containerd/containerd.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:12345
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
43
pkg/minikube/bootstrapper/kubeadm/testdata/v1.17/containerd-pod-network-cidr.yaml
vendored
Normal file
43
pkg/minikube/bootstrapper/kubeadm/testdata/v1.17/containerd-pod-network-cidr.yaml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /run/containerd/containerd.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /run/containerd/containerd.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,53 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/crio/crio.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
fail-no-swap: "true"
|
||||
feature-gates: "a=b"
|
||||
controllerManager:
|
||||
extraArgs:
|
||||
feature-gates: "a=b"
|
||||
kube-api-burst: "32"
|
||||
scheduler:
|
||||
extraArgs:
|
||||
feature-gates: "a=b"
|
||||
scheduler-name: "mini-scheduler"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/crio/crio.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/dockershim.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,43 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/dockershim.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: 1.1.1.1
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,44 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/dockershim.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
imageRepository: test/repo
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -0,0 +1,50 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
bindPort: 8443
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/dockershim.sock
|
||||
name: mk
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
extraArgs:
|
||||
enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
|
||||
fail-no-swap: "true"
|
||||
controllerManager:
|
||||
extraArgs:
|
||||
kube-api-burst: "32"
|
||||
scheduler:
|
||||
extraArgs:
|
||||
scheduler-name: "mini-scheduler"
|
||||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: kubernetes
|
||||
controlPlaneEndpoint: localhost:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
kubernetesVersion: v1.17.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: ""
|
||||
serviceSubnet: 10.96.0.0/12
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
|
@ -68,7 +68,7 @@ var DefaultISOSHAURL = DefaultISOURL + SHASuffix
|
|||
var DefaultKubernetesVersion = "v1.16.2"
|
||||
|
||||
// NewestKubernetesVersion is the newest Kubernetes version to test against
|
||||
var NewestKubernetesVersion = "v1.16.2"
|
||||
var NewestKubernetesVersion = "v1.17.0-beta.1"
|
||||
|
||||
// OldestKubernetesVersion is the oldest Kubernetes version to test against
|
||||
var OldestKubernetesVersion = "v1.11.10"
|
||||
|
|
|
@ -5,14 +5,13 @@ date: 2019-06-18T15:31:58+08:00
|
|||
|
||||
The primary goal of minikube is to make it simple to run Kubernetes locally, for day-to-day development workflows and learning purposes. Here are the guiding principles for minikube, in rough priority order:
|
||||
|
||||
1. User-friendly and accessible
|
||||
2. Inclusive and community-driven
|
||||
3. Cross-platform
|
||||
4. Support all Kubernetes features
|
||||
5. High-fidelity
|
||||
6. Compatible with all supported Kubernetes releases
|
||||
7. Support for all Kubernetes-friendly container runtimes
|
||||
8. Stable and easy to debug
|
||||
1. Inclusive and community-driven
|
||||
1. User-friendly
|
||||
1. Support all Kubernetes features
|
||||
1. Cross-platform
|
||||
1. Reliable
|
||||
1. High Performance
|
||||
1. Developer Focused
|
||||
|
||||
Here are some specific minikube features that align with our goal:
|
||||
|
||||
|
|
|
@ -3,54 +3,98 @@ title: "Roadmap"
|
|||
date: 2019-07-31
|
||||
weight: 4
|
||||
description: >
|
||||
2019 Development Roadmap
|
||||
Development Roadmap
|
||||
---
|
||||
|
||||
This roadmap is a living document outlining the major technical improvements which we would like to see in minikube during 2019, divided by how they apply to our [guiding principles](principles.md)
|
||||
|
||||
Please send a PR to suggest any improvements to it.
|
||||
|
||||
## (#1) User-friendly and accessible
|
||||
# 2019
|
||||
|
||||
- [x] Creation of a user-centric minikube website for installation & documentation
|
||||
- [ ] Localized output to 5+ written languages
|
||||
- [x] Make minikube usable in environments with challenging connectivity requirements
|
||||
- [ ] Support lightweight deployment methods for environments where VM's are impractical
|
||||
- [x] Add offline support
|
||||
|
||||
## (#2) Inclusive and community-driven
|
||||
## (#1) Inclusive and community-driven
|
||||
|
||||
- [x] Increase community involvement in planning and decision making
|
||||
- [ ] Make the continuous integration and release infrastructure publicly available
|
||||
- [x] Double the number of active maintainers
|
||||
- [ ] Make the continuous integration and release infrastructure publicly available
|
||||
|
||||
## (#3) Cross-platform
|
||||
## (#2) User-friendly and accessible
|
||||
|
||||
- [x] Creation of a user-centric minikube website for installation & documentation
|
||||
- [x] Make minikube usable in environments with challenging connectivity requirements
|
||||
- [x] Localized output to 5+ written languages
|
||||
|
||||
## (#3) Support all Kubernetes features
|
||||
|
||||
- [x] Continuous Integration testing across all supported Kubernetes releases
|
||||
- [x] Run all integration tests across all supported container runtimes
|
||||
- [ ] Add multi-node support
|
||||
- [ ] Automatic PR generation for updating the default Kubernetes release minikube uses
|
||||
|
||||
## (#4) Cross-platform
|
||||
|
||||
- [x] Simplified installation process across all supported platforms
|
||||
- [x] Users should never need to separately install supporting binaries
|
||||
- [ ] Support lightweight deployment methods for environments where VM's are impractical
|
||||
|
||||
## (#4) Support all Kubernetes features
|
||||
## (#5) Reliable
|
||||
|
||||
- [ ] Add multi-node support
|
||||
- [x] Pre-flight error checks for common connectivity and configuration errors
|
||||
- [x] Stabilize and improve profiles support (AKA multi-cluster)
|
||||
- [ ] Improve the `minikube status` command so that it can diagnose common issues
|
||||
|
||||
## (#5) High-fidelity
|
||||
## (#6) High Performance
|
||||
|
||||
- [ ] Reduce guest VM overhead by 50%
|
||||
- [x] Disable swap in the guest VM
|
||||
|
||||
## (#6) Compatible with all supported Kubernetes releases
|
||||
## (#7) Developer focused
|
||||
|
||||
- [x] Continuous Integration testing across all supported Kubernetes releases
|
||||
- [ ] Automatic PR generation for updating the default Kubernetes release minikube uses
|
||||
- [x] Add offline support
|
||||
|
||||
## (#7) Support for all Kubernetes-friendly container runtimes
|
||||
# 2020 (draft)
|
||||
|
||||
- [x] Run all integration tests across all supported container runtimes
|
||||
- [ ] Support for Kata Containers (help wanted!)
|
||||
## (#1) Inclusive and community-driven
|
||||
|
||||
## (#8) Stable and easy to debug
|
||||
- [ ] Maintainers from 4 countries, 4 companies
|
||||
- [ ] Installation documentation in 5+ written languages
|
||||
- [ ] Enhancements approved by a community-driven process
|
||||
|
||||
- [x] Pre-flight error checks for common connectivity and configuration errors
|
||||
- [ ] Improve the `minikube status` command so that it can diagnose common issues
|
||||
- [ ] Mark all features not covered by continuous integration as `experimental`
|
||||
- [x] Stabilize and improve profiles support (AKA multi-cluster)
|
||||
## (#2) User-friendly
|
||||
|
||||
- [ ] Automatic installation of hypervisor dependencies
|
||||
- [ ] Graphical User Interface
|
||||
- [ ] Built-in 3rd Party ecosystem with 50+ entries
|
||||
|
||||
## (#3) Support all Kubernetes features
|
||||
|
||||
- [ ] Multi-node
|
||||
- [ ] IPv6
|
||||
- [ ] Usage documentation for 3 leading CNI providers
|
||||
- [ ] Automatically publish conformance test results after a release
|
||||
|
||||
## (#4) Cross-platform
|
||||
|
||||
- [ ] VM-free deployment to containers (Docker, Podman)
|
||||
- [ ] Windows as a first-class citizen
|
||||
- [ ] WSL2 support (no additional VM required)
|
||||
- [ ] Firecracker VM support
|
||||
- [ ] Generic (SSH) driver support
|
||||
|
||||
## (#5) Reliable
|
||||
|
||||
- [ ] Resource alerts
|
||||
- [ ] Time synchronization on HyperKit
|
||||
- [ ] Prototype post-libmachine implementation of minikube
|
||||
|
||||
## (#6) High Performance
|
||||
|
||||
- [ ] Startup latency under 30s
|
||||
- [ ] Kernel-assisted mounts (CIFS, NFS) by default
|
||||
- [ ] Suspend and Resume
|
||||
- [ ] <25% CPU overhead on a single core
|
||||
|
||||
## (#7) Developer Focused
|
||||
|
||||
- [ ] Container build integration
|
||||
- [ ] Documented workflow for Kubernetes development
|
||||
|
|
|
@ -4,7 +4,7 @@ linkTitle: "addons"
|
|||
weight: 1
|
||||
date: 2019-08-01
|
||||
description: >
|
||||
Modifies minikube addons files using subcommands like "minikube addons enable heapster"
|
||||
Modifies minikube addons files using subcommands like "minikube addons enable dashboard"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
|
|
@ -36,7 +36,6 @@ Configurable fields:
|
|||
* dashboard
|
||||
* addon-manager
|
||||
* default-storageclass
|
||||
* heapster
|
||||
* efk
|
||||
* ingress
|
||||
* registry
|
||||
|
|
|
@ -77,7 +77,6 @@ Configurable fields:
|
|||
* dashboard
|
||||
* addon-manager
|
||||
* default-storageclass
|
||||
* heapster
|
||||
* efk
|
||||
* ingress
|
||||
* registry
|
||||
|
|
|
@ -11,7 +11,6 @@ minikube has a set of built-in addons that, when enabled, can be used within Kub
|
|||
## Available addons
|
||||
|
||||
* [Kubernetes Dashboard](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard)
|
||||
* [Heapster](https://github.com/kubernetes/heapster): [Troubleshooting Guide](https://github.com/kubernetes/heapster/blob/master/docs/influxdb.md) Note:You will need to login to Grafana as admin/admin in order to access the console
|
||||
* [EFK](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch)
|
||||
* [Registry](https://github.com/kubernetes/minikube/tree/master/deploy/addons/registry)
|
||||
* [Registry Credentials](https://github.com/upmc-enterprises/registry-creds)
|
||||
|
@ -39,7 +38,6 @@ Example output:
|
|||
- freshpod: disabled
|
||||
- addon-manager: enabled
|
||||
- dashboard: enabled
|
||||
- heapster: disabled
|
||||
- efk: disabled
|
||||
- ingress: disabled
|
||||
- default-storageclass: enabled
|
||||
|
|
|
@ -27,19 +27,23 @@ You should now be able to use docker on the command line on your host mac/linux
|
|||
docker ps
|
||||
```
|
||||
|
||||
Remember to turn off the _imagePullPolicy:Always_, as otherwise Kubernetes won't use images you built locally.
|
||||
|
||||
### Possible errors and solutions
|
||||
|
||||
Docker may report following forbidden error if you are using http proxy and the `$(minikube ip)` is not added to `no_proxy`/`NO_PROXY`:
|
||||
|
||||
```shell
|
||||
```
|
||||
error during connect: Get https://192.168.39.98:2376/v1.39/containers/json: Forbidden
|
||||
```
|
||||
|
||||
On Centos 7, docker may report the following error:
|
||||
|
||||
```shell
|
||||
```
|
||||
Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory
|
||||
```
|
||||
|
||||
The fix is to update /etc/sysconfig/docker to ensure that minikube's environment changes are respected:
|
||||
The fix is to update ``/etc/sysconfig/docker`` to ensure that minikube's environment changes are respected:
|
||||
|
||||
```diff
|
||||
< DOCKER_CERT_PATH=/etc/docker
|
||||
|
@ -49,8 +53,27 @@ The fix is to update /etc/sysconfig/docker to ensure that minikube's environment
|
|||
> fi
|
||||
```
|
||||
|
||||
Remember to turn off the _imagePullPolicy:Always_, as otherwise Kubernetes won't use images you built locally.
|
||||
When you're using a docker installed via `snap` on a distribution like Ubuntu that uses AppArmor profiles the following error may appear:
|
||||
|
||||
```
|
||||
could not read CA certificate "/home/USERNAME/.minikube/certs/ca.pem": open /home/USERNAME/.minikube/certs/ca.pem: permission denied
|
||||
```
|
||||
|
||||
The solution is to allow docker to read the minikube certificates by adding a line in ``/var/lib/snapd/apparmor/profiles/snap.docker.docker`` file:
|
||||
|
||||
```shell
|
||||
# allow docker to read minikube certificates
|
||||
owner @{HOME}/.minikube/certs/* r,
|
||||
```
|
||||
|
||||
After that check for syntax errors and try again:
|
||||
|
||||
```shell
|
||||
sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.docker.docker
|
||||
eval $(minikube docker-env)
|
||||
docker ps
|
||||
```
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [docker_registry.md](Using the Docker registry)
|
||||
- [docker_registry.md](Using the Docker registry)
|
||||
|
|
6
test.sh
6
test.sh
|
@ -19,7 +19,7 @@ set -eu -o pipefail
|
|||
TESTSUITE="${TESTSUITE:-all}" # if env variable not set run all the tests
|
||||
exitcode=0
|
||||
|
||||
if [[ "$TESTSUITE" = "lint" ]] || [[ "$TESTSUITE" = "all" ]]
|
||||
if [[ "$TESTSUITE" = "lint" ]] || [[ "$TESTSUITE" = "all" ]] || [[ "$TESTSUITE" = "lintall" ]]
|
||||
then
|
||||
echo "= make lint ============================================================="
|
||||
make -s lint-ci && echo ok || ((exitcode += 4))
|
||||
|
@ -30,7 +30,7 @@ fi
|
|||
|
||||
|
||||
|
||||
if [[ "$TESTSUITE" = "boilerplate" ]] || [[ "$TESTSUITE" = "all" ]]
|
||||
if [[ "$TESTSUITE" = "boilerplate" ]] || [[ "$TESTSUITE" = "all" ]] || [[ "$TESTSUITE" = "lintall" ]]
|
||||
then
|
||||
echo "= boilerplate ==========================================================="
|
||||
readonly ROOT_DIR=$(pwd)
|
||||
|
@ -50,7 +50,7 @@ fi
|
|||
|
||||
|
||||
if [[ "$TESTSUITE" = "unittest" ]] || [[ "$TESTSUITE" = "all" ]]
|
||||
then
|
||||
then
|
||||
echo "= schema_check =========================================================="
|
||||
go run deploy/minikube/schema_check.go >/dev/null && echo ok || ((exitcode += 16))
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
@ -244,7 +245,10 @@ func validateDashboardCmd(ctx context.Context, t *testing.T, profile string) {
|
|||
start := time.Now()
|
||||
s, err := ReadLineWithTimeout(ss.Stdout, 300*time.Second)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to read url within %s: %v\n", time.Since(start), err)
|
||||
if runtime.GOOS == "windows" {
|
||||
t.Skipf("failed to read url within %s: %v\noutput: %q\n", time.Since(start), err, s)
|
||||
}
|
||||
t.Fatalf("failed to read url within %s: %v\noutput: %q\n", time.Since(start), err, s)
|
||||
}
|
||||
|
||||
u, err := url.Parse(strings.TrimSpace(s))
|
||||
|
|
Loading…
Reference in New Issue