// run clustering based tests func ClusterTests(c platform.TestCluster) error { if plog.LevelAt(capnslog.DEBUG) { // get journalctl -f from all machines before starting for _, m := range c.Machines() { if err := platform.StreamJournal(m); err != nil { return fmt.Errorf("failed to start journal: %v", err) } } } // wait for etcd to come up if err := etcd.GetClusterHealth(c.Machines()[0], len(c.Machines())); err != nil { return err } tests := c.ListNativeFunctions() for _, name := range tests { plog.Noticef("running %v...", name) err := c.RunNative(name, c.Machines()[0]) if err != nil { return err } } return nil }
// Start a multi-node cluster from offcial coreos guides on manual // installation. Once up, do a couple basic smoke checks. See: // https://coreos.com/kubernetes/docs/latest/getting-started.html func CoreOSBasic(c platform.TestCluster, version string) error { // start single-node etcd etcdNode, err := c.NewMachine(etcdConfig) if err != nil { return err } if err := etcd.GetClusterHealth(etcdNode, 1); err != nil { return err } master, err := c.NewMachine("") if err != nil { return err } options := map[string]string{ "HYPERKUBE_ACI": "quay.io/coreos/hyperkube", "MASTER_HOST": master.PrivateIP(), "ETCD_ENDPOINTS": fmt.Sprintf("http://%v:2379", etcdNode.PrivateIP()), "CONTROLLER_ENDPOINT": fmt.Sprintf("https://%v:443", master.PrivateIP()), "K8S_SERVICE_IP": "10.3.0.1", "K8S_VER": version, "KUBELET_PATH": "/usr/lib/coreos/kubelet-wrapper", } // generate TLS assets on master if err := generateMasterTLSAssets(master, options); err != nil { return err } // create 3 worker nodes workerConfigs := []string{"", "", ""} workers, err := platform.NewMachines(c, workerConfigs) if err != nil { return err } // generate tls assets on workers by transfering ca from master if err := generateWorkerTLSAssets(master, workers); err != nil { return err } // configure nodes via generic install scripts if err := runInstallScript(master, controllerInstallScript, options); err != nil { return fmt.Errorf("Installing controller: %v", err) } for _, worker := range workers { if err := runInstallScript(worker, workerInstallScript, options); err != nil { return fmt.Errorf("Installing worker: %v", err) } } // configure kubectl if err := configureKubectl(master, master.PrivateIP(), version); err != nil { return err } // check that all nodes appear in kubectl f := func() error { return nodeCheck(master, workers) } if err := util.Retry(15, 10*time.Second, f); err != nil { return err } // start nginx pod and curl endpoint if err = nginxCheck(master, workers); err != nil { return err } // http://kubernetes.io/v1.0/docs/user-guide/secrets/ Also, ensures // https://github.com/coreos/bugs/issues/447 does not re-occur. if err = secretCheck(master, workers); err != nil { return err } return nil }