...
1
2
3
4 package krusty_test
5
6 import (
7 "testing"
8
9 kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
10 )
11
12 func makeTransfomersImageBase(th kusttest_test.Harness) {
13 th.WriteK("base", `
14 resources:
15 - deploy1.yaml
16 - random.yaml
17 images:
18 - name: nginx
19 newTag: v2
20 - name: my-nginx
21 newTag: previous
22 - name: myprivaterepohostname:1234/my/image
23 newTag: v1.0.1
24 - name: foobar
25 digest: sha256:24a0c4b4
26 - name: alpine
27 newName: myprivaterepohostname:1234/my/cool-alpine
28 - name: gcr.io:8080/my-project/my-cool-app
29 newName: my-cool-app
30 - name: postgres
31 newName: my-postgres
32 newTag: v3
33 - name: docker
34 newName: my-docker
35 digest: sha256:25a0d4b4
36 `)
37 th.WriteF("base/deploy1.yaml", `
38 group: apps
39 apiVersion: v1
40 kind: Deployment
41 metadata:
42 name: deploy1
43 spec:
44 template:
45 spec:
46 initContainers:
47 - name: nginx2
48 image: my-nginx:1.8.0
49 - name: init-alpine
50 image: alpine:1.8.0
51 containers:
52 - name: ngnix
53 image: nginx:1.7.9
54 - name: repliaced-with-digest
55 image: foobar:1
56 - name: postgresdb
57 image: postgres:1.8.0
58 `)
59 th.WriteF("base/random.yaml", `
60 kind: randomKind
61 metadata:
62 name: random
63 spec:
64 template:
65 spec:
66 containers:
67 - name: ngnix1
68 image: nginx
69 spec2:
70 template:
71 spec:
72 containers:
73 - name: nginx3
74 image: nginx:v1
75 - name: nginx4
76 image: my-nginx:latest
77 spec3:
78 template:
79 spec:
80 initContainers:
81 - name: postgresdb
82 image: postgres:alpine-9
83 - name: init-docker
84 image: docker:17-git
85 - name: myImage
86 image: myprivaterepohostname:1234/my/image:latest
87 - name: myImage2
88 image: myprivaterepohostname:1234/my/image
89 - name: my-app
90 image: my-app-image:v1
91 - name: my-cool-app
92 image: gcr.io:8080/my-project/my-cool-app:latest
93 `)
94 }
95
96 func TestIssue1281_JsonPatchAndImageTag(t *testing.T) {
97 th := kusttest_test.MakeHarness(t)
98 th.WriteK(".", `
99 resources:
100 - deployment.yaml
101
102 images:
103 - name: abbott
104 newTag: v2
105 - name: costello
106 newTag: v8
107
108 patchesJson6902:
109 - target:
110 group: apps
111 version: v1
112 kind: Deployment
113 name: ben
114 path: patch.json
115 `)
116 th.WriteF("deployment.yaml", `
117 apiVersion: apps/v1
118 kind: Deployment
119 metadata:
120 name: ben
121 spec:
122 template:
123 spec:
124 dnsPolicy: "None"
125 containers:
126 - name: awesome
127 image: abbott
128 ---
129 apiVersion: apps/v1
130 kind: Deployment
131 metadata:
132 name: alice
133 spec:
134 template:
135 spec:
136 containers:
137 - name: tomato
138 image: abbott
139 `)
140
141 th.WriteF("patch.json", `
142 [ {"op": "add",
143 "path": "/spec/replica", "value": "3"},
144 {"op": "replace",
145 "path": "/spec/template/spec/containers/0",
146 "value": { "image": "costello" } } ]
147 `)
148
149 m := th.Run(".", th.MakeDefaultOptions())
150 th.AssertActualEqualsExpected(m, `
151 apiVersion: apps/v1
152 kind: Deployment
153 metadata:
154 name: ben
155 spec:
156 replica: "3"
157 template:
158 spec:
159 containers:
160 - image: costello:v8
161 dnsPolicy: None
162 ---
163 apiVersion: apps/v1
164 kind: Deployment
165 metadata:
166 name: alice
167 spec:
168 template:
169 spec:
170 containers:
171 - image: abbott:v2
172 name: tomato
173 `)
174 }
175
176
177
178
179 func TestTransfomersImageDefaultConfig(t *testing.T) {
180 th := kusttest_test.MakeHarness(t)
181 makeTransfomersImageBase(th)
182 m := th.Run("base", th.MakeDefaultOptions())
183 th.AssertActualEqualsExpected(m, `
184 apiVersion: v1
185 group: apps
186 kind: Deployment
187 metadata:
188 name: deploy1
189 spec:
190 template:
191 spec:
192 containers:
193 - image: nginx:v2
194 name: ngnix
195 - image: foobar@sha256:24a0c4b4
196 name: repliaced-with-digest
197 - image: my-postgres:v3
198 name: postgresdb
199 initContainers:
200 - image: my-nginx:previous
201 name: nginx2
202 - image: myprivaterepohostname:1234/my/cool-alpine:1.8.0
203 name: init-alpine
204 ---
205 kind: randomKind
206 metadata:
207 name: random
208 spec:
209 template:
210 spec:
211 containers:
212 - image: nginx:v2
213 name: ngnix1
214 spec2:
215 template:
216 spec:
217 containers:
218 - image: nginx:v2
219 name: nginx3
220 - image: my-nginx:previous
221 name: nginx4
222 spec3:
223 template:
224 spec:
225 initContainers:
226 - image: my-postgres:v3
227 name: postgresdb
228 - image: my-docker@sha256:25a0d4b4
229 name: init-docker
230 - image: myprivaterepohostname:1234/my/image:v1.0.1
231 name: myImage
232 - image: myprivaterepohostname:1234/my/image:v1.0.1
233 name: myImage2
234 - image: my-app-image:v1
235 name: my-app
236 - image: my-cool-app:latest
237 name: my-cool-app
238 `)
239 }
240
241 func makeTransfomersImageCustomBase(th kusttest_test.Harness) {
242 th.WriteK("base", `
243 resources:
244 - custom.yaml
245 configurations:
246 - config/custom.yaml
247 images:
248 - name: nginx
249 newTag: v2
250 - name: my-nginx
251 newTag: previous
252 - name: myprivaterepohostname:1234/my/image
253 newTag: v1.0.1
254 - name: foobar
255 digest: sha256:24a0c4b4
256 - name: alpine
257 newName: myprivaterepohostname:1234/my/cool-alpine
258 - name: gcr.io:8080/my-project/my-cool-app
259 newName: my-cool-app
260 - name: postgres
261 newName: my-postgres
262 newTag: v3
263 - name: docker
264 newName: my-docker
265 digest: sha256:25a0d4b4
266 `)
267 th.WriteF("base/custom.yaml", `
268 kind: customKind
269 metadata:
270 name: custom
271 spec:
272 template:
273 spec:
274 myContainers:
275 - name: ngnix1
276 image: nginx
277 spec2:
278 template:
279 spec:
280 myContainers:
281 - name: nginx3
282 image: nginx:v1
283 - name: nginx4
284 image: my-nginx:latest
285 spec3:
286 template:
287 spec:
288 myInitContainers:
289 - name: postgresdb
290 image: postgres:alpine-9
291 - name: init-docker
292 image: docker:17-git
293 - name: myImage
294 image: myprivaterepohostname:1234/my/image:latest
295 - name: myImage2
296 image: myprivaterepohostname:1234/my/image
297 - name: my-app
298 image: my-app-image:v1
299 - name: my-cool-app
300 image: gcr.io:8080/my-project/my-cool-app:latest
301 `)
302 th.WriteF("base/config/custom.yaml", `
303 images:
304 - kind: Custom
305 path: spec/template/spec/myContainers[]/image
306 - kind: Custom
307 path: spec2/template/spec/myContainers[]/image
308 - kind: Custom
309 path: spec3/template/spec/myInitContainers[]/image
310 `)
311 }
312
313 func TestTransfomersImageCustomConfig(t *testing.T) {
314 th := kusttest_test.MakeHarness(t)
315 makeTransfomersImageCustomBase(th)
316 m := th.Run("base", th.MakeDefaultOptions())
317 th.AssertActualEqualsExpected(m, `
318 kind: customKind
319 metadata:
320 name: custom
321 spec:
322 template:
323 spec:
324 myContainers:
325 - image: nginx
326 name: ngnix1
327 spec2:
328 template:
329 spec:
330 myContainers:
331 - image: nginx:v1
332 name: nginx3
333 - image: my-nginx:latest
334 name: nginx4
335 spec3:
336 template:
337 spec:
338 myInitContainers:
339 - image: postgres:alpine-9
340 name: postgresdb
341 - image: docker:17-git
342 name: init-docker
343 - image: myprivaterepohostname:1234/my/image:latest
344 name: myImage
345 - image: myprivaterepohostname:1234/my/image
346 name: myImage2
347 - image: my-app-image:v1
348 name: my-app
349 - image: gcr.io:8080/my-project/my-cool-app:latest
350 name: my-cool-app
351 `)
352 }
353
354 func makeTransfomersImageKnativeBase(th kusttest_test.Harness) {
355 th.WriteK("base", `
356 resources:
357 - knative.yaml
358 configurations:
359 - config/knative.yaml
360 images:
361 - name: solsa-echo
362 newTag: foo
363 `)
364 th.WriteF("base/knative.yaml", `
365 apiVersion: serving.knative.dev/v1alpha1
366 kind: Service
367 metadata:
368 name: echo
369 spec:
370 runLatest:
371 configuration:
372 revisionTemplate:
373 spec:
374 container:
375 image: solsa-echo
376 `)
377 th.WriteF("base/config/knative.yaml", `
378 images:
379 - path: spec/runLatest/configuration/revisionTemplate/spec/container/image
380 group: serving.knative.dev
381 version: v1alpha1
382 kind: Service
383 `)
384 }
385
386 func TestTransfomersImageKnativeConfig(t *testing.T) {
387 th := kusttest_test.MakeHarness(t)
388 makeTransfomersImageKnativeBase(th)
389 m := th.Run("base", th.MakeDefaultOptions())
390 th.AssertActualEqualsExpected(m, `
391 apiVersion: serving.knative.dev/v1alpha1
392 kind: Service
393 metadata:
394 name: echo
395 spec:
396 runLatest:
397 configuration:
398 revisionTemplate:
399 spec:
400 container:
401 image: solsa-echo:foo
402 `)
403 }
404
View as plain text