Skip to content

Commit 0b2f928

Browse files
authored
cli: skip kubeconfig minification if no k8s deploy commands (#6558)
fixes #6557 Signed-off-by: Nick Santos <[email protected]>
1 parent 06acc12 commit 0b2f928

File tree

4 files changed

+36
-10
lines changed

4 files changed

+36
-10
lines changed

integration/onedc_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import (
1111
)
1212

1313
func TestOneDockerCompose(t *testing.T) {
14+
// Make sure a broken kubeconfig has no effect on docker compose.
15+
t.Setenv("KUBECONFIG", "/path/does/not/exist/kubeconfig")
16+
1417
f := newDCFixture(t, "onedc")
1518
f.dockerKillAll("tilt")
1619
f.TiltUp()

internal/cli/down.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -177,22 +177,29 @@ func manifestsForNode(node *dependencyNode) []model.Manifest {
177177
func deleteK8sEntities(ctx context.Context, manifests []model.Manifest, updateSettings model.UpdateSettings, downDeps DownDeps, deleteNamespaces bool) error {
178178
kubeconfigWriter := downDeps.kubeconfigWriter
179179
kClient := downDeps.kClient
180-
kubeconfigPath, err := kubeconfigWriter.WriteFrozenKubeConfig(
181-
ctx,
182-
types.NamespacedName{Name: v1alpha1.ClusterNameDefault},
183-
kClient.APIConfig())
184-
if err != nil {
185-
return errors.Wrap(err, "Writing kubeconfig connection")
186-
}
187-
defer func() {
188-
_ = downDeps.fs.Remove(kubeconfigPath)
189-
}()
190180

191181
entities, deleteCmds, err := k8sToDelete(manifests...)
192182
if err != nil {
193183
return errors.Wrap(err, "Parsing manifest YAML")
194184
}
195185

186+
// If we need to inject the kubeconfig into external
187+
// commands, freeze it first, so that we capture all the cli flags.
188+
kubeconfigPath := ""
189+
if len(deleteCmds) > 0 {
190+
var err error
191+
kubeconfigPath, err = kubeconfigWriter.WriteFrozenKubeConfig(
192+
ctx,
193+
types.NamespacedName{Name: v1alpha1.ClusterNameDefault},
194+
kClient.APIConfig())
195+
if err != nil {
196+
return errors.Wrap(err, "Writing kubeconfig connection")
197+
}
198+
defer func() {
199+
_ = downDeps.fs.Remove(kubeconfigPath)
200+
}()
201+
}
202+
196203
entities, _, err = k8s.Filter(entities, func(e k8s.K8sEntity) (b bool, err error) {
197204
downPolicy, exists := e.Annotations()["tilt.dev/down-policy"]
198205
return !exists || downPolicy != "keep", nil

internal/cli/down_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"testing"
77

8+
"github.com/pkg/errors"
89
"github.com/spf13/afero"
910
"github.com/spf13/cobra"
1011
"github.com/stretchr/testify/assert"
@@ -273,6 +274,15 @@ func TestDownK8sDeleteCmd_Error(t *testing.T) {
273274
}
274275
}
275276

277+
func TestDownDockerComposeWithExplodingKubeConfig(t *testing.T) {
278+
f := newDownFixture(t)
279+
280+
f.deps.kClient = k8s.NewExplodingClient(errors.New("could not set up kubernetes client"))
281+
f.tfl.Result = newTiltfileLoadResult(newDCManifest())
282+
err := f.cmd.down(f.ctx, f.deps, nil)
283+
assert.NoError(t, err)
284+
}
285+
276286
func TestDownDCFails(t *testing.T) {
277287
f := newDownFixture(t)
278288

internal/k8s/exploding_client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ type explodingClient struct {
2525
err error
2626
}
2727

28+
func NewExplodingClient(err error) Client {
29+
return &explodingClient{
30+
err: err,
31+
}
32+
}
33+
2834
func (ec *explodingClient) Upsert(ctx context.Context, entities []K8sEntity, timeout time.Duration) ([]K8sEntity, error) {
2935
return nil, errors.Wrap(ec.err, "could not set up kubernetes client")
3036
}

0 commit comments

Comments
 (0)