diff --git a/api/konfig/general.go b/api/konfig/general.go index c681e72b7..80a7d9be1 100644 --- a/api/konfig/general.go +++ b/api/konfig/general.go @@ -30,4 +30,10 @@ const ( // A program name, for use in help, finding the XDG_CONFIG_DIR, etc. ProgramName = "kustomize" + + // Label key that indicates the resources are built from Kustomize + ManagedbyLabelKey = "app.kubernetes.io/managed-by" + + // An environment variable to turn on/off adding the ManagedByLabelKey + EnableManagedbyLabelEnv = "KUSTOMIZE_ENABLE_MANAGEDBY_LABEL" ) diff --git a/api/krusty/kustomizer.go b/api/krusty/kustomizer.go index 97cf2ddd2..12671f5de 100644 --- a/api/krusty/kustomizer.go +++ b/api/krusty/kustomizer.go @@ -13,6 +13,7 @@ import ( "sigs.k8s.io/kustomize/api/internal/target" "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/k8sdeps/validator" + "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/provenance" "sigs.k8s.io/kustomize/api/resmap" @@ -20,10 +21,6 @@ import ( "sigs.k8s.io/kustomize/api/types" ) -const ( - managedbyLabelKey = "app.kubernetes.io/managed-by" -) - // Kustomizer performs kustomizations. It's meant to behave // similarly to the kustomize CLI, and can be used instead of // performing an exec to a kustomize CLI subprocess. @@ -87,7 +84,7 @@ func (b *Kustomizer) Run(path string) (resmap.ResMap, error) { } if b.options.AddManagedbyLabel { t := builtins.LabelTransformerPlugin{ - Labels: map[string]string{managedbyLabelKey: fmt.Sprintf("kustomize-%s", provenance.GetProvenance().Version)}, + Labels: map[string]string{konfig.ManagedbyLabelKey: fmt.Sprintf("kustomize-%s", provenance.GetProvenance().Version)}, FieldSpecs: []types.FieldSpec{{ Path: "metadata/labels", CreateIfNotPresent: true, diff --git a/kustomize/go.mod b/kustomize/go.mod index 7ee868568..7ae265634 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -23,3 +23,5 @@ exclude ( github.com/russross/blackfriday v2.0.0+incompatible sigs.k8s.io/kustomize/api v0.2.0 ) + +replace sigs.k8s.io/kustomize/api => ../api diff --git a/kustomize/internal/commands/build/build.go b/kustomize/internal/commands/build/build.go index 9bd490c96..8cadb15ea 100644 --- a/kustomize/internal/commands/build/build.go +++ b/kustomize/internal/commands/build/build.go @@ -77,6 +77,7 @@ func NewCmdBuild(out io.Writer) *cobra.Command { addFlagLoadRestrictor(cmd.Flags()) addFlagEnablePlugins(cmd.Flags()) addFlagReorderOutput(cmd.Flags()) + addFlagEnableManagedbyLabel(cmd.Flags()) return cmd } @@ -114,6 +115,9 @@ func (o *Options) makeOptions() *krusty.Options { } else { opts.PluginConfig = konfig.DisabledPluginConfig() } + if isManagedbyLabelEnabled() { + opts.AddManagedbyLabel = true + } return opts } diff --git a/kustomize/internal/commands/build/flagaddmanagedby.go b/kustomize/internal/commands/build/flagaddmanagedby.go new file mode 100644 index 000000000..3d737f518 --- /dev/null +++ b/kustomize/internal/commands/build/flagaddmanagedby.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package build + +import ( + "os" + + "github.com/spf13/pflag" + + "sigs.k8s.io/kustomize/api/konfig" +) + +const ( + flagEnableManagedbyLabelName = "enable_managedby_label" + flagEnableManagedbyLabelHelp = `enable adding ` + konfig.ManagedbyLabelKey +) + +var ( + flagEnableManagedbyLabelValue = false +) + +func addFlagEnableManagedbyLabel(set *pflag.FlagSet) { + set.BoolVar( + &flagEnableManagedbyLabelValue, flagEnableManagedbyLabelName, + false, flagEnableManagedbyLabelHelp) +} + +func isManagedbyLabelEnabled() bool { + if flagEnableManagedbyLabelValue { + return true + } + enableLabel, isSet := os.LookupEnv(konfig.EnableManagedbyLabelEnv) + if isSet && enableLabel == "on" { + return true + } + return false +} diff --git a/kustomize/kustomize b/kustomize/kustomize new file mode 100755 index 000000000..812f5b4da Binary files /dev/null and b/kustomize/kustomize differ