From 8536fb76419d04bd2c75b47f2599792b6cef28a0 Mon Sep 17 00:00:00 2001 From: Sharif Elgamal Date: Wed, 19 Feb 2020 12:53:59 -0800 Subject: [PATCH] changes and things --- cmd/minikube/cmd/config/set_test.go | 2 +- cmd/minikube/cmd/logs.go | 2 +- cmd/minikube/cmd/start.go | 14 +++---- cmd/minikube/cmd/start_test.go | 6 +-- pkg/addons/addons.go | 2 +- pkg/addons/addons_test.go | 2 +- pkg/addons/config.go | 2 +- pkg/minikube/bootstrapper/bootstrapper.go | 7 ++-- pkg/minikube/bootstrapper/bsutil/kubeadm.go | 2 +- .../bootstrapper/bsutil/kubeadm_test.go | 24 ++++++------ pkg/minikube/bootstrapper/bsutil/kubelet.go | 2 +- .../bootstrapper/bsutil/kubelet_test.go | 12 +++--- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 37 +++++++++++++++---- pkg/minikube/cluster/cluster.go | 4 +- pkg/minikube/cluster/iso.go | 2 +- pkg/minikube/config/config.go | 14 +++---- pkg/minikube/config/node.go | 2 +- pkg/minikube/config/profile.go | 6 +-- pkg/minikube/config/profile_test.go | 8 ++-- .../.minikube2/profiles/p1/config.json | 2 +- .../.minikube2/profiles/p2/config.json | 2 +- .../profiles/p5_partial_config/config.json | 2 +- .../.minikube/profiles/p1/config.json | 2 +- .../p4_partial_profile_config/config.json | 2 +- .../p5_missing_machine_config/config.json | 2 +- .../p6_empty_machine_config/config.json | 2 +- .../p7_invalid_machine_config/config.json | 2 +- .../p8_partial_machine_config/config.json | 2 +- .../.minikube/profiles/p1/config.json | 2 +- .../p4_partial_profile_config/config.json | 2 +- .../p5_missing_machine_config/config.json | 2 +- .../p6_empty_machine_config/config.json | 2 +- .../p7_invalid_machine_config/config.json | 2 +- .../p8_partial_machine_config/config.json | 2 +- pkg/minikube/config/types.go | 6 +-- pkg/minikube/machine/cache_images.go | 2 +- pkg/minikube/machine/cluster_test.go | 34 ++++++++--------- pkg/minikube/machine/fix.go | 2 +- pkg/minikube/machine/start.go | 10 ++--- pkg/minikube/node/config.go | 4 +- pkg/minikube/node/machine.go | 4 +- pkg/minikube/node/node.go | 13 ++++--- pkg/minikube/node/start.go | 2 +- pkg/minikube/registry/drvs/docker/docker.go | 2 +- .../registry/drvs/hyperkit/hyperkit.go | 2 +- pkg/minikube/registry/drvs/hyperv/hyperv.go | 2 +- pkg/minikube/registry/drvs/kvm2/kvm2.go | 2 +- pkg/minikube/registry/drvs/none/none.go | 2 +- .../registry/drvs/parallels/parallels.go | 2 +- pkg/minikube/registry/drvs/podman/podman.go | 2 +- .../registry/drvs/virtualbox/virtualbox.go | 2 +- pkg/minikube/registry/drvs/vmware/vmware.go | 2 +- .../drvs/vmwarefusion/vmwarefusion.go | 2 +- pkg/minikube/registry/registry.go | 2 +- pkg/minikube/tunnel/cluster_inspector.go | 4 +- pkg/minikube/tunnel/cluster_inspector_test.go | 6 +-- pkg/minikube/tunnel/test_doubles.go | 6 +-- pkg/minikube/tunnel/tunnel_test.go | 4 +- .../en/docs/Contributing/drivers.en.md | 2 +- 59 files changed, 162 insertions(+), 139 deletions(-) diff --git a/cmd/minikube/cmd/config/set_test.go b/cmd/minikube/cmd/config/set_test.go index f236445ffc..acd4db256b 100644 --- a/cmd/minikube/cmd/config/set_test.go +++ b/cmd/minikube/cmd/config/set_test.go @@ -80,7 +80,7 @@ func createTestProfile(t *testing.T) { if err := os.MkdirAll(config.ProfileFolderPath(name), 0777); err != nil { t.Fatalf("error creating temporary directory") } - if err := config.DefaultLoader.WriteConfigToFile(name, &config.MachineConfig{}); err != nil { + if err := config.DefaultLoader.WriteConfigToFile(name, &config.ClusterConfig{}); err != nil { t.Fatalf("error creating temporary profile config: %v", err) } } diff --git a/cmd/minikube/cmd/logs.go b/cmd/minikube/cmd/logs.go index 4796ef54b4..934ca9c1b0 100644 --- a/cmd/minikube/cmd/logs.go +++ b/cmd/minikube/cmd/logs.go @@ -67,7 +67,7 @@ var logsCmd = &cobra.Command{ if err != nil { exit.WithError("command runner", err) } - bs, err := cluster.Bootstrapper(api, viper.GetString(cmdcfg.Bootstrapper)) + bs, err := cluster.Bootstrapper(api, viper.GetString(cmdcfg.Bootstrapper), viper.GetString(config.MachineProfile)) if err != nil { exit.WithError("Error getting cluster bootstrapper", err) } diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index de5002a4c9..72d83bd549 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -351,7 +351,7 @@ func updateDriver(driverName string) { } } -func cacheISO(cfg *config.MachineConfig, driverName string) { +func cacheISO(cfg *config.ClusterConfig, driverName string) { if !driver.BareMetal(driverName) && !driver.IsKIC(driverName) { if err := cluster.CacheISO(*cfg); err != nil { exit.WithError("Failed to cache ISO", err) @@ -429,7 +429,7 @@ func showKubectlInfo(kcs *kubeconfig.Settings, k8sVersion string, machineName st return nil } -func selectDriver(existing *config.MachineConfig) registry.DriverState { +func selectDriver(existing *config.ClusterConfig) registry.DriverState { // Technically unrelated, but important to perform before detection driver.SetLibvirtURI(viper.GetString(kvmQemuURI)) @@ -464,7 +464,7 @@ func selectDriver(existing *config.MachineConfig) registry.DriverState { } // validateDriver validates that the selected driver appears sane, exits if not -func validateDriver(ds registry.DriverState, existing *config.MachineConfig) { +func validateDriver(ds registry.DriverState, existing *config.ClusterConfig) { name := ds.Name glog.Infof("validating driver %q against %+v", name, existing) if !driver.Supported(name) { @@ -717,10 +717,10 @@ func validateRegistryMirror() { } // generateCfgFromFlags generates config.Config based on flags and supplied arguments -func generateCfgFromFlags(cmd *cobra.Command, k8sVersion string, drvName string) (config.MachineConfig, config.Node, error) { +func generateCfgFromFlags(cmd *cobra.Command, k8sVersion string, drvName string) (config.ClusterConfig, config.Node, error) { r, err := cruntime.New(cruntime.Config{Type: viper.GetString(containerRuntime)}) if err != nil { - return config.MachineConfig{}, config.Node{}, err + return config.ClusterConfig{}, config.Node{}, err } // Pick good default values for --network-plugin and --enable-default-cni based on runtime. @@ -775,7 +775,7 @@ func generateCfgFromFlags(cmd *cobra.Command, k8sVersion string, drvName string) Worker: true, } - cfg := config.MachineConfig{ + cfg := config.ClusterConfig{ Name: viper.GetString(config.MachineProfile), KeepContext: viper.GetBool(keepContext), EmbedCerts: viper.GetBool(embedCerts), @@ -881,7 +881,7 @@ func autoSetDriverOptions(cmd *cobra.Command, drvName string) (err error) { } // getKubernetesVersion ensures that the requested version is reasonable -func getKubernetesVersion(old *config.MachineConfig) string { +func getKubernetesVersion(old *config.ClusterConfig) string { paramVersion := viper.GetString(kubernetesVersion) if paramVersion == "" { // if the user did not specify any version then ... diff --git a/cmd/minikube/cmd/start_test.go b/cmd/minikube/cmd/start_test.go index 1003292da2..b664e3486b 100644 --- a/cmd/minikube/cmd/start_test.go +++ b/cmd/minikube/cmd/start_test.go @@ -31,7 +31,7 @@ func TestGetKuberneterVersion(t *testing.T) { description string expectedVersion string paramVersion string - cfg *cfg.MachineConfig + cfg *cfg.ClusterConfig }{ { description: "kubernetes-version not given, no config", @@ -42,7 +42,7 @@ func TestGetKuberneterVersion(t *testing.T) { description: "kubernetes-version not given, config available", expectedVersion: "v1.15.0", paramVersion: "", - cfg: &cfg.MachineConfig{KubernetesConfig: cfg.KubernetesConfig{KubernetesVersion: "v1.15.0"}}, + cfg: &cfg.ClusterConfig{KubernetesConfig: cfg.KubernetesConfig{KubernetesVersion: "v1.15.0"}}, }, { description: "kubernetes-version given, no config", @@ -53,7 +53,7 @@ func TestGetKuberneterVersion(t *testing.T) { description: "kubernetes-version given, config available", expectedVersion: "v1.16.0", paramVersion: "v1.16.0", - cfg: &cfg.MachineConfig{KubernetesConfig: cfg.KubernetesConfig{KubernetesVersion: "v1.15.0"}}, + cfg: &cfg.ClusterConfig{KubernetesConfig: cfg.KubernetesConfig{KubernetesVersion: "v1.15.0"}}, }, } diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index c1042e45be..e1ca836c37 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -88,7 +88,7 @@ func run(name, value, profile string, fns []setFn) error { } // SetBool sets a bool value -func SetBool(m *config.MachineConfig, name string, val string) error { +func SetBool(m *config.ClusterConfig, name string, val string) error { b, err := strconv.ParseBool(val) if err != nil { return err diff --git a/pkg/addons/addons_test.go b/pkg/addons/addons_test.go index 14449917a2..559f5729e7 100644 --- a/pkg/addons/addons_test.go +++ b/pkg/addons/addons_test.go @@ -44,7 +44,7 @@ func createTestProfile(t *testing.T) string { if err := os.MkdirAll(config.ProfileFolderPath(name), 0777); err != nil { t.Fatalf("error creating temporary directory") } - if err := config.DefaultLoader.WriteConfigToFile(name, &config.MachineConfig{}); err != nil { + if err := config.DefaultLoader.WriteConfigToFile(name, &config.ClusterConfig{}); err != nil { t.Fatalf("error creating temporary profile config: %v", err) } return name diff --git a/pkg/addons/config.go b/pkg/addons/config.go index 059ddf7929..46c713d69f 100644 --- a/pkg/addons/config.go +++ b/pkg/addons/config.go @@ -23,7 +23,7 @@ type setFn func(string, string, string) error // Addon represents an addon type Addon struct { name string - set func(*config.MachineConfig, string, string) error + set func(*config.ClusterConfig, string, string) error validations []setFn callbacks []setFn } diff --git a/pkg/minikube/bootstrapper/bootstrapper.go b/pkg/minikube/bootstrapper/bootstrapper.go index 669a38fd57..eba5167179 100644 --- a/pkg/minikube/bootstrapper/bootstrapper.go +++ b/pkg/minikube/bootstrapper/bootstrapper.go @@ -35,10 +35,11 @@ type LogOptions struct { // Bootstrapper contains all the methods needed to bootstrap a kubernetes cluster type Bootstrapper interface { - StartCluster(config.MachineConfig) error - UpdateCluster(config.MachineConfig) error + StartCluster(config.ClusterConfig) error + UpdateCluster(config.ClusterConfig) error DeleteCluster(config.KubernetesConfig) error - WaitForCluster(config.MachineConfig, time.Duration) error + WaitForCluster(config.ClusterConfig, time.Duration) error + JoinCluster(config.ClusterConfig, config.Node, string) error // LogCommands returns a map of log type to a command which will display that log. LogCommands(LogOptions) map[string]string SetupCerts(config.KubernetesConfig, config.Node) error diff --git a/pkg/minikube/bootstrapper/bsutil/kubeadm.go b/pkg/minikube/bootstrapper/bsutil/kubeadm.go index 602c9c17de..e5d926ee12 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubeadm.go +++ b/pkg/minikube/bootstrapper/bsutil/kubeadm.go @@ -36,7 +36,7 @@ import ( const remoteContainerRuntime = "remote" // GenerateKubeadmYAML generates the kubeadm.yaml file -func GenerateKubeadmYAML(mc config.MachineConfig, r cruntime.Manager) ([]byte, error) { +func GenerateKubeadmYAML(mc config.ClusterConfig, r cruntime.Manager) ([]byte, error) { k8s := mc.KubernetesConfig version, err := ParseKubernetesVersion(k8s.KubernetesVersion) if err != nil { diff --git a/pkg/minikube/bootstrapper/bsutil/kubeadm_test.go b/pkg/minikube/bootstrapper/bsutil/kubeadm_test.go index 6bf8f27951..922bf4b8b3 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubeadm_test.go +++ b/pkg/minikube/bootstrapper/bsutil/kubeadm_test.go @@ -106,9 +106,9 @@ func TestGenerateKubeadmYAMLDNS(t *testing.T) { name string runtime string shouldErr bool - cfg config.MachineConfig + cfg config.ClusterConfig }{ - {"dns", "docker", false, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{DNSDomain: "1.1.1.1"}}}, + {"dns", "docker", false, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{DNSDomain: "1.1.1.1"}}}, } for _, version := range versions { for _, tc := range tests { @@ -172,17 +172,17 @@ func TestGenerateKubeadmYAML(t *testing.T) { name string runtime string shouldErr bool - cfg config.MachineConfig + cfg config.ClusterConfig }{ - {"default", "docker", false, config.MachineConfig{}}, - {"containerd", "containerd", false, config.MachineConfig{}}, - {"crio", "crio", false, config.MachineConfig{}}, - {"options", "docker", false, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOpts}}}, - {"crio-options-gates", "crio", false, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOpts, FeatureGates: "a=b"}}}, - {"unknown-component", "docker", true, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: config.ExtraOptionSlice{config.ExtraOption{Component: "not-a-real-component", Key: "killswitch", Value: "true"}}}}}, - {"containerd-api-port", "containerd", false, config.MachineConfig{Nodes: []config.Node{{Port: 12345}}}}, - {"containerd-pod-network-cidr", "containerd", false, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOptsPodCidr}}}, - {"image-repository", "docker", false, config.MachineConfig{KubernetesConfig: config.KubernetesConfig{ImageRepository: "test/repo"}}}, + {"default", "docker", false, config.ClusterConfig{}}, + {"containerd", "containerd", false, config.ClusterConfig{}}, + {"crio", "crio", false, config.ClusterConfig{}}, + {"options", "docker", false, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOpts}}}, + {"crio-options-gates", "crio", false, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOpts, FeatureGates: "a=b"}}}, + {"unknown-component", "docker", true, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: config.ExtraOptionSlice{config.ExtraOption{Component: "not-a-real-component", Key: "killswitch", Value: "true"}}}}}, + {"containerd-api-port", "containerd", false, config.ClusterConfig{Nodes: []config.Node{{Port: 12345}}}}, + {"containerd-pod-network-cidr", "containerd", false, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{ExtraOptions: extraOptsPodCidr}}}, + {"image-repository", "docker", false, config.ClusterConfig{KubernetesConfig: config.KubernetesConfig{ImageRepository: "test/repo"}}}, } for _, version := range versions { for _, tc := range tests { diff --git a/pkg/minikube/bootstrapper/bsutil/kubelet.go b/pkg/minikube/bootstrapper/bsutil/kubelet.go index f080a7eba7..a426cc409b 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubelet.go +++ b/pkg/minikube/bootstrapper/bsutil/kubelet.go @@ -30,7 +30,7 @@ import ( // NewKubeletConfig generates a new systemd unit containing a configured kubelet // based on the options present in the KubernetesConfig. -func NewKubeletConfig(mc config.MachineConfig, nc config.Node, r cruntime.Manager) ([]byte, error) { +func NewKubeletConfig(mc config.ClusterConfig, nc config.Node, r cruntime.Manager) ([]byte, error) { k8s := mc.KubernetesConfig version, err := ParseKubernetesVersion(k8s.KubernetesVersion) if err != nil { diff --git a/pkg/minikube/bootstrapper/bsutil/kubelet_test.go b/pkg/minikube/bootstrapper/bsutil/kubelet_test.go index 56dc23168b..b0908e870f 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubelet_test.go +++ b/pkg/minikube/bootstrapper/bsutil/kubelet_test.go @@ -30,13 +30,13 @@ import ( func TestGenerateKubeletConfig(t *testing.T) { tests := []struct { description string - cfg config.MachineConfig + cfg config.ClusterConfig expected string shouldErr bool }{ { description: "old docker", - cfg: config.MachineConfig{ + cfg: config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: constants.OldestKubernetesVersion, ContainerRuntime: "docker", @@ -61,7 +61,7 @@ ExecStart=/var/lib/minikube/binaries/v1.11.10/kubelet --allow-privileged=true -- }, { description: "newest cri runtime", - cfg: config.MachineConfig{ + cfg: config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: constants.NewestKubernetesVersion, ContainerRuntime: "cri-o", @@ -86,7 +86,7 @@ ExecStart=/var/lib/minikube/binaries/v1.17.2/kubelet --authorization-mode=Webhoo }, { description: "default containerd runtime", - cfg: config.MachineConfig{ + cfg: config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: constants.DefaultKubernetesVersion, ContainerRuntime: "containerd", @@ -111,7 +111,7 @@ ExecStart=/var/lib/minikube/binaries/v1.17.2/kubelet --authorization-mode=Webhoo }, { description: "default containerd runtime with IP override", - cfg: config.MachineConfig{ + cfg: config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: constants.DefaultKubernetesVersion, ContainerRuntime: "containerd", @@ -143,7 +143,7 @@ ExecStart=/var/lib/minikube/binaries/v1.17.2/kubelet --authorization-mode=Webhoo }, { description: "docker with custom image repository", - cfg: config.MachineConfig{ + cfg: config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: constants.DefaultKubernetesVersion, ContainerRuntime: "docker", diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 9eb428d8fa..a136a9f8de 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -35,7 +35,6 @@ import ( "github.com/docker/machine/libmachine/state" "github.com/golang/glog" "github.com/pkg/errors" - "github.com/spf13/viper" "k8s.io/client-go/kubernetes" kconst "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/minikube/pkg/drivers/kic" @@ -64,8 +63,7 @@ type Bootstrapper struct { } // NewBootstrapper creates a new kubeadm.Bootstrapper -func NewBootstrapper(api libmachine.API) (*Bootstrapper, error) { - name := viper.GetString(config.MachineProfile) +func NewBootstrapper(api libmachine.API, name string) (*Bootstrapper, error) { h, err := api.Load(name) if err != nil { return nil, errors.Wrap(err, "getting api client") @@ -149,7 +147,7 @@ func (k *Bootstrapper) createCompatSymlinks() error { } // StartCluster starts the cluster -func (k *Bootstrapper) StartCluster(cfg config.MachineConfig) error { +func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error { err := bsutil.ExistingConfig(k.c) if err == nil { // if there is an existing cluster don't reconfigure it return k.restartCluster(cfg) @@ -262,7 +260,7 @@ func (k *Bootstrapper) client(ip string, port int) (*kubernetes.Clientset, error } // WaitForCluster blocks until the cluster appears to be healthy -func (k *Bootstrapper) WaitForCluster(cfg config.MachineConfig, timeout time.Duration) error { +func (k *Bootstrapper) WaitForCluster(cfg config.ClusterConfig, timeout time.Duration) error { start := time.Now() out.T(out.Waiting, "Waiting for cluster to come online ...") cp, err := config.PrimaryControlPlane(cfg) @@ -295,7 +293,7 @@ func (k *Bootstrapper) WaitForCluster(cfg config.MachineConfig, timeout time.Dur } // restartCluster restarts the Kubernetes cluster configured by kubeadm -func (k *Bootstrapper) restartCluster(cfg config.MachineConfig) error { +func (k *Bootstrapper) restartCluster(cfg config.ClusterConfig) error { glog.Infof("restartCluster start") start := time.Now() @@ -371,6 +369,29 @@ func (k *Bootstrapper) restartCluster(cfg config.MachineConfig) error { return nil } +// JoinCluster adds a node to an existing cluster +func (k *Bootstrapper) JoinCluster(cc config.ClusterConfig, n config.Node, joinCmd string) error { + start := time.Now() + glog.Infof("JoinCluster: %+v", cc) + defer func() { + glog.Infof("JoinCluster complete in %s", time.Since(start)) + }() + + // Join the master by specifying its token + joinCmd = fmt.Sprintf("%s --v=10 --node-name=%s", joinCmd, n.Name) + fmt.Println(joinCmd) + out, err := k.c.RunCmd(exec.Command("/bin/bash", "-c", joinCmd)) + if err != nil { + return errors.Wrapf(err, "cmd failed: %s\n%s\n", joinCmd, out) + } + + if _, err := k.c.RunCmd(exec.Command("/bin/bash", "-c", "sudo systemctl daemon-reload && sudo systemctl enable kubelet && sudo systemctl start kubelet")); err != nil { + return errors.Wrap(err, "starting kubelet") + } + + return nil +} + // DeleteCluster removes the components that were started earlier func (k *Bootstrapper) DeleteCluster(k8s config.KubernetesConfig) error { version, err := bsutil.ParseKubernetesVersion(k8s.KubernetesVersion) @@ -396,7 +417,7 @@ func (k *Bootstrapper) SetupCerts(k8s config.KubernetesConfig, n config.Node) er } // UpdateCluster updates the cluster -func (k *Bootstrapper) UpdateCluster(cfg config.MachineConfig) error { +func (k *Bootstrapper) UpdateCluster(cfg config.ClusterConfig) error { images, err := images.Kubeadm(cfg.KubernetesConfig.ImageRepository, cfg.KubernetesConfig.KubernetesVersion) if err != nil { return errors.Wrap(err, "kubeadm images") @@ -469,7 +490,7 @@ func (k *Bootstrapper) UpdateCluster(cfg config.MachineConfig) error { } // applyKicOverlay applies the CNI plugin needed to make kic work -func (k *Bootstrapper) applyKicOverlay(cfg config.MachineConfig) error { +func (k *Bootstrapper) applyKicOverlay(cfg config.ClusterConfig) error { cmd := exec.Command("sudo", path.Join(vmpath.GuestPersistentDir, "binaries", cfg.KubernetesConfig.KubernetesVersion, "kubectl"), "create", fmt.Sprintf("--kubeconfig=%s", path.Join(vmpath.GuestPersistentDir, "kubeconfig")), "-f", "-") diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index 481bbe3cc3..a2b9e06613 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -42,12 +42,12 @@ func init() { } // Bootstrapper returns a new bootstrapper for the cluster -func Bootstrapper(api libmachine.API, bootstrapperName string) (bootstrapper.Bootstrapper, error) { +func Bootstrapper(api libmachine.API, bootstrapperName string, machineName string) (bootstrapper.Bootstrapper, error) { var b bootstrapper.Bootstrapper var err error switch bootstrapperName { case bootstrapper.Kubeadm: - b, err = kubeadm.NewBootstrapper(api) + b, err = kubeadm.NewBootstrapper(api, machineName) if err != nil { return nil, errors.Wrap(err, "getting a new kubeadm bootstrapper") } diff --git a/pkg/minikube/cluster/iso.go b/pkg/minikube/cluster/iso.go index 253acbd370..15c06b4a37 100644 --- a/pkg/minikube/cluster/iso.go +++ b/pkg/minikube/cluster/iso.go @@ -22,7 +22,7 @@ import ( ) // CacheISO downloads and caches ISO. -func CacheISO(cfg config.MachineConfig) error { +func CacheISO(cfg config.ClusterConfig) error { if driver.BareMetal(cfg.Driver) { return nil } diff --git a/pkg/minikube/config/config.go b/pkg/minikube/config/config.go index 89e2852017..0f031716dc 100644 --- a/pkg/minikube/config/config.go +++ b/pkg/minikube/config/config.go @@ -141,19 +141,19 @@ func encode(w io.Writer, m MinikubeConfig) error { } // Load loads the kubernetes and machine config for the current machine -func Load(profile string) (*MachineConfig, error) { +func Load(profile string) (*ClusterConfig, error) { return DefaultLoader.LoadConfigFromFile(profile) } // Write writes the kubernetes and machine config for the current machine -func Write(profile string, cc *MachineConfig) error { +func Write(profile string, cc *ClusterConfig) error { return DefaultLoader.WriteConfigToFile(profile, cc) } // Loader loads the kubernetes and machine config based on the machine profile name type Loader interface { - LoadConfigFromFile(profile string, miniHome ...string) (*MachineConfig, error) - WriteConfigToFile(profileName string, cc *MachineConfig, miniHome ...string) error + LoadConfigFromFile(profile string, miniHome ...string) (*ClusterConfig, error) + WriteConfigToFile(profileName string, cc *ClusterConfig, miniHome ...string) error } type simpleConfigLoader struct{} @@ -161,8 +161,8 @@ type simpleConfigLoader struct{} // DefaultLoader is the default config loader var DefaultLoader Loader = &simpleConfigLoader{} -func (c *simpleConfigLoader) LoadConfigFromFile(profileName string, miniHome ...string) (*MachineConfig, error) { - var cc MachineConfig +func (c *simpleConfigLoader) LoadConfigFromFile(profileName string, miniHome ...string) (*ClusterConfig, error) { + var cc ClusterConfig // Move to profile package path := profileFilePath(profileName, miniHome...) @@ -184,7 +184,7 @@ func (c *simpleConfigLoader) LoadConfigFromFile(profileName string, miniHome ... return &cc, nil } -func (c *simpleConfigLoader) WriteConfigToFile(profileName string, cc *MachineConfig, miniHome ...string) error { +func (c *simpleConfigLoader) WriteConfigToFile(profileName string, cc *ClusterConfig, miniHome ...string) error { // Move to profile package path := profileFilePath(profileName, miniHome...) contents, err := json.MarshalIndent(cc, "", " ") diff --git a/pkg/minikube/config/node.go b/pkg/minikube/config/node.go index 219acb5e46..1c6f050159 100644 --- a/pkg/minikube/config/node.go +++ b/pkg/minikube/config/node.go @@ -17,7 +17,7 @@ limitations under the License. package config // AddNode adds a new node config to an existing cluster. -func AddNode(cc *MachineConfig, name string, controlPlane bool, k8sVersion string, profileName string) error { +func AddNode(cc *ClusterConfig, name string, controlPlane bool, k8sVersion string, profileName string) error { node := Node{ Name: name, Worker: true, diff --git a/pkg/minikube/config/profile.go b/pkg/minikube/config/profile.go index c37eabac4e..5ad8572e13 100644 --- a/pkg/minikube/config/profile.go +++ b/pkg/minikube/config/profile.go @@ -52,7 +52,7 @@ func (p *Profile) IsValid() bool { } // PrimaryControlPlane gets the node specific config for the first created control plane -func PrimaryControlPlane(cc MachineConfig) (Node, error) { +func PrimaryControlPlane(cc ClusterConfig) (Node, error) { for _, n := range cc.Nodes { if n.ControlPlane { return n, nil @@ -86,12 +86,12 @@ func ProfileExists(name string, miniHome ...string) bool { // CreateEmptyProfile creates an empty profile and stores in $MINIKUBE_HOME/profiles//config.json func CreateEmptyProfile(name string, miniHome ...string) error { - cfg := &MachineConfig{} + cfg := &ClusterConfig{} return SaveProfile(name, cfg, miniHome...) } // SaveProfile creates an profile out of the cfg and stores in $MINIKUBE_HOME/profiles//config.json -func SaveProfile(name string, cfg *MachineConfig, miniHome ...string) error { +func SaveProfile(name string, cfg *ClusterConfig, miniHome ...string) error { data, err := json.MarshalIndent(cfg, "", " ") if err != nil { return err diff --git a/pkg/minikube/config/profile_test.go b/pkg/minikube/config/profile_test.go index aecb4c2f81..06903d1808 100644 --- a/pkg/minikube/config/profile_test.go +++ b/pkg/minikube/config/profile_test.go @@ -164,13 +164,13 @@ func TestCreateProfile(t *testing.T) { var testCases = []struct { name string - cfg *MachineConfig + cfg *ClusterConfig expectErr bool }{ - {"p_empty_config", &MachineConfig{}, false}, - {"p_partial_config", &MachineConfig{KubernetesConfig: KubernetesConfig{ + {"p_empty_config", &ClusterConfig{}, false}, + {"p_partial_config", &ClusterConfig{KubernetesConfig: KubernetesConfig{ ShouldLoadCachedImages: false}}, false}, - {"p_partial_config2", &MachineConfig{ + {"p_partial_config2", &ClusterConfig{ KeepContext: false, KubernetesConfig: KubernetesConfig{ ShouldLoadCachedImages: false}}, false}, } diff --git a/pkg/minikube/config/testdata/.minikube2/profiles/p1/config.json b/pkg/minikube/config/testdata/.minikube2/profiles/p1/config.json index 766e9c04c1..c4214bf442 100644 --- a/pkg/minikube/config/testdata/.minikube2/profiles/p1/config.json +++ b/pkg/minikube/config/testdata/.minikube2/profiles/p1/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/.minikube2/profiles/p2/config.json b/pkg/minikube/config/testdata/.minikube2/profiles/p2/config.json index 99e4b167a5..ab35410474 100644 --- a/pkg/minikube/config/testdata/.minikube2/profiles/p2/config.json +++ b/pkg/minikube/config/testdata/.minikube2/profiles/p2/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/.minikube2/profiles/p5_partial_config/config.json b/pkg/minikube/config/testdata/.minikube2/profiles/p5_partial_config/config.json index 29f62c0149..a99c56efe8 100644 --- a/pkg/minikube/config/testdata/.minikube2/profiles/p5_partial_config/config.json +++ b/pkg/minikube/config/testdata/.minikube2/profiles/p5_partial_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p1/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p1/config.json index b0e1b57105..6c826ebfc6 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p1/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p1/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p4_partial_profile_config/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p4_partial_profile_config/config.json index 29f62c0149..a99c56efe8 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p4_partial_profile_config/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p4_partial_profile_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p5_missing_machine_config/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p5_missing_machine_config/config.json index c1cf21b26f..6680e4b784 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p5_missing_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p5_missing_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p6_empty_machine_config/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p6_empty_machine_config/config.json index 667cbd7652..2bab758640 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p6_empty_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p6_empty_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p7_invalid_machine_config/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p7_invalid_machine_config/config.json index 7cbd2e409f..d56f53688d 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p7_invalid_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p7_invalid_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p8_partial_machine_config/config.json b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p8_partial_machine_config/config.json index 855b31af90..26324fc366 100644 --- a/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p8_partial_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-all/.minikube/profiles/p8_partial_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p1/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p1/config.json index b0e1b57105..6c826ebfc6 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p1/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p1/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p4_partial_profile_config/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p4_partial_profile_config/config.json index 29f62c0149..a99c56efe8 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p4_partial_profile_config/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p4_partial_profile_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p5_missing_machine_config/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p5_missing_machine_config/config.json index c1cf21b26f..6680e4b784 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p5_missing_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p5_missing_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p6_empty_machine_config/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p6_empty_machine_config/config.json index 667cbd7652..2bab758640 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p6_empty_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p6_empty_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p7_invalid_machine_config/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p7_invalid_machine_config/config.json index 7cbd2e409f..d56f53688d 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p7_invalid_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p7_invalid_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p8_partial_machine_config/config.json b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p8_partial_machine_config/config.json index 855b31af90..26324fc366 100644 --- a/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p8_partial_machine_config/config.json +++ b/pkg/minikube/config/testdata/delete-single/.minikube/profiles/p8_partial_machine_config/config.json @@ -1,5 +1,5 @@ { - "MachineConfig": { + "ClusterConfig": { "KeepContext": false, "MinikubeISO": "https://storage.googleapis.com/minikube/iso/minikube-v1.2.0.iso", "Memory": 2000, diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index 6513efd2d9..868ad8842e 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -27,11 +27,11 @@ import ( type Profile struct { Name string Status string // running, stopped - Config *MachineConfig + Config *ClusterConfig } -// MachineConfig contains the parameters used to start a cluster. -type MachineConfig struct { +// ClusterConfig contains the parameters used to start a cluster. +type ClusterConfig struct { Name string KeepContext bool // used by start and profile command to or not to switch kubectl's current context EmbedCerts bool // used by kubeconfig.Setup diff --git a/pkg/minikube/machine/cache_images.go b/pkg/minikube/machine/cache_images.go index 29d61b244f..301c3b02fd 100644 --- a/pkg/minikube/machine/cache_images.go +++ b/pkg/minikube/machine/cache_images.go @@ -61,7 +61,7 @@ func CacheImagesForBootstrapper(imageRepository string, version string, clusterB } // LoadImages loads previously cached images into the container runtime -func LoadImages(cc *config.MachineConfig, runner command.Runner, images []string, cacheDir string) error { +func LoadImages(cc *config.ClusterConfig, runner command.Runner, images []string, cacheDir string) error { glog.Infof("LoadImages start: %s", images) start := time.Now() diff --git a/pkg/minikube/machine/cluster_test.go b/pkg/minikube/machine/cluster_test.go index bf38656062..3b84c58842 100644 --- a/pkg/minikube/machine/cluster_test.go +++ b/pkg/minikube/machine/cluster_test.go @@ -41,7 +41,7 @@ type MockDownloader struct{} func (d MockDownloader) GetISOFileURI(isoURL string) string { return "" } func (d MockDownloader) CacheMinikubeISOFromURL(isoURL string) error { return nil } -func createMockDriverHost(c config.MachineConfig) (interface{}, error) { +func createMockDriverHost(c config.ClusterConfig) (interface{}, error) { return nil, nil } @@ -60,7 +60,7 @@ func RegisterMockDriver(t *testing.T) { } } -var defaultMachineConfig = config.MachineConfig{ +var defaultClusterConfig = config.ClusterConfig{ Driver: driver.Mock, MinikubeISO: constants.DefaultISOURL, Downloader: MockDownloader{}, @@ -76,7 +76,7 @@ func TestCreateHost(t *testing.T) { t.Fatal("Machine already exists.") } - _, err := createHost(api, defaultMachineConfig) + _, err := createHost(api, defaultClusterConfig) if err != nil { t.Fatalf("Error creating host: %v", err) } @@ -114,7 +114,7 @@ func TestStartHostExists(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) // Create an initial host. - ih, err := createHost(api, defaultMachineConfig) + ih, err := createHost(api, defaultClusterConfig) if err != nil { t.Fatalf("Error creating host: %v", err) } @@ -128,7 +128,7 @@ func TestStartHostExists(t *testing.T) { md := &tests.MockDetector{Provisioner: &tests.MockProvisioner{}} provision.SetDetector(md) - mc := defaultMachineConfig + mc := defaultClusterConfig mc.Name = ih.Name // This should pass without calling Create because the host exists already. h, err := StartHost(api, mc) @@ -151,7 +151,7 @@ func TestStartHostErrMachineNotExist(t *testing.T) { api := tests.NewMockAPI(t) // Create an incomplete host with machine does not exist error(i.e. User Interrupt Cancel) api.NotExistError = true - h, err := createHost(api, defaultMachineConfig) + h, err := createHost(api, defaultClusterConfig) if err != nil { t.Fatalf("Error creating host: %v", err) } @@ -159,7 +159,7 @@ func TestStartHostErrMachineNotExist(t *testing.T) { md := &tests.MockDetector{Provisioner: &tests.MockProvisioner{}} provision.SetDetector(md) - mc := defaultMachineConfig + mc := defaultClusterConfig mc.Name = h.Name // This should pass with creating host, while machine does not exist. @@ -193,7 +193,7 @@ func TestStartStoppedHost(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) // Create an initial host. - h, err := createHost(api, defaultMachineConfig) + h, err := createHost(api, defaultClusterConfig) if err != nil { t.Fatalf("Error creating host: %v", err) } @@ -203,7 +203,7 @@ func TestStartStoppedHost(t *testing.T) { md := &tests.MockDetector{Provisioner: &tests.MockProvisioner{}} provision.SetDetector(md) - mc := defaultMachineConfig + mc := defaultClusterConfig mc.Name = h.Name h, err = StartHost(api, mc) if err != nil { @@ -233,7 +233,7 @@ func TestStartHost(t *testing.T) { md := &tests.MockDetector{Provisioner: &tests.MockProvisioner{}} provision.SetDetector(md) - h, err := StartHost(api, defaultMachineConfig) + h, err := StartHost(api, defaultClusterConfig) if err != nil { t.Fatal("Error starting host.") } @@ -261,7 +261,7 @@ func TestStartHostConfig(t *testing.T) { md := &tests.MockDetector{Provisioner: &tests.MockProvisioner{}} provision.SetDetector(md) - config := config.MachineConfig{ + config := config.ClusterConfig{ Driver: driver.Mock, DockerEnv: []string{"FOO=BAR"}, DockerOpt: []string{"param=value"}, @@ -298,7 +298,7 @@ func TestStopHostError(t *testing.T) { func TestStopHost(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) - h, err := createHost(api, defaultMachineConfig) + h, err := createHost(api, defaultClusterConfig) if err != nil { t.Errorf("createHost failed: %v", err) } @@ -314,7 +314,7 @@ func TestStopHost(t *testing.T) { func TestDeleteHost(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) - if _, err := createHost(api, defaultMachineConfig); err != nil { + if _, err := createHost(api, defaultClusterConfig); err != nil { t.Errorf("createHost failed: %v", err) } @@ -326,7 +326,7 @@ func TestDeleteHost(t *testing.T) { func TestDeleteHostErrorDeletingVM(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) - h, err := createHost(api, defaultMachineConfig) + h, err := createHost(api, defaultClusterConfig) if err != nil { t.Errorf("createHost failed: %v", err) } @@ -343,7 +343,7 @@ func TestDeleteHostErrorDeletingFiles(t *testing.T) { RegisterMockDriver(t) api := tests.NewMockAPI(t) api.RemoveError = true - if _, err := createHost(api, defaultMachineConfig); err != nil { + if _, err := createHost(api, defaultClusterConfig); err != nil { t.Errorf("createHost failed: %v", err) } @@ -357,7 +357,7 @@ func TestDeleteHostErrMachineNotExist(t *testing.T) { api := tests.NewMockAPI(t) // Create an incomplete host with machine does not exist error(i.e. User Interrupt Cancel) api.NotExistError = true - _, err := createHost(api, defaultMachineConfig) + _, err := createHost(api, defaultClusterConfig) if err != nil { t.Errorf("createHost failed: %v", err) } @@ -383,7 +383,7 @@ func TestGetHostStatus(t *testing.T) { checkState(state.None.String()) - if _, err := createHost(api, defaultMachineConfig); err != nil { + if _, err := createHost(api, defaultClusterConfig); err != nil { t.Errorf("createHost failed: %v", err) } diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index 2a69a37472..86ec7e2d70 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -54,7 +54,7 @@ var ( ) // fixHost fixes up a previously configured VM so that it is ready to run Kubernetes -func fixHost(api libmachine.API, mc config.MachineConfig) (*host.Host, error) { +func fixHost(api libmachine.API, mc config.ClusterConfig) (*host.Host, error) { out.T(out.Waiting, "Reconfiguring existing host ...") start := time.Now() diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index 33687dc151..b043f58051 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -61,7 +61,7 @@ var ( ) // StartHost starts a host VM. -func StartHost(api libmachine.API, cfg config.MachineConfig) (*host.Host, error) { +func StartHost(api libmachine.API, cfg config.ClusterConfig) (*host.Host, error) { // Prevent machine-driver boot races, as well as our own certificate race releaser, err := acquireMachinesLock(cfg.Name) if err != nil { @@ -85,7 +85,7 @@ func StartHost(api libmachine.API, cfg config.MachineConfig) (*host.Host, error) return fixHost(api, cfg) } -func engineOptions(cfg config.MachineConfig) *engine.Options { +func engineOptions(cfg config.ClusterConfig) *engine.Options { o := engine.Options{ Env: cfg.DockerEnv, InsecureRegistry: append([]string{constants.DefaultServiceCIDR}, cfg.InsecureRegistry...), @@ -96,7 +96,7 @@ func engineOptions(cfg config.MachineConfig) *engine.Options { return &o } -func createHost(api libmachine.API, cfg config.MachineConfig) (*host.Host, error) { +func createHost(api libmachine.API, cfg config.ClusterConfig) (*host.Host, error) { glog.Infof("createHost starting for %q (driver=%q)", cfg.Name, cfg.Driver) start := time.Now() defer func() { @@ -152,7 +152,7 @@ func createHost(api libmachine.API, cfg config.MachineConfig) (*host.Host, error } // postStart are functions shared between startHost and fixHost -func postStartSetup(h *host.Host, mc config.MachineConfig) error { +func postStartSetup(h *host.Host, mc config.ClusterConfig) error { glog.Infof("post-start starting for %q (driver=%q)", h.Name, h.DriverName) start := time.Now() defer func() { @@ -225,7 +225,7 @@ func acquireMachinesLock(name string) (mutex.Releaser, error) { } // showHostInfo shows host information -func showHostInfo(cfg config.MachineConfig) { +func showHostInfo(cfg config.ClusterConfig) { if driver.BareMetal(cfg.Driver) { info, err := getHostInfo() if err == nil { diff --git a/pkg/minikube/node/config.go b/pkg/minikube/node/config.go index ba4c7f5275..ce76ded6b4 100644 --- a/pkg/minikube/node/config.go +++ b/pkg/minikube/node/config.go @@ -81,7 +81,7 @@ func showVersionInfo(k8sVersion string, cr cruntime.Manager) { } // setupKubeAdm adds any requested files into the VM before Kubernetes is started -func setupKubeAdm(mAPI libmachine.API, cfg config.MachineConfig, node config.Node) bootstrapper.Bootstrapper { +func setupKubeAdm(mAPI libmachine.API, cfg config.ClusterConfig, node config.Node) bootstrapper.Bootstrapper { bs, err := cluster.Bootstrapper(mAPI, viper.GetString(cmdcfg.Bootstrapper)) if err != nil { exit.WithError("Failed to get bootstrapper", err) @@ -99,7 +99,7 @@ func setupKubeAdm(mAPI libmachine.API, cfg config.MachineConfig, node config.Nod return bs } -func setupKubeconfig(h *host.Host, c *config.MachineConfig, n *config.Node, clusterName string) (*kubeconfig.Settings, error) { +func setupKubeconfig(h *host.Host, c *config.ClusterConfig, n *config.Node, clusterName string) (*kubeconfig.Settings, error) { addr, err := h.Driver.GetURL() if err != nil { exit.WithError("Failed to get driver URL", err) diff --git a/pkg/minikube/node/machine.go b/pkg/minikube/node/machine.go index d66e61510e..d0c4021222 100644 --- a/pkg/minikube/node/machine.go +++ b/pkg/minikube/node/machine.go @@ -39,7 +39,7 @@ import ( "k8s.io/minikube/pkg/util/retry" ) -func startMachine(cfg *config.MachineConfig, node *config.Node) (runner command.Runner, preExists bool, machineAPI libmachine.API, host *host.Host) { +func startMachine(cfg *config.ClusterConfig, node *config.Node) (runner command.Runner, preExists bool, machineAPI libmachine.API, host *host.Host) { m, err := machine.NewAPIClient() if err != nil { exit.WithError("Failed to get machine client", err) @@ -68,7 +68,7 @@ func startMachine(cfg *config.MachineConfig, node *config.Node) (runner command. } // startHost starts a new minikube host using a VM or None -func startHost(api libmachine.API, mc config.MachineConfig) (*host.Host, bool) { +func startHost(api libmachine.API, mc config.ClusterConfig) (*host.Host, bool) { exists, err := api.Exists(mc.Name) if err != nil { exit.WithError("Failed to check if machine exists", err) diff --git a/pkg/minikube/node/node.go b/pkg/minikube/node/node.go index 19b51d1770..4e2f75b94b 100644 --- a/pkg/minikube/node/node.go +++ b/pkg/minikube/node/node.go @@ -38,18 +38,19 @@ const ( ) // Add adds a new node config to an existing cluster. -func Add(cc *config.MachineConfig, name string, controlPlane bool, worker bool, k8sVersion string, profileName string) (*config.Node, error) { +func Add(cc *config.ClusterConfig, name string, controlPlane bool, worker bool, k8sVersion string, profileName string) (*config.Node, error) { n := config.Node{ Name: name, Worker: true, } + // TODO: Deal with parameters better. Ideally we should be able to acceot any node-specific minikube start params here. if controlPlane { n.ControlPlane = true } - if worker { - n.Worker = true + if !worker { + n.Worker = false } if k8sVersion != "" { @@ -69,7 +70,7 @@ func Add(cc *config.MachineConfig, name string, controlPlane bool, worker bool, } // Delete stops and deletes the given node from the given cluster -func Delete(cc config.MachineConfig, name string) error { +func Delete(cc config.ClusterConfig, name string) error { _, index, err := Retrieve(&cc, name) if err != nil { return err @@ -95,7 +96,7 @@ func Delete(cc config.MachineConfig, name string) error { } // Retrieve finds the node by name in the given cluster -func Retrieve(cc *config.MachineConfig, name string) (*config.Node, int, error) { +func Retrieve(cc *config.ClusterConfig, name string) (*config.Node, int, error) { for i, n := range cc.Nodes { if n.Name == name { return &n, i, nil @@ -106,7 +107,7 @@ func Retrieve(cc *config.MachineConfig, name string) (*config.Node, int, error) } // Save saves a node to a cluster -func Save(cfg *config.MachineConfig, node *config.Node) error { +func Save(cfg *config.ClusterConfig, node *config.Node) error { update := false for i, n := range cfg.Nodes { if n.Name == node.Name { diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index 07d14d4525..1fe966e5ac 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -33,7 +33,7 @@ import ( ) // Start spins up a guest and starts the kubernetes node. -func Start(mc config.MachineConfig, n config.Node, primary bool, existingAddons map[string]bool) (*kubeconfig.Settings, error) { +func Start(mc config.ClusterConfig, n config.Node, primary bool, existingAddons map[string]bool) (*kubeconfig.Settings, error) { // Now that the ISO is downloaded, pull images in the background while the VM boots. var cacheGroup errgroup.Group beginCacheRequiredImages(&cacheGroup, mc.KubernetesConfig.ImageRepository, n.KubernetesVersion) diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index 38cc95acb7..0b66dfdecb 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -43,7 +43,7 @@ func init() { } } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { return kic.NewDriver(kic.Config{ MachineName: mc.Name, StorePath: localpath.MiniPath(), diff --git a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go index 50a4e5a408..47a3db9091 100644 --- a/pkg/minikube/registry/drvs/hyperkit/hyperkit.go +++ b/pkg/minikube/registry/drvs/hyperkit/hyperkit.go @@ -57,7 +57,7 @@ func init() { } } -func configure(config cfg.MachineConfig) (interface{}, error) { +func configure(config cfg.ClusterConfig) (interface{}, error) { u := config.UUID if u == "" { u = uuid.NewUUID().String() diff --git a/pkg/minikube/registry/drvs/hyperv/hyperv.go b/pkg/minikube/registry/drvs/hyperv/hyperv.go index 9f15d0c470..89f63c93f3 100644 --- a/pkg/minikube/registry/drvs/hyperv/hyperv.go +++ b/pkg/minikube/registry/drvs/hyperv/hyperv.go @@ -52,7 +52,7 @@ func init() { } } -func configure(config cfg.MachineConfig) (interface{}, error) { +func configure(config cfg.ClusterConfig) (interface{}, error) { d := hyperv.NewDriver(config.Name, localpath.MiniPath()) d.Boot2DockerURL = config.Downloader.GetISOFileURI(config.MinikubeISO) d.VSwitch = config.HypervVirtualSwitch diff --git a/pkg/minikube/registry/drvs/kvm2/kvm2.go b/pkg/minikube/registry/drvs/kvm2/kvm2.go index dedad73bfb..a3dbf67193 100644 --- a/pkg/minikube/registry/drvs/kvm2/kvm2.go +++ b/pkg/minikube/registry/drvs/kvm2/kvm2.go @@ -67,7 +67,7 @@ type kvmDriver struct { ConnectionURI string } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { name := mc.Name return kvmDriver{ BaseDriver: &drivers.BaseDriver{ diff --git a/pkg/minikube/registry/drvs/none/none.go b/pkg/minikube/registry/drvs/none/none.go index aa8523cab6..4e1ae1a794 100644 --- a/pkg/minikube/registry/drvs/none/none.go +++ b/pkg/minikube/registry/drvs/none/none.go @@ -42,7 +42,7 @@ func init() { } } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { return none.NewDriver(none.Config{ MachineName: mc.Name, StorePath: localpath.MiniPath(), diff --git a/pkg/minikube/registry/drvs/parallels/parallels.go b/pkg/minikube/registry/drvs/parallels/parallels.go index de319ec8fb..79d0e9085e 100644 --- a/pkg/minikube/registry/drvs/parallels/parallels.go +++ b/pkg/minikube/registry/drvs/parallels/parallels.go @@ -44,7 +44,7 @@ func init() { } -func configure(config cfg.MachineConfig) (interface{}, error) { +func configure(config cfg.ClusterConfig) (interface{}, error) { d := parallels.NewDriver(config.Name, localpath.MiniPath()).(*parallels.Driver) d.Boot2DockerURL = config.Downloader.GetISOFileURI(config.MinikubeISO) d.Memory = config.Memory diff --git a/pkg/minikube/registry/drvs/podman/podman.go b/pkg/minikube/registry/drvs/podman/podman.go index a8e19dbbc0..ec5d6013ac 100644 --- a/pkg/minikube/registry/drvs/podman/podman.go +++ b/pkg/minikube/registry/drvs/podman/podman.go @@ -49,7 +49,7 @@ func init() { } } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { return kic.NewDriver(kic.Config{ MachineName: mc.Name, StorePath: localpath.MiniPath(), diff --git a/pkg/minikube/registry/drvs/virtualbox/virtualbox.go b/pkg/minikube/registry/drvs/virtualbox/virtualbox.go index bfba0e42db..c3888c3758 100644 --- a/pkg/minikube/registry/drvs/virtualbox/virtualbox.go +++ b/pkg/minikube/registry/drvs/virtualbox/virtualbox.go @@ -49,7 +49,7 @@ func init() { } } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { d := virtualbox.NewDriver(mc.Name, localpath.MiniPath()) d.Boot2DockerURL = mc.Downloader.GetISOFileURI(mc.MinikubeISO) d.Memory = mc.Memory diff --git a/pkg/minikube/registry/drvs/vmware/vmware.go b/pkg/minikube/registry/drvs/vmware/vmware.go index 885063cde2..0333dce541 100644 --- a/pkg/minikube/registry/drvs/vmware/vmware.go +++ b/pkg/minikube/registry/drvs/vmware/vmware.go @@ -39,7 +39,7 @@ func init() { } } -func configure(mc config.MachineConfig) (interface{}, error) { +func configure(mc config.ClusterConfig) (interface{}, error) { d := vmwcfg.NewConfig(mc.Name, localpath.MiniPath()) d.Boot2DockerURL = mc.Downloader.GetISOFileURI(mc.MinikubeISO) d.Memory = mc.Memory diff --git a/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go b/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go index bb5ed4196b..524e50f88c 100644 --- a/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go +++ b/pkg/minikube/registry/drvs/vmwarefusion/vmwarefusion.go @@ -44,7 +44,7 @@ func init() { } } -func configure(config cfg.MachineConfig) (interface{}, error) { +func configure(config cfg.ClusterConfig) (interface{}, error) { d := vmwarefusion.NewDriver(config.Name, localpath.MiniPath()).(*vmwarefusion.Driver) d.Boot2DockerURL = config.Downloader.GetISOFileURI(config.MinikubeISO) d.Memory = config.Memory diff --git a/pkg/minikube/registry/registry.go b/pkg/minikube/registry/registry.go index 159c7a4568..e5fb98ce51 100644 --- a/pkg/minikube/registry/registry.go +++ b/pkg/minikube/registry/registry.go @@ -60,7 +60,7 @@ type Registry interface { } // Configurator emits a struct to be marshalled into JSON for Machine Driver -type Configurator func(config.MachineConfig) (interface{}, error) +type Configurator func(config.ClusterConfig) (interface{}, error) // Loader is a function that loads a byte stream and creates a driver. type Loader func() drivers.Driver diff --git a/pkg/minikube/tunnel/cluster_inspector.go b/pkg/minikube/tunnel/cluster_inspector.go index bb86db778a..8f9001e3db 100644 --- a/pkg/minikube/tunnel/cluster_inspector.go +++ b/pkg/minikube/tunnel/cluster_inspector.go @@ -64,7 +64,7 @@ func (m *clusterInspector) getStateAndRoute() (HostState, *Route, error) { if err != nil { return hostState, nil, err } - var c *config.MachineConfig + var c *config.ClusterConfig c, err = m.configLoader.LoadConfigFromFile(m.machineName) if err != nil { err = errors.Wrapf(err, "error loading config for %s", m.machineName) @@ -80,7 +80,7 @@ func (m *clusterInspector) getStateAndRoute() (HostState, *Route, error) { return hostState, route, nil } -func getRoute(host *host.Host, clusterConfig config.MachineConfig) (*Route, error) { +func getRoute(host *host.Host, clusterConfig config.ClusterConfig) (*Route, error) { hostDriverIP, err := host.Driver.GetIP() if err != nil { return nil, errors.Wrapf(err, "error getting host IP for %s", host.Name) diff --git a/pkg/minikube/tunnel/cluster_inspector_test.go b/pkg/minikube/tunnel/cluster_inspector_test.go index c3be2e2483..834bd8241d 100644 --- a/pkg/minikube/tunnel/cluster_inspector_test.go +++ b/pkg/minikube/tunnel/cluster_inspector_test.go @@ -66,7 +66,7 @@ func TestMinikubeCheckReturnsHostInformation(t *testing.T) { } configLoader := &stubConfigLoader{ - c: &config.MachineConfig{ + c: &config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: "96.0.0.0/12", }, @@ -104,7 +104,7 @@ func TestMinikubeCheckReturnsHostInformation(t *testing.T) { } func TestUnparseableCIDR(t *testing.T) { - cfg := config.MachineConfig{ + cfg := config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: "bad.cidr.0.0/12", }} @@ -124,7 +124,7 @@ func TestUnparseableCIDR(t *testing.T) { func TestRouteIPDetection(t *testing.T) { expectedTargetCIDR := "10.96.0.0/12" - cfg := config.MachineConfig{ + cfg := config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: expectedTargetCIDR, }, diff --git a/pkg/minikube/tunnel/test_doubles.go b/pkg/minikube/tunnel/test_doubles.go index 5ac4874593..b8a8ae009f 100644 --- a/pkg/minikube/tunnel/test_doubles.go +++ b/pkg/minikube/tunnel/test_doubles.go @@ -82,14 +82,14 @@ func (r *fakeRouter) Inspect(route *Route) (exists bool, conflict string, overla } type stubConfigLoader struct { - c *config.MachineConfig + c *config.ClusterConfig e error } -func (l *stubConfigLoader) WriteConfigToFile(profileName string, cc *config.MachineConfig, miniHome ...string) error { +func (l *stubConfigLoader) WriteConfigToFile(profileName string, cc *config.ClusterConfig, miniHome ...string) error { return l.e } -func (l *stubConfigLoader) LoadConfigFromFile(profile string, miniHome ...string) (*config.MachineConfig, error) { +func (l *stubConfigLoader) LoadConfigFromFile(profile string, miniHome ...string) (*config.ClusterConfig, error) { return l.c, l.e } diff --git a/pkg/minikube/tunnel/tunnel_test.go b/pkg/minikube/tunnel/tunnel_test.go index 20048f36d0..c017fd7aac 100644 --- a/pkg/minikube/tunnel/tunnel_test.go +++ b/pkg/minikube/tunnel/tunnel_test.go @@ -423,7 +423,7 @@ func TestTunnel(t *testing.T) { }, } configLoader := &stubConfigLoader{ - c: &config.MachineConfig{ + c: &config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: tc.serviceCIDR, }}, @@ -478,7 +478,7 @@ func TestErrorCreatingTunnel(t *testing.T) { } configLoader := &stubConfigLoader{ - c: &config.MachineConfig{ + c: &config.ClusterConfig{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: "10.96.0.0/12", }}, diff --git a/site/content/en/docs/Contributing/drivers.en.md b/site/content/en/docs/Contributing/drivers.en.md index aecd0e1179..6c3f4a74a8 100644 --- a/site/content/en/docs/Contributing/drivers.en.md +++ b/site/content/en/docs/Contributing/drivers.en.md @@ -85,7 +85,7 @@ func init() { }) } -func createVMwareFusionHost(config cfg.MachineConfig) interface{} { +func createVMwareFusionHost(config cfg.ClusterConfig) interface{} { d := vmwarefusion.NewDriver(config.Name, localpath.MiniPath()).(*vmwarefusion.Driver) d.Boot2DockerURL = config.Downloader.GetISOFileURI(config.MinikubeISO) d.Memory = config.Memory