mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 10:00:56 +00:00
Convert image transformer to kyaml.
This commit is contained in:
@@ -9,10 +9,10 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/transform"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/filters/imagetag"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
"sigs.k8s.io/kustomize/kyaml/filtersutil"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
@@ -35,18 +35,18 @@ func (p *plugin) Config(
|
||||
|
||||
func (p *plugin) Transform(m resmap.ResMap) error {
|
||||
for _, r := range m.Resources() {
|
||||
for _, path := range p.FieldSpecs {
|
||||
if !r.OrgId().IsSelected(&path.Gvk) {
|
||||
continue
|
||||
}
|
||||
err := transform.MutateField(
|
||||
r.Map(), path.PathSlice(), false, p.mutateImage)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// Kept for backward compatibility
|
||||
if err := p.findAndReplaceImage(r.Map()); err != nil && r.OrgId().Kind != `CustomResourceDefinition` {
|
||||
// If you're here because someone expected any field containing
|
||||
// the string "containers" or "initContainers" to get an image
|
||||
// update (not just spec/template/spec/containers[], etc.) then
|
||||
// a code change is needed. See api/filters/imagetag/legacy
|
||||
// for the start of an implementation that won't use an
|
||||
// allowlist like FsSlice, and instead walks the object looking
|
||||
// for fields named containers or initContainers.
|
||||
err := filtersutil.ApplyToJSON(imagetag.Filter{
|
||||
ImageTag: p.ImageTag,
|
||||
FsSlice: p.FieldSpecs,
|
||||
}, r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,9 @@ metadata:
|
||||
imageTag:
|
||||
name: nginx
|
||||
newTag: v2
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -89,6 +92,9 @@ metadata:
|
||||
imageTag:
|
||||
name: nginx
|
||||
newName: busybox
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -158,6 +164,9 @@ imageTag:
|
||||
name: nginx
|
||||
newName: busybox
|
||||
newTag: v2
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -226,6 +235,9 @@ metadata:
|
||||
imageTag:
|
||||
name: nginx
|
||||
Digest: sha256:222222222222222222
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -295,6 +307,9 @@ imageTag:
|
||||
name: nginx
|
||||
newName: busybox
|
||||
Digest: sha256:222222222222222222
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -363,6 +378,11 @@ metadata:
|
||||
imageTag:
|
||||
name: nginx
|
||||
newTag: v2
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
create: true
|
||||
- path: spec/template/spec/initContainers[]/image
|
||||
create: true
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -384,8 +404,8 @@ metadata:
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers: null
|
||||
initContainers: null
|
||||
containers: []
|
||||
initContainers: []
|
||||
`)
|
||||
}
|
||||
|
||||
@@ -402,6 +422,8 @@ metadata:
|
||||
imageTag:
|
||||
name: some.registry.io/my-image
|
||||
newTag: "my-fixed-tag"
|
||||
fieldSpecs:
|
||||
- path: spec/template/spec/containers[]/image
|
||||
`, `
|
||||
group: apps
|
||||
apiVersion: v1
|
||||
@@ -429,4 +451,4 @@ spec:
|
||||
- image: some.registry.io/my-image:my-fixed-tag
|
||||
name: my-image
|
||||
`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ go 1.14
|
||||
|
||||
require (
|
||||
sigs.k8s.io/kustomize/api v0.5.1
|
||||
sigs.k8s.io/kustomize/kyaml v0.4.1
|
||||
sigs.k8s.io/yaml v1.2.0
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user