diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index f4e6e53697fb..f9ee03f91853 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -131,7 +131,14 @@ func NeedsRoot(name string) bool { // NeedsPortForward returns true if driver is unable provide direct IP connectivity func NeedsPortForward(name string) bool { // Docker for Desktop - return IsKIC(name) && (runtime.GOOS == "darwin" || runtime.GOOS == "windows") + return IsKIC(name) && (runtime.GOOS == "darwin" || runtime.GOOS == "windows" || IsMicrosoftWSL()) +} + +// IsMicrosoftWSL will return true if process is running in WSL in windows +// checking for WSL env var based on this https://github.com/microsoft/WSL/issues/423#issuecomment-608237689 +// also based on https://github.com/microsoft/vscode/blob/90a39ba0d49d75e9a4d7e62a6121ad946ecebc58/resources/win32/bin/code.sh#L24 +func IsMicrosoftWSL() bool { + return os.Getenv("WSL_DISTRO_NAME") != "" || os.Getenv("WSLPATH") != "" || os.Getenv("WSLENV") != "" } // HasResourceLimits returns true if driver can set resource limits such as memory size or CPU count. diff --git a/test/integration/main.go b/test/integration/main.go index 7a2865fd0878..0c1f2e70d982 100644 --- a/test/integration/main.go +++ b/test/integration/main.go @@ -24,6 +24,8 @@ import ( "strings" "testing" "time" + + "k8s.io/minikube/pkg/minikube/driver" ) // General configuration: used to set the VM Driver @@ -93,7 +95,7 @@ func KicDriver() bool { // NeedsPortForward returns access to endpoints with this driver needs port forwarding // (Docker on non-Linux platforms requires ports to be forwarded to 127.0.0.1) func NeedsPortForward() bool { - return KicDriver() && (runtime.GOOS == "windows" || runtime.GOOS == "darwin") + return KicDriver() && (runtime.GOOS == "windows" || runtime.GOOS == "darwin") || driver.IsMicrosoftWSL() } // CanCleanup returns if cleanup is allowed