Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions api/internal/builtins/HelmChartInflationGenerator.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions api/internal/builtins/NamespaceTransformer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions api/internal/target/kusttarget.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,11 @@ func (kt *KustTarget) MakeCustomizedResMap() (resmap.ResMap, error) {
}

func (kt *KustTarget) makeCustomizedResMap() (resmap.ResMap, error) {
// Track origin for all resources so builtins can make decisions
// based on where resources originated from.
// Origin annotations will be stripped from the output if not
// requested via build metadata options.
kt.origin = &resource.Origin{}
var origin *resource.Origin
if len(kt.kustomization.BuildMetadata) != 0 {
origin = &resource.Origin{}
}
kt.origin = origin
ra, err := kt.AccumulateTarget()
if err != nil {
return nil, err
Expand Down
3 changes: 3 additions & 0 deletions api/konfig/general.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,7 @@ const (

// Label key that indicates the resources are validated by a validator
ValidatedByLabelKey = "validated-by"

// Annotation key for marking helm-generated resources to skip namespace transformation
HelmGeneratedAnnotation = ConfigAnnoDomain + "/helm-generated"
)
1 change: 1 addition & 0 deletions api/krusty/helmchartinflationgenerator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1174,6 +1174,7 @@ kind: Service
metadata:
annotations:
helm-namespace: helm-ns
internal.config.kubernetes.io/helm-generated: "true"
name: test-service
namespace: helm-ns
`)
Expand Down
3 changes: 3 additions & 0 deletions api/resource/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"sigs.k8s.io/kustomize/api/filters/patchstrategicmerge"
"sigs.k8s.io/kustomize/api/ifc"
"sigs.k8s.io/kustomize/api/internal/utils"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/kioutil"
Expand Down Expand Up @@ -47,6 +48,8 @@ var BuildAnnotations = []string{
kioutil.LegacyPathAnnotation,
kioutil.LegacyIndexAnnotation,
kioutil.LegacyIdAnnotation,

konfig.HelmGeneratedAnnotation,
}

func (r *Resource) ResetRNode(incoming *Resource) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"slices"
"strings"

"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/errors"
Expand Down Expand Up @@ -302,6 +303,9 @@ func (p *plugin) Generate() (rm resmap.ResMap, err error) {

rm, resMapErr := p.h.ResmapFactory().NewResMapFromBytes(stdout)
if resMapErr == nil {
if err := p.markHelmGeneratedResources(rm); err != nil {
return nil, err
}
return rm, nil
}
// try to remove the contents before first "---" because
Expand All @@ -317,6 +321,9 @@ func (p *plugin) Generate() (rm resmap.ResMap, err error) {
if err != nil {
return nil, fmt.Errorf("could not parse rnode slice into resource map: %w", err)
}
if err := p.markHelmGeneratedResources(rm); err != nil {
return nil, err
}
return rm, nil
}
return nil, fmt.Errorf("could not parse bytes into resource map: %w", resMapErr)
Expand Down Expand Up @@ -359,6 +366,15 @@ func (p *plugin) chartExistsLocally() (string, bool) {
return path, s.IsDir()
}

func (p *plugin) markHelmGeneratedResources(rm resmap.ResMap) error {
for _, r := range rm.Resources() {
if err := r.RNode.PipeE(kyaml.SetAnnotation(konfig.HelmGeneratedAnnotation, "true")); err != nil {
return fmt.Errorf("failed to set helm annotation: %w", err)
}
}
return nil
}

// checkHelmVersion will return an error if the helm version is not V3
func (p *plugin) checkHelmVersion() error {
stdout, err := p.runHelmCommand([]string{"version", "-c", "--short"})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ type: Opaque
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
app: moria-minecraft
chart: minecraft-3.1.3
Expand All @@ -211,7 +210,6 @@ spec:
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
app: moria-minecraft
chart: minecraft-3.1.3
Expand Down
9 changes: 4 additions & 5 deletions plugin/builtin/namespacetransformer/NamespaceTransformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"

"sigs.k8s.io/kustomize/api/filters/namespace"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/errors"
Expand Down Expand Up @@ -56,11 +57,9 @@ 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
}
if annotations := r.GetAnnotations(konfig.HelmGeneratedAnnotation); annotations[konfig.HelmGeneratedAnnotation] == "true" {
// Don't apply namespace on Helm generated manifest. Helm should take care of it.
continue
}
r.StorePreviousId()
if err := r.ApplyFilter(namespace.Filter{
Expand Down
13 changes: 6 additions & 7 deletions plugin/builtin/namespacetransformer/NamespaceTransformer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/kustomize/api/konfig"
"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"
)
Expand Down Expand Up @@ -779,15 +779,12 @@ kind: Service
metadata:
name: svc
namespace: helm-ns
annotations:
this-should-be-keept: "true"
`))
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))
require.NoError(t, r.RNode.PipeE(kyaml.SetAnnotation(konfig.HelmGeneratedAnnotation, "true")))

rm, err = th.RunTransformerFromResMap(`
apiVersion: builtin
Expand All @@ -801,6 +798,8 @@ metadata:
th.AssertActualEqualsExpectedNoIdAnnotations(rm, `apiVersion: v1
kind: Service
metadata:
annotations:
this-should-be-keept: "true"
name: svc
namespace: helm-ns
`)
Expand Down
Loading