-
Notifications
You must be signed in to change notification settings - Fork 1
/
cr-example.yaml
463 lines (437 loc) · 13.7 KB
/
cr-example.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
---
apiVersion: app.vproxy.io/v1alpha1
kind: TcpLb
metadata:
name: web-http
spec:
address: 0.0.0.0:80
backend: my-services
protocol: http
---
apiVersion: app.vproxy.io/v1alpha1
kind: TcpLb
metadata:
name: web-https
spec:
address: 0.0.0.0:443
backend: my-services
protocol: http
listOfCertKey:
- crt-example
- crt-example2
---
apiVersion: app.vproxy.io/v1alpha1
kind: Socks5Server
metadata:
name: manage-socks5
spec:
address: 0.0.0.0:1080
backend: my-services
securityGroup: work-area-only
---
apiVersion: app.vproxy.io/v1alpha1
kind: DnsServer
metadata:
name: dns-server
spec:
address: 0.0.0.0:53
rrsets: my-services
---
apiVersion: app.vproxy.io/v1alpha1
kind: Upstream
metadata:
name: my-services
spec:
serverGroups:
- name: group-example
- name: group-example2
---
apiVersion: app.vproxy.io/v1alpha1
kind: ServerGroup
metadata:
name: group-example
annotations:
vproxy/hint-host: example.com
spec:
timeout: 1000
period: 5000
up: 2
down: 3
protocol: http
servers:
endpoints:
- name: svc-example-ver1
port: 80
weight: 10
- name: svc-example-ver2
port: 80
weight: 5
---
apiVersion: app.vproxy.io/v1alpha1
kind: ServerGroup
metadata:
name: group-example2
annotations:
vproxy/hint-host: example2.com
spec:
timeout: 1000
period: 5000
up: 2
down: 3
protocol: http
servers:
endpoints:
- name: svc-example2
port: 80
---
apiVersion: app.vproxy.io/v1alpha1
kind: SecurityGroup
metadata:
name: work-area-only
spec:
defaultRule: deny
rules:
- name: area-1
clientNetwork: 59.1.2.0/24
protocol: TCP
serverPortMin: 1080
serverPortMax: 1080
rule: allow
---
apiVersion: v1
kind: Service
metadata:
name: svc-example-ver1
spec:
selector:
app: example
version: v1
ports:
- protocol: TCP
port: 80
---
apiVersion: v1
kind: Service
metadata:
name: svc-example-ver2
spec:
selector:
app: example
version: v2
ports:
- protocol: TCP
port: 80
---
apiVersion: v1
kind: Service
metadata:
name: svc-example2
spec:
selector:
app: example2
ports:
- protocol: TCP
port: 80
---
apiVersion: app.vproxy.io/v1alpha1
kind: CertKey
metadata:
name: crt-example
spec:
pem:
certs:
- |
-----BEGIN CERTIFICATE-----
MIIDszCCApugAwIBAgIJAIvTzI2C9kiOMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAkNOMQ8wDQYDVQQIDAZ2cHJveHkxDzANBgNVBAcMBnZwcm94eTEPMA0GA1UE
CgwGdnByb3h5MQ8wDQYDVQQLDAZ2cHJveHkxDzANBgNVBAMMBnZwcm94eTAeFw0y
MDAxMjIwNjIyNDZaFw0yMTAxMjEwNjIyNDZaMGsxCzAJBgNVBAYTAkNOMRAwDgYD
VQQIDAdleGFtcGxlMRAwDgYDVQQHDAdleGFtcGxlMRAwDgYDVQQKDAdleGFtcGxl
MRAwDgYDVQQLDAdleGFtcGxlMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKy68AEc5T73gTX2acGIATG/8/sIpRyu
1tsWTuB7R32A/qUYaY8NaF6ChrBiKF+eZmMHumkrgj68Haw508YWXj+QwGjtIYay
iwcG4yNe2ojG+DRhhrAGX8GrNtJLBIgT+Shy6PSxjGV9D9sGGarHIcY87nPUC5Xf
WMguAw/22/189igmNkAkSSJDASNRKjUuMz46nNsXsLTA+Fs8uFLa/uxCDOSQ7bRY
4TMnnMFIf70xJoz4O0FyVossgHc1gTwskRS3CGX8MOsDnKrZ1zM5AB5rAs7FXNAO
j+aO1k6SDWKBLPdQkKugiqh13idUbpa1v9lc7+HLqxzI+u27E2HoODcCAwEAAaNj
MGEwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwRwYDVR0RBEAwPoINKi5leGFtcGxl
LmNvbYILZXhhbXBsZS5jb22CECouZXhhbXBsZS5jb20uaGuCDmV4YW1wbGUuY29t
LmhrMA0GCSqGSIb3DQEBCwUAA4IBAQCeWjY5eQCVYjhxUUP75vWnS0ZciRPj+0u8
HR/UcIlFL0FNNfi1EGN2z0wA+mqHe6nkRfl5FyD/NaUaVspsDOvpCXOtwHNR0izE
TYHJrLphVtciEC9Ko9nHjN7O/VAAumNvnWt/UJbjZPq3q47FkAhQHRxdiSKstda+
CU+fK5sT5CKguRK7j7un6u4vZ/cgIBIhrpp7pAhBa+JVW/8Wih7g0K364i4aaU8N
QgVAU1Pziix3Cbejifu5zl9m9NCImDPV+mJZpZePiH4mrqGIymoxo4tqufl74im1
RKyce75jojmg+6W0WmQAVrg3WPFNktHE0HSYhT+WLEzlHIHR9yB6
-----END CERTIFICATE-----
- |
-----BEGIN CERTIFICATE-----
MIIDwjCCAqqgAwIBAgIJANVe3FnIsItZMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAkNOMQ8wDQYDVQQIDAZ2cHJveHkxDzANBgNVBAcMBnZwcm94eTEPMA0GA1UE
CgwGdnByb3h5MQ8wDQYDVQQLDAZ2cHJveHkxDzANBgNVBAMMBnZwcm94eTAgFw0y
MDAxMjIwNjIwMDRaGA8yMTE5MTIyOTA2MjAwNFowYjELMAkGA1UEBhMCQ04xDzAN
BgNVBAgMBnZwcm94eTEPMA0GA1UEBwwGdnByb3h5MQ8wDQYDVQQKDAZ2cHJveHkx
DzANBgNVBAsMBnZwcm94eTEPMA0GA1UEAwwGdnByb3h5MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAvxOewUhOqAzb/lRnbjQRBYgohvizlOJg5Julty9o
/RdHe2qTw0EBouvozN2nYPl8awJKofT/N0UWA2ST0DasS4bS6c/h0dnz+14rFWMN
ruBSlJvivCrQJZz4y3oMBkixuuSZibQib28mDGfPnOu50H/wsKhBzdNtVGQxDsSP
fl0Xl4TnxK+sN7IG5as5cg7Gm3J8HJfO3AXyY0jVhKHbFRkUKMVqy3v3aYFtxmro
ikNaeDv2qhhlmojYA1isRiK/+m2n3SoADQXaeGD0SMvPlblQ7x0EBlksfmQD7/Lu
MqqItUr9mdIm8acsp9xFyylb66uTjARTVh5eZ7TD2v0XSQIDAQABo3kwdzAdBgNV
HQ4EFgQUbku+JaaVtvRd9BDACk+FFl2dRqAwHwYDVR0jBBgwFoAUbku+JaaVtvRd
9BDACk+FFl2dRqAwEgYDVR0TAQH/BAgwBgEB/wIBAzAOBgNVHQ8BAf8EBAMCAQYw
EQYJYIZIAYb4QgEBBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBm9aUh3qf0A+Qj
Q5LHetjoZOmewaUvRCAfuSnQZx2gOKr+JbOEbXuhoC+/oHxxwT4wVFL9x5Kb34Dk
Tasn7BQUmtn8mFIQ6ryiuXKkjnzitfVOA3bSd2jvfrYHOpvn4oxvLi01deqpohhP
LtfsF/gPEujCD5bm6u3s7i7kn5bFZC45b6yg3rcLeI9VSEm97Guza98HxaUrQA2W
5dGbcerz4xSXaNjbFd7MHBWqy0fh/i82yWSONxPr7RBgo5Gv/usLvZQgUBy9Qd02
eTB9efAr/JnF1SfqHAP++y35iWvY1kiWL56jSbvftrEBJdRfPhg3UP/8IkHLWi5X
5oBm53Ci
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsuvABHOU+94E1
9mnBiAExv/P7CKUcrtbbFk7ge0d9gP6lGGmPDWhegoawYihfnmZjB7ppK4I+vB2s
OdPGFl4/kMBo7SGGsosHBuMjXtqIxvg0YYawBl/BqzbSSwSIE/kocuj0sYxlfQ/b
BhmqxyHGPO5z1AuV31jILgMP9tv9fPYoJjZAJEkiQwEjUSo1LjM+OpzbF7C0wPhb
PLhS2v7sQgzkkO20WOEzJ5zBSH+9MSaM+DtBclaLLIB3NYE8LJEUtwhl/DDrA5yq
2dczOQAeawLOxVzQDo/mjtZOkg1igSz3UJCroIqodd4nVG6Wtb/ZXO/hy6scyPrt
uxNh6Dg3AgMBAAECggEAIFd0PtEZP3v6To9P5/O+PYFyfmt09vTpt+XqaO/MR/yS
MXlrsmRRSXjpHTeT1auEAkDdL3n9DiAM8kV1mJ5xkTdaP4s+/siJbYxllSbahkez
C6PDI0xeO5YCUsfHFm+e9GrnoYFpB0uuX1U6ExbsBQE9qKRocux55ClxW1jeggzH
yrCD46OeNw7+y49JOBUoacEG/j3jQAbp8s158u/qhtz7k/uRULFl7xI143PDph1x
zGOt2NVgOOrql5cMvGNz8DVp827OR+bONwuTBU+7CLynG7y1b2qPNtxVLTu7xKFF
fbl7n29IkcJ/6586re45uAgGQK/S4otAD8mYa/5boQKBgQDkV/aUZ4vWK+s/JfUs
rVwlK59bKxOD61HYlvUi/1cZS3Od3lVGKjQ5zccqCHZxKe5VCV4n9ekoiAP9iZlL
FWYesnt7IMi9bRdmBEbNoMJrqo8zDeMmqNDiDWMNULUiE5IDkLOzfY9ld/NbIAhR
5+wgnaKXZtZHQcjoXSDNo3iDEQKBgQDBpp9GTK7brSdhovDeGrloCEU/Pbb+1Eds
gPglLuz9tS2ZCqHEyHGUoY+o/dcFII8HolJopwhlb+OdJDFz76dAQkkGhkvNpL7V
9R/7I0szPvASa7+zrbKpP/fxGQxcGkb32mtZyqPDwxtljDUNk0Bgfs4jTwAUl6Io
vZazXMj2xwKBgQCVwQ7JU4OFSbZ16sn5rBSDmDFh1EVvPhSmbJKGilmwECjaP2dD
pggsZMWazoQHQY26HXOv13o7h8C+NdDgSj94IGwVW3HrsbEnyeQ5lZYMkIZr4E66
GvsrVcZBhE3W9GjNh8gjDlTOIjXq7H4oYWceGOP6UYp0nzNJGVKbKvutUQKBgCvC
1ZdzWMh31sBvq/LlIyTpSYzDC4mGuyU/99OfSRsESGufRXNMwK4P3IEZ6+9Srj/R
ZMIVjQYvRMaMGUjTzX3t/MamrpaoNh/vpux/y0ynWmUvSED4bbllpUgsmuhtX8A+
8ad27Y8dliFaj9qjfhbQUREVlzUQFysRvO6HdzqdAoGBAI0tlQsM7inOw6oKi/7W
waammR8wHOXamCHq16y54ZgvibpHuR+XefvVXPoPI153fIJ7nUF9Ib5p2MSRHcAv
FReuaQoLf3ARwOUgqMyJXFQ3Kc/6R7OzbQeagiLAsfA99ke3DxRQNMtgV2ryHHQy
xrRx/RmwjWzCqHjobHFQN2ry
-----END PRIVATE KEY-----
---
apiVersion: app.vproxy.io/v1alpha1
kind: CertKey
metadata:
name: crt-example2
spec:
pem:
certs:
- |
-----BEGIN CERTIFICATE-----
MIIDmDCCAoCgAwIBAgIJAIvTzI2C9kiPMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAkNOMQ8wDQYDVQQIDAZ2cHJveHkxDzANBgNVBAcMBnZwcm94eTEPMA0GA1UE
CgwGdnByb3h5MQ8wDQYDVQQLDAZ2cHJveHkxDzANBgNVBAMMBnZwcm94eTAeFw0y
MDAxMjIwNzEyMzZaFw0yMTAxMjEwNzEyMzZaMHAxCzAJBgNVBAYTAkNOMREwDwYD
VQQIDAhleGFtcGxlMjERMA8GA1UEBwwIZXhhbXBsZTIxETAPBgNVBAoMCGV4YW1w
bGUyMREwDwYDVQQLDAhleGFtcGxlMjEVMBMGA1UEAwwMZXhhbXBsZTIuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvFDT+wpzknlV3eLbh0TJqVKk
eJrfXcsPEvh/grxVUTLDhAMq6Cx1mwvx8AzVmG13KEYz7LCMvZ2RGKp7DVv477dc
DVf0hEVeEUPFtg9ZR3J6cSWI+u5RhF1cpexbavNRnIBUlc/gcvELywwkFAOE76GK
EwwlmnT8HvWh/9zQHTx1eZlJOH/KvDj3fBDj0SnWxiKZllsfQMGH+zDCdmnQvFpA
hK+2XcLWwsXjsjoAHwG89GOH1H/S3oQvZVhIH/ZOEKd37TbTYbETvYkF9HSoZLaZ
c1LtvaqMp23xOtJRhOjnVhej2YG85c9WgZY7XYA6NZbhEGK7SmJBFYtLN9yR7QID
AQABo0MwQTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAnBgNVHREEIDAegg4qLmV4
YW1wbGUyLmNvbYIMZXhhbXBsZTIuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQB+nCAp
UyHeThxqU+nZqni7HVFFeEsCQofn9/GY2sbhMQvLTYvxbp1rbLuPUitbykyYN29Q
S6X1nKZUh1rS4z71zDYeIRjGqZyUonUbT1gpbAf1Hwls4otw1ArrhohZMlIi3iSx
RGvKHsStaJHLTEKx/bQi0DwraCuQqeGyZDuu5iPI8FkfIv32OEv9+2yy2+S4R+9v
qKksWRk85F27eHqjzh/W90MYUIwh66t4kMWYO+tYIDv+F7HKh1IHtTGL4ciJ93GC
39c0DBFHeArOT6qWT8sGJ4zuE1FaQECDmxW8t1P302MO9sfp/axvlAe33ivxhZw2
DN806Xh8TaKnNtMv
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8UNP7CnOSeVXd
4tuHRMmpUqR4mt9dyw8S+H+CvFVRMsOEAyroLHWbC/HwDNWYbXcoRjPssIy9nZEY
qnsNW/jvt1wNV/SERV4RQ8W2D1lHcnpxJYj67lGEXVyl7Ftq81GcgFSVz+By8QvL
DCQUA4TvoYoTDCWadPwe9aH/3NAdPHV5mUk4f8q8OPd8EOPRKdbGIpmWWx9AwYf7
MMJ2adC8WkCEr7ZdwtbCxeOyOgAfAbz0Y4fUf9LehC9lWEgf9k4Qp3ftNtNhsRO9
iQX0dKhktplzUu29qoynbfE60lGE6OdWF6PZgbzlz1aBljtdgDo1luEQYrtKYkEV
i0s33JHtAgMBAAECggEAI6XRWvZRhmq9nHEzSVn2Kr1gMQxwOBsWUWsFCESKigJo
DHdlCepQoPcT53Mmg+JE6jTP44BQRBytuNOc05yTdR1qqYP634caFX6U0K/7IJFF
KGIImie++qWJwkcJzyccTdnlKS7euCN1LgywT7GS2qHjt1NXUvPOPjYVYo/0PXQ/
Box8aFNtTwR4ydcobIfd8mz8agBs9hFXEvW4O89Zvhmd8LXzlOzLxsyRBFabYa5p
wVD8MpJL3wIS5E1rPyKJkJw5f4o0WAU6kU1ZCkPAXGUkoLOjgzQsC0EutLK+rCCn
Q5luH66vvOtrzEnQPuS1B3+B/hfyNr7dxorjzS8NqQKBgQDulj32qJp2N8LvoH9C
Up5KNxi3QsaJp4VmfepccqIeQbhJuj1J7nvFg9CON+jWglAPOGv+3mbLmu9eKkVw
QzMMXbRXdmJTGmCGB0Ic9sq4JQMvaMZScN1TdQYvShIJ7pICmx3uopXodDlkHJ8P
t/FcD5TVdE5s4IvMdXKAS/50GwKBgQDKD1HaE8INMW38qr9FOGEnkGwsOKeho6uJ
hpXxb4uodjBN/QFgx0IZtvcnUaHaFALJWYWY+73aYE5+pBmpgRsQxRzucwoSiTtz
yIUuFd+JJwgJ4m3QhXjsciSHa+nE8tcXfNlmHhnbtyTEy/FsQvGL+ZcKtcAw5A7n
FIxNILeilwKBgQCxtAvQ5QGvHZc+/c7rajfl1SW+kajorHKKxSxC0Ur4uEB4AZRW
tZ9QnP5Af1oYM5VH0OF3QtVTv0GcZGW12QdzpXOGVXGkrhfInC1c/2A8Sa0WqbZV
fyUKXTZPEJ9g8GWmNTzVGhoHulFoxHygq4PE6wIS/n7PT2wwzCWNc4zBkwKBgD61
QG7QoPGdPIgkqZWe6K/xp1CWCJgmhk75AMHcH1iZzWX2th3F2SLH4K5ILFXUzgSV
DtwqjIIgT1wIK5qqYa7zrYXnF+ImytelDIf/687R2THQHsqPEbc3uVR5ziP8RXqZ
mZKSlu3UScn1jShPIk2RmSmOvGWv8VwPyXcKR1NjAoGBAL7W5ad0hCzDfsVC3Svt
exxIzv8VZCMHOfZyPx8fFKdK7J/SUlza2+pQDnb5Sga6MwRD58Mwur7i+9lacsXZ
wqhzAsShHV1AlU3CLtAGvymRbFCNagNqhPsTcpfX12JTE2Z17HroaX2A5kboOUwf
/IwUvd5lDOJZ9L0HiBETkXec
-----END PRIVATE KEY-----
---
apiVersion: v1
kind: ConfigMap
metadata:
name: util-scripts
data:
simple-http-server.sh: |
#!/bin/bash
port="$1"
body="$2"
if [ -z "$port" ]
then
echo "The first argument should be the port to listen on"
exit 1
fi
if [ -z "$body" ]
then
echo "The second argument should be the body to output"
exit 1
fi
if [ ! -z "$3" ]
then
echo "Too many arguments"
exit 1
fi
oLang=$LANG oLcAll=$LC_ALL
LANG=C LC_ALL=C
len=${#body}
LANG=$oLang LC_ALL=$oLcAll
len=$(($len + 2))
child=""
exit_func() {
if [ ! -z "$child" ]
then
echo "kill nc: $child"
kill -TERM "$child"
fi
exit 130
}
trap 'exit_func' SIGINT
while [ 1 ]
do
printf "HTTP/1.0 200 OK\r\nConnection: Close\r\nContent-Length: $len\r\n\r\n$body\r\n" | nc -l -p "$port" 1>/dev/null &
child=$!
wait "$child"
child=""
done
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-example-v1
spec:
replicas: 1
selector:
matchLabels:
app: example
version: v1
template:
metadata:
labels:
app: example
version: v1
spec:
containers:
- name: http
image: vproxyio/base:latest
imagePullPolicy: IfNotPresent
args:
- '/bin/bash'
- '/script/simple-http-server.sh'
- '80'
- 'example:v1'
ports:
- containerPort: 80
volumeMounts:
- name: script
mountPath: /script
volumes:
- name: script
configMap:
name: util-scripts
items:
- key: simple-http-server.sh
path: simple-http-server.sh
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-example-v2
spec:
replicas: 1
selector:
matchLabels:
app: example
version: v2
template:
metadata:
labels:
app: example
version: v2
spec:
containers:
- name: http
image: vproxyio/base:latest
imagePullPolicy: IfNotPresent
args:
- '/bin/bash'
- '/script/simple-http-server.sh'
- '80'
- 'example:v2'
ports:
- containerPort: 80
volumeMounts:
- name: script
mountPath: /script
volumes:
- name: script
configMap:
name: util-scripts
items:
- key: simple-http-server.sh
path: simple-http-server.sh
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-example2
spec:
replicas: 2
selector:
matchLabels:
app: example2
template:
metadata:
labels:
app: example2
spec:
containers:
- name: http
image: vproxyio/base:latest
imagePullPolicy: IfNotPresent
args:
- '/bin/bash'
- '/script/simple-http-server.sh'
- '80'
- 'example2'
ports:
- containerPort: 80
volumeMounts:
- name: script
mountPath: /script
volumes:
- name: script
configMap:
name: util-scripts
items:
- key: simple-http-server.sh
path: simple-http-server.sh