func start(c *cobra.Command, args []string) { clientset, err := kube.New(nil).ClientSet() if err != nil { fmt.Fprintf(os.Stderr, "Cannot initialize Kubernetes connection: %s", err) } switch store { case storageMemory: env.Releases = storage.Init(driver.NewMemory()) case storageConfigMap: env.Releases = storage.Init(driver.NewConfigMaps(clientset.Core().ConfigMaps(namespace()))) } lstn, err := net.Listen("tcp", grpcAddr) if err != nil { fmt.Fprintf(os.Stderr, "Server died: %s\n", err) os.Exit(1) } fmt.Printf("Tiller is listening on %s\n", grpcAddr) fmt.Printf("Probes server is listening on %s\n", probeAddr) fmt.Printf("Storage driver is %s\n", env.Releases.Name()) if enableTracing { startTracing(traceAddr) } srvErrCh := make(chan error) probeErrCh := make(chan error) go func() { svc := tiller.NewReleaseServer(env, clientset) services.RegisterReleaseServiceServer(rootServer, svc) if err := rootServer.Serve(lstn); err != nil { srvErrCh <- err } }() go func() { mux := newProbesMux() if err := http.ListenAndServe(probeAddr, mux); err != nil { probeErrCh <- err } }() select { case err := <-srvErrCh: fmt.Fprintf(os.Stderr, "Server died: %s\n", err) os.Exit(1) case err := <-probeErrCh: fmt.Fprintf(os.Stderr, "Probes server died: %s\n", err) } }
func start(c *cobra.Command, args []string) { switch store { case storageMemory: env.Releases = storage.Init(driver.NewMemory()) case storageConfigMap: c, err := env.KubeClient.APIClient() if err != nil { fmt.Fprintf(os.Stderr, "Cannot initialize Kubernetes connection: %s", err) } env.Releases = storage.Init(driver.NewConfigMaps(c.ConfigMaps(environment.TillerNamespace))) } lstn, err := net.Listen("tcp", addr) if err != nil { fmt.Fprintf(os.Stderr, "Server died: %s\n", err) os.Exit(1) } fmt.Printf("Tiller is running on %s\n", addr) fmt.Printf("Tiller probes server is running on %s\n", probe) fmt.Printf("Storage driver is %s\n", env.Releases.Name()) srvErrCh := make(chan error) probeErrCh := make(chan error) go func() { if err := rootServer.Serve(lstn); err != nil { srvErrCh <- err } }() go func() { mux := newProbesMux() if err := http.ListenAndServe(probe, mux); err != nil { probeErrCh <- err } }() select { case err := <-srvErrCh: fmt.Fprintf(os.Stderr, "Server died: %s\n", err) os.Exit(1) case err := <-probeErrCh: fmt.Fprintf(os.Stderr, "Probes server died: %s\n", err) } }