diff --git a/pkg/target/kusttarget.go b/pkg/target/kusttarget.go index 5bbd2198c..d916df6fb 100644 --- a/pkg/target/kusttarget.go +++ b/pkg/target/kusttarget.go @@ -312,7 +312,7 @@ func (kt *KustTarget) newTransformer( return nil, err } r = append(r, t) - t, err = transformers.NewImageTransformer(kt.kustomization.Images) + t, err = transformers.NewImageTransformer(kt.kustomization.Images, tConfig.Images) if err != nil { return nil, err } diff --git a/pkg/transformers/config/defaultconfig/defaultconfig.go b/pkg/transformers/config/defaultconfig/defaultconfig.go index d96639a8a..10fe504ac 100644 --- a/pkg/transformers/config/defaultconfig/defaultconfig.go +++ b/pkg/transformers/config/defaultconfig/defaultconfig.go @@ -31,6 +31,7 @@ func GetDefaultFieldSpecs() []byte { []byte(namespaceFieldSpecs), []byte(varReferenceFieldSpecs), []byte(nameReferenceFieldSpecs), + []byte(imageFieldSpecs), } return bytes.Join(configData, []byte("\n")) } @@ -45,5 +46,6 @@ func GetDefaultFieldSpecsAsMap() map[string]string { result["namespace"] = namespaceFieldSpecs result["varreference"] = varReferenceFieldSpecs result["namereference"] = nameReferenceFieldSpecs + result["image"] = imageFieldSpecs return result } diff --git a/pkg/transformers/config/defaultconfig/image.go b/pkg/transformers/config/defaultconfig/image.go new file mode 100644 index 000000000..d571c46aa --- /dev/null +++ b/pkg/transformers/config/defaultconfig/image.go @@ -0,0 +1,25 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package defaultconfig + +const ( + imageFieldSpecs = ` +image: +- path: containers +- path: initContainers +` +) diff --git a/pkg/transformers/config/transformerconfig.go b/pkg/transformers/config/transformerconfig.go index 556f0b814..7ba048524 100644 --- a/pkg/transformers/config/transformerconfig.go +++ b/pkg/transformers/config/transformerconfig.go @@ -34,6 +34,7 @@ type TransformerConfig struct { CommonAnnotations fsSlice `json:"commonAnnotations,omitempty" yaml:"commonAnnotations,omitempty"` NameReference nbrSlice `json:"nameReference,omitempty" yaml:"nameReference,omitempty"` VarReference fsSlice `json:"varReference,omitempty" yaml:"varReference,omitempty"` + Images fsSlice `json:"image,omitempty" yaml:"image,omitempty"` } // MakeEmptyConfig returns an empty TransformerConfig object @@ -59,6 +60,7 @@ func (t *TransformerConfig) sortFields() { sort.Sort(t.CommonAnnotations) sort.Sort(t.NameReference) sort.Sort(t.VarReference) + sort.Sort(t.Images) } // AddPrefixFieldSpec adds a FieldSpec to NamePrefix @@ -129,6 +131,10 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) ( if err != nil { return nil, err } + merged.Images, err = t.Images.mergeAll(input.Images) + if err != nil { + return nil, err + } merged.sortFields() return merged, nil } diff --git a/pkg/transformers/image.go b/pkg/transformers/image.go index 2e0797694..5ca3b86a1 100644 --- a/pkg/transformers/image.go +++ b/pkg/transformers/image.go @@ -23,18 +23,20 @@ import ( "sigs.k8s.io/kustomize/pkg/image" "sigs.k8s.io/kustomize/pkg/resmap" + "sigs.k8s.io/kustomize/pkg/transformers/config" ) // imageTransformer replace image names and tags type imageTransformer struct { - images []image.Image + images []image.Image + fieldSpecs []config.FieldSpec } var _ Transformer = &imageTransformer{} // NewImageTransformer constructs an imageTransformer. -func NewImageTransformer(slice []image.Image) (Transformer, error) { - return &imageTransformer{slice}, nil +func NewImageTransformer(slice []image.Image, fs []config.FieldSpec) (Transformer, error) { + return &imageTransformer{slice, fs}, nil } // Transform finds the matching images and replaces name, tag and/or digest @@ -58,9 +60,9 @@ func (pt *imageTransformer) Transform(resources resmap.ResMap) error { finds matched ones and update the image name and tag name */ func (pt *imageTransformer) findAndReplaceImage(obj map[string]interface{}) error { - paths := []string{"containers", "initContainers"} found := false - for _, path := range paths { + for _, fs := range pt.fieldSpecs { + path := fs.Path _, found = obj[path] if found { err := pt.updateContainers(obj, path)