github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/deisctl/cmd/k8s.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"sync"
     7  
     8  	"github.com/deis/deis/deisctl/backend"
     9  	"github.com/deis/deis/pkg/prettyprint"
    10  )
    11  
    12  //InstallK8s Installs K8s
    13  func InstallK8s(b backend.Backend) error {
    14  	var wg sync.WaitGroup
    15  	io.WriteString(Stdout, prettyprint.DeisIfy("Installing K8s..."))
    16  	fmt.Fprintln(Stdout, "K8s control plane...")
    17  	b.Create([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
    18  	wg.Wait()
    19  	b.Create([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
    20  	wg.Wait()
    21  	fmt.Fprintln(Stdout, "K8s data plane...")
    22  	b.Create([]string{"kube-kubelet"}, &wg, Stdout, Stderr)
    23  	wg.Wait()
    24  	fmt.Fprintln(Stdout, "K8s router mesh...")
    25  	b.Create([]string{"kube-proxy"}, &wg, Stdout, Stderr)
    26  	wg.Wait()
    27  	fmt.Fprintln(Stdout, "Done.\n ")
    28  	fmt.Fprintln(Stdout, "Please run `deisctl start k8s` to start K8s.")
    29  	return nil
    30  }
    31  
    32  //StartK8s starts K8s Schduler
    33  func StartK8s(b backend.Backend) error {
    34  	var wg sync.WaitGroup
    35  	io.WriteString(Stdout, prettyprint.DeisIfy("Starting K8s..."))
    36  	fmt.Fprintln(Stdout, "K8s control plane...")
    37  	b.Start([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
    38  	wg.Wait()
    39  	b.Start([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
    40  	wg.Wait()
    41  	fmt.Fprintln(Stdout, "K8s data plane...")
    42  	b.Start([]string{"kube-kubelet"}, &wg, Stdout, Stderr)
    43  	wg.Wait()
    44  	fmt.Fprintln(Stdout, "K8s router mesh...")
    45  	b.Start([]string{"kube-proxy"}, &wg, Stdout, Stderr)
    46  	wg.Wait()
    47  	fmt.Fprintln(Stdout, "Done.\n ")
    48  	fmt.Fprintln(Stdout, "Please run `deisctl config controller set schedulerModule=k8s` to use the K8s scheduler.")
    49  	return nil
    50  }
    51  
    52  //StopK8s stops K8s
    53  func StopK8s(b backend.Backend) error {
    54  	var wg sync.WaitGroup
    55  	io.WriteString(Stdout, prettyprint.DeisIfy("Stopping K8s..."))
    56  	fmt.Fprintln(Stdout, "K8s router mesh...")
    57  	b.Stop([]string{"kube-proxy"}, &wg, Stdout, Stderr)
    58  	wg.Wait()
    59  	fmt.Fprintln(Stdout, "K8s data plane...")
    60  	b.Stop([]string{"kube-kubelet"}, &wg, Stdout, Stderr)
    61  	wg.Wait()
    62  	fmt.Fprintln(Stdout, "K8s control plane...")
    63  	b.Stop([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
    64  	wg.Wait()
    65  	b.Stop([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
    66  	wg.Wait()
    67  	fmt.Fprintln(Stdout, "Done.\n ")
    68  	return nil
    69  }
    70  
    71  //UnInstallK8s uninstall K8s
    72  func UnInstallK8s(b backend.Backend) error {
    73  	var wg sync.WaitGroup
    74  	io.WriteString(Stdout, prettyprint.DeisIfy("Uninstalling K8s..."))
    75  	fmt.Fprintln(Stdout, "K8s router mesh...")
    76  	b.Destroy([]string{"kube-proxy"}, &wg, Stdout, Stderr)
    77  	wg.Wait()
    78  	fmt.Fprintln(Stdout, "K8s data plane...")
    79  	b.Destroy([]string{"kube-kubelet"}, &wg, Stdout, Stderr)
    80  	wg.Wait()
    81  	fmt.Fprintln(Stdout, "K8s control plane...")
    82  	b.Destroy([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
    83  	wg.Wait()
    84  	b.Destroy([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
    85  	wg.Wait()
    86  	fmt.Fprintln(Stdout, "Done.\n ")
    87  	return nil
    88  }