Skip to content

Commit 99b8285

Browse files
committed
Refactor tillernamespace
1 parent 923cd44 commit 99b8285

8 files changed

Lines changed: 79 additions & 50 deletions

File tree

cmd/reset.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ func (cmd *ResetCmd) deleteRelease() error {
261261
releaseName := *config.DevSpace.Release.Name
262262

263263
if cmd.kubectl == nil || cmd.helm == nil {
264-
isDeployed := helmClient.IsTillerDeployed(cmd.kubectl, config.Services.Tiller)
264+
isDeployed := helmClient.IsTillerDeployed(cmd.kubectl)
265265

266266
if isDeployed == false {
267267
return nil
@@ -286,7 +286,7 @@ func (cmd *ResetCmd) deleteRegistry() error {
286286
registryReleaseName := *config.Services.InternalRegistry.Release.Name
287287

288288
if cmd.kubectl == nil || cmd.helm == nil {
289-
isDeployed := helmClient.IsTillerDeployed(cmd.kubectl, config.Services.Tiller)
289+
isDeployed := helmClient.IsTillerDeployed(cmd.kubectl)
290290

291291
if isDeployed == false {
292292
return nil

cmd/status.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ func (cmd *StatusCmd) getRegistryStatus() ([]string, error) {
203203
}
204204

205205
func (cmd *StatusCmd) getTillerStatus() ([]string, error) {
206-
config := configutil.GetConfig()
207-
tillerPod, err := kubectl.GetPodsFromDeployment(cmd.kubectl, helmClient.TillerDeploymentName, *config.Services.Tiller.Release.Namespace)
206+
tillerPod, err := kubectl.GetPodsFromDeployment(cmd.kubectl, helmClient.TillerDeploymentName, helmClient.GetTillerNamespace())
208207

209208
if err != nil {
210209
return nil, err

cmd/up.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,6 @@ func (cmd *UpCmd) initRegistries() {
293293
log.StartWait("Initializing internal registry")
294294
err := registry.InitInternalRegistry(cmd.kubectl, cmd.helm, config.Services.InternalRegistry, registryConf)
295295
log.StopWait()
296-
297296
if err != nil {
298297
log.Fatalf("Internal registry error: %v", err)
299298
}
@@ -339,7 +338,7 @@ func (cmd *UpCmd) buildImages() bool {
339338
config := configutil.GetConfig()
340339
generatedConfig, err := generated.LoadConfig()
341340
if err != nil {
342-
log.Fatalf("Error loading .runtime.yaml: %v", err)
341+
log.Fatalf("Error loading generated.yaml: %v", err)
343342
}
344343

345344
for imageName, imageConf := range *config.Images {
@@ -355,7 +354,7 @@ func (cmd *UpCmd) buildImages() bool {
355354

356355
err = generated.SaveConfig(generatedConfig)
357356
if err != nil {
358-
log.Fatalf("Error saving .runtime.yaml: %v", err)
357+
log.Fatalf("Error saving generated.yaml: %v", err)
359358
}
360359

361360
return re
@@ -378,6 +377,10 @@ func (cmd *UpCmd) initHelm() {
378377

379378
func (cmd *UpCmd) deployChart() {
380379
config := configutil.GetConfig()
380+
generatedConfig, err := generated.LoadConfig()
381+
if err != nil {
382+
log.Panic(err)
383+
}
381384

382385
log.StartWait("Deploying helm chart")
383386
defer log.StopWait()
@@ -389,7 +392,7 @@ func (cmd *UpCmd) deployChart() {
389392
values := map[interface{}]interface{}{}
390393
overwriteValues := map[interface{}]interface{}{}
391394

392-
err := yamlutil.ReadYamlFromFile(chartPath+"values.yaml", values)
395+
err = yamlutil.ReadYamlFromFile(chartPath+"values.yaml", values)
393396
if err != nil {
394397
log.Fatalf("Couldn't deploy chart, error reading from chart values %s: %v", chartPath+"values.yaml", err)
395398
}
@@ -398,7 +401,7 @@ func (cmd *UpCmd) deployChart() {
398401

399402
for imageName, imageConf := range *config.Images {
400403
container := map[string]interface{}{}
401-
container["image"] = registry.GetImageURL(imageConf, true)
404+
container["image"] = registry.GetImageURL(imageName, generatedConfig, imageConf, true)
402405

403406
if cmd.flags.noSleep {
404407
container["command"] = []string{}

pkg/devspace/config/configutil/make.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ func makeConfig() *v1.Config {
1717
},
1818
Images: &map[string]*v1.ImageConfig{},
1919
Registries: &map[string]*v1.RegistryConfig{},
20-
Services: &v1.ServiceConfig{
21-
Tiller: &v1.TillerConfig{
22-
AppNamespaces: &[]*string{},
23-
Release: &v1.Release{},
24-
},
25-
},
20+
Services: &v1.ServiceConfig{},
2621
}
2722
}

pkg/devspace/config/configutil/save.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@ import (
1616
func SaveConfig() error {
1717
workdir, _ := os.Getwd()
1818
configMapRaw, overwriteMapRaw, err := getConfigAndOverwriteMaps(config, configRaw, overwriteConfig, overwriteConfigRaw)
19-
20-
configMap, _ := configMapRaw.(map[interface{}]interface{})
21-
overwriteMap, _ := overwriteMapRaw.(map[interface{}]interface{})
22-
2319
if err != nil {
2420
return err
2521
}
2622

23+
configMap, _ := configMapRaw.(map[interface{}]interface{})
24+
overwriteMap, _ := overwriteMapRaw.(map[interface{}]interface{})
25+
2726
configYaml, err := yaml.Marshal(configMap)
2827
if err != nil {
2928
return err

pkg/devspace/deploy/helm/client.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ type HelmClientWrapper struct {
4040
// NewClient creates a new helm client
4141
func NewClient(kubectlClient *kubernetes.Clientset, upgradeTiller bool) (*HelmClientWrapper, error) {
4242
config := configutil.GetConfig()
43-
tillerConfig := config.Services.Tiller
44-
tillerNamespace := *config.Services.Tiller.Release.Namespace
43+
tillerNamespace := GetTillerNamespace()
4544

4645
kubeconfig, err := kubectl.GetClientConfig()
4746
if err != nil {
@@ -127,6 +126,15 @@ func NewClient(kubectlClient *kubernetes.Clientset, upgradeTiller bool) (*HelmCl
127126
}
128127
}
129128

129+
tillerConfig := config.Services.Tiller
130+
if tillerConfig == nil {
131+
tillerConfig = &v1.TillerConfig{
132+
Release: &v1.Release{
133+
Namespace: &tillerNamespace,
134+
},
135+
}
136+
}
137+
130138
wrapper := &HelmClientWrapper{
131139
Client: client,
132140
Settings: &helmenvironment.EnvSettings{

pkg/devspace/deploy/helm/rbac.go

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ const TillerRoleManagerName = "tiller-config-manager"
2222
var alreadyExistsRegexp = regexp.MustCompile(".* already exists$")
2323

2424
func createTillerRBAC(kubectlClient *kubernetes.Clientset, dsConfig *v1.Config) error {
25-
tillerConfig := dsConfig.Services.Tiller
26-
tillerNamespace := *dsConfig.Services.Tiller.Release.Namespace
25+
tillerNamespace := GetTillerNamespace()
2726

2827
// Create service account
2928
err := createTillerServiceAccount(kubectlClient, tillerNamespace)
@@ -39,23 +38,29 @@ func createTillerRBAC(kubectlClient *kubernetes.Clientset, dsConfig *v1.Config)
3938
}
4039
}
4140

42-
// Tiller does need full access to all namespaces is should deploy to and therefore we create the roles & rolebindings
43-
appNamespaces := []*string{
44-
dsConfig.DevSpace.Release.Namespace,
45-
}
41+
tillerConfig := dsConfig.Services.Tiller
42+
if tillerConfig != nil {
43+
// Tiller does need full access to all namespaces is should deploy to and therefore we create the roles & rolebindings
44+
appNamespaces := []*string{
45+
dsConfig.DevSpace.Release.Namespace,
46+
}
4647

47-
// Check if there is an internal registry
48-
if dsConfig.Services.InternalRegistry != nil && dsConfig.Services.InternalRegistry.Release.Namespace != nil {
49-
// Tiller needs access to the internal registry namespace
50-
appNamespaces = append(appNamespaces, dsConfig.Services.InternalRegistry.Release.Namespace)
51-
}
48+
// Check if there is an internal registry
49+
if dsConfig.Services.InternalRegistry != nil && dsConfig.Services.InternalRegistry.Release != nil && dsConfig.Services.InternalRegistry.Release.Namespace != nil {
50+
// Tiller needs access to the internal registry namespace
51+
appNamespaces = append(appNamespaces, dsConfig.Services.InternalRegistry.Release.Namespace)
52+
}
5253

53-
// Persist the app namespaces to the config
54-
tillerConfig.AppNamespaces = &appNamespaces
55-
for _, appNamespace := range *tillerConfig.AppNamespaces {
56-
err = addDeployAccessToTiller(kubectlClient, tillerNamespace, *appNamespace)
57-
if err != nil {
58-
return err
54+
if tillerConfig.AppNamespaces != nil {
55+
appNamespaces = append(appNamespaces, *tillerConfig.AppNamespaces...)
56+
}
57+
58+
// Persist the app namespaces to the config
59+
for _, appNamespace := range appNamespaces {
60+
err = addDeployAccessToTiller(kubectlClient, tillerNamespace, *appNamespace)
61+
if err != nil {
62+
return err
63+
}
5964
}
6065
}
6166

pkg/devspace/deploy/helm/tiller.go

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ repositories:
2828
`
2929

3030
func 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

7373
func 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
162175
func 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

Comments
 (0)