diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index 59887851b..9ccb41d17 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -29,9 +29,11 @@ import ( ) const ( - addonLabel = "kubeone.io/addon" - - kubectlApplyScript = `kubectl apply -f {{.FILE_NAME}} --prune -l "%s"` + addonLabel = "kubeone.io/addon" + kubectlApplyScript = ` +sudo KUBECONFIG=/etc/kubernetes/admin.conf \ + kubectl apply -f {{.FILE_NAME}} --prune -l "%s" +` ) // TemplateData is data available in the addons render template diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 32dd90bea..6da9a0c41 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -17,10 +17,7 @@ limitations under the License. package runner import ( - "fmt" "os" - "strings" - "time" "github.com/koron-go/prefixw" "github.com/pkg/errors" @@ -78,36 +75,3 @@ func (r *Runner) Run(cmd string, variables TemplateVariables) (string, string, e return r.RunRaw(cmd) } - -// WaitForPod waits for the availability of the given Kubernetes element. -func (r *Runner) WaitForPod(namespace string, name string, timeout time.Duration) error { - cmd := fmt.Sprintf(`sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf -n "%s" get pod "%s" -o jsonpath='{.status.phase}' --ignore-not-found`, namespace, name) - if !r.WaitForCondition(cmd, timeout, IsRunning) { - return errors.Errorf("timed out while waiting for %s/%s to come up for %v", namespace, name, timeout) - } - - return nil -} - -type validatorFunc func(stdout string) bool - -// IsRunning checks if the given output represents the "Running" status of a Kubernetes pod. -func IsRunning(stdout string) bool { - return strings.ToLower(stdout) == "running" -} - -// WaitForCondition waits for something to be true. -func (r *Runner) WaitForCondition(cmd string, timeout time.Duration, validator validatorFunc) bool { - cutoff := time.Now().Add(timeout) - - for time.Now().Before(cutoff) { - stdout, _, _ := r.Run(cmd, nil) - if validator(stdout) { - return true - } - - time.Sleep(1 * time.Second) - } - - return false -} diff --git a/pkg/scripts/configs.go b/pkg/scripts/configs.go index 842287da0..bbd4d27dd 100644 --- a/pkg/scripts/configs.go +++ b/pkg/scripts/configs.go @@ -17,12 +17,6 @@ limitations under the License. package scripts const ( - kubernetesAdminConfigScript = ` -mkdir -p $HOME/.kube/ -sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config -sudo chown $(id -u):$(id -g) $HOME/.kube/config -` - cloudConfigScriptTemplate = ` sudo mkdir -p /etc/systemd/system/kubelet.service.d/ /etc/kubernetes sudo mv {{ .WORK_DIR }}/cfg/cloud-config /etc/kubernetes/cloud-config @@ -49,10 +43,6 @@ fi ` ) -func KubernetesAdminConfig() (string, error) { - return Render(kubernetesAdminConfigScript, nil) -} - func SaveCloudConfig(workdir string) (string, error) { return Render(cloudConfigScriptTemplate, Data{ "WORK_DIR": workdir, diff --git a/pkg/scripts/configs_test.go b/pkg/scripts/configs_test.go index fd55a7c13..069034645 100644 --- a/pkg/scripts/configs_test.go +++ b/pkg/scripts/configs_test.go @@ -22,17 +22,6 @@ import ( "github.com/kubermatic/kubeone/pkg/testhelper" ) -func TestKubernetesAdminConfig(t *testing.T) { - t.Parallel() - - got, err := KubernetesAdminConfig() - if err != nil { - t.Fatalf("KubernetesAdminConfig() error = %v", err) - } - - testhelper.DiffOutput(t, testhelper.FSGoldenName(t), got, *updateFlag) -} - func TestSaveCloudConfig(t *testing.T) { t.Parallel() diff --git a/pkg/scripts/node.go b/pkg/scripts/node.go index fd2a201f6..3bce68200 100644 --- a/pkg/scripts/node.go +++ b/pkg/scripts/node.go @@ -18,13 +18,13 @@ package scripts const ( drainNodeScriptTemplate = ` -export KUBECONFIG=/etc/kubernetes/admin.conf -sudo kubectl drain {{ .NODE_NAME }} --ignore-daemonsets --delete-local-data +sudo KUBECONFIG=/etc/kubernetes/admin.conf \ + kubectl drain {{ .NODE_NAME }} --ignore-daemonsets --delete-local-data ` uncordonNodeScriptTemplate = ` -export KUBECONFIG=/etc/kubernetes/admin.conf -sudo kubectl uncordon {{ .NODE_NAME }} +sudo KUBECONFIG=/etc/kubernetes/admin.conf \ + kubectl uncordon {{ .NODE_NAME }} ` ) diff --git a/pkg/scripts/testdata/TestDrainNode.golden b/pkg/scripts/testdata/TestDrainNode.golden index ecbc19a9a..5c3cde275 100644 --- a/pkg/scripts/testdata/TestDrainNode.golden +++ b/pkg/scripts/testdata/TestDrainNode.golden @@ -1,5 +1,5 @@ set -xeu pipefail export "PATH=$PATH:/sbin:/usr/local/bin:/opt/bin" -export KUBECONFIG=/etc/kubernetes/admin.conf -sudo kubectl drain testNode1 --ignore-daemonsets --delete-local-data +sudo KUBECONFIG=/etc/kubernetes/admin.conf \ + kubectl drain testNode1 --ignore-daemonsets --delete-local-data diff --git a/pkg/scripts/testdata/TestKubernetesAdminConfig.golden b/pkg/scripts/testdata/TestKubernetesAdminConfig.golden deleted file mode 100644 index 3e6961555..000000000 --- a/pkg/scripts/testdata/TestKubernetesAdminConfig.golden +++ /dev/null @@ -1,6 +0,0 @@ -set -xeu pipefail -export "PATH=$PATH:/sbin:/usr/local/bin:/opt/bin" - -mkdir -p $HOME/.kube/ -sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config -sudo chown $(id -u):$(id -g) $HOME/.kube/config diff --git a/pkg/scripts/testdata/TestUncordonNode.golden b/pkg/scripts/testdata/TestUncordonNode.golden index e4e7fcb10..5dc8912cb 100644 --- a/pkg/scripts/testdata/TestUncordonNode.golden +++ b/pkg/scripts/testdata/TestUncordonNode.golden @@ -1,5 +1,5 @@ set -xeu pipefail export "PATH=$PATH:/sbin:/usr/local/bin:/opt/bin" -export KUBECONFIG=/etc/kubernetes/admin.conf -sudo kubectl uncordon testNode2 +sudo KUBECONFIG=/etc/kubernetes/admin.conf \ + kubectl uncordon testNode2 diff --git a/pkg/tasks/kubeconfig.go b/pkg/tasks/kubeconfig.go index 241313488..bdb720151 100644 --- a/pkg/tasks/kubeconfig.go +++ b/pkg/tasks/kubeconfig.go @@ -22,26 +22,10 @@ import ( "github.com/pkg/errors" - kubeoneapi "github.com/kubermatic/kubeone/pkg/apis/kubeone" "github.com/kubermatic/kubeone/pkg/kubeconfig" - "github.com/kubermatic/kubeone/pkg/scripts" - "github.com/kubermatic/kubeone/pkg/ssh" "github.com/kubermatic/kubeone/pkg/state" ) -func copyKubeconfig(s *state.State) error { - return s.RunTaskOnNodes(s.Cluster.ControlPlane.Hosts, func(s *state.State, _ *kubeoneapi.HostConfig, conn ssh.Connection) error { - s.Logger.Infoln("Copying Kubeconfig to home directory…") - cmd, err := scripts.KubernetesAdminConfig() - if err != nil { - return err - } - - _, _, err = s.Runner.RunRaw(cmd) - return err - }, state.RunParallel) -} - func saveKubeconfig(s *state.State) error { s.Logger.Info("Downloading kubeconfig…") diff --git a/pkg/tasks/tasks.go b/pkg/tasks/tasks.go index c31bdb4d6..057b7e3ef 100644 --- a/pkg/tasks/tasks.go +++ b/pkg/tasks/tasks.go @@ -83,7 +83,6 @@ func WithFullInstall(t Tasks) Tasks { {Fn: kubeconfig.BuildKubernetesClientset, ErrMsg: "failed to build kubernetes clientset"}, {Fn: repairClusterIfNeeded, ErrMsg: "failed to repair cluster"}, {Fn: joinControlplaneNode, ErrMsg: "failed to join other masters a cluster"}, - {Fn: copyKubeconfig, ErrMsg: "failed to copy kubeconfig to home directory"}, {Fn: saveKubeconfig, ErrMsg: "failed to save kubeconfig to the local machine"}, }...). append(kubernetesResources()...).