Load default config for image transformer

This commit is contained in:
Yujun Zhang
2019-03-02 19:50:27 +08:00
parent d0cf047381
commit 3e85c4589b
5 changed files with 41 additions and 6 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
`
)

View File

@@ -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
}

View File

@@ -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)