Skip to content

Commit 1c0f1bf

Browse files
authored
Merge pull request #5940 from Skaronator/propagate-namespaces
fix: Propagate Namespace correctly to Helm
2 parents 11f9435 + 75839a8 commit 1c0f1bf

File tree

7 files changed

+460
-46
lines changed

7 files changed

+460
-46
lines changed

api/internal/builtins/NamespaceTransformer.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/internal/target/kusttarget.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,11 @@ func (kt *KustTarget) MakeCustomizedResMap() (resmap.ResMap, error) {
127127
}
128128

129129
func (kt *KustTarget) makeCustomizedResMap() (resmap.ResMap, error) {
130-
var origin *resource.Origin
131-
if len(kt.kustomization.BuildMetadata) != 0 {
132-
origin = &resource.Origin{}
133-
}
134-
kt.origin = origin
130+
// Track origin for all resources so builtins can make decisions
131+
// based on where resources originated from.
132+
// Origin annotations will be stripped from the output if not
133+
// requested via build metadata options.
134+
kt.origin = &resource.Origin{}
135135
ra, err := kt.AccumulateTarget()
136136
if err != nil {
137137
return nil, err
@@ -496,6 +496,11 @@ func (kt *KustTarget) accumulateDirectory(
496496
}
497497
subKt.kustomization.BuildMetadata = kt.kustomization.BuildMetadata
498498
subKt.origin = kt.origin
499+
// Propagate namespace to child kustomization if child doesn't have one
500+
// This ensures Helm charts in base kustomizations inherit namespace from overlays
501+
if subKt.kustomization.Namespace == "" && kt.kustomization.Namespace != "" {
502+
subKt.kustomization.Namespace = kt.kustomization.Namespace
503+
}
499504
var bytes []byte
500505
if openApiPath, exists := subKt.Kustomization().OpenAPI["path"]; exists {
501506
bytes, err = ldr.Load(openApiPath)

api/internal/target/kusttarget_configplugin.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ var generatorConfigurators = map[builtinhelpers.BuiltinPluginType]func(
166166
for _, chart := range kt.kustomization.HelmCharts {
167167
c.HelmGlobals = globals
168168
c.HelmChart = chart
169+
// Pass kustomize namespace to helm
170+
// Fixes https://github.com/kubernetes-sigs/kustomize/issues/5566
171+
if c.HelmChart.Namespace == "" && kt.kustomization.Namespace != "" {
172+
c.HelmChart.Namespace = kt.kustomization.Namespace
173+
}
169174
p := f()
170175
if err = kt.configureBuiltinPlugin(p, c, bpt); err != nil {
171176
return nil, err

api/internal/target/kusttarget_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ metadata:
300300
require.NoError(t, expected.Append(r), "failed to append resource: %v")
301301
}
302302
expected.RemoveBuildAnnotations()
303+
require.NoError(t, expected.RemoveTransformerAnnotations())
304+
require.NoError(t, expected.RemoveOriginAnnotations())
303305
expYaml, err := expected.AsYaml()
304306
require.NoError(t, err)
305307

@@ -308,6 +310,8 @@ metadata:
308310
actual, err := kt.MakeCustomizedResMap()
309311
require.NoError(t, err)
310312
actual.RemoveBuildAnnotations()
313+
require.NoError(t, actual.RemoveTransformerAnnotations())
314+
require.NoError(t, actual.RemoveOriginAnnotations())
311315
actYaml, err := actual.AsYaml()
312316
require.NoError(t, err)
313317
assert.Equal(t, string(expYaml), string(actYaml))
@@ -411,6 +415,8 @@ metadata:
411415
require.NoError(t, err)
412416
}
413417
expected.RemoveBuildAnnotations()
418+
require.NoError(t, expected.RemoveTransformerAnnotations())
419+
require.NoError(t, expected.RemoveOriginAnnotations())
414420
expYaml, err := expected.AsYaml()
415421
require.NoError(t, err)
416422

@@ -419,6 +425,8 @@ metadata:
419425
actual, err := kt.MakeCustomizedResMap()
420426
require.NoError(t, err)
421427
actual.RemoveBuildAnnotations()
428+
require.NoError(t, actual.RemoveTransformerAnnotations())
429+
require.NoError(t, actual.RemoveOriginAnnotations())
422430
actYaml, err := actual.AsYaml()
423431
require.NoError(t, err)
424432
require.Equal(t, string(expYaml), string(actYaml))

0 commit comments

Comments
 (0)