Skip to content

Commit

Permalink
feat(cmd): add local-config annotation on create
Browse files Browse the repository at this point in the history
this adds a DefaultMetadata object in konfig that can be used
when creating a new kustomization yaml that conforms with the
best practice recommendations in the kustomize docs.

> The `Kustomization` config in a `kustomization.yaml`
> **SHOULD** contain this annotation so that tools know it is not intended to be sent to
> the Kubernetes api server.
  • Loading branch information
bt-macole committed Nov 13, 2024
1 parent bb7a280 commit b4be2bd
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
16 changes: 16 additions & 0 deletions api/konfig/general.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

package konfig

import (
"sigs.k8s.io/kustomize/api/types"
)

// RecognizedKustomizationFileNames is a list of file names
// that kustomize recognizes.
// To avoid ambiguity, a kustomization directory may not
Expand All @@ -19,6 +23,18 @@ func DefaultKustomizationFileName() string {
return RecognizedKustomizationFileNames()[0]
}

// DefaultKustomizationMetadata returns the default metadata
// for a kustomization configuration.
func DefaultKustomizationMetadata() *types.ObjectMeta {
defaultMetadata := &types.ObjectMeta{
Annotations: map[string]string{
IgnoredByKustomizeAnnotation: "true",
},
}

return defaultMetadata
}

const (
// An environment variable to consult for kustomization
// configuration data. See:
Expand Down
1 change: 1 addition & 0 deletions kustomize/commands/create/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ func runCreate(opts createFlags, fSys filesys.FileSystem, rf *resource.Factory)
if err != nil {
return err
}
m.MetaData = konfig.DefaultKustomizationMetadata()
m.Resources = resources
m.Namespace = opts.namespace
m.NamePrefix = opts.prefix
Expand Down
16 changes: 16 additions & 0 deletions kustomize/commands/create/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ 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/types"
"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
Expand Down Expand Up @@ -134,6 +135,21 @@ func TestCreateWithNameSuffix(t *testing.T) {
}
}

func TestCreateHasDefaultMetadata(t *testing.T) {
fSys := filesys.MakeEmptyDirInMemory()
fSys.WriteFile("foo.yaml", []byte(""))
fSys.WriteFile("bar.yaml", []byte(""))
opts := createFlags{resources: "foo.yaml,bar.yaml"}
err := runCreate(opts, fSys, factory)

require.NoErrorf(t, err, "unexpected cmd error: %v")

m := readKustomizationFS(t, fSys)
expected := konfig.DefaultKustomizationMetadata()

require.Truef(t, reflect.DeepEqual(m.MetaData, expected), "expected %v but got %v", expected, m.MetaData)
}

func writeDetectContent(fSys filesys.FileSystem) {
fSys.WriteFile("/test.yaml", []byte(`
apiVersion: v1
Expand Down

0 comments on commit b4be2bd

Please sign in to comment.