Skip to content

Commit

Permalink
Merge pull request #811 from jnummelin/backport-800-to-0.12
Browse files Browse the repository at this point in the history
Backport 800 to 0.12
  • Loading branch information
jnummelin authored Mar 29, 2021
2 parents 4224326 + ff90132 commit 00c5b95
Show file tree
Hide file tree
Showing 12 changed files with 141 additions and 238 deletions.
41 changes: 8 additions & 33 deletions inttest/addons/addons_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
k8s "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"

"github.com/k0sproject/k0s/internal/util"
"github.com/k0sproject/k0s/inttest/common"
Expand All @@ -43,9 +41,9 @@ type AddonsSuite struct {

func (as *AddonsSuite) TestHelmBasedAddons() {
addonName := "test-addon"
as.putFile("/tmp/k0s.yaml", fmt.Sprintf(k0sConfigWithAddon, addonName))
as.PutFile(as.ControllerNode(0), "/tmp/k0s.yaml", fmt.Sprintf(k0sConfigWithAddon, addonName))

as.Require().NoError(as.InitMainController([]string{"--config=/tmp/k0s.yaml"}))
as.Require().NoError(as.InitController(0, "--config=/tmp/k0s.yaml"))
as.waitForPrometheusRelease(addonName, 1)

values := map[string]interface{}{
Expand All @@ -65,7 +63,8 @@ func (as *AddonsSuite) TestHelmBasedAddons() {
}

func (as *AddonsSuite) doPrometheusDelete(chartName string) {
cfg := as.getKubeConfig("controller0")
cfg, err := as.GetKubeConfig(as.ControllerNode(0))
as.Require().NoError(err)
chartClient, err := clientset.New(cfg)
as.Require().NoError(err)
as.Require().NoError(chartClient.Charts("kube-system").Delete(context.Background(), chartName, v1.DeleteOptions{}))
Expand All @@ -86,7 +85,8 @@ func (as *AddonsSuite) doPrometheusDelete(chartName string) {

func (as *AddonsSuite) waitForPrometheusRelease(addonName string, rev int64) (string, string) {
as.T().Logf("waiting to see prometheus release ready in kube API, generation %d", rev)
cfg := as.getKubeConfig("controller0")
cfg, err := as.GetKubeConfig(as.ControllerNode(0))
as.Require().NoError(err)
chartClient, err := clientset.New(cfg)
as.Require().NoError(err)
var chartName string
Expand Down Expand Up @@ -135,7 +135,7 @@ func (as *AddonsSuite) waitForPrometheusRelease(addonName string, rev int64) (st

func (as *AddonsSuite) waitForPrometheusServerEnvs(releaseName string) error {
as.T().Logf("waiting to see prometheus release to have envs set from values yaml")
kc, err := as.KubeClient("controller0", "")
kc, err := as.KubeClient(as.ControllerNode(0))
if err != nil {
return err
}
Expand Down Expand Up @@ -186,22 +186,7 @@ func (as *AddonsSuite) doPrometheusUpdate(addonName string, values map[string]in
buf := bytes.NewBuffer([]byte{})
as.Require().NoError(tw.WriteToBuffer(buf))

as.putFile(path, buf.String())
}

func (as *AddonsSuite) getKubeConfig(node string) *restclient.Config {
machine, err := as.MachineForName(node)
as.Require().NoError(err)
ssh, err := as.SSH(node)
as.Require().NoError(err)
kubeConf, err := ssh.ExecWithOutput("cat /var/lib/k0s/pki/admin.conf")
as.Require().NoError(err)
cfg, err := clientcmd.RESTConfigFromKubeConfig([]byte(kubeConf))
as.Require().NoError(err)
hostPort, err := machine.HostPort(6443)
as.Require().NoError(err)
cfg.Host = fmt.Sprintf("localhost:%d", hostPort)
return cfg
as.PutFile(as.ControllerNode(0), path, buf.String())
}

func TestAddonsSuite(t *testing.T) {
Expand All @@ -216,16 +201,6 @@ func TestAddonsSuite(t *testing.T) {

}

func (as *AddonsSuite) putFile(path string, content string) {
controllerNode := fmt.Sprintf("controller%d", 0)
ssh, err := as.SSH(controllerNode)
as.Require().NoError(err)
defer ssh.Disconnect()
_, err = ssh.ExecWithOutput(fmt.Sprintf("echo '%s' >%s", content, path))

as.Require().NoError(err)
}

const k0sConfigWithAddon = `
spec:
extensions:
Expand Down
44 changes: 15 additions & 29 deletions inttest/basic/basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ import (
capi "k8s.io/api/certificates/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)

type BasicSuite struct {
Expand All @@ -36,20 +34,21 @@ type BasicSuite struct {

func (s *BasicSuite) TestK0sGetsUp() {
customDataDir := "/var/lib/k0s/custom-data-dir"
s.NoError(s.InitMainController([]string{fmt.Sprintf("--data-dir=%s", customDataDir)}))
s.NoError(s.RunWorkers(customDataDir, `--labels="k0sproject.io/foo=bar"`, `--kubelet-extra-args="--address=0.0.0.0 --event-burst=10"`))
dataDirOpt := fmt.Sprintf("--data-dir=%s", customDataDir)
s.NoError(s.InitController(0, dataDirOpt))
s.NoError(s.RunWorkers(dataDirOpt, `--labels="k0sproject.io/foo=bar"`, `--kubelet-extra-args="--address=0.0.0.0 --event-burst=10"`))

kc, err := s.KubeClient("controller0", customDataDir)
kc, err := s.KubeClient(s.ControllerNode(0), dataDirOpt)
s.NoError(err)

err = s.WaitForNodeReady("worker0", kc)
err = s.WaitForNodeReady(s.WorkerNode(0), kc)
s.NoError(err)

labels, err := s.GetNodeLabels("worker0", kc)
labels, err := s.GetNodeLabels(s.WorkerNode(0), kc)
s.NoError(err)
s.Equal("bar", labels["k0sproject.io/foo"])

err = s.WaitForNodeReady("worker1", kc)
err = s.WaitForNodeReady(s.WorkerNode(1), kc)
s.NoError(err)

pods, err := kc.CoreV1().Pods("kube-system").List(context.TODO(), v1.ListOptions{
Expand All @@ -65,29 +64,16 @@ func (s *BasicSuite) TestK0sGetsUp() {
s.T().Log("waiting to see calico pods ready")
s.NoError(common.WaitForCalicoReady(kc), "calico did not start")

s.Require().NoError(s.checkCertPerms("controller0"))
s.Require().NoError(s.checkCSRs("worker0", kc))
s.Require().NoError(s.checkCSRs("worker1", kc))
s.Require().NoError(s.checkCertPerms(s.ControllerNode(0)))
s.Require().NoError(s.checkCSRs(s.WorkerNode(0), kc))
s.Require().NoError(s.checkCSRs(s.WorkerNode(1), kc))

s.Require().NoError(s.verifyKubeletAddressFlag("worker0"))
s.Require().NoError(s.verifyKubeletAddressFlag("worker1"))
s.Require().NoError(s.verifyKubeletAddressFlag(s.WorkerNode(0)))
s.Require().NoError(s.verifyKubeletAddressFlag(s.WorkerNode(1)))

s.Require().NoError(common.WaitForMetricsReady(s.getKubeConfig("controller0")))
}

func (s *BasicSuite) getKubeConfig(node string) *restclient.Config {
machine, err := s.MachineForName(node)
s.Require().NoError(err)
ssh, err := s.SSH(node)
s.Require().NoError(err)
kubeConf, err := ssh.ExecWithOutput("cat /var/lib/k0s/custom-data-dir/pki/admin.conf")
s.Require().NoError(err)
cfg, err := clientcmd.RESTConfigFromKubeConfig([]byte(kubeConf))
s.Require().NoError(err)
hostPort, err := machine.HostPort(6443)
s.Require().NoError(err)
cfg.Host = fmt.Sprintf("localhost:%d", hostPort)
return cfg
cfg, err := s.GetKubeConfig(s.ControllerNode(0), dataDirOpt)
s.NoError(err)
s.Require().NoError(common.WaitForMetricsReady(cfg))
}

func (s *BasicSuite) checkCertPerms(node string) error {
Expand Down
10 changes: 5 additions & 5 deletions inttest/byocri/byocri_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ type BYOCRISuite struct {

func (s *BYOCRISuite) TestK0sGetsUp() {

s.NoError(s.InitMainController([]string{}))
s.NoError(s.InitController(0))
s.Require().NoError(s.runDockerWorker())

kc, err := s.KubeClient("controller0", "")
kc, err := s.KubeClient(s.ControllerNode(0))
s.NoError(err)

err = s.WaitForNodeReady("worker0", kc)
err = s.WaitForNodeReady(s.WorkerNode(0), kc)
s.NoError(err)

pods, err := kc.CoreV1().Pods("kube-system").List(context.TODO(), v1.ListOptions{
Expand All @@ -57,14 +57,14 @@ func (s *BYOCRISuite) TestK0sGetsUp() {
}

func (s *BYOCRISuite) runDockerWorker() error {
token, err := s.GetJoinToken("worker", "")
token, err := s.GetJoinToken("worker")
if err != nil {
return err
}
if token == "" {
return fmt.Errorf("got empty token for worker join")
}
sshWorker, err := s.SSH("worker0")
sshWorker, err := s.SSH(s.WorkerNode(0))
if err != nil {
return err
}
Expand Down
15 changes: 13 additions & 2 deletions inttest/common/filetools.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,22 @@ import "fmt"

// GetFile gets file from the controller with given index
func (s *FootlooseSuite) GetFileFromController(controllerIdx int, path string) string {
node := fmt.Sprintf("controller%d", controllerIdx)
sshCon, err := s.SSH(node)
sshCon, err := s.SSH(s.ControllerNode(controllerIdx))
s.Require().NoError(err)
defer sshCon.Disconnect()
content, err := sshCon.ExecWithOutput(fmt.Sprintf("cat %s", path))
s.Require().NoError(err)

return content
}

// PutFile writes content to file on given node
func (s *FootlooseSuite) PutFile(node, path, content string) {
ssh, err := s.SSH(node)
s.Require().NoError(err)
defer ssh.Disconnect()
// TODO: send data via pipe instead, so we can write data with single quotes '
_, err = ssh.ExecWithOutput(fmt.Sprintf("echo '%s' >%s", content, path))

s.Require().NoError(err)
}
Loading

0 comments on commit 00c5b95

Please sign in to comment.