diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6d6a0ebb7a..222d3dc6aa05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,95 @@ # Minikube Release Notes +# Version 1.1.1 - 2019-06-07 + +* Upgrade to kubernetes 1.14.3 [#4444](https://github.com/kubernetes/minikube/pull/4444) +* fix ShowDriverDeprecationNotification config setting [#4431](https://github.com/kubernetes/minikube/pull/4431) +* Cache: don't use ssh runner for the none driver [#4439](https://github.com/kubernetes/minikube/pull/4439) +* Fixing file path for windows [#4434](https://github.com/kubernetes/minikube/pull/4434) +* Improve type check for driver none [#4419](https://github.com/kubernetes/minikube/pull/4419) +* Dashboard: add --disable-settings-authorizer to avoid settings 403 forbidden [#4405](https://github.com/kubernetes/minikube/pull/4405) +* dashboard: detect nonexistent profile instead of causing a panic [#4396](https://github.com/kubernetes/minikube/pull/4396) +* Fixed addon-manager failing with non-default --apiserver-port [#4386](https://github.com/kubernetes/minikube/pull/4386) +* Fix kvm gpu log [#4381](https://github.com/kubernetes/minikube/pull/4381) +* Windows installer: Use PowerShell to update PATH value to avoid 1024 char truncation [#4362](https://github.com/kubernetes/minikube/pull/4362) +* Increase apiserver wait time from 1 minute to 3 minutes [#4372](https://github.com/kubernetes/minikube/pull/4372) +* Sync guest system clock if desynchronized from host [#4283](https://github.com/kubernetes/minikube/pull/4283) +* docker-env: Remove DOCKER_API_VERSION [#4364](https://github.com/kubernetes/minikube/pull/4364) +* Disable hyperv dynamic memory for hyperv driver [#2797](https://github.com/kubernetes/minikube/pull/2797) +* Fix kvm remove when domain is not defined [#4355](https://github.com/kubernetes/minikube/pull/4355) +* Enable registry-proxy [#4341](https://github.com/kubernetes/minikube/pull/4341) +* Make buildah --no-pivot default, using env var [#4321](https://github.com/kubernetes/minikube/pull/4321) +* Pass minikube stdin to the kubectl command [#4354](https://github.com/kubernetes/minikube/pull/4354) +* kernel: Add config for tc u32 filter and mirred action [#4340](https://github.com/kubernetes/minikube/pull/4340) +* Enable GatewayPorts in sshd_config, for proxying in services into minikube [#4338](https://github.com/kubernetes/minikube/pull/4338) +* Fix kvm remove when domain is not running [#4344](https://github.com/kubernetes/minikube/pull/4344) +* kvm2: Add support for --kvm-network to ensureNetwork [#4323](https://github.com/kubernetes/minikube/pull/4323) +* Get current profile if no arguments given [#4335](https://github.com/kubernetes/minikube/pull/4335) +* Skip kvm network deletion if private network doesn't exist [#4331](https://github.com/kubernetes/minikube/pull/4331) + +Huge thank you for this release towards our contributors: +- Abdulla Bin Mustaqeem +- Anders Björklund +- Andy Daniels +- Archana Shinde +- Arnaud Jardiné +- Artiom Diomin +- Balint Pato +- Benn Linger +- Calin Don +- Chris Eason +- Cristian Măgherușan-Stanciu @magheru_san +- Deepika Pandhi +- Dmitry Budaev +- Don McCasland +- Douglas Thrift +- Elijah Oyekunle +- Filip Havlíček +- Guang Ya Liu +- Himanshu Pandey +- Igor Akkerman +- Ihor Dvoretskyi +- Jan Janik +- Jat +- Joel Smith +- Joji Mekkatt +- Marco Vito Moscaritolo +- Marcos Diez +- Martynas Pumputis +- Mas +- Maximilian Hess +- Medya Gh +- Miel Donkers +- Mike Lewis +- Oleg Atamanenko +- Om Kumar +- Pradip-Khakurel +- Pranav Jituri +- RA489 +- Shahid Iqbal +- Sharif Elgamal +- Steven Davidovitz +- Thomas Bechtold +- Thomas Strömberg +- Tiago Ilieve +- Tobias Bradtke +- Toliver Jue +- Tom Reznik +- Yaroslav Skopets +- Yoan Blanc +- Zhongcheng Lao +- Zoran Regvart +- fenglixa +- flyingcircle +- jay vyas +- josedonizetti +- karmab +- kerami +- morvencao +- salamani +- u5surf +- wj24021040 + ## Version 1.1.0 - 2019-05-21 * Allow macOS to resolve service FQDNs during 'minikube tunnel' [#3464](https://github.com/kubernetes/minikube/pull/3464) diff --git a/Makefile b/Makefile index 8456cd2f43d8..eb2ac2f61d8c 100755 --- a/Makefile +++ b/Makefile @@ -15,9 +15,9 @@ # Bump these on release - and please check ISO_VERSION for correctness. VERSION_MAJOR ?= 1 VERSION_MINOR ?= 1 -VERSION_BUILD ?= 0 +VERSION_BUILD ?= 1 # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions -ISO_VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).0 +ISO_VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).1 VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) DEB_VERSION ?= $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) diff --git a/OWNERS b/OWNERS index 3c8229ebd761..93f08aae5fba 100644 --- a/OWNERS +++ b/OWNERS @@ -6,12 +6,14 @@ reviewers: - afbjorklund - sharifelgamal - RA489 + - medyagh approvers: - balopat - tstromberg - afbjorklund - sharifelgamal - RA489 + - medyagh emeritus_approvers: - dlorenc - luxas diff --git a/README.md b/README.md index d4f4d36c55fc..1b13670279fb 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ minikube's [primary goals](https://github.com/kubernetes/minikube/blob/master/do :mega: **Please fill out our [fast 5-question survey](https://forms.gle/Gg3hG5ZySw8c1C24A)** so that we can learn how & why you use minikube, and what improvements we should make. Thank you! :dancers: +* 2019-06-27 - v1.1.1 released! [[download](https://github.com/kubernetes/minikube/releases/tag/v1.1.1)] [[release notes](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md#version-111---2019-06-07)] * 2019-05-21 - v1.1.0 released! [[download](https://github.com/kubernetes/minikube/releases/tag/v1.1.0)] [[release notes](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md#version-110---2019-05-21)] * 2019-04-29 - v1.0.1 released! [[download](https://github.com/kubernetes/minikube/releases/tag/v1.0.1)] [[release notes](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md#version-101---2019-04-29)] * 2019-03-27 - v1.0.0 released! [[download](https://github.com/kubernetes/minikube/releases/tag/v1.0.0)] [[release notes](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md#version-1000---2019-03-27)] diff --git a/cmd/minikube/cmd/config/config.go b/cmd/minikube/cmd/config/config.go index 9982f0f57062..e8143caabc9b 100644 --- a/cmd/minikube/cmd/config/config.go +++ b/cmd/minikube/cmd/config/config.go @@ -131,6 +131,10 @@ var settings = []Setting{ name: Bootstrapper, set: SetString, //TODO(r2d4): more validation here? }, + { + name: config.ShowDriverDeprecationNotification, + set: SetBool, + }, { name: config.ShowBootstrapperDeprecationNotification, set: SetBool, diff --git a/cmd/minikube/cmd/dashboard.go b/cmd/minikube/cmd/dashboard.go index 200d285d03c1..fafe742fb0ab 100644 --- a/cmd/minikube/cmd/dashboard.go +++ b/cmd/minikube/cmd/dashboard.go @@ -26,13 +26,13 @@ import ( "regexp" "time" + "github.com/docker/machine/libmachine/mcnerror" "github.com/golang/glog" "github.com/pkg/browser" "github.com/pkg/errors" "github.com/spf13/cobra" configcmd "k8s.io/minikube/cmd/minikube/cmd/config" "k8s.io/minikube/pkg/minikube/cluster" - "k8s.io/minikube/pkg/minikube/config" pkg_config "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/console" "k8s.io/minikube/pkg/minikube/exit" @@ -59,15 +59,7 @@ var dashboardCmd = &cobra.Command{ if err != nil && !os.IsNotExist(err) { console.ErrLn("Error loading profile config: %v", err) } - err = proxy.ExcludeIP(cc.KubernetesConfig.NodeIP) // to be used for http get calls - if err != nil { - glog.Errorf("Error excluding IP from proxy: %s", err) - } - kubectl, err := exec.LookPath("kubectl") - if err != nil { - exit.WithCode(exit.NoInput, "kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/") - } api, err := machine.NewAPIClient() defer func() { err := api.Close() @@ -79,6 +71,27 @@ var dashboardCmd = &cobra.Command{ if err != nil { exit.WithError("Error getting client", err) } + + if _, err = api.Load(pkg_config.GetMachineName()); err != nil { + switch err := errors.Cause(err).(type) { + case mcnerror.ErrHostDoesNotExist: + console.OutStyle(console.Meh, "%q cluster does not exist", pkg_config.GetMachineName()) + os.Exit(exit.Unavailable) + default: + exit.WithError("Error getting cluster", err) + } + } + + err = proxy.ExcludeIP(cc.KubernetesConfig.NodeIP) // to be used for http get calls + if err != nil { + glog.Errorf("Error excluding IP from proxy: %s", err) + } + + kubectl, err := exec.LookPath("kubectl") + if err != nil { + exit.WithCode(exit.NoInput, "kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/") + } + cluster.EnsureMinikubeRunningOrExit(api, 1) // Send status messages to stderr for folks re-using this output. @@ -127,9 +140,9 @@ var dashboardCmd = &cobra.Command{ // kubectlProxy runs "kubectl proxy", returning host:port func kubectlProxy(path string) (*exec.Cmd, string, error) { // port=0 picks a random system port - // config.GetMachineName() respects the -p (profile) flag + // pkg_config.GetMachineName() respects the -p (profile) flag - cmd := exec.Command(path, "--context", config.GetMachineName(), "proxy", "--port=0") + cmd := exec.Command(path, "--context", pkg_config.GetMachineName(), "proxy", "--port=0") stdoutPipe, err := cmd.StdoutPipe() if err != nil { diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index c0c897798408..096886842316 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -56,7 +56,7 @@ associated files.`, } // In the case of "none", we want to uninstall Kubernetes as there is no VM to delete - if err == nil && cc.MachineConfig.VMDriver == "none" { + if err == nil && cc.MachineConfig.VMDriver == constants.DriverNone { kc := cc.KubernetesConfig bsName := viper.GetString(cmdcfg.Bootstrapper) console.OutStyle(console.Resetting, "Uninstalling Kubernetes %s using %s ...", kc.KubernetesVersion, bsName) diff --git a/cmd/minikube/cmd/env.go b/cmd/minikube/cmd/env.go index 8bd4cad6042d..cf4d669178a2 100644 --- a/cmd/minikube/cmd/env.go +++ b/cmd/minikube/cmd/env.go @@ -35,6 +35,7 @@ import ( "github.com/spf13/cobra" "k8s.io/minikube/pkg/minikube/cluster" "k8s.io/minikube/pkg/minikube/config" + "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/machine" ) @@ -342,7 +343,7 @@ var dockerEnvCmd = &cobra.Command{ if err != nil { exit.WithError("Error getting host", err) } - if host.Driver.DriverName() == "none" { + if host.Driver.DriverName() == constants.DriverNone { exit.Usage(`'none' driver does not support 'minikube docker-env' command`) } hostSt, err := cluster.GetHostStatus(api) diff --git a/cmd/minikube/cmd/mount.go b/cmd/minikube/cmd/mount.go index ec9d452bba07..a91d38a2660d 100644 --- a/cmd/minikube/cmd/mount.go +++ b/cmd/minikube/cmd/mount.go @@ -102,7 +102,7 @@ var mountCmd = &cobra.Command{ if err != nil { exit.WithError("Error loading api", err) } - if host.Driver.DriverName() == "none" { + if host.Driver.DriverName() == constants.DriverNone { exit.Usage(`'none' driver does not support 'minikube mount' command`) } var ip net.IP diff --git a/cmd/minikube/cmd/ssh.go b/cmd/minikube/cmd/ssh.go index ab79e950dd54..e791f6933095 100644 --- a/cmd/minikube/cmd/ssh.go +++ b/cmd/minikube/cmd/ssh.go @@ -23,6 +23,7 @@ import ( "k8s.io/minikube/pkg/minikube/cluster" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/console" + "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/machine" ) @@ -42,7 +43,7 @@ var sshCmd = &cobra.Command{ if err != nil { exit.WithError("Error getting host", err) } - if host.Driver.DriverName() == "none" { + if host.Driver.DriverName() == constants.DriverNone { exit.Usage("'none' driver does not support 'minikube ssh' command") } err = cluster.CreateSSHShell(api, args) diff --git a/deploy/addons/dashboard/dashboard-dp.yaml.tmpl b/deploy/addons/dashboard/dashboard-dp.yaml.tmpl index 5485a675ae39..6572f032d7db 100644 --- a/deploy/addons/dashboard/dashboard-dp.yaml.tmpl +++ b/deploy/addons/dashboard/dashboard-dp.yaml.tmpl @@ -42,6 +42,8 @@ spec: ports: - containerPort: 9090 protocol: TCP + args: + - --disable-settings-authorizer livenessProbe: httpGet: path: / diff --git a/deploy/minikube/releases.json b/deploy/minikube/releases.json index 3abf2338cd28..c5ac03845937 100644 --- a/deploy/minikube/releases.json +++ b/deploy/minikube/releases.json @@ -1,4 +1,12 @@ [ + { + "name": "v1.1.1", + "checksums": { + "darwin": "cf6b2c0397147fa998a5c4e36ed7ad045d67f929daa3e46a1d01656b5ab7cac5", + "linux": "4596c0daabfe637912e2372c41cc11116ca053a1f7045af8a731265e45f9ca83", + "windows": "e86e9c7c1c25cfd251f010b62e83fdf2ee2eefc3e73b4b1f7fa18971577150be" + } + }, { "name": "v1.1.0", "checksums": { diff --git a/docs/contributors/releasing_minikube.md b/docs/contributors/releasing_minikube.md index 0dddb097a847..16ca03062022 100644 --- a/docs/contributors/releasing_minikube.md +++ b/docs/contributors/releasing_minikube.md @@ -94,15 +94,15 @@ WARNING: The Brew cask automation is error-prone. please ensure that a PR was cr Verify release checksums by running`make check-release` -## Update docs +## Update minikube frontpage -If there are major changes, please send a PR to update +We document the last 3 releases on our frontpage. Please add it to the list: https://github.com/kubernetes/minikube/blob/master/README.md -## Announce +## Update official Kubernetes docs -Please mention the new release https://github.com/kubernetes/minikube/blob/master/README.md +If there are major changes, please send a PR to update -Other places: +## Announce! - #minikube on Slack - minikube-dev, minikube-users mailing list diff --git a/docs/drivers.md b/docs/drivers.md index 14a63bf8a0aa..4480efb2962a 100644 --- a/docs/drivers.md +++ b/docs/drivers.md @@ -21,6 +21,7 @@ To install the KVM2 driver, first install and configure the prerequisites, namel * Debian or Ubuntu 18.x: `sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm` * Ubuntu 16.x or older: `sudo apt install libvirt-bin libvirt-daemon-system qemu-kvm` * Fedora/CentOS/RHEL: `sudo yum install libvirt-daemon-kvm qemu-kvm` +* openSUSE/SLES: `sudo zypper install libvirt qemu-kvm` Check your installed virsh version: diff --git a/hack/jenkins/windows_integration_test_hyperv.ps1 b/hack/jenkins/windows_integration_test_hyperv.ps1 new file mode 100644 index 000000000000..174159efaf1a --- /dev/null +++ b/hack/jenkins/windows_integration_test_hyperv.ps1 @@ -0,0 +1,32 @@ +# Copyright 2019 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. + +mkdir -p out +gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/ +gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/ +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata . + +./out/minikube-windows-amd64.exe delete + +out/e2e-windows-amd64.exe -minikube-start-args="--vm-driver=hyperv --hyperv-virtual-switch=primary-virtual-switch --bootstrapper=kubeadm" -minikube-args="--v=10 --logtostderr" -binary=out/minikube-windows-amd64.exe -test.v -test.timeout=65m +$env:result=$lastexitcode +# If the last exit code was 0->success, x>0->error +If($env:result -eq 0){$env:status="success"} +Else {$env:status="failure"} + +$env:target_url="https://storage.googleapis.com/minikube-builds/logs/$env:MINIKUBE_LOCATION/Windows-hyperv.txt" +$json = "{`"state`": `"$env:status`", `"description`": `"Jenkins`", `"target_url`": `"$env:target_url`", `"context`": `"Windows-hyperv`"}" +Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing + +Exit $env:result diff --git a/pkg/drivers/none/none.go b/pkg/drivers/none/none.go index 76ca08f08223..ec2218f4d777 100644 --- a/pkg/drivers/none/none.go +++ b/pkg/drivers/none/none.go @@ -27,10 +27,11 @@ import ( "k8s.io/apimachinery/pkg/util/net" pkgdrivers "k8s.io/minikube/pkg/drivers" // TODO(tstromberg): Extract CommandRunner into its own package "k8s.io/minikube/pkg/minikube/bootstrapper" + "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/cruntime" ) -const driverName = "none" +const driverName = constants.DriverNone // cleanupPaths are paths to be removed by cleanup, and are used by both kubeadm and minikube. var cleanupPaths = []string{ diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go index 7785cb8f5223..2261b9cb14c7 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go @@ -75,7 +75,7 @@ Wants=crio.service [Service] ExecStart= -ExecStart=/usr/bin/kubelet --allow-privileged=true --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 --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 --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m +ExecStart=/usr/bin/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 --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 --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m [Install] `, diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-api-port__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-api-port__default.yaml index 8ceb75fdfe93..f6b37397cae5 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-api-port__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-api-port__default.yaml @@ -28,7 +28,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-pod-network-cidr__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-pod-network-cidr__default.yaml index d7b9dadfa5d7..f11516f99dc7 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-pod-network-cidr__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd-pod-network-cidr__default.yaml @@ -28,7 +28,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd__default.yaml index d7b9dadfa5d7..f11516f99dc7 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/containerd__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/containerd__default.yaml @@ -28,7 +28,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/crio-options-gates__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/crio-options-gates__default.yaml index 0ed6fe561c97..cdef8bafa1aa 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/crio-options-gates__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/crio-options-gates__default.yaml @@ -38,7 +38,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/crio__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/crio__default.yaml index 161f27cd44ec..bf8ba7daefa5 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/crio__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/crio__default.yaml @@ -28,7 +28,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/default__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/default__default.yaml index 4dfbcf8cbd21..d2dc46469314 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/default__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/default__default.yaml @@ -28,7 +28,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/image-repository__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/image-repository__default.yaml index 302a7384c622..66cab56ad3ea 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/image-repository__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/image-repository__default.yaml @@ -29,7 +29,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/testdata/options__default.yaml b/pkg/minikube/bootstrapper/kubeadm/testdata/options__default.yaml index f60518978517..1c1ff1c39522 100644 --- a/pkg/minikube/bootstrapper/kubeadm/testdata/options__default.yaml +++ b/pkg/minikube/bootstrapper/kubeadm/testdata/options__default.yaml @@ -35,7 +35,7 @@ dns: etcd: local: dataDir: /data/minikube -kubernetesVersion: v1.14.2 +kubernetesVersion: v1.14.3 networking: dnsDomain: cluster.local podSubnet: "" diff --git a/pkg/minikube/bootstrapper/kubeadm/versions.go b/pkg/minikube/bootstrapper/kubeadm/versions.go index 18563c0ac38e..2c7c9a97f991 100644 --- a/pkg/minikube/bootstrapper/kubeadm/versions.go +++ b/pkg/minikube/bootstrapper/kubeadm/versions.go @@ -242,7 +242,14 @@ var versionSpecificOpts = []VersionedExtraOption{ // System pods args NewUnversionedOption(Kubelet, "pod-manifest-path", "/etc/kubernetes/manifests"), - NewUnversionedOption(Kubelet, "allow-privileged", "true"), + { + Option: util.ExtraOption{ + Component: Kubelet, + Key: "allow-privileged", + Value: "true", + }, + LessThanOrEqual: semver.MustParse("1.15.0-alpha.3"), + }, // Network args NewUnversionedOption(Kubelet, "cluster-dns", "10.96.0.10"), diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index 740db7973e09..40089d0f0b39 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -72,7 +72,7 @@ func init() { // CacheISO downloads and caches ISO. func CacheISO(config cfg.MachineConfig) error { - if config.VMDriver != "none" { + if config.VMDriver != constants.DriverNone { if err := config.Downloader.CacheMinikubeISOFromURL(config.MinikubeISO); err != nil { return err } @@ -154,7 +154,7 @@ func configureHost(h *host.Host, e *engine.Options) error { } } - if h.Driver.DriverName() != "none" { + if h.Driver.DriverName() != constants.DriverNone { if err := h.ConfigureAuth(); err != nil { return &util.RetriableError{Err: errors.Wrap(err, "Error configuring auth on host")} } @@ -325,21 +325,21 @@ func preCreateHost(config *cfg.MachineConfig) { console.Warning(`The kvm driver is deprecated and support for it will be removed in a future release. Please consider switching to the kvm2 driver, which is intended to replace the kvm driver. See https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver for more information. - To disable this message, run [minikube config set WantShowDriverDeprecationNotification false]`) + To disable this message, run [minikube config set ShowDriverDeprecationNotification false]`) } case "xhyve": if viper.GetBool(cfg.ShowDriverDeprecationNotification) { console.Warning(`The xhyve driver is deprecated and support for it will be removed in a future release. Please consider switching to the hyperkit driver, which is intended to replace the xhyve driver. See https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver for more information. -To disable this message, run [minikube config set WantShowDriverDeprecationNotification false]`) +To disable this message, run [minikube config set ShowDriverDeprecationNotification false]`) } case "vmwarefusion": if viper.GetBool(cfg.ShowDriverDeprecationNotification) { console.Warning(`The vmwarefusion driver is deprecated and support for it will be removed in a future release. Please consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver. See https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#vmware-unified-driver for more information. - To disable this message, run [minikube config set WantShowDriverDeprecationNotification false]`) + To disable this message, run [minikube config set ShowDriverDeprecationNotification false]`) } } } diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index 2610e475d589..b40a26be57ec 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -162,10 +162,10 @@ var DefaultISOURL = fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s.i var DefaultISOSHAURL = DefaultISOURL + SHASuffix // DefaultKubernetesVersion is the default kubernetes version -var DefaultKubernetesVersion = "v1.14.2" +var DefaultKubernetesVersion = "v1.14.3" // NewestKubernetesVersion is the newest Kubernetes version to test against -var NewestKubernetesVersion = "v1.14.2" +var NewestKubernetesVersion = "v1.15.0-beta.1" // OldestKubernetesVersion is the oldest Kubernetes version to test against var OldestKubernetesVersion = "v1.10.13" diff --git a/pkg/minikube/drivers/none/driver.go b/pkg/minikube/drivers/none/driver.go index 5e7c66d022ce..6233a91251ae 100644 --- a/pkg/minikube/drivers/none/driver.go +++ b/pkg/minikube/drivers/none/driver.go @@ -28,7 +28,7 @@ import ( func init() { if err := registry.Register(registry.DriverDef{ - Name: "none", + Name: constants.DriverNone, Builtin: true, ConfigCreator: createNoneHost, DriverCreator: func() drivers.Driver { diff --git a/pkg/minikube/machine/cache_images.go b/pkg/minikube/machine/cache_images.go index e6b591de4dcb..2f807e24b2e3 100644 --- a/pkg/minikube/machine/cache_images.go +++ b/pkg/minikube/machine/cache_images.go @@ -41,7 +41,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/sshutil" ) const tempLoadDir = "/tmp" @@ -129,11 +128,10 @@ func CacheAndLoadImages(images []string) error { return err } - client, err := sshutil.NewSSHClient(h.Driver) + runner, err := CommandRunner(h) if err != nil { return err } - runner := bootstrapper.NewSSHRunner(client) return LoadImages(runner, images, constants.ImageCacheDir) } diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index b238665e631d..bdd6abc1122a 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -189,7 +189,7 @@ func (api *LocalClient) Create(h *host.Host) error { { "waiting", func() error { - if h.Driver.DriverName() == "none" { + if h.Driver.DriverName() == constants.DriverNone { return nil } return mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running)) @@ -198,7 +198,7 @@ func (api *LocalClient) Create(h *host.Host) error { { "provisioning", func() error { - if h.Driver.DriverName() == "none" { + if h.Driver.DriverName() == constants.DriverNone { return nil } pv := provision.NewBuildrootProvisioner(h.Driver) diff --git a/test/integration/addons_test.go b/test/integration/addons_test.go index 748894f2e0ba..682cffdc2f2c 100644 --- a/test/integration/addons_test.go +++ b/test/integration/addons_test.go @@ -25,6 +25,7 @@ import ( "net" "net/http" "net/url" + "path" "path/filepath" "strings" "testing" @@ -131,12 +132,16 @@ func testIngressController(t *testing.T) { t.Fatalf("waiting for default-http-backend to be up: %v", err) } - ingressPath, _ := filepath.Abs("testdata/nginx-ing.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + ingressPath := path.Join(curdir, "testdata", "nginx-ing.yaml") if _, err := kubectlRunner.RunCommand([]string{"create", "-f", ingressPath}); err != nil { t.Fatalf("creating nginx ingress resource: %v", err) } - podPath, _ := filepath.Abs("testdata/nginx-pod-svc.yaml") + podPath := path.Join(curdir, "testdata", "nginx-pod-svc.yaml") if _, err := kubectlRunner.RunCommand([]string{"create", "-f", podPath}); err != nil { t.Fatalf("creating nginx ingress resource: %v", err) } @@ -248,7 +253,11 @@ func testGvisorRestart(t *testing.T) { func createUntrustedWorkload(t *testing.T) { kubectlRunner := util.NewKubectlRunner(t) - untrustedPath, _ := filepath.Abs("testdata/nginx-untrusted.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + untrustedPath := path.Join(curdir, "testdata", "nginx-untrusted.yaml") t.Log("creating pod with untrusted workload annotation") if _, err := kubectlRunner.RunCommand([]string{"replace", "-f", untrustedPath, "--force"}); err != nil { t.Fatalf("creating untrusted nginx resource: %v", err) @@ -257,7 +266,11 @@ func createUntrustedWorkload(t *testing.T) { func deleteUntrustedWorkload(t *testing.T) { kubectlRunner := util.NewKubectlRunner(t) - untrustedPath, _ := filepath.Abs("testdata/nginx-untrusted.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + untrustedPath := path.Join(curdir, "testdata", "nginx-untrusted.yaml") if _, err := kubectlRunner.RunCommand([]string{"delete", "-f", untrustedPath}); err != nil { t.Logf("error deleting untrusted nginx resource: %v", err) } diff --git a/test/integration/mount_test.go b/test/integration/mount_test.go index 156e44e6cd0a..a55d04e41700 100644 --- a/test/integration/mount_test.go +++ b/test/integration/mount_test.go @@ -22,6 +22,7 @@ import ( "fmt" "io/ioutil" "os" + "path" "path/filepath" "runtime" "strings" @@ -61,7 +62,11 @@ func testMounting(t *testing.T) { kubectlRunner := util.NewKubectlRunner(t) podName := "busybox-mount" - podPath, _ := filepath.Abs("testdata/busybox-mount-test.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + podPath := path.Join(curdir, "testdata", "busybox-mount-test.yaml") // Write file in mounted dir from host expected := "test\n" diff --git a/test/integration/persistence_test.go b/test/integration/persistence_test.go index 0d889ee9dd9e..158c70668d49 100644 --- a/test/integration/persistence_test.go +++ b/test/integration/persistence_test.go @@ -19,6 +19,7 @@ limitations under the License. package integration import ( + "path" "path/filepath" "strings" "testing" @@ -36,7 +37,11 @@ func TestPersistence(t *testing.T) { minikubeRunner.EnsureRunning() kubectlRunner := util.NewKubectlRunner(t) - podPath, _ := filepath.Abs("testdata/busybox.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + podPath := path.Join(curdir, "testdata", "busybox.yaml") // Create a pod and wait for it to be running. if _, err := kubectlRunner.RunCommand([]string{"create", "-f", podPath}); err != nil { diff --git a/test/integration/proxy_test.go b/test/integration/proxy_test.go index 96f84c67c03f..7896e3e8df90 100644 --- a/test/integration/proxy_test.go +++ b/test/integration/proxy_test.go @@ -21,12 +21,14 @@ package integration import ( "context" "fmt" + "io/ioutil" "os" "strings" "testing" "time" "net/http" + "net/url" "github.com/elazarl/goproxy" "github.com/phayes/freeport" @@ -68,7 +70,17 @@ func TestProxy(t *testing.T) { t.Fatalf("Failed to set up the test proxy: %s", err) } - defer func(t *testing.T) { // Clean up after setting up proxy + // making sure there is no running miniukube to avoid https://github.com/kubernetes/minikube/issues/4132 + r := NewMinikubeRunner(t) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + _, _, err = r.RunWithContext(ctx, "delete") + if err != nil { + t.Logf("Error deleting minikube before test setup %s : ", err) + } + + // Clean up after setting up proxy + defer func(t *testing.T) { err = os.Setenv("HTTP_PROXY", origHP) if err != nil { t.Errorf("Error reverting the HTTP_PROXY env") @@ -82,28 +94,29 @@ func TestProxy(t *testing.T) { if err != nil { t.Errorf("Error shutting down the http proxy") } + + _, _, err = r.RunWithContext(ctx, "delete") + if err != nil { + t.Logf("Error deleting minikube when cleaning up proxy setup: %s", err) + } }(t) - t.Run("ConsoleWarnning", testProxyWarning) - t.Run("DashboardProxy", testDashboard) + t.Run("Proxy Console Warnning", testProxyWarning) + t.Run("Proxy Dashboard", testProxyDashboard) } // testProxyWarning checks user is warned correctly about the proxy related env vars func testProxyWarning(t *testing.T) { - mk := NewMinikubeRunner(t) - // Start a timer for all remaining commands, to display failure output before a panic. + r := NewMinikubeRunner(t) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) defer cancel() - startCmd := fmt.Sprintf("start %s %s %s", mk.StartArgs, mk.Args, "--alsologtostderr --v=5") - stdout, stderr, err := mk.RunWithContext(ctx, startCmd) + startCmd := fmt.Sprintf("start %s %s %s", r.StartArgs, r.Args, "--alsologtostderr --v=5") + stdout, stderr, err := r.RunWithContext(ctx, startCmd) if err != nil { t.Fatalf("start: %v\nstdout: %s\nstderr: %s", err, stdout, stderr) } - mk.EnsureRunning() - // Pre-cleanup: this usually fails, because no instance is running. - // mk.RunWithContext(ctx, "delete") msg := "Found network options:" if !strings.Contains(stdout, msg) { t.Errorf("Proxy wranning (%s) is missing from the output: %s", msg, stderr) @@ -113,5 +126,37 @@ func testProxyWarning(t *testing.T) { if !strings.Contains(stderr, msg) { t.Errorf("Proxy wranning (%s) is missing from the output: %s", msg, stderr) } +} + +// testProxyDashboard checks if dashboard URL is accessible if proxy is set +func testProxyDashboard(t *testing.T) { + minikubeRunner := NewMinikubeRunner(t) + cmd, out := minikubeRunner.RunDaemon("dashboard --url") + defer func() { + err := cmd.Process.Kill() + if err != nil { + t.Logf("Failed to kill dashboard command: %v", err) + } + }() + + s, err := readLineWithTimeout(out, 180*time.Second) + if err != nil { + t.Fatalf("failed to read url: %v", err) + } + u, err := url.Parse(strings.TrimSpace(s)) + if err != nil { + t.Fatalf("failed to parse %q: %v", s, err) + } + resp, err := http.Get(u.String()) + if err != nil { + t.Fatalf("failed get: %v", err) + } + if resp.StatusCode != http.StatusOK { + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatalf("Unable to read http response body: %v", err) + } + t.Errorf("%s returned status code %d, expected %d.\nbody:\n%s", u, resp.StatusCode, http.StatusOK, body) + } } diff --git a/test/integration/tunnel_test.go b/test/integration/tunnel_test.go index 3a487d1df492..d869938f1820 100644 --- a/test/integration/tunnel_test.go +++ b/test/integration/tunnel_test.go @@ -21,6 +21,7 @@ import ( "io/ioutil" "net/http" "os/exec" + "path" "path/filepath" "runtime" "strings" @@ -62,7 +63,11 @@ func testTunnel(t *testing.T) { kubectlRunner := util.NewKubectlRunner(t) t.Log("deploying nginx...") - podPath, _ := filepath.Abs("testdata/testsvc.yaml") + curdir, err := filepath.Abs("") + if err != nil { + t.Errorf("Error getting the file path for current directory: %s", curdir) + } + podPath := path.Join(curdir, "testdata", "testsvc.yaml") if _, err := kubectlRunner.RunCommand([]string{"apply", "-f", podPath}); err != nil { t.Fatalf("creating nginx ingress resource: %s", err) }