@@ -28,7 +28,7 @@ repositories:
2828`
2929
3030func ensureTiller (kubectlClient * kubernetes.Clientset , config * v1.Config , upgrade bool ) error {
31- tillerNamespace := * config . Services . Tiller . Release . Namespace
31+ tillerNamespace := GetTillerNamespace ()
3232 tillerOptions := & helminstaller.Options {
3333 Namespace : tillerNamespace ,
3434 MaxHistory : 10 ,
@@ -67,15 +67,15 @@ func ensureTiller(kubectlClient *kubernetes.Clientset, config *v1.Config, upgrad
6767 }
6868 }
6969
70- return waitUntilTillerIsStarted (kubectlClient , tillerNamespace )
70+ return waitUntilTillerIsStarted (kubectlClient )
7171}
7272
7373func createTiller (kubectlClient * kubernetes.Clientset , dsConfig * v1.Config , tillerOptions * helminstaller.Options ) error {
7474 log .StartWait ("Installing Tiller server" )
7575 defer log .StopWait ()
7676
7777 // If the service account is already there we do not create it or any roles/rolebindings
78- _ , err := kubectlClient .CoreV1 ().ServiceAccounts (* dsConfig . Services . Tiller . Release . Namespace ).Get (TillerServiceAccountName , metav1.GetOptions {})
78+ _ , err := kubectlClient .CoreV1 ().ServiceAccounts (GetTillerNamespace () ).Get (TillerServiceAccountName , metav1.GetOptions {})
7979 if err != nil {
8080 err = createTillerRBAC (kubectlClient , dsConfig )
8181 if err != nil {
@@ -87,15 +87,15 @@ func createTiller(kubectlClient *kubernetes.Clientset, dsConfig *v1.Config, till
8787 return helminstaller .Install (kubectlClient , tillerOptions )
8888}
8989
90- func waitUntilTillerIsStarted (kubectlClient * kubernetes.Clientset , tillerNamespace string ) error {
90+ func waitUntilTillerIsStarted (kubectlClient * kubernetes.Clientset ) error {
9191 tillerWaitingTime := 2 * 60 * time .Second
9292 tillerCheckInterval := 5 * time .Second
9393
9494 log .StartWait ("Waiting for tiller to start" )
9595 defer log .StopWait ()
9696
9797 for tillerWaitingTime > 0 {
98- tillerDeployment , err := kubectlClient .ExtensionsV1beta1 ().Deployments (tillerNamespace ).Get (TillerDeploymentName , metav1.GetOptions {})
98+ tillerDeployment , err := kubectlClient .ExtensionsV1beta1 ().Deployments (GetTillerNamespace () ).Get (TillerDeploymentName , metav1.GetOptions {})
9999 if err != nil {
100100 continue
101101 }
@@ -142,11 +142,24 @@ func addAppNamespaces(appNamespaces *[]*string, namespaces []*string) {
142142 appNamespaces = & newAppNamespaces
143143}
144144
145+ // GetTillerNamespace retrieves the tillernamespace
146+ func GetTillerNamespace () string {
147+ config := configutil .GetConfig ()
148+ if config .DevSpace .Release == nil || config .DevSpace .Release .Namespace == nil {
149+ log .Panic ("Cannot get tiller namespace when helm is not configured" )
150+ }
151+
152+ if config .Services == nil || config .Services .Tiller == nil || config .Services .Tiller .Release == nil || config .Services .Tiller .Release .Namespace == nil {
153+ return * config .DevSpace .Release .Namespace
154+ }
155+
156+ return * config .Services .Tiller .Release .Namespace
157+ }
158+
145159// IsTillerDeployed determines if we could connect to a tiller server
146- func IsTillerDeployed (kubectlClient * kubernetes.Clientset , tillerConfig * v1. TillerConfig ) bool {
147- tillerNamespace := * tillerConfig . Release . Namespace
160+ func IsTillerDeployed (kubectlClient * kubernetes.Clientset ) bool {
161+ tillerNamespace := GetTillerNamespace ()
148162 deployment , err := kubectlClient .ExtensionsV1beta1 ().Deployments (tillerNamespace ).Get (TillerDeploymentName , metav1.GetOptions {})
149-
150163 if err != nil {
151164 return false
152165 }
@@ -162,8 +175,7 @@ func IsTillerDeployed(kubectlClient *kubernetes.Clientset, tillerConfig *v1.Till
162175func DeleteTiller (kubectlClient * kubernetes.Clientset ) error {
163176 config := configutil .GetConfig ()
164177
165- tillerConfig := config .Services .Tiller
166- tillerNamespace := * tillerConfig .Release .Namespace
178+ tillerNamespace := GetTillerNamespace ()
167179 errs := make ([]error , 0 , 1 )
168180 propagationPolicy := metav1 .DeletePropagationForeground
169181
@@ -186,8 +198,16 @@ func DeleteTiller(kubectlClient *kubernetes.Clientset) error {
186198 errs = append (errs , err )
187199 }
188200
189- roleNamespace := append (* tillerConfig .AppNamespaces , & tillerNamespace )
190- for _ , appNamespace := range roleNamespace {
201+ appNamespaces := []* string {
202+ config .DevSpace .Release .Namespace ,
203+ & tillerNamespace ,
204+ }
205+
206+ if config .Services .InternalRegistry != nil && config .Services .InternalRegistry .Release != nil && config .Services .InternalRegistry .Release .Namespace != nil {
207+ appNamespaces = append (appNamespaces , config .Services .InternalRegistry .Release .Namespace )
208+ }
209+
210+ for _ , appNamespace := range appNamespaces {
191211 err = kubectlClient .RbacV1beta1 ().Roles (* appNamespace ).Delete (TillerRoleName , & metav1.DeleteOptions {PropagationPolicy : & propagationPolicy })
192212 if err != nil && strings .HasSuffix (err .Error (), "not found" ) == false {
193213 errs = append (errs , err )
0 commit comments