diff --git a/api/krusty/kustomizer.go b/api/krusty/kustomizer.go index c5dda8a1b..646a5c3f5 100644 --- a/api/krusty/kustomizer.go +++ b/api/krusty/kustomizer.go @@ -10,6 +10,7 @@ import ( "sigs.k8s.io/kustomize/api/internal/builtins" pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/internal/target" + "sigs.k8s.io/kustomize/api/internal/utils" "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/provenance" @@ -95,7 +96,7 @@ func (b *Kustomizer) Run( return nil, err } } - if b.options.AddManagedbyLabel { + if b.options.AddManagedbyLabel || utils.StringSliceContains(kt.Kustomization().BuildMetadata, types.ManagedByLabelOption) { t := builtins.LabelTransformerPlugin{ Labels: map[string]string{ konfig.ManagedbyLabelKey: fmt.Sprintf("kustomize-%s", provenance.GetProvenance().Semver()), diff --git a/api/krusty/managedbylabel_test.go b/api/krusty/managedbylabel_test.go index 2cabde562..8d12a60bd 100644 --- a/api/krusty/managedbylabel_test.go +++ b/api/krusty/managedbylabel_test.go @@ -9,28 +9,7 @@ import ( kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" ) -func TestAddManagedbyLabel(t *testing.T) { - th := kusttest_test.MakeHarness(t) - th.WriteF("service.yaml", ` -apiVersion: v1 -kind: Service -metadata: - name: myService -spec: - ports: - - port: 7002 -`) - th.WriteK(".", ` -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: -- service.yaml -`) - options := th.MakeDefaultOptions() - options.AddManagedbyLabel = true - m := th.Run(".", options) - th.AssertActualEqualsExpected(m, ` -apiVersion: v1 +const expected = `apiVersion: v1 kind: Service metadata: labels: @@ -39,5 +18,51 @@ metadata: spec: ports: - port: 7002 +` + +func TestAddManagedbyLabel(t *testing.T) { + tests := []struct { + kustFile string + managedByFlag bool + expected string + }{ + { + kustFile: ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- service.yaml +`, + managedByFlag: true, + expected: expected, + }, + { + kustFile: ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- service.yaml +buildMetadata: [managedByLabel] +`, + managedByFlag: false, + expected: expected, + }, + } + for _, tc := range tests { + th := kusttest_test.MakeHarness(t) + th.WriteF("service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: myService +spec: + ports: + - port: 7002 `) + th.WriteK(".", tc.kustFile) + options := th.MakeDefaultOptions() + options.AddManagedbyLabel = tc.managedByFlag + m := th.Run(".", options) + th.AssertActualEqualsExpected(m, tc.expected) + } } diff --git a/api/types/kustomization.go b/api/types/kustomization.go index 196d244d8..a75a5f2ea 100644 --- a/api/types/kustomization.go +++ b/api/types/kustomization.go @@ -17,7 +17,9 @@ const ( ComponentVersion = "kustomize.config.k8s.io/v1alpha1" ComponentKind = "Component" MetadataNamespacePath = "metadata/namespace" - OriginAnnotations = "originAnnotations" + + OriginAnnotations = "originAnnotations" + ManagedByLabelOption = "managedByLabel" ) // Kustomization holds the information needed to generate customized k8s api resources. diff --git a/kustomize/commands/build/build.go b/kustomize/commands/build/build.go index 90981d74b..22ca0bb8d 100644 --- a/kustomize/commands/build/build.go +++ b/kustomize/commands/build/build.go @@ -104,6 +104,8 @@ func NewCmdBuild( AddFlagEnablePlugins(cmd.Flags()) AddFlagReorderOutput(cmd.Flags()) AddFlagEnableManagedbyLabel(cmd.Flags()) + cmd.Flags().MarkDeprecated(managedByFlag, + "The flag `enable-managedby-label` has been deprecated. Use the `managedByLabel` option in the `buildMetadata` field instead.") AddFlagEnableHelm(cmd.Flags()) return cmd } diff --git a/kustomize/commands/build/flagaddmanagedby.go b/kustomize/commands/build/flagaddmanagedby.go index c65a85d10..0d3d1b54d 100644 --- a/kustomize/commands/build/flagaddmanagedby.go +++ b/kustomize/commands/build/flagaddmanagedby.go @@ -10,10 +10,12 @@ import ( "sigs.k8s.io/kustomize/api/konfig" ) +const managedByFlag = "enable-managedby-label" + func AddFlagEnableManagedbyLabel(set *pflag.FlagSet) { set.BoolVar( &theFlags.enable.managedByLabel, - "enable-managedby-label", + managedByFlag, false, `enable adding `+konfig.ManagedbyLabelKey) }