Merge pull request #97 from jk-cluster/fix/rallly-nextjs-cache-emptydir

rallly: emptyDir für den Next.js-Cache (5.0.0+up4.12.3)
This commit is contained in:
jklein authored and GitHub committed 2026-08-23 17:36:08 +00:00
commit 399a68fd31
3 files changed
+41 -2

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/lukevella/rallly/main/apps/landing/publi
type: application
version: 4.0.0+up4.12.3
version: 5.0.0+up4.12.3
appVersion: "4.12.3"
maintainers:
+14
View File
@@ -150,4 +150,18 @@ spec:
{{- include "rallly.resources" .Values.rallly.resources | nindent 12 }}
securityContext:
{{- toYaml .Values.rallly.securityContext.container | nindent 12 }}
volumeMounts:
# Next.js writes prerendered pages and optimized images into its
# cache directory; with a read-only root filesystem this must be a
# writable volume (see rallly.cache in values.yaml).
- name: next-cache
mountPath: {{ required "A cache path must be provided (rallly.cache.path)" .Values.rallly.cache.path | quote }}
volumes:
- name: next-cache
{{- if .Values.rallly.cache.sizeLimit }}
emptyDir:
sizeLimit: {{ .Values.rallly.cache.sizeLimit | quote }}
{{- else }}
emptyDir: {}
{{- end }}
restartPolicy: Always
+26 -1
View File
@@ -23,6 +23,27 @@ rallly:
pictureClaimPath: 'picture'
emailClaimPath: 'email'
nameClaimPath: 'name'
# Next.js writes its cache below the app directory (prerendered/ISR pages and
# the optimized images of /_next/image). The container runs as uid 20000
# while /app belongs to the image's own "nextjs" user, so that path is not
# writable for the app even without readOnlyRootFilesystem — the chart mounts
# a writable volume over it. The pod's fsGroup (1000) is what makes the
# mounted volume group-writable for the container.
#
# Deliberately an emptyDir, not a PVC: the cache is volatile. After every pod
# restart it starts out empty and Next.js rebuilds it on demand, which costs
# a little time on the first request after a restart. That is correct for a
# cache — its entries are derived data tied to the build id of the image, so
# a persistent volume would only carry stale entries across app updates.
cache:
# Mount path of the cache volume. Matches the Next.js cache directory of
# the upstream image; only needs changing if the image layout changes.
path: /app/apps/web/.next/cache
# Optional upper bound for the emptyDir, e.g. 512Mi. Unset means the volume
# is only bounded by the container's ephemeral-storage limit (computed as
# limitFactor x request, see resources below) — note that emptyDir usage
# counts against that limit, and exceeding either bound evicts the pod.
sizeLimit: null
securityContext:
pod:
runAsNonRoot: true
@@ -34,10 +55,14 @@ rallly:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
# No capabilities are added: the app is a plain Node process listening on
# the unprivileged port 3000, verified to run with all capabilities
# dropped. Do not reintroduce an "add:" key here — an empty list item
# under it renders as a null entry, which is what Trivy reported as
# AVD-KSV-0022 for the older chart version deployed in the cluster (#84).
capabilities:
drop:
- ALL
add: []
# Extra environment variables, appended to the ones the chart always sets.
# Values are rendered through tpl; value, secretKeyRef and configMapKeyRef
# forms are supported.