diff --git a/integration/util.go b/integration/util.go index 0e3cd70ccf6..3af102ea735 100644 --- a/integration/util.go +++ b/integration/util.go @@ -516,6 +516,7 @@ type fakeDockerConfig struct { func (d fakeDockerConfig) GetKubeContext() string { return d.kubeContext } func (d fakeDockerConfig) MinikubeProfile() string { return "" } +func (d fakeDockerConfig) DetectMinikube() bool { return true } func (d fakeDockerConfig) GlobalConfig() string { return "" } func (d fakeDockerConfig) Prune() bool { return false } func (d fakeDockerConfig) ContainerDebugging() bool { return false } diff --git a/pkg/skaffold/docker/client.go b/pkg/skaffold/docker/client.go index 73dc716d5d4..e7d6c3dd2a1 100644 --- a/pkg/skaffold/docker/client.go +++ b/pkg/skaffold/docker/client.go @@ -64,6 +64,7 @@ type Config interface { GlobalConfig() string GetKubeContext() string MinikubeProfile() string + DetectMinikube() bool GetInsecureRegistries() map[string]bool Mode() config.RunMode } @@ -71,7 +72,7 @@ type Config interface { // NewAPIClientImpl guesses the docker client to use based on current Kubernetes context. func NewAPIClientImpl(ctx context.Context, cfg Config) (LocalDaemon, error) { dockerAPIClientOnce.Do(func() { - env, apiClient, err := newAPIClient(ctx, cfg.GetKubeContext(), cfg.MinikubeProfile()) + env, apiClient, err := newAPIClient(ctx, cfg.GetKubeContext(), cfg.MinikubeProfile(), cfg.DetectMinikube()) dockerAPIClient = NewLocalDaemon(apiClient, env, cfg.Prune(), cfg) dockerAPIClientErr = err }) @@ -84,11 +85,11 @@ func NewAPIClientImpl(ctx context.Context, cfg Config) (LocalDaemon, error) { // kubecontext API Server to minikube profiles // newAPIClient guesses the docker client to use based on current Kubernetes context. -func newAPIClient(ctx context.Context, kubeContext string, minikubeProfile string) ([]string, client.CommonAPIClient, error) { +func newAPIClient(ctx context.Context, kubeContext string, minikubeProfile string, detectMinikube bool) ([]string, client.CommonAPIClient, error) { if minikubeProfile != "" { // skip validation if explicitly specifying minikubeProfile. return newMinikubeAPIClient(ctx, minikubeProfile) } - if cluster.GetClient().IsMinikube(ctx, kubeContext) { + if detectMinikube && cluster.GetClient().IsMinikube(ctx, kubeContext) { return newMinikubeAPIClient(ctx, kubeContext) } return newEnvAPIClient() diff --git a/pkg/skaffold/docker/dockertest.go b/pkg/skaffold/docker/dockertest.go index 833c51b713b..5b8ca20693e 100644 --- a/pkg/skaffold/docker/dockertest.go +++ b/pkg/skaffold/docker/dockertest.go @@ -88,6 +88,10 @@ func (m configStub) ContainerDebugging() bool { return false } +func (m configStub) DetectMinikube() bool { + return true +} + func NewConfigStub(mode config.RunMode, prune bool) Config { return &configStub{runMode: mode, prune: prune} } diff --git a/pkg/skaffold/runner/runcontext/context.go b/pkg/skaffold/runner/runcontext/context.go index 76d2c84f35d..643d1c41115 100644 --- a/pkg/skaffold/runner/runcontext/context.go +++ b/pkg/skaffold/runner/runcontext/context.go @@ -330,6 +330,7 @@ func (rc *RunContext) GlobalConfig() string { return rc func (rc *RunContext) HydratedManifests() []string { return rc.Opts.HydratedManifests } func (rc *RunContext) LoadImages() bool { return rc.Cluster.LoadImages } func (rc *RunContext) ForceLoadImages() bool { return rc.Opts.ForceLoadImages } +func (rc *RunContext) DetectMinikube() bool { return rc.Opts.DetectMinikube } func (rc *RunContext) MinikubeProfile() string { return rc.Opts.MinikubeProfile } func (rc *RunContext) Muted() config.Muted { return rc.Opts.Muted } func (rc *RunContext) NoPruneChildren() bool { return rc.Opts.NoPruneChildren }