Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: kubernetes/minikube
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: a17faf893223aac83c68a3a339dd9c10d0f722c1
Choose a base ref
..
head repository: kubernetes/minikube
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2f2a8357a871ce50da18b7679e31980c53a3cc6d
Choose a head ref
Showing with 46 additions and 29 deletions.
  1. +0 −19 cmd/minikube/cmd/start.go
  2. +2 −1 cmd/minikube/cmd/start_flags.go
  3. +0 −2 pkg/minikube/machine/machine.go
  4. +21 −6 pkg/minikube/machine/start.go
  5. +2 −1 pkg/minikube/node/start.go
  6. +21 −0 pkg/minikube/proxy/proxy.go
19 changes: 0 additions & 19 deletions cmd/minikube/cmd/start.go
Original file line number Diff line number Diff line change
@@ -56,7 +56,6 @@ import (
"k8s.io/minikube/pkg/minikube/node"
"k8s.io/minikube/pkg/minikube/notify"
"k8s.io/minikube/pkg/minikube/out"
"k8s.io/minikube/pkg/minikube/proxy"
"k8s.io/minikube/pkg/minikube/registry"
"k8s.io/minikube/pkg/minikube/translate"
"k8s.io/minikube/pkg/util"
@@ -909,24 +908,6 @@ func createNode(cc config.ClusterConfig, kubeNodeName string, existing *config.C
return cc, cp, nil
}

// setDockerProxy sets the proxy environment variables in the docker environment.
func setDockerProxy() {
for _, k := range proxy.EnvVars {
if v := os.Getenv(k); v != "" {
// convert https_proxy to HTTPS_PROXY for linux
// TODO (@medyagh): if user has both http_proxy & HTTPS_PROXY set merge them.
k = strings.ToUpper(k)
if k == "HTTP_PROXY" || k == "HTTPS_PROXY" {
if strings.HasPrefix(v, "localhost") || strings.HasPrefix(v, "127.0") {
out.WarningT("Not passing {{.name}}={{.value}} to docker env.", out.V{"name": k, "value": v})
continue
}
}
config.DockerEnv = append(config.DockerEnv, fmt.Sprintf("%s=%s", k, v))
}
}
}

// autoSetDriverOptions sets the options needed for specific driver automatically.
func autoSetDriverOptions(cmd *cobra.Command, drvName string) (err error) {
err = nil
3 changes: 2 additions & 1 deletion cmd/minikube/cmd/start_flags.go
Original file line number Diff line number Diff line change
@@ -36,6 +36,7 @@ import (
"k8s.io/minikube/pkg/minikube/driver"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/out"
"k8s.io/minikube/pkg/minikube/proxy"
pkgutil "k8s.io/minikube/pkg/util"
"k8s.io/minikube/pkg/version"
)
@@ -341,7 +342,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k
// Feed Docker our host proxy environment by default, so that it can pull images
// doing this for both new config and existing, in case proxy changed since previous start
if _, ok := r.(*cruntime.Docker); ok && !cmd.Flags().Changed("docker-env") {
setDockerProxy()
proxy.SetDockerEnv()
}

var kubeNodeName string
2 changes: 0 additions & 2 deletions pkg/minikube/machine/machine.go
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@ limitations under the License.
package machine

import (
"fmt"
"time"

"github.com/docker/machine/libmachine/host"
@@ -94,7 +93,6 @@ func provisionDockerMachine(h *host.Host) error {
if err != nil {
return errors.Wrap(err, "fast detect")
}
fmt.Printf("engine options are :\n %+v\n", h.HostOptions.EngineOptions)
return p.Provision(*h.HostOptions.SwarmOptions, *h.HostOptions.AuthOptions, *h.HostOptions.EngineOptions)
}

27 changes: 21 additions & 6 deletions pkg/minikube/machine/start.go
Original file line number Diff line number Diff line change
@@ -39,6 +39,7 @@ import (
"k8s.io/minikube/pkg/minikube/driver"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/minikube/out"
"k8s.io/minikube/pkg/minikube/proxy"
"k8s.io/minikube/pkg/minikube/registry"
"k8s.io/minikube/pkg/minikube/vmpath"
"k8s.io/minikube/pkg/util/lock"
@@ -89,9 +90,28 @@ func StartHost(api libmachine.API, cfg config.ClusterConfig, n config.Node) (*ho
return h, exists, err
}

// engineOptions returns docker engine options for the dockerd running inside minikube
func engineOptions(cfg config.ClusterConfig) *engine.Options {
// get docker env from user's proxy settings
dockerEnv := proxy.SetDockerEnv()
// get docker env from user specifiec config
dockerEnv = append(dockerEnv, cfg.DockerEnv...)

// remove duplicates
seen := map[string]bool{}
uniqueEnvs := []string{}
for e := range dockerEnv {
if !seen[dockerEnv[e]] {
seen[dockerEnv[e]] = true
uniqueEnvs = append(uniqueEnvs, dockerEnv[e])
}
}

// config.DockerEnv is a global so we update that one too
config.DockerEnv = uniqueEnvs

o := engine.Options{
Env: cfg.DockerEnv,
Env: uniqueEnvs,
InsecureRegistry: append([]string{constants.DefaultServiceCIDR}, cfg.InsecureRegistry...),
RegistryMirror: cfg.RegistryMirror,
ArbitraryFlags: cfg.DockerOpt,
@@ -136,11 +156,6 @@ func createHost(api libmachine.API, cfg config.ClusterConfig, n config.Node) (*h
h.HostOptions.AuthOptions.StorePath = localpath.MiniPath()
h.HostOptions.EngineOptions = engineOptions(cfg)

err = provisionDockerMachine(h)
if err != nil {
return h, errors.Wrap(err, "provision")
}

cstart := time.Now()
glog.Infof("libmachine.API.Create for %q (driver=%q)", cfg.Name, cfg.Driver)

3 changes: 2 additions & 1 deletion pkg/minikube/node/start.go
Original file line number Diff line number Diff line change
@@ -410,7 +410,8 @@ func validateNetwork(h *host.Host, r command.Runner, imageRepository string) (st
ipExcluded := proxy.IsIPExcluded(ip) // Skip warning if minikube ip is already in NO_PROXY
k = strings.ToUpper(k) // for http_proxy & https_proxy
if (k == "HTTP_PROXY" || k == "HTTPS_PROXY") && !ipExcluded && !warnedOnce {
out.WarningT("You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details", out.V{"ip_address": ip, "documentation_url": "https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/"})
out.WarningT("You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).", out.V{"ip_address": ip})
out.T(out.Documentation, "Please see {{.documentation_url}} for more details", out.V{"documentation_url": "https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/"})
warnedOnce = true
}
}
21 changes: 21 additions & 0 deletions pkg/minikube/proxy/proxy.go
Original file line number Diff line number Diff line change
@@ -26,6 +26,8 @@ import (
"github.com/golang/glog"
"github.com/pkg/errors"
"k8s.io/client-go/rest"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/out"
)

// EnvVars are variables we plumb through to the underlying container runtime
@@ -149,3 +151,22 @@ func UpdateTransport(cfg *rest.Config) *rest.Config {
}
return cfg
}

// SetDockerEnv sets the proxy environment variables in the docker environment.
func SetDockerEnv() []string {
for _, k := range EnvVars {
if v := os.Getenv(k); v != "" {
// convert https_proxy to HTTPS_PROXY for linux
// TODO (@medyagh): if user has both http_proxy & HTTPS_PROXY set merge them.
k = strings.ToUpper(k)
if k == "HTTP_PROXY" || k == "HTTPS_PROXY" {
if strings.HasPrefix(v, "localhost") || strings.HasPrefix(v, "127.0") {
out.WarningT("Not passing {{.name}}={{.value}} to docker env.", out.V{"name": k, "value": v})
continue
}
}
config.DockerEnv = append(config.DockerEnv, fmt.Sprintf("%s=%s", k, v))
}
}
return config.DockerEnv
}