diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index 51ab37907a..184d7952ff 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -154,7 +154,7 @@ func enableOrDisableAddon(name, val, profile string) error { } data := assets.GenerateTemplateData(cfg.KubernetesConfig) - return enableOrDisableAddonInternal(addon, cmd, data, enable) + return enableOrDisableAddonInternal(addon, cmd, data, enable, profile) } func isAddonAlreadySet(addon *assets.Addon, enable bool) (bool, error) { @@ -173,7 +173,7 @@ func isAddonAlreadySet(addon *assets.Addon, enable bool) (bool, error) { return false, nil } -func enableOrDisableAddonInternal(addon *assets.Addon, cmd command.Runner, data interface{}, enable bool) error { +func enableOrDisableAddonInternal(addon *assets.Addon, cmd command.Runner, data interface{}, enable bool, profile string) error { var err error updateFile := cmd.Copy @@ -196,7 +196,7 @@ func enableOrDisableAddonInternal(addon *assets.Addon, cmd command.Runner, data return errors.Wrapf(err, "updating addon %s", addon.AssetName) } } - return nil + return reconcile(cmd, profile) } // enableOrDisableStorageClasses enables or disables storage classes diff --git a/pkg/minikube/addons/reconcile.go b/pkg/addons/reconcile.go similarity index 77% rename from pkg/minikube/addons/reconcile.go rename to pkg/addons/reconcile.go index fdda4f0dec..6854e18070 100644 --- a/pkg/minikube/addons/reconcile.go +++ b/pkg/addons/reconcile.go @@ -17,18 +17,17 @@ limitations under the License. package addons import ( - "fmt" "os" "os/exec" "path" "github.com/blang/semver" "github.com/golang/glog" - "k8s.io/minikube/pkg/minikube/bootstrapper/kubeadm" + "github.com/pkg/errors" + "k8s.io/minikube/pkg/minikube/bootstrapper/bsutil" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" - "k8s.io/minikube/pkg/minikube/exit" ) // taken from https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/addon-manager/kube-addons.sh @@ -51,24 +50,16 @@ var kubectlPruneWhitelist = []string{ "extensions/v1beta1/Ingress", } -// Reconcile runs kubectl apply -f on the addons directory +// reconcile runs kubectl apply -f on the addons directory // to reconcile addons state in all running profiles -func Reconcile(cmd command.Runner) error { - validProfiles, _, err := config.ListProfiles() - - if len(validProfiles) == 0 || err != nil { - exit.UsageT("No minikube profile was found. You can create one using `minikube start`.") +func reconcile(cmd command.Runner, profile string) error { + c, err := kubectlCommand(profile) + if err != nil { + return err } - - for _, p := range validProfiles { - c, err := kubectlCommand(p.Name) - if err != nil { - return err - } - if _, err := cmd.RunCmd(c); err != nil { - glog.Warningf("reconciling addons failed: %v", err) - return err - } + if _, err := cmd.RunCmd(c); err != nil { + glog.Warningf("reconciling addons failed: %v", err) + return err } return nil } @@ -90,7 +81,11 @@ func kubectlCommand(profile string) (*exec.Cmd, error) { } args = append(args, "--recursive") - if ok, err := appendNamespaceFlag(v); err == nil && ok { + ok, err := shouldAppendNamespaceFlag(v) + if err != nil { + return nil, errors.Wrap(err, "appending namespace flag") + } + if ok { args = append(args, "--namespace=kube-system") } @@ -112,12 +107,12 @@ func kubernetesVersion(profile string) (string, error) { // We need to append --namespace=kube-system for Kubernetes versions >=1.17 // so that prune works as expected. See https://github.com/kubernetes/kubernetes/pull/83084/ -func appendNamespaceFlag(version string) (bool, error) { - v, err := kubeadm.ParseKubernetesVersion(version) +func shouldAppendNamespaceFlag(version string) (bool, error) { + v, err := bsutil.ParseKubernetesVersion(version) if err != nil { return false, err } - return v.GT(semver.MustParse("1.17.0")), nil + return v.GTE(semver.MustParse("1.17.0")), nil } func kubectlBinaryPath(profile string) (string, error) { @@ -126,7 +121,6 @@ func kubectlBinaryPath(profile string) (string, error) { if err != nil { return "", err } - fmt.Printf("got version %s for profile %s\n", v, profile) p := path.Join("/var/lib/minikube/binaries", v, "kubectl") return p, nil } diff --git a/pkg/minikube/addons/reconcile_test.go b/pkg/addons/reconcile_test.go similarity index 100% rename from pkg/minikube/addons/reconcile_test.go rename to pkg/addons/reconcile_test.go