From a5394ea0fb4bcde72e34c51261767fa9abe10186 Mon Sep 17 00:00:00 2001
From: Matthew Fisher <matt.fisher@microsoft.com>
Date: Tue, 6 Mar 2018 11:49:08 -0800
Subject: [PATCH] fix helm init --wait

(cherry picked from commit a66a39a171fa453f6515cbe23d7d2715cba9cc81)
---
 cmd/helm/delete.go                           |  2 +-
 cmd/helm/get.go                              |  2 +-
 cmd/helm/get_hooks.go                        |  2 +-
 cmd/helm/get_manifest.go                     |  2 +-
 cmd/helm/get_values.go                       |  2 +-
 cmd/helm/helm.go                             |  4 +-
 cmd/helm/history.go                          |  2 +-
 cmd/helm/init.go                             | 56 ++++++++++++++++++--
 cmd/helm/install.go                          |  2 +-
 cmd/helm/list.go                             |  2 +-
 cmd/helm/load_plugins.go                     |  2 +-
 cmd/helm/release_testing.go                  |  2 +-
 cmd/helm/reset.go                            |  2 +-
 cmd/helm/rollback.go                         |  2 +-
 cmd/helm/status.go                           |  2 +-
 cmd/helm/upgrade.go                          |  2 +-
 cmd/helm/version.go                          |  2 +-
 cmd/tiller/tiller.go                         |  8 +++
 docs/helm/helm.md                            | 13 ++---
 docs/helm/helm_completion.md                 | 13 ++---
 docs/helm/helm_create.md                     | 13 ++---
 docs/helm/helm_delete.md                     | 13 ++---
 docs/helm/helm_dependency.md                 | 13 ++---
 docs/helm/helm_dependency_build.md           | 13 ++---
 docs/helm/helm_dependency_list.md            | 13 ++---
 docs/helm/helm_dependency_update.md          | 13 ++---
 docs/helm/helm_fetch.md                      | 13 ++---
 docs/helm/helm_get.md                        | 13 ++---
 docs/helm/helm_get_hooks.md                  | 13 ++---
 docs/helm/helm_get_manifest.md               | 13 ++---
 docs/helm/helm_get_values.md                 | 13 ++---
 docs/helm/helm_history.md                    | 13 ++---
 docs/helm/helm_home.md                       | 13 ++---
 docs/helm/helm_init.md                       | 13 ++---
 docs/helm/helm_inspect.md                    | 13 ++---
 docs/helm/helm_inspect_chart.md              | 13 ++---
 docs/helm/helm_inspect_values.md             | 13 ++---
 docs/helm/helm_install.md                    | 13 ++---
 docs/helm/helm_lint.md                       | 13 ++---
 docs/helm/helm_list.md                       | 13 ++---
 docs/helm/helm_package.md                    | 13 ++---
 docs/helm/helm_plugin.md                     | 13 ++---
 docs/helm/helm_plugin_install.md             | 13 ++---
 docs/helm/helm_plugin_list.md                | 13 ++---
 docs/helm/helm_plugin_remove.md              | 13 ++---
 docs/helm/helm_plugin_update.md              | 13 ++---
 docs/helm/helm_repo.md                       | 13 ++---
 docs/helm/helm_repo_add.md                   | 13 ++---
 docs/helm/helm_repo_index.md                 | 13 ++---
 docs/helm/helm_repo_list.md                  | 13 ++---
 docs/helm/helm_repo_remove.md                | 13 ++---
 docs/helm/helm_repo_update.md                | 13 ++---
 docs/helm/helm_reset.md                      | 13 ++---
 docs/helm/helm_rollback.md                   | 13 ++---
 docs/helm/helm_search.md                     | 13 ++---
 docs/helm/helm_serve.md                      | 13 ++---
 docs/helm/helm_status.md                     | 13 ++---
 docs/helm/helm_template.md                   | 13 ++---
 docs/helm/helm_test.md                       | 13 ++---
 docs/helm/helm_upgrade.md                    | 13 ++---
 docs/helm/helm_verify.md                     | 13 ++---
 docs/helm/helm_version.md                    | 13 ++---
 pkg/helm/client.go                           | 19 +++++--
 pkg/helm/environment/environment.go          |  3 ++
 pkg/helm/option.go                           | 10 ++++
 pkg/helm/portforwarder/portforwarder.go      |  7 +--
 pkg/helm/portforwarder/portforwarder_test.go |  2 +-
 67 files changed, 419 insertions(+), 292 deletions(-)

diff --git a/cmd/helm/delete.go b/cmd/helm/delete.go
index 05c845344..e0ac8c4f6 100755
--- a/cmd/helm/delete.go
+++ b/cmd/helm/delete.go
@@ -57,7 +57,7 @@ func newDeleteCmd(c helm.Interface, out io.Writer) *cobra.Command {
 		SuggestFor: []string{"remove", "rm"},
 		Short:      "given a release name, delete the release from Kubernetes",
 		Long:       deleteDesc,
-		PreRunE:    setupConnection,
+		PreRunE:    func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errors.New("command 'delete' requires a release name")
diff --git a/cmd/helm/get.go b/cmd/helm/get.go
index 477f730d5..a2eb1d137 100644
--- a/cmd/helm/get.go
+++ b/cmd/helm/get.go
@@ -57,7 +57,7 @@ func newGetCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "get [flags] RELEASE_NAME",
 		Short:   "download a named release",
 		Long:    getHelp,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errReleaseRequired
diff --git a/cmd/helm/get_hooks.go b/cmd/helm/get_hooks.go
index ea57838af..1b6f2f8fe 100644
--- a/cmd/helm/get_hooks.go
+++ b/cmd/helm/get_hooks.go
@@ -47,7 +47,7 @@ func newGetHooksCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "hooks [flags] RELEASE_NAME",
 		Short:   "download all hooks for a named release",
 		Long:    getHooksHelp,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errReleaseRequired
diff --git a/cmd/helm/get_manifest.go b/cmd/helm/get_manifest.go
index 773d8003b..1c42830f0 100644
--- a/cmd/helm/get_manifest.go
+++ b/cmd/helm/get_manifest.go
@@ -49,7 +49,7 @@ func newGetManifestCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "manifest [flags] RELEASE_NAME",
 		Short:   "download the manifest for a named release",
 		Long:    getManifestHelp,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errReleaseRequired
diff --git a/cmd/helm/get_values.go b/cmd/helm/get_values.go
index 592f6fe61..b6ce648e5 100644
--- a/cmd/helm/get_values.go
+++ b/cmd/helm/get_values.go
@@ -47,7 +47,7 @@ func newGetValuesCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "values [flags] RELEASE_NAME",
 		Short:   "download the values file for a named release",
 		Long:    getValuesHelp,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errReleaseRequired
diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go
index fa916b1f2..830d84832 100644
--- a/cmd/helm/helm.go
+++ b/cmd/helm/helm.go
@@ -166,7 +166,7 @@ func markDeprecated(cmd *cobra.Command, notice string) *cobra.Command {
 	return cmd
 }
 
-func setupConnection(c *cobra.Command, args []string) error {
+func setupConnection() error {
 	if settings.TillerHost == "" {
 		config, client, err := getKubeClient(settings.KubeContext)
 		if err != nil {
@@ -264,7 +264,7 @@ func ensureHelmClient(h helm.Interface) helm.Interface {
 }
 
 func newClient() helm.Interface {
-	options := []helm.Option{helm.Host(settings.TillerHost)}
+	options := []helm.Option{helm.Host(settings.TillerHost), helm.ConnectTimeout(settings.TillerConnectionTimeout)}
 
 	if tlsVerify || tlsEnable {
 		if tlsCaCertFile == "" {
diff --git a/cmd/helm/history.go b/cmd/helm/history.go
index 0637eca64..659c39e81 100644
--- a/cmd/helm/history.go
+++ b/cmd/helm/history.go
@@ -61,7 +61,7 @@ func newHistoryCmd(c helm.Interface, w io.Writer) *cobra.Command {
 		Long:    historyHelp,
 		Short:   "fetch release history",
 		Aliases: []string{"hist"},
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			switch {
 			case len(args) == 0:
diff --git a/cmd/helm/init.go b/cmd/helm/init.go
index c8753874f..b4c8f7a92 100644
--- a/cmd/helm/init.go
+++ b/cmd/helm/init.go
@@ -23,6 +23,7 @@ import (
 	"fmt"
 	"io"
 	"os"
+	"time"
 
 	"github.com/spf13/cobra"
 	apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -33,6 +34,7 @@ import (
 	"k8s.io/helm/pkg/getter"
 	"k8s.io/helm/pkg/helm"
 	"k8s.io/helm/pkg/helm/helmpath"
+	"k8s.io/helm/pkg/helm/portforwarder"
 	"k8s.io/helm/pkg/repo"
 )
 
@@ -307,10 +309,12 @@ func (i *initCmd) run() error {
 					"(Use --client-only to suppress this message, or --upgrade to upgrade Tiller to the current version.)")
 			}
 		} else {
-			if err := i.ping(); err != nil {
-				return err
-			}
-			fmt.Fprintln(i.out, "\nTiller (the Helm server-side component) has been installed into your Kubernetes Cluster.")
+			fmt.Fprintln(i.out, "\nTiller (the Helm server-side component) has been installed into your Kubernetes Cluster.\n\n"+
+				"Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.\n"+
+				"For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation")
+		}
+		if err := i.ping(); err != nil {
+			return err
 		}
 	} else {
 		fmt.Fprintln(i.out, "Not installing Tiller due to 'client-only' flag having been set")
@@ -322,6 +326,19 @@ func (i *initCmd) run() error {
 
 func (i *initCmd) ping() error {
 	if i.wait {
+		_, kubeClient, err := getKubeClient(settings.KubeContext)
+		if err != nil {
+			return err
+		}
+		if !watchTillerUntilReady(settings.TillerNamespace, kubeClient, settings.TillerConnectionTimeout) {
+			return fmt.Errorf("tiller was not found. polling deadline exceeded")
+		}
+
+		// establish a connection to Tiller now that we've effectively guaranteed it's available
+		if err := setupConnection(); err != nil {
+			return err
+		}
+		i.client = newClient()
 		if err := i.client.PingTiller(); err != nil {
 			return fmt.Errorf("could not ping Tiller: %s", err)
 		}
@@ -438,3 +455,34 @@ func ensureRepoFileFormat(file string, out io.Writer) error {
 
 	return nil
 }
+
+// watchTillerUntilReady waits for the tiller pod to become available. This is useful in situations where we
+// want to wait before we call New().
+//
+// Returns true if it exists. If the timeout was reached and it could not find the pod, it returns false.
+func watchTillerUntilReady(namespace string, client kubernetes.Interface, timeout int64) bool {
+	deadlinePollingChan := time.NewTimer(time.Duration(timeout) * time.Second).C
+	checkTillerPodTicker := time.NewTicker(500 * time.Millisecond)
+	doneChan := make(chan bool)
+
+	defer checkTillerPodTicker.Stop()
+
+	go func() {
+		for range checkTillerPodTicker.C {
+			_, err := portforwarder.GetTillerPodName(client.CoreV1(), namespace)
+			if err == nil {
+				doneChan <- true
+				break
+			}
+		}
+	}()
+
+	for {
+		select {
+		case <-deadlinePollingChan:
+			return false
+		case <-doneChan:
+			return true
+		}
+	}
+}
diff --git a/cmd/helm/install.go b/cmd/helm/install.go
index 8f849a15b..f7e35b602 100644
--- a/cmd/helm/install.go
+++ b/cmd/helm/install.go
@@ -153,7 +153,7 @@ func newInstallCmd(c helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "install [CHART]",
 		Short:   "install a chart archive",
 		Long:    installDesc,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if err := checkArgsLength(len(args), "chart name"); err != nil {
 				return err
diff --git a/cmd/helm/list.go b/cmd/helm/list.go
index bf543df5e..0219d60f2 100644
--- a/cmd/helm/list.go
+++ b/cmd/helm/list.go
@@ -88,7 +88,7 @@ func newListCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Short:   "list releases",
 		Long:    listHelp,
 		Aliases: []string{"ls"},
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) > 0 {
 				list.filter = strings.Join(args, " ")
diff --git a/cmd/helm/load_plugins.go b/cmd/helm/load_plugins.go
index 2994126cb..ef24e7883 100644
--- a/cmd/helm/load_plugins.go
+++ b/cmd/helm/load_plugins.go
@@ -103,7 +103,7 @@ func loadPlugins(baseCmd *cobra.Command, out io.Writer) {
 				if _, err := processParent(cmd, args); err != nil {
 					return err
 				}
-				return setupConnection(cmd, args)
+				return setupConnection()
 			}
 		}
 
diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go
index 09a6330c6..bdfa87a60 100644
--- a/cmd/helm/release_testing.go
+++ b/cmd/helm/release_testing.go
@@ -51,7 +51,7 @@ func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "test [RELEASE]",
 		Short:   "test a release",
 		Long:    releaseTestDesc,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if err := checkArgsLength(len(args), "release name"); err != nil {
 				return err
diff --git a/cmd/helm/reset.go b/cmd/helm/reset.go
index 707c3d0be..cbc995d10 100644
--- a/cmd/helm/reset.go
+++ b/cmd/helm/reset.go
@@ -58,7 +58,7 @@ func newResetCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Short: "uninstalls Tiller from a cluster",
 		Long:  resetDesc,
 		PreRunE: func(cmd *cobra.Command, args []string) error {
-			if err := setupConnection(cmd, args); !d.force && err != nil {
+			if err := setupConnection(); !d.force && err != nil {
 				return err
 			}
 			return nil
diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go
index c55707f7c..889b6ae28 100644
--- a/cmd/helm/rollback.go
+++ b/cmd/helm/rollback.go
@@ -57,7 +57,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "rollback [flags] [RELEASE] [REVISION]",
 		Short:   "roll back a release to a previous revision",
 		Long:    rollbackDesc,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if err := checkArgsLength(len(args), "release name", "revision number"); err != nil {
 				return err
diff --git a/cmd/helm/status.go b/cmd/helm/status.go
index 12cfcd59e..b73b6f56e 100644
--- a/cmd/helm/status.go
+++ b/cmd/helm/status.go
@@ -63,7 +63,7 @@ func newStatusCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "status [flags] RELEASE_NAME",
 		Short:   "displays the status of the named release",
 		Long:    statusHelp,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if len(args) == 0 {
 				return errReleaseRequired
diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go
index 7a7dfb0f6..452f3df51 100644
--- a/cmd/helm/upgrade.go
+++ b/cmd/helm/upgrade.go
@@ -91,7 +91,7 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
 		Use:     "upgrade [RELEASE] [CHART]",
 		Short:   "upgrade a release",
 		Long:    upgradeDesc,
-		PreRunE: setupConnection,
+		PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() },
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if err := checkArgsLength(len(args), "release name", "chart path"); err != nil {
 				return err
diff --git a/cmd/helm/version.go b/cmd/helm/version.go
index 69e0f3905..e68cdc0d7 100644
--- a/cmd/helm/version.go
+++ b/cmd/helm/version.go
@@ -75,7 +75,7 @@ func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command {
 			if version.showServer {
 				// We do this manually instead of in PreRun because we only
 				// need a tunnel if server version is requested.
-				setupConnection(cmd, args)
+				setupConnection()
 			}
 			version.client = ensureHelmClient(version.client)
 			return version.run()
diff --git a/cmd/tiller/tiller.go b/cmd/tiller/tiller.go
index e0c10cb29..5d2db3816 100644
--- a/cmd/tiller/tiller.go
+++ b/cmd/tiller/tiller.go
@@ -33,6 +33,8 @@ import (
 	goprom "github.com/grpc-ecosystem/go-grpc-prometheus"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials"
+	"google.golang.org/grpc/health"
+	healthpb "google.golang.org/grpc/health/grpc_health_v1"
 	"google.golang.org/grpc/keepalive"
 
 	"k8s.io/helm/pkg/kube"
@@ -113,6 +115,9 @@ func main() {
 
 func start() {
 
+	healthSrv := health.NewServer()
+	healthSrv.SetServingStatus("Tiller", healthpb.HealthCheckResponse_NOT_SERVING)
+
 	clientset, err := kube.New(nil).ClientSet()
 	if err != nil {
 		logger.Fatalf("Cannot initialize Kubernetes connection: %s", err)
@@ -168,6 +173,7 @@ func start() {
 	}))
 
 	rootServer = tiller.NewServer(opts...)
+	healthpb.RegisterHealthServer(rootServer, healthSrv)
 
 	lstn, err := net.Listen("tcp", *grpcAddr)
 	if err != nil {
@@ -207,6 +213,8 @@ func start() {
 		}
 	}()
 
+	healthSrv.SetServingStatus("Tiller", healthpb.HealthCheckResponse_SERVING)
+
 	select {
 	case err := <-srvErrCh:
 		logger.Fatalf("Server died: %s", err)
diff --git a/docs/helm/helm.md b/docs/helm/helm.md
index d3c63f56a..f470e84b2 100644
--- a/docs/helm/helm.md
+++ b/docs/helm/helm.md
@@ -32,11 +32,12 @@ Environment:
 ### Options
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -67,4 +68,4 @@ Environment:
 * [helm verify](helm_verify.md)	 - verify that a chart at the given path has been signed and is valid
 * [helm version](helm_version.md)	 - print the client/server version information
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_completion.md b/docs/helm/helm_completion.md
index cef6a8631..994205d88 100644
--- a/docs/helm/helm_completion.md
+++ b/docs/helm/helm_completion.md
@@ -24,14 +24,15 @@ helm completion SHELL
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_create.md b/docs/helm/helm_create.md
index 636141661..6e0f3de78 100644
--- a/docs/helm/helm_create.md
+++ b/docs/helm/helm_create.md
@@ -43,14 +43,15 @@ helm create NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_delete.md b/docs/helm/helm_delete.md
index 26ac5fdac..5d41cd7ea 100644
--- a/docs/helm/helm_delete.md
+++ b/docs/helm/helm_delete.md
@@ -34,14 +34,15 @@ helm delete [flags] RELEASE_NAME [...]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_dependency.md b/docs/helm/helm_dependency.md
index 05b114b34..34d49e20a 100644
--- a/docs/helm/helm_dependency.md
+++ b/docs/helm/helm_dependency.md
@@ -57,11 +57,12 @@ for this case.
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -70,4 +71,4 @@ for this case.
 * [helm dependency list](helm_dependency_list.md)	 - list the dependencies for the given chart
 * [helm dependency update](helm_dependency_update.md)	 - update charts/ based on the contents of requirements.yaml
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_dependency_build.md b/docs/helm/helm_dependency_build.md
index 70aae9a96..0413a9a85 100644
--- a/docs/helm/helm_dependency_build.md
+++ b/docs/helm/helm_dependency_build.md
@@ -30,14 +30,15 @@ helm dependency build [flags] CHART
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm dependency](helm_dependency.md)	 - manage a chart's dependencies
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_dependency_list.md b/docs/helm/helm_dependency_list.md
index be5daec44..b4343081c 100644
--- a/docs/helm/helm_dependency_list.md
+++ b/docs/helm/helm_dependency_list.md
@@ -22,14 +22,15 @@ helm dependency list [flags] CHART
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm dependency](helm_dependency.md)	 - manage a chart's dependencies
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_dependency_update.md b/docs/helm/helm_dependency_update.md
index 94ddee3c5..3c90ff779 100644
--- a/docs/helm/helm_dependency_update.md
+++ b/docs/helm/helm_dependency_update.md
@@ -35,14 +35,15 @@ helm dependency update [flags] CHART
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm dependency](helm_dependency.md)	 - manage a chart's dependencies
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_fetch.md b/docs/helm/helm_fetch.md
index 9c8a4ec36..3bc3334a0 100644
--- a/docs/helm/helm_fetch.md
+++ b/docs/helm/helm_fetch.md
@@ -44,14 +44,15 @@ helm fetch [flags] [chart URL | repo/chartname] [...]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_get.md b/docs/helm/helm_get.md
index 5b148b564..9cd70e520 100644
--- a/docs/helm/helm_get.md
+++ b/docs/helm/helm_get.md
@@ -36,11 +36,12 @@ helm get [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -49,4 +50,4 @@ helm get [flags] RELEASE_NAME
 * [helm get manifest](helm_get_manifest.md)	 - download the manifest for a named release
 * [helm get values](helm_get_values.md)	 - download the values file for a named release
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_get_hooks.md b/docs/helm/helm_get_hooks.md
index c39c73888..85fa5d04b 100644
--- a/docs/helm/helm_get_hooks.md
+++ b/docs/helm/helm_get_hooks.md
@@ -29,14 +29,15 @@ helm get hooks [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm get](helm_get.md)	 - download a named release
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_get_manifest.md b/docs/helm/helm_get_manifest.md
index 144f7bf87..a00c1be56 100644
--- a/docs/helm/helm_get_manifest.md
+++ b/docs/helm/helm_get_manifest.md
@@ -31,14 +31,15 @@ helm get manifest [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm get](helm_get.md)	 - download a named release
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_get_values.md b/docs/helm/helm_get_values.md
index eadc56a67..d8944b475 100644
--- a/docs/helm/helm_get_values.md
+++ b/docs/helm/helm_get_values.md
@@ -28,14 +28,15 @@ helm get values [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm get](helm_get.md)	 - download a named release
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_history.md b/docs/helm/helm_history.md
index 119e58b69..81c720021 100755
--- a/docs/helm/helm_history.md
+++ b/docs/helm/helm_history.md
@@ -40,14 +40,15 @@ helm history [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_home.md b/docs/helm/helm_home.md
index 855090a20..bdccd756f 100644
--- a/docs/helm/helm_home.md
+++ b/docs/helm/helm_home.md
@@ -17,14 +17,15 @@ helm home
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_init.md b/docs/helm/helm_init.md
index 856e9b565..5e498fdb0 100644
--- a/docs/helm/helm_init.md
+++ b/docs/helm/helm_init.md
@@ -59,14 +59,15 @@ helm init
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 9-Mar-2018
diff --git a/docs/helm/helm_inspect.md b/docs/helm/helm_inspect.md
index 006da7478..df122f763 100644
--- a/docs/helm/helm_inspect.md
+++ b/docs/helm/helm_inspect.md
@@ -31,11 +31,12 @@ helm inspect [CHART]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -43,4 +44,4 @@ helm inspect [CHART]
 * [helm inspect chart](helm_inspect_chart.md)	 - shows inspect chart
 * [helm inspect values](helm_inspect_values.md)	 - shows inspect values
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_inspect_chart.md b/docs/helm/helm_inspect_chart.md
index 37d0eb4af..bfa6061c8 100644
--- a/docs/helm/helm_inspect_chart.md
+++ b/docs/helm/helm_inspect_chart.md
@@ -29,14 +29,15 @@ helm inspect chart [CHART]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm inspect](helm_inspect.md)	 - inspect a chart
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_inspect_values.md b/docs/helm/helm_inspect_values.md
index 2079849ff..fbf8660c2 100644
--- a/docs/helm/helm_inspect_values.md
+++ b/docs/helm/helm_inspect_values.md
@@ -29,14 +29,15 @@ helm inspect values [CHART]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm inspect](helm_inspect.md)	 - inspect a chart
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_install.md b/docs/helm/helm_install.md
index da9b91bb8..406416dc8 100644
--- a/docs/helm/helm_install.md
+++ b/docs/helm/helm_install.md
@@ -98,14 +98,15 @@ helm install [CHART]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_lint.md b/docs/helm/helm_lint.md
index 8167a46cc..da3cdf945 100644
--- a/docs/helm/helm_lint.md
+++ b/docs/helm/helm_lint.md
@@ -30,14 +30,15 @@ helm lint [flags] PATH
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_list.md b/docs/helm/helm_list.md
index 1ba60b912..1d5bf7ea2 100755
--- a/docs/helm/helm_list.md
+++ b/docs/helm/helm_list.md
@@ -62,14 +62,15 @@ helm list [flags] [FILTER]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_package.md b/docs/helm/helm_package.md
index 85da8315e..c51aa7032 100644
--- a/docs/helm/helm_package.md
+++ b/docs/helm/helm_package.md
@@ -36,14 +36,15 @@ helm package [flags] [CHART_PATH] [...]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_plugin.md b/docs/helm/helm_plugin.md
index f8e04f1a5..cc42aa4dc 100644
--- a/docs/helm/helm_plugin.md
+++ b/docs/helm/helm_plugin.md
@@ -12,11 +12,12 @@ Manage client-side Helm plugins.
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -26,4 +27,4 @@ Manage client-side Helm plugins.
 * [helm plugin remove](helm_plugin_remove.md)	 - remove one or more Helm plugins
 * [helm plugin update](helm_plugin_update.md)	 - update one or more Helm plugins
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_plugin_install.md b/docs/helm/helm_plugin_install.md
index beb478845..196ca97dd 100644
--- a/docs/helm/helm_plugin_install.md
+++ b/docs/helm/helm_plugin_install.md
@@ -25,14 +25,15 @@ helm plugin install [options] <path|url>...
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm plugin](helm_plugin.md)	 - add, list, or remove Helm plugins
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_plugin_list.md b/docs/helm/helm_plugin_list.md
index d363ae9b6..ddfd04ee6 100644
--- a/docs/helm/helm_plugin_list.md
+++ b/docs/helm/helm_plugin_list.md
@@ -14,14 +14,15 @@ helm plugin list
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm plugin](helm_plugin.md)	 - add, list, or remove Helm plugins
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_plugin_remove.md b/docs/helm/helm_plugin_remove.md
index 55f62514d..8543a367a 100644
--- a/docs/helm/helm_plugin_remove.md
+++ b/docs/helm/helm_plugin_remove.md
@@ -14,14 +14,15 @@ helm plugin remove <plugin>...
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm plugin](helm_plugin.md)	 - add, list, or remove Helm plugins
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_plugin_update.md b/docs/helm/helm_plugin_update.md
index 26a6ad270..9e5e205f0 100644
--- a/docs/helm/helm_plugin_update.md
+++ b/docs/helm/helm_plugin_update.md
@@ -14,14 +14,15 @@ helm plugin update <plugin>...
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm plugin](helm_plugin.md)	 - add, list, or remove Helm plugins
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo.md b/docs/helm/helm_repo.md
index a700f7aab..4109ceca4 100644
--- a/docs/helm/helm_repo.md
+++ b/docs/helm/helm_repo.md
@@ -16,11 +16,12 @@ Example usage:
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
@@ -31,4 +32,4 @@ Example usage:
 * [helm repo remove](helm_repo_remove.md)	 - remove a chart repository
 * [helm repo update](helm_repo_update.md)	 - update information of available charts locally from chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo_add.md b/docs/helm/helm_repo_add.md
index 7137c2c51..f0dfcbd5d 100644
--- a/docs/helm/helm_repo_add.md
+++ b/docs/helm/helm_repo_add.md
@@ -23,14 +23,15 @@ helm repo add [flags] [NAME] [URL]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm repo](helm_repo.md)	 - add, list, remove, update, and index chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo_index.md b/docs/helm/helm_repo_index.md
index 7ddcf068f..14b412b29 100644
--- a/docs/helm/helm_repo_index.md
+++ b/docs/helm/helm_repo_index.md
@@ -30,14 +30,15 @@ helm repo index [flags] [DIR]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm repo](helm_repo.md)	 - add, list, remove, update, and index chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo_list.md b/docs/helm/helm_repo_list.md
index 2285a3c6e..858ef957f 100644
--- a/docs/helm/helm_repo_list.md
+++ b/docs/helm/helm_repo_list.md
@@ -14,14 +14,15 @@ helm repo list [flags]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm repo](helm_repo.md)	 - add, list, remove, update, and index chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo_remove.md b/docs/helm/helm_repo_remove.md
index d23980e73..801bc3c3f 100644
--- a/docs/helm/helm_repo_remove.md
+++ b/docs/helm/helm_repo_remove.md
@@ -14,14 +14,15 @@ helm repo remove [flags] [NAME]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm repo](helm_repo.md)	 - add, list, remove, update, and index chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_repo_update.md b/docs/helm/helm_repo_update.md
index 00dc6d9e2..897ed24b7 100644
--- a/docs/helm/helm_repo_update.md
+++ b/docs/helm/helm_repo_update.md
@@ -20,14 +20,15 @@ helm repo update
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm repo](helm_repo.md)	 - add, list, remove, update, and index chart repositories
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_reset.md b/docs/helm/helm_reset.md
index 74a787bdc..68eac9ec7 100644
--- a/docs/helm/helm_reset.md
+++ b/docs/helm/helm_reset.md
@@ -30,14 +30,15 @@ helm reset
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 9-Mar-2018
diff --git a/docs/helm/helm_rollback.md b/docs/helm/helm_rollback.md
index 3bd4af8bf..4b6dcbbb2 100644
--- a/docs/helm/helm_rollback.md
+++ b/docs/helm/helm_rollback.md
@@ -36,14 +36,15 @@ helm rollback [flags] [RELEASE] [REVISION]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_search.md b/docs/helm/helm_search.md
index 247b83f42..f59814b9a 100644
--- a/docs/helm/helm_search.md
+++ b/docs/helm/helm_search.md
@@ -27,14 +27,15 @@ helm search [keyword]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_serve.md b/docs/helm/helm_serve.md
index 163b24e76..90ebb6da9 100644
--- a/docs/helm/helm_serve.md
+++ b/docs/helm/helm_serve.md
@@ -35,14 +35,15 @@ helm serve
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_status.md b/docs/helm/helm_status.md
index b878277ac..02ec0ad66 100644
--- a/docs/helm/helm_status.md
+++ b/docs/helm/helm_status.md
@@ -35,14 +35,15 @@ helm status [flags] RELEASE_NAME
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_template.md b/docs/helm/helm_template.md
index 347ba2ab4..126adb02f 100644
--- a/docs/helm/helm_template.md
+++ b/docs/helm/helm_template.md
@@ -39,14 +39,15 @@ helm template [flags] CHART
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_test.md b/docs/helm/helm_test.md
index 89436ed60..062244e73 100644
--- a/docs/helm/helm_test.md
+++ b/docs/helm/helm_test.md
@@ -31,14 +31,15 @@ helm test [RELEASE]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_upgrade.md b/docs/helm/helm_upgrade.md
index 290fe5921..5ed128958 100644
--- a/docs/helm/helm_upgrade.md
+++ b/docs/helm/helm_upgrade.md
@@ -66,14 +66,15 @@ helm upgrade [RELEASE] [CHART]
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_verify.md b/docs/helm/helm_verify.md
index 2c65b3092..bc5343937 100644
--- a/docs/helm/helm_verify.md
+++ b/docs/helm/helm_verify.md
@@ -29,14 +29,15 @@ helm verify [flags] PATH
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 8-Mar-2018
diff --git a/docs/helm/helm_version.md b/docs/helm/helm_version.md
index 18f9d261e..ac95a128b 100644
--- a/docs/helm/helm_version.md
+++ b/docs/helm/helm_version.md
@@ -43,14 +43,15 @@ helm version
 ### Options inherited from parent commands
 
 ```
-      --debug                     enable verbose output
-      --home string               location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
-      --host string               address of Tiller. Overrides $HELM_HOST
-      --kube-context string       name of the kubeconfig context to use
-      --tiller-namespace string   namespace of Tiller (default "kube-system")
+      --debug                           enable verbose output
+      --home string                     location of your Helm config. Overrides $HELM_HOME (default "~/.helm")
+      --host string                     address of Tiller. Overrides $HELM_HOST
+      --kube-context string             name of the kubeconfig context to use
+      --tiller-connection-timeout int   the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)
+      --tiller-namespace string         namespace of Tiller (default "kube-system")
 ```
 
 ### SEE ALSO
 * [helm](helm.md)	 - The Helm package manager for Kubernetes.
 
-###### Auto generated by spf13/cobra on 25-Jan-2018
+###### Auto generated by spf13/cobra on 9-Mar-2018
diff --git a/pkg/helm/client.go b/pkg/helm/client.go
index 842f3dc8e..924b31095 100644
--- a/pkg/helm/client.go
+++ b/pkg/helm/client.go
@@ -17,6 +17,7 @@ limitations under the License.
 package helm // import "k8s.io/helm/pkg/helm"
 
 import (
+	"fmt"
 	"io"
 	"time"
 
@@ -25,6 +26,7 @@ import (
 	"google.golang.org/grpc/credentials"
 	"google.golang.org/grpc/keepalive"
 
+	healthpb "google.golang.org/grpc/health/grpc_health_v1"
 	"k8s.io/helm/pkg/chartutil"
 	"k8s.io/helm/pkg/proto/hapi/chart"
 	rls "k8s.io/helm/pkg/proto/hapi/services"
@@ -321,7 +323,7 @@ func (h *Client) connect(ctx context.Context) (conn *grpc.ClientConn, err error)
 	default:
 		opts = append(opts, grpc.WithInsecure())
 	}
-	ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
+	ctx, cancel := context.WithTimeout(ctx, h.opts.connectTimeout)
 	defer cancel()
 	if conn, err = grpc.DialContext(ctx, h.opts.host, opts...); err != nil {
 		return nil, err
@@ -488,6 +490,17 @@ func (h *Client) ping(ctx context.Context) error {
 	}
 	defer c.Close()
 
-	rlc := rls.NewReleaseServiceClient(c)
-	return rlc.PingTiller(ctx)
+	healthClient := healthpb.NewHealthClient(c)
+	resp, err := healthClient.Check(ctx, &healthpb.HealthCheckRequest{Service: "Tiller"})
+	if err != nil {
+		return err
+	}
+	switch resp.GetStatus() {
+	case healthpb.HealthCheckResponse_SERVING:
+		return nil
+	case healthpb.HealthCheckResponse_NOT_SERVING:
+		return fmt.Errorf("tiller is not serving requests at this time, Please try again later")
+	default:
+		return fmt.Errorf("tiller healthcheck returned an unknown status")
+	}
 }
diff --git a/pkg/helm/environment/environment.go b/pkg/helm/environment/environment.go
index 49d424b33..2980e6dc9 100644
--- a/pkg/helm/environment/environment.go
+++ b/pkg/helm/environment/environment.go
@@ -39,6 +39,8 @@ var DefaultHelmHome = filepath.Join(homedir.HomeDir(), ".helm")
 type EnvSettings struct {
 	// TillerHost is the host and port of Tiller.
 	TillerHost string
+	// TillerConnectionTimeout is the duration (in seconds) helm will wait to establish a connection to tiller.
+	TillerConnectionTimeout int64
 	// TillerNamespace is the namespace in which Tiller runs.
 	TillerNamespace string
 	// Home is the local path to the Helm home directory.
@@ -56,6 +58,7 @@ func (s *EnvSettings) AddFlags(fs *pflag.FlagSet) {
 	fs.StringVar(&s.KubeContext, "kube-context", "", "name of the kubeconfig context to use")
 	fs.BoolVar(&s.Debug, "debug", false, "enable verbose output")
 	fs.StringVar(&s.TillerNamespace, "tiller-namespace", "kube-system", "namespace of Tiller")
+	fs.Int64Var(&s.TillerConnectionTimeout, "tiller-connection-timeout", int64(300), "the duration (in seconds) Helm will wait to establish a connection to tiller")
 }
 
 // Init sets values from the environment.
diff --git a/pkg/helm/option.go b/pkg/helm/option.go
index 4f6924db2..9536bd467 100644
--- a/pkg/helm/option.go
+++ b/pkg/helm/option.go
@@ -18,6 +18,7 @@ package helm
 
 import (
 	"crypto/tls"
+	"time"
 
 	"github.com/golang/protobuf/proto"
 	"golang.org/x/net/context"
@@ -78,6 +79,8 @@ type options struct {
 	reuseValues bool
 	// release test options are applied directly to the test release history request
 	testReq rls.TestReleaseRequest
+	// connectTimeout specifies the time duration Helm will wait to establish a connection to tiller
+	connectTimeout time.Duration
 }
 
 // Host specifies the host address of the Tiller release server, (default = ":44134").
@@ -180,6 +183,13 @@ func ReleaseName(name string) InstallOption {
 	}
 }
 
+// ConnectTimeout specifies the duration (in seconds) Helm will wait to establish a connection to tiller
+func ConnectTimeout(timeout int64) Option {
+	return func(opts *options) {
+		opts.connectTimeout = time.Duration(timeout) * time.Second
+	}
+}
+
 // InstallTimeout specifies the number of seconds before kubernetes calls timeout
 func InstallTimeout(timeout int64) InstallOption {
 	return func(opts *options) {
diff --git a/pkg/helm/portforwarder/portforwarder.go b/pkg/helm/portforwarder/portforwarder.go
index 07e692e9a..878610d5f 100644
--- a/pkg/helm/portforwarder/portforwarder.go
+++ b/pkg/helm/portforwarder/portforwarder.go
@@ -30,12 +30,12 @@ import (
 )
 
 var (
-	tillerPodLabels labels.Set = labels.Set{"app": "helm", "name": "tiller"}
+	tillerPodLabels = labels.Set{"app": "helm", "name": "tiller"}
 )
 
 // New creates a new and initialized tunnel.
 func New(namespace string, client kubernetes.Interface, config *rest.Config) (*kube.Tunnel, error) {
-	podName, err := getTillerPodName(client.CoreV1(), namespace)
+	podName, err := GetTillerPodName(client.CoreV1(), namespace)
 	if err != nil {
 		return nil, err
 	}
@@ -44,7 +44,8 @@ func New(namespace string, client kubernetes.Interface, config *rest.Config) (*k
 	return t, t.ForwardPort()
 }
 
-func getTillerPodName(client corev1.PodsGetter, namespace string) (string, error) {
+// GetTillerPodName fetches the name of tiller pod running in the given namespace.
+func GetTillerPodName(client corev1.PodsGetter, namespace string) (string, error) {
 	selector := tillerPodLabels.AsSelector()
 	pod, err := getFirstRunningPod(client, namespace, selector)
 	if err != nil {
diff --git a/pkg/helm/portforwarder/portforwarder_test.go b/pkg/helm/portforwarder/portforwarder_test.go
index b9e90afa8..e4c148991 100644
--- a/pkg/helm/portforwarder/portforwarder_test.go
+++ b/pkg/helm/portforwarder/portforwarder_test.go
@@ -76,7 +76,7 @@ func TestGetFirstPod(t *testing.T) {
 
 	for _, tt := range tests {
 		client := fake.NewSimpleClientset(&v1.PodList{Items: tt.pods})
-		name, err := getTillerPodName(client.Core(), v1.NamespaceDefault)
+		name, err := GetTillerPodName(client.Core(), v1.NamespaceDefault)
 		if (err != nil) != tt.err {
 			t.Errorf("%q. expected error: %v, got %v", tt.name, tt.err, err)
 		}
-- 
GitLab