Skip to content

Commit a1d536d

Browse files
committed
Add cluster namespace to config
1 parent 7e47094 commit a1d536d

23 files changed

Lines changed: 508 additions & 473 deletions

File tree

cmd/add.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ func getNameOfFirstHelmDeployment() string {
494494

495495
if config.DevSpace.Deployments != nil {
496496
for _, deploymentConfig := range *config.DevSpace.Deployments {
497-
if deploymentConfig.Helm != nil {
497+
if deploymentConfig.Helm != nil && deploymentConfig.Namespace != nil {
498498
return *deploymentConfig.Namespace
499499
}
500500
}

cmd/enter.go

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
package cmd
22

33
import (
4+
"strings"
5+
46
"github.com/covexo/devspace/pkg/devspace/config/configutil"
5-
helmClient "github.com/covexo/devspace/pkg/devspace/helm"
67
"github.com/covexo/devspace/pkg/devspace/kubectl"
78
"github.com/covexo/devspace/pkg/util/log"
89
"github.com/spf13/cobra"
9-
k8sv1 "k8s.io/api/core/v1"
1010
"k8s.io/client-go/kubernetes"
1111
kubectlExec "k8s.io/client-go/util/exec"
1212
)
1313

1414
// EnterCmd is a struct that defines a command call for "enter"
1515
type EnterCmd struct {
1616
flags *EnterCmdFlags
17-
helm *helmClient.ClientWrapper
1817
kubectl *kubernetes.Clientset
19-
pod *k8sv1.Pod
2018
}
2119

2220
// EnterCmdFlags are the flags available for the enter-command
@@ -60,25 +58,10 @@ func (cmd *EnterCmd) Run(cobraCmd *cobra.Command, args []string) {
6058
log.Fatalf("Unable to create new kubectl client: %v", err)
6159
}
6260

63-
log.StartWait("Initializing helm client")
64-
cmd.helm, err = helmClient.NewClient(cmd.kubectl, false)
65-
log.StopWait()
66-
if err != nil {
67-
log.Fatalf("Error initializing helm client: %s", err.Error())
68-
}
69-
70-
// Check if we find a running release pod
71-
log.StartWait("Find a running devspace pod")
72-
pod, err := getRunningDevSpacePod(cmd.helm, cmd.kubectl)
73-
log.StopWait()
74-
if err != nil {
75-
log.Fatal("Cannot find a running devspace pod")
76-
}
77-
78-
enterTerminal(cmd.kubectl, pod, cmd.flags.container, args)
61+
enterTerminal(cmd.kubectl, cmd.flags.container, args)
7962
}
8063

81-
func enterTerminal(client *kubernetes.Clientset, pod *k8sv1.Pod, containerNameOverride string, args []string) {
64+
func enterTerminal(client *kubernetes.Clientset, containerNameOverride string, args []string) {
8265
var command []string
8366
config := configutil.GetConfig()
8467

@@ -98,6 +81,30 @@ func enterTerminal(client *kubernetes.Clientset, pod *k8sv1.Pod, containerNameOv
9881
}
9982
}
10083

84+
// Select pods
85+
namespace := ""
86+
if config.DevSpace.Terminal != nil && config.DevSpace.Terminal.Namespace != nil {
87+
namespace = *config.DevSpace.Terminal.Namespace
88+
}
89+
90+
// Retrieve pod from label selector
91+
labelSelector := "release=" + getNameOfFirstHelmDeployment()
92+
if config.DevSpace.Terminal != nil && config.DevSpace.Terminal.LabelSelector != nil {
93+
labels := make([]string, 0, len(*config.DevSpace.Terminal.LabelSelector))
94+
for key, value := range *config.DevSpace.Terminal.LabelSelector {
95+
labels = append(labels, key+"="+*value)
96+
}
97+
98+
labelSelector = strings.Join(labels, ", ")
99+
}
100+
101+
// Get first running pod
102+
pod, err := kubectl.GetFirstRunningPod(client, labelSelector, namespace)
103+
if err != nil {
104+
log.Fatalf("Cannot find running pod: %v", err)
105+
}
106+
107+
// Get container name
101108
containerName := pod.Spec.Containers[0].Name
102109
if containerNameOverride != "" {
103110
containerName = containerNameOverride

cmd/init.go

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import (
66
"path/filepath"
77
"strings"
88

9+
"github.com/covexo/devspace/pkg/devspace/config/generated"
10+
"github.com/covexo/devspace/pkg/devspace/kubectl"
11+
912
"github.com/covexo/devspace/pkg/util/kubeconfig"
1013

1114
"github.com/covexo/devspace/pkg/devspace/cloud"
@@ -116,24 +119,21 @@ func (cmd *InitCmd) Run(cobraCmd *cobra.Command, args []string) {
116119
// Delete config & overwrite config
117120
os.Remove(filepath.Join(workdir, configutil.ConfigPath))
118121
os.Remove(filepath.Join(workdir, configutil.OverwriteConfigPath))
122+
os.Remove(filepath.Join(workdir, generated.ConfigPath))
119123

124+
// Create config
120125
config = configutil.InitConfig()
121126

122127
// Set intial deployments
123128
config.DevSpace.Deployments = &[]*v1.DeploymentConfig{
124129
{
125130
Name: configutil.String(DefaultDevspaceDeploymentName),
126-
Namespace: configutil.String("default"),
131+
Namespace: configutil.String(""),
127132
Helm: &v1.HelmConfig{
128133
ChartPath: configutil.String("./chart"),
129134
},
130135
},
131136
}
132-
133-
// Set initial tiller namespace
134-
config.Tiller = &v1.TillerConfig{
135-
Namespace: configutil.String("default"),
136-
}
137137
}
138138

139139
configutil.Merge(config, &v1.Config{
@@ -218,13 +218,6 @@ func (cmd *InitCmd) configureKubernetes() {
218218

219219
// Check if devspace cloud should be used
220220
if cmd.useCloudProvider() == false {
221-
currentContext, err := kubeconfig.GetCurrentContext()
222-
if err != nil {
223-
log.Fatalf("Couldn't determine current kubernetes context: %v", err)
224-
}
225-
226-
clusterConfig.KubeContext = &currentContext
227-
228221
cmd.configureDevSpace()
229222
}
230223

@@ -310,16 +303,20 @@ func (cmd *InitCmd) useCloudProvider() bool {
310303
}
311304

312305
func (cmd *InitCmd) configureDevSpace() {
313-
config := configutil.GetConfig()
306+
currentContext, err := kubeconfig.GetCurrentContext()
307+
if err != nil {
308+
log.Fatalf("Couldn't determine current kubernetes context: %v", err)
309+
}
310+
314311
namespace := stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{
315312
Question: "Which Kubernetes namespace should your application run in?",
316313
DefaultValue: "default",
317314
ValidationRegexPattern: v1.Kubernetes.RegexPatterns.Name,
318315
})
319316

320-
deployments := *config.DevSpace.Deployments
321-
deployments[0].Namespace = namespace
322-
config.Tiller.Namespace = namespace
317+
config := configutil.GetConfig()
318+
config.Cluster.KubeContext = &currentContext
319+
config.Cluster.Namespace = namespace
323320
}
324321

325322
func (cmd *InitCmd) addDefaultSyncConfig() {
@@ -347,7 +344,6 @@ func (cmd *InitCmd) addDefaultSyncConfig() {
347344
syncConfig := append(*config.DevSpace.Sync, &v1.SyncConfig{
348345
ContainerPath: configutil.String("/app"),
349346
LocalSubPath: configutil.String("./"),
350-
ResourceType: nil,
351347
LabelSelector: &map[string]*string{
352348
"release": configutil.String(DefaultDevspaceDeploymentName),
353349
},
@@ -375,34 +371,37 @@ func (cmd *InitCmd) configureRegistry() {
375371
}
376372
}
377373
} else {
378-
deployments := *config.DevSpace.Deployments
379-
380374
// Set default build engine to kaniko, if no docker is installed
381375
cmd.defaultImage.Build = &v1.BuildConfig{
382376
Kaniko: &v1.KanikoConfig{
383-
Namespace: deployments[0].Namespace,
384377
Cache: configutil.Bool(true),
378+
Namespace: configutil.String(""),
385379
},
386380
}
387381
}
388382

389-
createInternalRegistry := stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{
390-
Question: "Should we create a private registry within your Kubernetes cluster for you? (yes | no)",
391-
DefaultValue: createInternalRegistryDefaultAnswer,
392-
ValidationRegexPattern: "^(yes)|(no)$",
393-
})
383+
// Only deploy registry in minikube
384+
if kubectl.IsMinikube() {
385+
createInternalRegistry := stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{
386+
Question: "Should we create a private registry within your Kubernetes cluster for you? (yes | no)",
387+
DefaultValue: createInternalRegistryDefaultAnswer,
388+
ValidationRegexPattern: "^(yes)|(no)$",
389+
})
394390

395-
if *createInternalRegistry == "no" {
396-
err := configure.ImageName(dockerUsername)
397-
if err != nil {
398-
log.Fatal(err)
399-
}
400-
} else {
401-
err := configure.InternalRegistry()
402-
if err != nil {
403-
log.Fatal(err)
391+
if *createInternalRegistry == "yes" {
392+
err := configure.InternalRegistry()
393+
if err != nil {
394+
log.Fatal(err)
395+
}
396+
397+
return
404398
}
405399
}
400+
401+
err = configure.ImageName(dockerUsername)
402+
if err != nil {
403+
log.Fatal(err)
404+
}
406405
}
407406

408407
func (cmd *InitCmd) determineLanguage() {

cmd/reset.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
helmClient "github.com/covexo/devspace/pkg/devspace/helm"
99
"github.com/covexo/devspace/pkg/devspace/kubectl"
10+
"github.com/covexo/devspace/pkg/devspace/registry"
1011
"github.com/covexo/devspace/pkg/util/log"
1112
"github.com/covexo/devspace/pkg/util/stdinutil"
1213

@@ -77,6 +78,37 @@ func (cmd *ResetCmd) deleteDevSpaceDeployments() {
7778
deleteDevSpace(cmd.kubectl)
7879
}
7980

81+
func (cmd *ResetCmd) deleteInternalRegistry() {
82+
config := configutil.GetConfig()
83+
84+
if config.InternalRegistry != nil {
85+
shouldRegistryRemoved := *stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{
86+
Question: "Should the internal registry be removed? (y/n)",
87+
DefaultValue: "y",
88+
ValidationRegexPattern: "^(y|n)$",
89+
}) == "y"
90+
91+
if shouldRegistryRemoved {
92+
isDeployed := helmClient.IsTillerDeployed(cmd.kubectl)
93+
if isDeployed == false {
94+
return
95+
}
96+
97+
helm, err := helmClient.NewClient(cmd.kubectl, false)
98+
if err != nil {
99+
log.Fatalf("Error creating helm client: %v", err)
100+
}
101+
102+
_, err = cmd.helm.DeleteRelease(registry.InternalRegistryName, true)
103+
if err != nil {
104+
log.Failf("Error deleting internal registry: %v", err)
105+
} else {
106+
log.Done("Successfully deleted internal registry")
107+
}
108+
}
109+
}
110+
}
111+
80112
func (cmd *ResetCmd) deleteTiller() {
81113
config := configutil.GetConfig()
82114

0 commit comments

Comments
 (0)