@bluedynamics/cdk8s-plone 0.1.43 → 0.1.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.jsii +25 -24
  2. package/API.md +6 -2
  3. package/README.md +3 -3
  4. package/documentation/sources/conf.py +55 -29
  5. package/documentation/sources/explanation/architecture.md +14 -16
  6. package/documentation/sources/explanation/cdk8s-workflow.md +66 -0
  7. package/documentation/sources/explanation/index.md +1 -27
  8. package/documentation/sources/how-to/backup-and-restore.md +107 -0
  9. package/documentation/sources/how-to/configure-env-and-secrets.md +184 -0
  10. package/documentation/sources/how-to/configure-ingress-tls.md +108 -0
  11. package/documentation/sources/how-to/configure-security-context.md +0 -5
  12. package/documentation/sources/how-to/deploy-blicca.md +8 -8
  13. package/documentation/sources/how-to/{deploy-production-volto.md → deploy-volto.md} +20 -25
  14. package/documentation/sources/how-to/deploy-with-httpcache.md +224 -0
  15. package/documentation/sources/how-to/deploy-with-vinyl-cache.md +0 -5
  16. package/documentation/sources/how-to/enable-prometheus-monitoring.md +4 -5
  17. package/documentation/sources/how-to/index.md +15 -8
  18. package/documentation/sources/how-to/scale-and-high-availability.md +122 -0
  19. package/documentation/sources/how-to/schedule-pods.md +0 -5
  20. package/documentation/sources/how-to/troubleshooting.md +113 -0
  21. package/documentation/sources/how-to/upgrade-and-rollout.md +89 -0
  22. package/documentation/sources/index.md +3 -11
  23. package/documentation/sources/reference/api/index.md +6 -4
  24. package/documentation/sources/reference/configuration-options.md +85 -516
  25. package/documentation/sources/reference/index.md +16 -43
  26. package/documentation/sources/tutorials/01-quick-start.md +1 -1
  27. package/documentation/sources/tutorials/index.md +7 -11
  28. package/examples/blicca/.env.example +3 -2
  29. package/examples/blicca/README.md +21 -24
  30. package/examples/blicca/__snapshots__/main.test.ts.snap +138 -345
  31. package/examples/blicca/main.test.ts +7 -0
  32. package/examples/blicca/main.ts +8 -7
  33. package/examples/blicca/postgres.plain.ts +115 -0
  34. package/examples/blicca/tsconfig.json +33 -0
  35. package/examples/{production-volto → volto}/.env.example +3 -2
  36. package/examples/{production-volto → volto}/README.md +20 -23
  37. package/examples/{production-volto → volto}/__snapshots__/main.test.ts.snap +139 -345
  38. package/examples/{production-volto → volto}/main.test.ts +7 -0
  39. package/examples/{production-volto → volto}/main.ts +8 -7
  40. package/examples/{production-volto → volto}/package.json +1 -1
  41. package/examples/volto/postgres.plain.ts +115 -0
  42. package/examples/volto/tsconfig.json +33 -0
  43. package/lib/httpcache.js +1 -1
  44. package/lib/imports/vinyl.bluedynamics.eu.d.ts +4011 -53
  45. package/lib/imports/vinyl.bluedynamics.eu.js +1786 -157
  46. package/lib/plone.js +1 -1
  47. package/lib/vinylcache.d.ts +3 -1
  48. package/lib/vinylcache.js +3 -2
  49. package/package.json +6 -6
  50. package/documentation/sources/_static/brand-theme.css +0 -685
  51. package/documentation/sources/_static/custom-icons.css +0 -123
  52. package/documentation/sources/_static/fonts/hack/Hack-Regular.woff2 +0 -0
  53. package/documentation/sources/_static/fonts/orbitron/Orbitron-Black.woff2 +0 -11
  54. package/documentation/sources/_static/fonts/orbitron/Orbitron-Bold.woff2 +0 -11
  55. package/documentation/sources/_static/fonts/orbitron/Orbitron-Regular.woff2 +0 -0
  56. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Bold.woff2 +0 -11
  57. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Medium.woff2 +0 -11
  58. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-Regular.woff2 +0 -11
  59. package/documentation/sources/_static/fonts/rajdhani/Rajdhani-SemiBold.woff2 +0 -11
  60. package/documentation/sources/_static/kup6s-icon-explanation.svg +0 -32
  61. package/documentation/sources/_static/kup6s-icon-howto.svg +0 -34
  62. package/documentation/sources/_static/kup6s-icon-reference.svg +0 -34
  63. package/documentation/sources/_static/kup6s-icon-tutorials.svg +0 -30
  64. package/documentation/sources/_static/logo-fix.js +0 -12
  65. package/documentation/sources/reference/api/.gitkeep +0 -1
  66. package/examples/blicca/postgres.bitnami.ts +0 -49
  67. package/examples/production-volto/postgres.bitnami.ts +0 -49
  68. /package/documentation/sources/_static/{kup6s-icon-plone.svg → logo.svg} +0 -0
  69. /package/examples/{production-volto → volto}/cdk8s.yaml +0 -0
  70. /package/examples/{production-volto → volto}/config/varnish.tpl.vcl +0 -0
  71. /package/examples/{production-volto → volto}/ingress.ts +0 -0
  72. /package/examples/{production-volto → volto}/jest.config.js +0 -0
  73. /package/examples/{production-volto → volto}/postgres.cloudnativepg.ts +0 -0
@@ -2,145 +2,22 @@
2
2
 
3
3
  exports[`Production Volto Example Synthesizes correctly 1`] = `
4
4
  [
5
- {
6
- "apiVersion": "networking.k8s.io/v1",
7
- "kind": "NetworkPolicy",
8
- "metadata": {
9
- "labels": {
10
- "app.kubernetes.io/component": "primary",
11
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
12
- "app.kubernetes.io/managed-by": "Helm",
13
- "app.kubernetes.io/name": "postgresql",
14
- "app.kubernetes.io/part-of": "plone",
15
- "app.kubernetes.io/version": "18.1.0",
16
- "helm.sh/chart": "postgresql-18.1.10",
17
- },
18
- "name": "test-chart-db-c80fdf3b-postgresql",
19
- "namespace": "plone",
20
- },
21
- "spec": {
22
- "egress": [
23
- {},
24
- ],
25
- "ingress": [
26
- {
27
- "ports": [
28
- {
29
- "port": 5432,
30
- },
31
- ],
32
- },
33
- ],
34
- "podSelector": {
35
- "matchLabels": {
36
- "app.kubernetes.io/component": "primary",
37
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
38
- "app.kubernetes.io/name": "postgresql",
39
- },
40
- },
41
- "policyTypes": [
42
- "Ingress",
43
- "Egress",
44
- ],
45
- },
46
- },
47
- {
48
- "apiVersion": "policy/v1",
49
- "kind": "PodDisruptionBudget",
50
- "metadata": {
51
- "labels": {
52
- "app.kubernetes.io/component": "primary",
53
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
54
- "app.kubernetes.io/managed-by": "Helm",
55
- "app.kubernetes.io/name": "postgresql",
56
- "app.kubernetes.io/part-of": "plone",
57
- "app.kubernetes.io/version": "18.1.0",
58
- "helm.sh/chart": "postgresql-18.1.10",
59
- },
60
- "name": "test-chart-db-c80fdf3b-postgresql",
61
- "namespace": "plone",
62
- },
63
- "spec": {
64
- "maxUnavailable": 1,
65
- "selector": {
66
- "matchLabels": {
67
- "app.kubernetes.io/component": "primary",
68
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
69
- "app.kubernetes.io/name": "postgresql",
70
- },
71
- },
72
- },
73
- },
74
5
  {
75
6
  "apiVersion": "v1",
76
- "automountServiceAccountToken": false,
77
- "kind": "ServiceAccount",
78
- "metadata": {
79
- "labels": {
80
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
81
- "app.kubernetes.io/managed-by": "Helm",
82
- "app.kubernetes.io/name": "postgresql",
83
- "app.kubernetes.io/part-of": "plone",
84
- "app.kubernetes.io/version": "18.1.0",
85
- "helm.sh/chart": "postgresql-18.1.10",
86
- },
87
- "name": "test-chart-db-c80fdf3b-postgresql",
88
- "namespace": "plone",
89
- },
90
- },
91
- {
92
- "apiVersion": "v1",
93
- "data": {
94
- "password": "YWRtaW5AcGxvbmU=",
95
- "postgres-password": "MVpZcjN6Mmg3OA==",
96
- },
97
7
  "kind": "Secret",
98
8
  "metadata": {
99
9
  "labels": {
100
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
101
- "app.kubernetes.io/managed-by": "Helm",
102
- "app.kubernetes.io/name": "postgresql",
10
+ "app.kubernetes.io/component": "database",
11
+ "app.kubernetes.io/instance": "postgresql",
12
+ "app.kubernetes.io/name": "plone-postgresql",
103
13
  "app.kubernetes.io/part-of": "plone",
104
- "app.kubernetes.io/version": "18.1.0",
105
- "helm.sh/chart": "postgresql-18.1.10",
106
14
  },
107
- "name": "test-chart-db-c80fdf3b-postgresql",
108
- "namespace": "plone",
15
+ "name": "test-chart-db-secret-c8d5f897",
109
16
  },
110
- "type": "Opaque",
111
- },
112
- {
113
- "apiVersion": "v1",
114
- "kind": "Service",
115
- "metadata": {
116
- "labels": {
117
- "app.kubernetes.io/component": "primary",
118
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
119
- "app.kubernetes.io/managed-by": "Helm",
120
- "app.kubernetes.io/name": "postgresql",
121
- "app.kubernetes.io/part-of": "plone",
122
- "app.kubernetes.io/version": "18.1.0",
123
- "helm.sh/chart": "postgresql-18.1.10",
124
- },
125
- "name": "test-chart-db-c80fdf3b-postgresql-hl",
126
- "namespace": "plone",
127
- },
128
- "spec": {
129
- "clusterIP": "None",
130
- "ports": [
131
- {
132
- "name": "tcp-postgresql",
133
- "port": 5432,
134
- "targetPort": "tcp-postgresql",
135
- },
136
- ],
137
- "publishNotReadyAddresses": true,
138
- "selector": {
139
- "app.kubernetes.io/component": "primary",
140
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
141
- "app.kubernetes.io/name": "postgresql",
142
- },
143
- "type": "ClusterIP",
17
+ "stringData": {
18
+ "database": "plone",
19
+ "password": "admin@plone",
20
+ "username": "plone",
144
21
  },
145
22
  },
146
23
  {
@@ -148,31 +25,27 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
148
25
  "kind": "Service",
149
26
  "metadata": {
150
27
  "labels": {
151
- "app.kubernetes.io/component": "primary",
152
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
153
- "app.kubernetes.io/managed-by": "Helm",
154
- "app.kubernetes.io/name": "postgresql",
28
+ "app.kubernetes.io/component": "database",
29
+ "app.kubernetes.io/instance": "postgresql",
30
+ "app.kubernetes.io/name": "plone-postgresql",
155
31
  "app.kubernetes.io/part-of": "plone",
156
- "app.kubernetes.io/version": "18.1.0",
157
- "helm.sh/chart": "postgresql-18.1.10",
158
32
  },
159
- "name": "test-chart-db-c80fdf3b-postgresql",
160
- "namespace": "plone",
33
+ "name": "test-chart-db-service-c87c80f5",
161
34
  },
162
35
  "spec": {
163
36
  "ports": [
164
37
  {
165
- "name": "tcp-postgresql",
38
+ "name": "postgresql",
166
39
  "port": 5432,
167
- "targetPort": "tcp-postgresql",
40
+ "targetPort": 5432,
168
41
  },
169
42
  ],
170
43
  "selector": {
171
- "app.kubernetes.io/component": "primary",
172
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
173
- "app.kubernetes.io/name": "postgresql",
44
+ "app.kubernetes.io/component": "database",
45
+ "app.kubernetes.io/instance": "postgresql",
46
+ "app.kubernetes.io/name": "plone-postgresql",
47
+ "app.kubernetes.io/part-of": "plone",
174
48
  },
175
- "type": "ClusterIP",
176
49
  },
177
50
  },
178
51
  {
@@ -180,271 +53,137 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
180
53
  "kind": "StatefulSet",
181
54
  "metadata": {
182
55
  "labels": {
183
- "app.kubernetes.io/component": "primary",
184
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
185
- "app.kubernetes.io/managed-by": "Helm",
186
- "app.kubernetes.io/name": "postgresql",
56
+ "app.kubernetes.io/component": "database",
57
+ "app.kubernetes.io/instance": "postgresql",
58
+ "app.kubernetes.io/name": "plone-postgresql",
187
59
  "app.kubernetes.io/part-of": "plone",
188
- "app.kubernetes.io/version": "18.1.0",
189
- "helm.sh/chart": "postgresql-18.1.10",
190
60
  },
191
- "name": "test-chart-db-c80fdf3b-postgresql",
192
- "namespace": "plone",
61
+ "name": "test-chart-db-c879c687",
193
62
  },
194
63
  "spec": {
195
64
  "replicas": 1,
196
65
  "selector": {
197
66
  "matchLabels": {
198
- "app.kubernetes.io/component": "primary",
199
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
200
- "app.kubernetes.io/name": "postgresql",
67
+ "app.kubernetes.io/component": "database",
68
+ "app.kubernetes.io/instance": "postgresql",
69
+ "app.kubernetes.io/name": "plone-postgresql",
70
+ "app.kubernetes.io/part-of": "plone",
201
71
  },
202
72
  },
203
- "serviceName": "test-chart-db-c80fdf3b-postgresql-hl",
73
+ "serviceName": "test-chart-db-service-c87c80f5",
204
74
  "template": {
205
75
  "metadata": {
206
76
  "labels": {
207
- "app.kubernetes.io/component": "primary",
208
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
209
- "app.kubernetes.io/managed-by": "Helm",
210
- "app.kubernetes.io/name": "postgresql",
77
+ "app.kubernetes.io/component": "database",
78
+ "app.kubernetes.io/instance": "postgresql",
79
+ "app.kubernetes.io/name": "plone-postgresql",
211
80
  "app.kubernetes.io/part-of": "plone",
212
- "app.kubernetes.io/version": "18.1.0",
213
- "helm.sh/chart": "postgresql-18.1.10",
214
81
  },
215
- "name": "test-chart-db-c80fdf3b-postgresql",
216
82
  },
217
83
  "spec": {
218
- "affinity": {
219
- "podAntiAffinity": {
220
- "preferredDuringSchedulingIgnoredDuringExecution": [
221
- {
222
- "podAffinityTerm": {
223
- "labelSelector": {
224
- "matchLabels": {
225
- "app.kubernetes.io/component": "primary",
226
- "app.kubernetes.io/instance": "test-chart-db-c80fdf3b",
227
- "app.kubernetes.io/name": "postgresql",
228
- },
229
- },
230
- "topologyKey": "kubernetes.io/hostname",
231
- },
232
- "weight": 1,
233
- },
234
- ],
235
- },
236
- },
237
- "automountServiceAccountToken": false,
238
84
  "containers": [
239
85
  {
240
86
  "env": [
241
- {
242
- "name": "BITNAMI_DEBUG",
243
- "value": "false",
244
- },
245
- {
246
- "name": "POSTGRESQL_PORT_NUMBER",
247
- "value": "5432",
248
- },
249
- {
250
- "name": "POSTGRESQL_VOLUME_DIR",
251
- "value": "/bitnami/postgresql",
252
- },
253
- {
254
- "name": "OPENSSL_FIPS",
255
- "value": "yes",
256
- },
257
- {
258
- "name": "PGDATA",
259
- "value": "/bitnami/postgresql/data",
260
- },
261
87
  {
262
88
  "name": "POSTGRES_USER",
263
- "value": "plone",
264
- },
265
- {
266
- "name": "POSTGRES_PASSWORD_FILE",
267
- "value": "/opt/bitnami/postgresql/secrets/password",
268
- },
269
- {
270
- "name": "POSTGRES_POSTGRES_PASSWORD_FILE",
271
- "value": "/opt/bitnami/postgresql/secrets/postgres-password",
272
- },
273
- {
274
- "name": "POSTGRES_DATABASE",
275
- "value": "plone",
276
- },
277
- {
278
- "name": "POSTGRESQL_ENABLE_LDAP",
279
- "value": "no",
280
- },
281
- {
282
- "name": "POSTGRESQL_ENABLE_TLS",
283
- "value": "no",
284
- },
285
- {
286
- "name": "POSTGRESQL_LOG_HOSTNAME",
287
- "value": "false",
288
- },
289
- {
290
- "name": "POSTGRESQL_LOG_CONNECTIONS",
291
- "value": "false",
292
- },
293
- {
294
- "name": "POSTGRESQL_LOG_DISCONNECTIONS",
295
- "value": "false",
89
+ "valueFrom": {
90
+ "secretKeyRef": {
91
+ "key": "username",
92
+ "name": "test-chart-db-secret-c8d5f897",
93
+ },
94
+ },
296
95
  },
297
96
  {
298
- "name": "POSTGRESQL_PGAUDIT_LOG_CATALOG",
299
- "value": "off",
97
+ "name": "POSTGRES_PASSWORD",
98
+ "valueFrom": {
99
+ "secretKeyRef": {
100
+ "key": "password",
101
+ "name": "test-chart-db-secret-c8d5f897",
102
+ },
103
+ },
300
104
  },
301
105
  {
302
- "name": "POSTGRESQL_CLIENT_MIN_MESSAGES",
303
- "value": "error",
106
+ "name": "POSTGRES_DB",
107
+ "valueFrom": {
108
+ "secretKeyRef": {
109
+ "key": "database",
110
+ "name": "test-chart-db-secret-c8d5f897",
111
+ },
112
+ },
304
113
  },
305
114
  {
306
- "name": "POSTGRESQL_SHARED_PRELOAD_LIBRARIES",
307
- "value": "pgaudit",
115
+ "name": "PGDATA",
116
+ "value": "/var/lib/postgresql/data/pgdata",
308
117
  },
309
118
  ],
310
- "image": "registry-1.docker.io/bitnami/postgresql:latest",
311
- "imagePullPolicy": "IfNotPresent",
119
+ "image": "postgres:18",
312
120
  "livenessProbe": {
313
121
  "exec": {
314
122
  "command": [
315
- "/bin/sh",
316
- "-c",
317
- "exec pg_isready -U "plone" -d "dbname=plone" -h 127.0.0.1 -p 5432",
123
+ "pg_isready",
124
+ "-U",
125
+ "plone",
126
+ "-d",
127
+ "plone",
318
128
  ],
319
129
  },
320
- "failureThreshold": 6,
321
130
  "initialDelaySeconds": 30,
322
- "periodSeconds": 10,
323
- "successThreshold": 1,
131
+ "periodSeconds": 15,
324
132
  "timeoutSeconds": 5,
325
133
  },
326
134
  "name": "postgresql",
327
135
  "ports": [
328
136
  {
329
137
  "containerPort": 5432,
330
- "name": "tcp-postgresql",
138
+ "name": "postgresql",
331
139
  },
332
140
  ],
333
141
  "readinessProbe": {
334
142
  "exec": {
335
143
  "command": [
336
- "/bin/sh",
337
- "-c",
338
- "-e",
339
- "exec pg_isready -U "plone" -d "dbname=plone" -h 127.0.0.1 -p 5432
340
- [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ]
341
- ",
144
+ "pg_isready",
145
+ "-U",
146
+ "plone",
147
+ "-d",
148
+ "plone",
342
149
  ],
343
150
  },
344
- "failureThreshold": 6,
345
- "initialDelaySeconds": 5,
151
+ "initialDelaySeconds": 10,
346
152
  "periodSeconds": 10,
347
- "successThreshold": 1,
348
153
  "timeoutSeconds": 5,
349
154
  },
350
155
  "resources": {
351
156
  "limits": {
352
- "cpu": "150m",
353
- "ephemeral-storage": "2Gi",
354
- "memory": "192Mi",
157
+ "cpu": "1",
158
+ "memory": "1Gi",
355
159
  },
356
160
  "requests": {
357
161
  "cpu": "100m",
358
- "ephemeral-storage": "50Mi",
359
- "memory": "128Mi",
360
- },
361
- },
362
- "securityContext": {
363
- "allowPrivilegeEscalation": false,
364
- "capabilities": {
365
- "drop": [
366
- "ALL",
367
- ],
368
- },
369
- "privileged": false,
370
- "readOnlyRootFilesystem": true,
371
- "runAsGroup": 1001,
372
- "runAsNonRoot": true,
373
- "runAsUser": 1001,
374
- "seLinuxOptions": {},
375
- "seccompProfile": {
376
- "type": "RuntimeDefault",
162
+ "memory": "256Mi",
377
163
  },
378
164
  },
379
165
  "volumeMounts": [
380
166
  {
381
- "mountPath": "/tmp",
382
- "name": "empty-dir",
383
- "subPath": "tmp-dir",
384
- },
385
- {
386
- "mountPath": "/opt/bitnami/postgresql/conf",
387
- "name": "empty-dir",
388
- "subPath": "app-conf-dir",
389
- },
390
- {
391
- "mountPath": "/opt/bitnami/postgresql/tmp",
392
- "name": "empty-dir",
393
- "subPath": "app-tmp-dir",
394
- },
395
- {
396
- "mountPath": "/opt/bitnami/postgresql/secrets/",
397
- "name": "postgresql-password",
398
- },
399
- {
400
- "mountPath": "/dev/shm",
401
- "name": "dshm",
402
- },
403
- {
404
- "mountPath": "/bitnami/postgresql",
167
+ "mountPath": "/var/lib/postgresql/data",
405
168
  "name": "data",
406
169
  },
407
170
  ],
408
171
  },
409
172
  ],
410
- "hostIPC": false,
411
- "hostNetwork": false,
412
173
  "securityContext": {
413
- "fsGroup": 1001,
414
- "fsGroupChangePolicy": "Always",
415
- "supplementalGroups": [],
416
- "sysctls": [],
174
+ "fsGroup": 999,
417
175
  },
418
- "serviceAccountName": "test-chart-db-c80fdf3b-postgresql",
419
- "volumes": [
420
- {
421
- "emptyDir": {},
422
- "name": "empty-dir",
423
- },
424
- {
425
- "name": "postgresql-password",
426
- "secret": {
427
- "secretName": "test-chart-db-c80fdf3b-postgresql",
428
- },
429
- },
430
- {
431
- "emptyDir": {
432
- "medium": "Memory",
433
- },
434
- "name": "dshm",
435
- },
436
- ],
437
176
  },
438
177
  },
439
- "updateStrategy": {
440
- "rollingUpdate": {},
441
- "type": "RollingUpdate",
442
- },
443
178
  "volumeClaimTemplates": [
444
179
  {
445
- "apiVersion": "v1",
446
- "kind": "PersistentVolumeClaim",
447
180
  "metadata": {
181
+ "labels": {
182
+ "app.kubernetes.io/component": "database",
183
+ "app.kubernetes.io/instance": "postgresql",
184
+ "app.kubernetes.io/name": "plone-postgresql",
185
+ "app.kubernetes.io/part-of": "plone",
186
+ },
448
187
  "name": "data",
449
188
  },
450
189
  "spec": {
@@ -453,7 +192,7 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
453
192
  ],
454
193
  "resources": {
455
194
  "requests": {
456
- "storage": "8Gi",
195
+ "storage": "10Gi",
457
196
  },
458
197
  },
459
198
  },
@@ -495,14 +234,19 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
495
234
  "env": [
496
235
  {
497
236
  "name": "SECRET_POSTGRESQL_USERNAME",
498
- "value": "plone",
237
+ "valueFrom": {
238
+ "secretKeyRef": {
239
+ "key": "username",
240
+ "name": "test-chart-db-secret-c8d5f897",
241
+ },
242
+ },
499
243
  },
500
244
  {
501
245
  "name": "SECRET_POSTGRESQL_PASSWORD",
502
246
  "valueFrom": {
503
247
  "secretKeyRef": {
504
248
  "key": "password",
505
- "name": "test-chart-db-c80fdf3b-postgresql",
249
+ "name": "test-chart-db-secret-c8d5f897",
506
250
  },
507
251
  },
508
252
  },
@@ -528,7 +272,7 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
528
272
  },
529
273
  {
530
274
  "name": "INSTANCE_db_relstorage_postgresql_dsn",
531
- "value": "host='test-chart-db-c80fdf3b-postgresql' dbname='plone' user='$(SECRET_POSTGRESQL_USERNAME)' password='$(SECRET_POSTGRESQL_PASSWORD)'",
275
+ "value": "host='test-chart-db-service-c87c80f5' dbname='plone' user='$(SECRET_POSTGRESQL_USERNAME)' password='$(SECRET_POSTGRESQL_PASSWORD)'",
532
276
  },
533
277
  {
534
278
  "name": "INSTANCE_db_relstorage_cache_local_mb",
@@ -584,6 +328,7 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
584
328
  "app": "test-chart-plone-backend-c8848738",
585
329
  },
586
330
  },
331
+ "unhealthyPodEvictionPolicy": "AlwaysAllow",
587
332
  },
588
333
  },
589
334
  {
@@ -686,6 +431,7 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
686
431
  "app": "test-chart-plone-frontend-c8e96701",
687
432
  },
688
433
  },
434
+ "unhealthyPodEvictionPolicy": "AlwaysAllow",
689
435
  },
690
436
  },
691
437
  {
@@ -753,7 +499,7 @@ exports[`Production Volto Example Synthesizes correctly 1`] = `
753
499
  {
754
500
  "apiVersion": "v1",
755
501
  "data": {
756
- "secret": "T0JuOUVNTGhreHlUNEFPa2s1azZ6a2pEd2NlOWxyeHo=",
502
+ "secret": "<redacted-for-snapshot>",
757
503
  },
758
504
  "kind": "Secret",
759
505
  "metadata": {
@@ -1075,6 +821,53 @@ sub vcl_deliver {
1075
821
  "name": "test-chart-httpcache-c89dd29d-kube-httpcache",
1076
822
  },
1077
823
  },
824
+ {
825
+ "apiVersion": "rbac.authorization.k8s.io/v1",
826
+ "kind": "Role",
827
+ "metadata": {
828
+ "name": "test-chart-httpcache-c89dd29d-kube-httpcache",
829
+ },
830
+ "rules": [
831
+ {
832
+ "apiGroups": [
833
+ "",
834
+ ],
835
+ "resources": [
836
+ "endpoints",
837
+ "pods",
838
+ ],
839
+ "verbs": [
840
+ "watch",
841
+ "get",
842
+ ],
843
+ },
844
+ ],
845
+ },
846
+ {
847
+ "apiVersion": "rbac.authorization.k8s.io/v1",
848
+ "kind": "RoleBinding",
849
+ "metadata": {
850
+ "labels": {
851
+ "app.kubernetes.io/instance": "test-chart-httpcache-c89dd29d",
852
+ "app.kubernetes.io/managed-by": "Helm",
853
+ "app.kubernetes.io/name": "kube-httpcache",
854
+ "app.kubernetes.io/version": "v0.9.1",
855
+ "helm.sh/chart": "kube-httpcache-0.9.1",
856
+ },
857
+ "name": "test-chart-httpcache-c89dd29d-kube-httpcache",
858
+ },
859
+ "roleRef": {
860
+ "apiGroup": "rbac.authorization.k8s.io",
861
+ "kind": "Role",
862
+ "name": "test-chart-httpcache-c89dd29d-kube-httpcache",
863
+ },
864
+ "subjects": [
865
+ {
866
+ "kind": "ServiceAccount",
867
+ "name": "test-chart-httpcache-c89dd29d-kube-httpcache",
868
+ },
869
+ ],
870
+ },
1078
871
  {
1079
872
  "apiVersion": "v1",
1080
873
  "kind": "Service",
@@ -1155,13 +948,14 @@ sub vcl_deliver {
1155
948
  "-frontend-watch=false",
1156
949
  "-frontend-namespace=$(NAMESPACE)",
1157
950
  "-frontend-service=test-chart-httpcache-c89dd29d-kube-httpcache",
1158
- "-backend-watch=false",
951
+ "-backend-watch",
1159
952
  "-backend-namespace=$(NAMESPACE)",
1160
- "-backend-service=backend-service",
953
+ "-backend-service=test-chart-plone-backend-service-c81ad65d",
1161
954
  "-varnish-secret-file=/etc/varnish/k8s-secret/secret",
1162
955
  "-varnish-vcl-template=/etc/varnish/tmpl/default.vcl.tmpl",
1163
956
  "-varnish-storage=malloc,128M",
1164
957
  "-varnish-vcl-template-poll",
958
+ "-backend-portname=backend-http",
1165
959
  ],
1166
960
  "env": [
1167
961
  {
@@ -6,6 +6,13 @@ describe('Production Volto Example', () => {
6
6
  const app = Testing.app();
7
7
  const chart = new ExampleChart(app, 'test-chart');
8
8
  const results = Testing.synth(chart);
9
+ // kube-httpcache generates a random Varnish admin secret on each synth.
10
+ // Redact it so the snapshot stays deterministic.
11
+ for (const obj of results) {
12
+ if (obj.kind === 'Secret' && obj.data && typeof obj.data.secret === 'string') {
13
+ obj.data.secret = '<redacted-for-snapshot>';
14
+ }
15
+ }
9
16
  expect(results).toMatchSnapshot();
10
17
  });
11
18
  });