mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Merge pull request #188 from Liujingfang1/cr
Enable imageTagTransformer in application
This commit is contained in:
@@ -169,11 +169,20 @@ func (a *Application) loadCustomizedResMap() (resmap.ResMap, error) {
|
|||||||
if len(errs.Get()) > 0 {
|
if len(errs.Get()) > 0 {
|
||||||
return nil, errs
|
return nil, errs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var r []transformers.Transformer
|
||||||
t, err := a.newTransformer(patches)
|
t, err := a.newTransformer(patches)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = t.Transform(result)
|
r = append(r, t)
|
||||||
|
t, err = transformers.NewImageTagTransformer(a.kustomization.ImageTags)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
r = append(r, t)
|
||||||
|
|
||||||
|
err = transformers.NewMultiTransformer(r).Transform(result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ diff -u -N /tmp/noop/extensions_v1beta1_Deployment_mungebot.yaml /tmp/transforme
|
|||||||
- name: foo
|
- name: foo
|
||||||
value: bar
|
value: bar
|
||||||
- image: nginx
|
- image: nginx
|
||||||
+ image: nginx:1.7.9
|
+ image: nginx:1.8.0
|
||||||
name: nginx
|
name: nginx
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ spec:
|
|||||||
name: test-infra-app-tls-6hkmhf2224
|
name: test-infra-app-tls-6hkmhf2224
|
||||||
- name: foo
|
- name: foo
|
||||||
value: bar
|
value: bar
|
||||||
image: nginx:1.7.9
|
image: nginx:1.8.0
|
||||||
name: nginx
|
name: nginx
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
|
|||||||
@@ -21,3 +21,6 @@ secretGenerator:
|
|||||||
tls.crt: "cat secret/tls.cert"
|
tls.crt: "cat secret/tls.cert"
|
||||||
tls.key: "cat secret/tls.key"
|
tls.key: "cat secret/tls.key"
|
||||||
type: "kubernetes.io/tls"
|
type: "kubernetes.io/tls"
|
||||||
|
imageTags:
|
||||||
|
- name: nginx
|
||||||
|
newTag: 1.8.0
|
||||||
|
|||||||
@@ -55,15 +55,25 @@ func (pt *imageTagTransformer) Transform(resources resmap.ResMap) error {
|
|||||||
then loops though all images inside containers session, finds matched ones and update the tag name
|
then loops though all images inside containers session, finds matched ones and update the tag name
|
||||||
*/
|
*/
|
||||||
func (pt *imageTagTransformer) findAndReplaceTag(obj map[string]interface{}) error {
|
func (pt *imageTagTransformer) findAndReplaceTag(obj map[string]interface{}) error {
|
||||||
_, found := obj["containers"]
|
paths := []string{"containers", "initContainers"}
|
||||||
if found {
|
found := false
|
||||||
return pt.updateContainers(obj)
|
for _, path := range paths {
|
||||||
|
_, found = obj[path]
|
||||||
|
if found {
|
||||||
|
err := pt.updateContainers(obj, path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return pt.findContainers(obj)
|
if !found {
|
||||||
|
return pt.findContainers(obj)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pt *imageTagTransformer) updateContainers(obj map[string]interface{}) error {
|
func (pt *imageTagTransformer) updateContainers(obj map[string]interface{}, path string) error {
|
||||||
containers := obj["containers"].([]interface{})
|
containers := obj[path].([]interface{})
|
||||||
for i := range containers {
|
for i := range containers {
|
||||||
container := containers[i].(map[string]interface{})
|
container := containers[i].(map[string]interface{})
|
||||||
image, found := container["image"]
|
image, found := container["image"]
|
||||||
|
|||||||
@@ -39,15 +39,17 @@ func TestImageTagTransformer(t *testing.T) {
|
|||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
|
"initContainers": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"name": "nginx2",
|
||||||
|
"image": "my-nginx:1.8.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
"containers": []interface{}{
|
"containers": []interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"name": "nginx",
|
"name": "nginx",
|
||||||
"image": "nginx:1.7.9",
|
"image": "nginx:1.7.9",
|
||||||
},
|
},
|
||||||
map[string]interface{}{
|
|
||||||
"name": "nginx2",
|
|
||||||
"image": "my-nginx:1.8.0",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -101,15 +103,17 @@ func TestImageTagTransformer(t *testing.T) {
|
|||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
|
"initContainers": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"name": "nginx2",
|
||||||
|
"image": "my-nginx:previous",
|
||||||
|
},
|
||||||
|
},
|
||||||
"containers": []interface{}{
|
"containers": []interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"name": "nginx",
|
"name": "nginx",
|
||||||
"image": "nginx:v2",
|
"image": "nginx:v2",
|
||||||
},
|
},
|
||||||
map[string]interface{}{
|
|
||||||
"name": "nginx2",
|
|
||||||
"image": "my-nginx:previous",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user