Propagate Namespace correctly to Helm

This commit is contained in:
Niklas Wagner
2025-07-08 11:07:06 +02:00
parent f9ab532a4a
commit 9376a5c4b7
7 changed files with 121 additions and 5 deletions

View File

@@ -56,6 +56,12 @@ func (p *plugin) Transform(m resmap.ResMap) error {
// Don't mutate empty objects?
continue
}
if origin, err := r.GetOrigin(); err == nil && origin != nil {
if origin.ConfiguredBy.Kind == "HelmChartInflationGenerator" {
// Don't apply namespace on Helm generated manifest. Helm should take care of it.
continue
}
}
r.StorePreviousId()
if err := r.ApplyFilter(namespace.Filter{
Namespace: p.Namespace,

View File

@@ -8,7 +8,12 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/kustomize/api/provider"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
kyaml "sigs.k8s.io/kustomize/kyaml/yaml"
)
const defaultFieldSpecs = `
@@ -762,3 +767,41 @@ subjects:
`)
})
}
func TestNamespaceTransformer_SkipHelmOrigin(t *testing.T) {
th := kusttest_test.MakeEnhancedHarness(t).
PrepBuiltin("NamespaceTransformer")
defer th.Reset()
rmF := resmap.NewFactory(provider.NewDefaultDepProvider().GetResourceFactory())
rm, err := rmF.NewResMapFromBytes([]byte(`apiVersion: v1
kind: Service
metadata:
name: svc
namespace: helm-ns
`))
require.NoError(t, err)
r := rm.Resources()[0]
origin := &resource.Origin{
ConfiguredBy: kyaml.ResourceIdentifier{
TypeMeta: kyaml.TypeMeta{APIVersion: "builtin", Kind: "HelmChartInflationGenerator"},
},
}
require.NoError(t, r.SetOrigin(origin))
rm, err = th.RunTransformerFromResMap(`
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: notImportantHere
namespace: test
`+defaultFieldSpecs, rm)
require.NoError(t, err)
require.NoError(t, rm.RemoveOriginAnnotations())
th.AssertActualEqualsExpectedNoIdAnnotations(rm, `apiVersion: v1
kind: Service
metadata:
name: svc
namespace: helm-ns
`)
}