You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: backend/openshift.deploy.yml
+27-2Lines changed: 27 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,11 @@ parameters:
13
13
- name: IMAGE_TAG
14
14
description: Image tag to use
15
15
required: true
16
+
# PR deploys pass the immutable head SHA as IMAGE_TAG, so every push changes
17
+
# the pod spec and forces a rollout (the mutable PR-number tag would leave
18
+
# `oc apply` seeing an unchanged Deployment and keep serving the stale image
19
+
# despite imagePullPolicy: Always). Test deploys (merge.yml) use the
20
+
# PR-number tag, which is unique per merge, so the spec changes there too.
16
21
- name: REGISTRY
17
22
description: Container registry to import from
18
23
value: ghcr.io
@@ -31,7 +36,7 @@ parameters:
31
36
- name: CPU_REQUEST
32
37
value: "30m"
33
38
- name: MEMORY_REQUEST
34
-
value: "384Mi"
39
+
value: "256Mi"
35
40
- name: MEMORY_LIMIT
36
41
description: Container memory limit; the JVM heap sizes itself from this cgroup limit via MaxRAMPercentage (see backend/Dockerfile). Raised for the embedded JasperReports 7 engine (Batik/OpenPDF/fonts add classpath + metaspace + native AWT footprint) per AD-16 "size the reporting path's pod CPU/Mem".
37
42
value: "1Gi"
@@ -137,6 +142,11 @@ objects:
137
142
value: "true"
138
143
- name: ILCR_DATASOURCE_ENABLED
139
144
value: ${ILCR_DATASOURCE_ENABLED}
145
+
# Story 29.2 — point the Jasper report virtualizer's swap file at the dedicated
146
+
# DISK-backed ephemeral volume below, NOT java.io.tmpdir (/tmp here is a Memory-backed
147
+
# emptyDir, so spilling there would stay in RAM and defeat the heap relief).
148
+
- name: ILCR_REPORTING_SWAP_DIR
149
+
value: /var/tmp/report-swap
140
150
- name: ORACLEDB_HOST
141
151
valueFrom:
142
152
secretKeyRef:
@@ -182,9 +192,13 @@ objects:
182
192
requests:
183
193
cpu: ${CPU_REQUEST}
184
194
memory: ${MEMORY_REQUEST}
185
-
ephemeral-storage: "200Mi"
195
+
ephemeral-storage: "256Mi"
186
196
limits:
187
197
memory: ${MEMORY_LIMIT}
198
+
# Bound total ephemeral (node) storage: base image scratch + the 512Mi report-swap
199
+
# volume below (Story 29.2). A print that would exceed this is evicted — a bounded,
200
+
# observable failure — rather than filling node disk.
201
+
ephemeral-storage: "1Gi"
188
202
securityContext:
189
203
allowPrivilegeEscalation: false
190
204
runAsNonRoot: true
@@ -196,6 +210,8 @@ objects:
196
210
volumeMounts:
197
211
- name: tmp
198
212
mountPath: /tmp
213
+
- name: report-swap
214
+
mountPath: /var/tmp/report-swap
199
215
- name: api-cert
200
216
mountPath: /cert
201
217
startupProbe:
@@ -221,6 +237,15 @@ objects:
221
237
emptyDir:
222
238
medium: Memory
223
239
sizeLimit: 256Mi
240
+
# Story 29.2 — dedicated DISK-backed ephemeral volume for the Jasper report swap file.
241
+
# Deliberately NOT medium: Memory (unlike /tmp above): spilling large report page objects
242
+
# here relieves the JVM heap onto node ephemeral storage instead of RAM, which is the whole
243
+
# point of the virtualizer. Bounded by sizeLimit so a runaway print is evicted (a bounded,
244
+
# observable failure) rather than silently consuming node disk. Writable despite the
245
+
# read-only root filesystem because it is a mounted volume.
246
+
- name: report-swap
247
+
emptyDir:
248
+
sizeLimit: 512Mi
224
249
# Oracle keystore written by the init container, read by the app
0 commit comments