Skip to content

Commit ddb968b

Browse files
committed
rebase
1 parent d658049 commit ddb968b

File tree

17 files changed

+514
-504
lines changed

17 files changed

+514
-504
lines changed

cmd/skaffold/app/cmd/cmd.go

+4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
sErrors "github.com/GoogleContainerTools/skaffold/pkg/skaffold/errors"
3434
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation"
3535
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation/prompt"
36+
kubectx "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/context"
3637
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/output"
3738
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner/runcontext"
3839
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/server"
@@ -95,6 +96,9 @@ func NewSkaffoldCommand(out, errOut io.Writer) *cobra.Command {
9596
return err
9697
}
9798

99+
// Setup kubeContext and kubeConfig
100+
kubectx.ConfigureKubeConfig(opts.KubeConfig, opts.KubeContext)
101+
98102
// Start API Server
99103
shutdown, err := server.Initialize(opts)
100104
if err != nil {

cmd/skaffold/app/cmd/runner.go

-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/initializer"
3131
initConfig "github.com/GoogleContainerTools/skaffold/pkg/skaffold/initializer/config"
3232
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation"
33-
kubectx "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/context"
3433
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/output"
3534
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/parser"
3635
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/runner"
@@ -80,9 +79,6 @@ func runContext(out io.Writer, opts config.SkaffoldOptions) (*runcontext.RunCont
8079
}
8180
setDefaultDeployer(configs)
8281

83-
// TODO: Should support per-config kubecontext. Right now we constrain all configs to define the same kubecontext.
84-
kubectx.ConfigureKubeConfig(opts.KubeConfig, opts.KubeContext, configs[0].Deploy.KubeContext)
85-
8682
if err := validation.Process(configs); err != nil {
8783
return nil, nil, fmt.Errorf("invalid skaffold config: %w", err)
8884
}

pkg/skaffold/deploy/helm/deploy.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import (
4949
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation"
5050
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes"
5151
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest"
52+
kstatus "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/status"
5253
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/log"
5354
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/output"
5455
latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1"
@@ -110,6 +111,7 @@ type Deployer struct {
110111

111112
type Config interface {
112113
kubectl.Config
114+
kstatus.Config
113115
IsMultiConfig() bool
114116
}
115117

@@ -141,7 +143,7 @@ func NewDeployer(cfg Config, labels map[string]string, provider deploy.Component
141143
accessor: provider.Accessor.GetKubernetesAccessor(podSelector),
142144
debugger: provider.Debugger.GetKubernetesDebugger(podSelector),
143145
logger: provider.Logger.GetKubernetesLogger(podSelector),
144-
statusMonitor: provider.Monitor.GetKubernetesMonitor(),
146+
statusMonitor: provider.Monitor.GetKubernetesMonitor(cfg),
145147
syncer: provider.Syncer.GetKubernetesSyncer(podSelector),
146148
originalImages: originalImages,
147149
kubeContext: cfg.GetKubeContext(),

pkg/skaffold/deploy/kpt/kpt.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation"
4545
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes"
4646
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest"
47+
kstatus "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/status"
4748
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/log"
4849
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/output"
4950
latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1"
@@ -92,6 +93,7 @@ type Deployer struct {
9293

9394
type Config interface {
9495
kubectl.Config
96+
kstatus.Config
9597
}
9698

9799
// NewDeployer generates a new Deployer object contains the kptDeploy schema.
@@ -103,7 +105,7 @@ func NewDeployer(cfg Config, labels map[string]string, provider deploy.Component
103105
accessor: provider.Accessor.GetKubernetesAccessor(podSelector),
104106
debugger: provider.Debugger.GetKubernetesDebugger(podSelector),
105107
logger: provider.Logger.GetKubernetesLogger(podSelector),
106-
statusMonitor: provider.Monitor.GetKubernetesMonitor(),
108+
statusMonitor: provider.Monitor.GetKubernetesMonitor(cfg),
107109
syncer: provider.Syncer.GetKubernetesSyncer(podSelector),
108110
insecureRegistries: cfg.GetInsecureRegistries(),
109111
labels: labels,

pkg/skaffold/deploy/kubectl/cli.go

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/instrumentation"
3333
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubectl"
3434
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/manifest"
35+
kstatus "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubernetes/status"
3536
latestV1 "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest/v1"
3637
)
3738

@@ -47,6 +48,7 @@ type CLI struct {
4748

4849
type Config interface {
4950
kubectl.Config
51+
kstatus.Config
5052
deploy.Config
5153
ForceDeploy() bool
5254
WaitForDeletions() config.WaitForDeletions

pkg/skaffold/deploy/kubectl/kubectl.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func NewDeployer(cfg Config, labels map[string]string, provider deploy.Component
9090
accessor: provider.Accessor.GetKubernetesAccessor(podSelector),
9191
debugger: provider.Debugger.GetKubernetesDebugger(podSelector),
9292
logger: provider.Logger.GetKubernetesLogger(podSelector),
93-
statusMonitor: provider.Monitor.GetKubernetesMonitor(),
93+
statusMonitor: provider.Monitor.GetKubernetesMonitor(cfg),
9494
syncer: provider.Syncer.GetKubernetesSyncer(podSelector),
9595
workingDir: cfg.GetWorkingDir(),
9696
globalConfig: cfg.GlobalConfig(),

pkg/skaffold/deploy/kustomize/kustomize.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func NewDeployer(cfg kubectl.Config, labels map[string]string, provider deploy.C
139139
accessor: provider.Accessor.GetKubernetesAccessor(podSelector),
140140
debugger: provider.Debugger.GetKubernetesDebugger(podSelector),
141141
logger: provider.Logger.GetKubernetesLogger(podSelector),
142-
statusMonitor: provider.Monitor.GetKubernetesMonitor(),
142+
statusMonitor: provider.Monitor.GetKubernetesMonitor(cfg),
143143
syncer: provider.Syncer.GetKubernetesSyncer(podSelector),
144144
kubectl: kubectl,
145145
insecureRegistries: cfg.GetInsecureRegistries(),

pkg/skaffold/kubernetes/context/context.go

+2-9
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,14 @@ var (
4444
// When given, the firstCliValue always takes precedence over the yamlValue.
4545
// Changing the kube-context of a running Skaffold process is not supported, so
4646
// after the first call, the kube-context will be locked.
47-
func ConfigureKubeConfig(cliKubeConfig, cliKubeContext, yamlKubeContext string) {
48-
newKubeContext := yamlKubeContext
49-
if cliKubeContext != "" {
50-
newKubeContext = cliKubeContext
51-
}
47+
func ConfigureKubeConfig(cliKubeConfig, cliKubeContext string) {
5248
configureOnce.Do(func() {
53-
kubeContext = newKubeContext
49+
kubeContext = cliKubeContext
5450
kubeConfigFile = cliKubeConfig
5551
if kubeContext != "" {
5652
logrus.Infof("Activated kube-context %q", kubeContext)
5753
}
5854
})
59-
if kubeContext != newKubeContext {
60-
logrus.Warn("Changing the kube-context is not supported after startup. Please restart Skaffold to take effect.")
61-
}
6255
}
6356

6457
// GetRestClientConfig returns a REST client config for API calls against the Kubernetes API.

pkg/skaffold/kubernetes/context/context_test.go

+2-52
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func TestGetRestClientConfig(t *testing.T) {
196196

197197
func TestUseKubeContext(t *testing.T) {
198198
type invocation struct {
199-
cliValue, yamlValue string
199+
cliValue string
200200
}
201201
tests := []struct {
202202
name string
@@ -208,24 +208,6 @@ func TestUseKubeContext(t *testing.T) {
208208
invocations: nil,
209209
expected: "",
210210
},
211-
{
212-
name: "yaml value when no CLI value is given",
213-
invocations: []invocation{{yamlValue: "context2"}},
214-
expected: "context2",
215-
},
216-
{
217-
name: "yaml value when no CLI value is given, first invocation persists",
218-
invocations: []invocation{
219-
{yamlValue: "context-first"},
220-
{yamlValue: "context-second"},
221-
},
222-
expected: "context-first",
223-
},
224-
{
225-
name: "CLI value takes precedence",
226-
invocations: []invocation{{cliValue: "context1", yamlValue: "context2"}},
227-
expected: "context1",
228-
},
229211
{
230212
name: "first CLI value takes precedence",
231213
invocations: []invocation{
@@ -234,45 +216,13 @@ func TestUseKubeContext(t *testing.T) {
234216
},
235217
expected: "context-first",
236218
},
237-
{
238-
name: "mixed CLI value and yaml value - I",
239-
invocations: []invocation{
240-
{cliValue: "context-first"},
241-
{yamlValue: "context-second"},
242-
},
243-
expected: "context-first",
244-
},
245-
{
246-
name: "mixed CLI value and yaml value - II",
247-
invocations: []invocation{
248-
{yamlValue: "context-first"},
249-
{cliValue: "context-second"},
250-
},
251-
expected: "context-first",
252-
},
253-
{
254-
name: "mixed CLI value and yaml value - III",
255-
invocations: []invocation{
256-
{yamlValue: "context-first"},
257-
{cliValue: "context-second", yamlValue: "context-third"},
258-
},
259-
expected: "context-first",
260-
},
261-
{
262-
name: "mixed CLI value and yaml value - IV",
263-
invocations: []invocation{
264-
{cliValue: "context-first", yamlValue: "context-second"},
265-
{cliValue: "context-third", yamlValue: "context-fourth"},
266-
},
267-
expected: "context-first",
268-
},
269219
}
270220

271221
for _, test := range tests {
272222
testutil.Run(t, test.name, func(t *testutil.T) {
273223
kubeContext = ""
274224
for _, inv := range test.invocations {
275-
ConfigureKubeConfig("", inv.cliValue, inv.yamlValue)
225+
ConfigureKubeConfig("", inv.cliValue)
276226
}
277227

278228
t.CheckDeepEqual(test.expected, kubeContext)

0 commit comments

Comments
 (0)