Skip to content

Commit eaf1553

Browse files
authored
Override images in env vars (knative#152)
1 parent 5559835 commit eaf1553

File tree

2 files changed

+89
-11
lines changed

2 files changed

+89
-11
lines changed

pkg/reconciler/knativeeventing/common/images.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ func updateDeployment(instance *eventingv1alpha1.KnativeEventing, u *unstructure
5858
log.Debugw("Updating Deployment", "name", u.GetName(), "registry", registry)
5959

6060
updateDeploymentImage(deployment, &registry, log)
61+
updateDeploymentEnvVarImages(deployment, &registry, log)
62+
6163
deployment.Spec.Template.Spec.ImagePullSecrets = addImagePullSecrets(
6264
deployment.Spec.Template.Spec.ImagePullSecrets, &registry, log)
6365
err = scheme.Scheme.Convert(deployment, u, nil)
@@ -72,6 +74,19 @@ func updateDeployment(instance *eventingv1alpha1.KnativeEventing, u *unstructure
7274
return nil
7375
}
7476

77+
func updateDeploymentEnvVarImages(deployment *appsv1.Deployment, registry *eventingv1alpha1.Registry, log *zap.SugaredLogger) {
78+
containers := deployment.Spec.Template.Spec.Containers
79+
for index := range containers {
80+
container := &containers[index]
81+
for envIndex := range container.Env {
82+
env := &container.Env[envIndex]
83+
if newImage, ok := registry.Override[env.Name]; ok {
84+
env.Value = newImage
85+
}
86+
}
87+
}
88+
}
89+
7590
// updateDeploymentImage updates the image of the deployment with a new registry and tag
7691
func updateDeploymentImage(deployment *appsv1.Deployment, registry *eventingv1alpha1.Registry, log *zap.SugaredLogger) {
7792
containers := deployment.Spec.Template.Spec.Containers

pkg/reconciler/knativeeventing/common/images_test.go

Lines changed: 74 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type updateDeploymentImageTest struct {
3333
name string
3434
containers []corev1.Container
3535
registry eventingv1alpha1.Registry
36-
expected []string
36+
expected []corev1.Container
3737
}
3838

3939
var updateDeploymentImageTests = []updateDeploymentImageTest{
@@ -46,7 +46,10 @@ var updateDeploymentImageTests = []updateDeploymentImageTest{
4646
registry: eventingv1alpha1.Registry{
4747
Default: "new-registry.io/test/path/${NAME}:new-tag",
4848
},
49-
expected: []string{"new-registry.io/test/path/queue:new-tag"},
49+
expected: []corev1.Container{{
50+
Name: "queue",
51+
Image: "new-registry.io/test/path/queue:new-tag"},
52+
},
5053
},
5154
{
5255
name: "UsesContainerNamePerContainer",
@@ -66,9 +69,15 @@ var updateDeploymentImageTests = []updateDeploymentImageTest{
6669
"container2": "new-registry.io/test/path/new-container-2:new-tag",
6770
},
6871
},
69-
expected: []string{
70-
"new-registry.io/test/path/new-container-1:new-tag",
71-
"new-registry.io/test/path/new-container-2:new-tag",
72+
expected: []corev1.Container{
73+
{
74+
Name: "container1",
75+
Image: "new-registry.io/test/path/new-container-1:new-tag",
76+
},
77+
{
78+
Name: "container2",
79+
Image: "new-registry.io/test/path/new-container-2:new-tag",
80+
},
7281
},
7382
},
7483
{
@@ -83,7 +92,10 @@ var updateDeploymentImageTests = []updateDeploymentImageTest{
8392
"queue": "new-registry.io/test/path/new-value:new-override-tag",
8493
},
8594
},
86-
expected: []string{"new-registry.io/test/path/new-value:new-override-tag"},
95+
expected: []corev1.Container{{
96+
Name: "queue",
97+
Image: "new-registry.io/test/path/new-value:new-override-tag"},
98+
},
8799
},
88100
{
89101
name: "NoChangeOverrideWithDifferentName",
@@ -96,7 +108,10 @@ var updateDeploymentImageTests = []updateDeploymentImageTest{
96108
"Unused": "new-registry.io/test/path",
97109
},
98110
},
99-
expected: []string{"docker.io/name/image:tag2"},
111+
expected: []corev1.Container{{
112+
Name: "image",
113+
Image: "docker.io/name/image:tag2"},
114+
},
100115
},
101116
{
102117
name: "NoChange",
@@ -105,7 +120,57 @@ var updateDeploymentImageTests = []updateDeploymentImageTest{
105120
Image: "gcr.io/knative-releases/github.com/knative/eventing/cmd/queue@sha256:1e40c99ff5977daa2d69873fff604c6d09651af1f9ff15aadf8849b3ee77ab45"},
106121
},
107122
registry: eventingv1alpha1.Registry{},
108-
expected: []string{"gcr.io/knative-releases/github.com/knative/eventing/cmd/queue@sha256:1e40c99ff5977daa2d69873fff604c6d09651af1f9ff15aadf8849b3ee77ab45"},
123+
expected: []corev1.Container{{
124+
Name: "queue",
125+
Image: "gcr.io/knative-releases/github.com/knative/eventing/cmd/queue@sha256:1e40c99ff5977daa2d69873fff604c6d09651af1f9ff15aadf8849b3ee77ab45"},
126+
},
127+
},
128+
{
129+
name: "OverrideEnvVarImage",
130+
containers: []corev1.Container{{
131+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "gcr.io/foo/bar"}},
132+
}},
133+
registry: eventingv1alpha1.Registry{
134+
Override: map[string]string{
135+
"SOME_IMAGE": "docker.io/my/overridden-image",
136+
},
137+
},
138+
expected: []corev1.Container{{
139+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "docker.io/my/overridden-image"}},
140+
}},
141+
},
142+
{
143+
name: "NoOverrideEnvVarImage",
144+
containers: []corev1.Container{{
145+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "gcr.io/foo/bar"}},
146+
}},
147+
registry: eventingv1alpha1.Registry{
148+
Override: map[string]string{
149+
"OTHER_IMAGE": "docker.io/my/overridden-image",
150+
},
151+
},
152+
expected: []corev1.Container{{
153+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "gcr.io/foo/bar"}},
154+
}},
155+
},
156+
{
157+
name: "NoOverrideEnvVarImageAndContainerImageBoth",
158+
containers: []corev1.Container{{
159+
Name: "queue",
160+
Image: "gcr.io/knative-releases/github.com/knative/eventing/cmd/queue@sha256:1e40c99ff5977daa2d69873fff604c6d09651af1f9ff15aadf8849b3ee77ab45",
161+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "gcr.io/foo/bar"}},
162+
}},
163+
registry: eventingv1alpha1.Registry{
164+
Override: map[string]string{
165+
"queue": "new-registry.io/test/path/new-value:new-override-tag",
166+
"SOME_IMAGE": "docker.io/my/overridden-image",
167+
},
168+
},
169+
expected: []corev1.Container{{
170+
Name: "queue",
171+
Image: "new-registry.io/test/path/new-value:new-override-tag",
172+
Env: []corev1.EnvVar{{Name: "SOME_IMAGE", Value: "docker.io/my/overridden-image"}},
173+
}},
109174
},
110175
}
111176

@@ -132,9 +197,7 @@ func validateUnstructedDeploymentChanged(t *testing.T, tt *updateDeploymentImage
132197
var deployment = &appsv1.Deployment{}
133198
err := scheme.Scheme.Convert(u, deployment, nil)
134199
assertEqual(t, err, nil)
135-
for i, expected := range tt.expected {
136-
assertEqual(t, deployment.Spec.Template.Spec.Containers[i].Image, expected)
137-
}
200+
assertDeepEqual(t, deployment.Spec.Template.Spec.Containers, tt.expected)
138201
}
139202

140203
func makeDeployment(t *testing.T, name string, podSpec corev1.PodSpec) *appsv1.Deployment {

0 commit comments

Comments
 (0)