Merge pull request #148 from jk-cluster/feat/seccomp-runtime-default-batch1

Acht Charts: seccompProfile RuntimeDefault im Pod-Context und qualifizierte Images
This commit is contained in:
jklein authored and GitHub committed 2026-08-24 11:31:33 +00:00
commit 178d4e9a6a
28 files changed
+109 -22

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ name: calibre-web-automated
description: A Helm chart to deploy calibere-web-automated
icon: https://raw.githubusercontent.com/crocodilestick/Calibre-Web-Automated/main/README_images/cwa-logo-round-dark.png
version: 5.0.0+upv4.0.6
version: 6.0.0+upv4.0.6
appVersion: v4.0.6
maintainers:
+2 -1
View File
@@ -230,7 +230,8 @@ default probe needs no further context.
{{- $given := (fromYaml (include "calibre-web-automated.subBlock" (dict "block" . "key" "pod" "path" "cwa.securityContext"))).value -}}
{{- $defaults := dict
"fsGroup" 1000
"fsGroupChangePolicy" "Always" -}}
"fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "calibre-web-automated.defaultedDict" (dict "defaults" $defaults "given" $given "path" "cwa.securityContext.pod") -}}
{{- end -}}
+14
View File
@@ -65,6 +65,20 @@ cwa:
pod:
fsGroup: 1000
fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
#
# It is orthogonal to the readOnlyRootFilesystem: false deviation above:
# the filter restricts syscalls, not mount flags, so the s6 init keeps
# its writable root filesystem and the PUID/PGID remapping to uid 1000
# stays active. Verified against v4.0.6 under the filter.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: false
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://avatars.githubusercontent.com/u/988985
type: application
version: 3.0.0+up1.46.4
version: 4.0.0+up1.46.4
appVersion: "1.46.4"
maintainers:
+2 -1
View File
@@ -224,7 +224,8 @@ the base image.
"runAsUser" 10000
"runAsGroup" 10000
"fsGroup" 10000
"fsGroupChangePolicy" "Always" -}}
"fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "minecraft-router.defaultedDict" (dict "defaults" $defaults "given" $given "path" "server.securityContext.pod") -}}
{{- end -}}
@@ -27,7 +27,7 @@ spec:
{{- include "minecraft-router.podSecurityContext" .Values.server.securityContext | nindent 8 }}
containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
image: "itzg/mc-router:{{ .Chart.AppVersion }}"
image: "docker.io/itzg/mc-router:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent
args:
- "--port"
+9
View File
@@ -108,6 +108,15 @@ server:
# Keeps the mounted routing-config ConfigMap readable for that gid.
fsGroup: 10000
fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
# No deviation needed: the image ships nothing but the static binary and
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/outline/outline/main/public/images/icon-
type: application
version: 6.0.0+up1.9.2
version: 7.0.0+up1.9.2
appVersion: 1.9.2
maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ there is no dependency-free alternative to fall back to.
"runAsUser" 1001
"runAsGroup" 1001
"fsGroup" 1001
"fsGroupChangePolicy" "Always" -}}
"fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "outline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "outline.securityContext.pod") -}}
{{- end -}}
+1 -1
View File
@@ -21,7 +21,7 @@ spec:
{{- include "outline.podSecurityContext" .Values.outline.securityContext | nindent 8 }}
containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs
image: "outlinewiki/outline:{{ .Chart.AppVersion }}"
image: "docker.io/outlinewiki/outline:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent
env:
- name: PORT
+9
View File
@@ -30,6 +30,15 @@ outline:
runAsGroup: 1001
fsGroup: 1001
fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/PatchMon/PatchMon/main/frontend/public/a
type: application
version: 6.1.0+up2.1.3
version: 7.0.0+up2.1.3
appVersion: "2.1.3"
maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ helpers take dict "given" <block|nil> "root" $.
{{- $defaults := dict
"runAsNonRoot" true
"runAsUser" 65532
"runAsGroup" 65532 -}}
"runAsGroup" 65532
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "patchmon.defaultedDict" (dict "defaults" $defaults "given" $given "path" "patchmon.server.securityContext.pod") -}}
{{- end -}}
+12 -1
View File
@@ -22,6 +22,17 @@ patchmon:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
# RuntimeDefault applies the container runtime's default seccomp
# filter, which blocks the syscalls a normal workload never makes. It
# sits in the pod context on purpose: from here it covers every
# container in the pod - the server and the optional guacd sidecar
# alike - including init containers, while a container-level
# seccompProfile would have to be repeated for each one (and silently
# missed on the next one added). A container that genuinely needs a
# different filter can still override it under
# securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
@@ -88,7 +99,7 @@ patchmon:
enabled: false
# guacd is an independent upstream application, so its image is not tied
# to the chart's appVersion. Pinned to the version upstream ships with.
image: guacamole/guacd:1.6.0
image: docker.io/guacamole/guacd:1.6.0
# The image runs as its own unprivileged user (uid 1000); it only needs a
# writable /tmp, which the chart provides as an emptyDir.
securityContext:
+1 -1
View File
@@ -3,7 +3,7 @@ name: satisfactory
description: A Helm chart to deploy a Satisfactory Gameserver on Kubernetes
icon: https://raw.githubusercontent.com/wolveix/satisfactory-server/main/.github/logo.png
type: application
version: 5.0.0+upv1.9.10
version: 6.0.0+upv1.9.10
appVersion: "v1.9.10"
maintainers:
- name: jklein
+2 -1
View File
@@ -224,7 +224,8 @@ Probe specifics that a rebuilt default must not lose:
"runAsUser" 1000
"runAsGroup" 1000
"fsGroup" 1000
"fsGroupChangePolicy" "OnRootMismatch" -}}
"fsGroupChangePolicy" "OnRootMismatch"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "satisfactory.defaultedDict" (dict "defaults" $defaults "given" $given "path" "securityContext.pod") -}}
{{- end -}}
+9
View File
@@ -97,6 +97,15 @@ securityContext:
# entrypoint.
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
# Works because the chart mounts emptyDirs at /tmp and the steam user's
+1 -1
View File
@@ -4,5 +4,5 @@ description: A Helm chart to deploy urlaubsverwaltung on Kubernetes
icon: https://raw.githubusercontent.com/urlaubsverwaltung/urlaubsverwaltung/main/src/main/resources/static/favicons/apple-touch-icon.png
type: application
version: 7.0.0+up6.7.0
version: 8.0.0+up6.7.0
appVersion: 6.7.0
+2 -1
View File
@@ -213,7 +213,8 @@ is only the fallback for the case where an override has erased the block.
{{- $defaults := dict
"runAsNonRoot" true
"runAsUser" 1002
"runAsGroup" 1001 -}}
"runAsGroup" 1001
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "urlaubsverwaltung.defaultedDict" (dict "defaults" $defaults "given" $given "path" "urlaubsverwaltung.securityContext.pod") -}}
{{- end -}}
@@ -20,7 +20,7 @@ spec:
{{- include "urlaubsverwaltung.podSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 8 }}
containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
image: "urlaubsverwaltung/urlaubsverwaltung:{{ .Chart.AppVersion }}"
image: "docker.io/urlaubsverwaltung/urlaubsverwaltung:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent
securityContext:
{{- include "urlaubsverwaltung.containerSecurityContext" .Values.urlaubsverwaltung.securityContext | nindent 12 }}
+9
View File
@@ -29,6 +29,15 @@ urlaubsverwaltung:
runAsNonRoot: true
runAsUser: 1002
runAsGroup: 1001
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
+1 -1
View File
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/l4rm4nd/VoucherVault/main/myapp/static/a
type: application
version: 5.0.0+up1.30.1
version: 6.0.0+up1.30.1
appVersion: "1.30.1"
maintainers:
+2 -1
View File
@@ -217,7 +217,8 @@ header, otherwise the pod never becomes ready.
"runAsUser" 33
"runAsGroup" 33
"fsGroup" 33
"fsGroupChangePolicy" "Always" -}}
"fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "voucher-vault.defaultedDict" (dict "defaults" $defaults "given" $given "path" "voucherVault.securityContext.pod") -}}
{{- end -}}
@@ -27,7 +27,7 @@ spec:
# entrypoint's collectstatic only adds what is missing, e.g. the
# Django admin static files). See securityContext in values.yaml.
- name: init-static
image: "l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
image: "docker.io/l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent
# Copies the children (not ".") so cp never tries to set metadata
# on the mountpoint itself, which the non-root uid may not own.
@@ -48,7 +48,7 @@ spec:
ephemeral-storage: 10Mi
containers:
- name: {{ .Release.Name }}-{{ .Chart.Name }}-sfs
image: "l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
image: "docker.io/l4rm4nd/vouchervault:{{ .Chart.AppVersion }}"
imagePullPolicy: IfNotPresent
env:
{{- range $value := .Values.voucherVault.env }}
+9
View File
@@ -74,6 +74,15 @@ voucherVault:
runAsGroup: 33
fsGroup: 33
fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
+1 -1
View File
@@ -16,7 +16,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 6.0.0+up4.7.0
version: 7.0.0+up4.7.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
+2 -1
View File
@@ -218,7 +218,8 @@ a database outage must not restart the pod.
"runAsUser" 1000
"runAsGroup" 1000
"fsGroup" 1000
"fsGroupChangePolicy" "Always" -}}
"fsGroupChangePolicy" "Always"
"seccompProfile" (dict "type" "RuntimeDefault") -}}
{{- include "zipline.defaultedDict" (dict "defaults" $defaults "given" $given "path" "zipline.securityContext.pod") -}}
{{- end -}}
+9
View File
@@ -26,6 +26,15 @@ zipline:
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: Always
# RuntimeDefault applies the container runtime's default seccomp filter,
# which blocks the syscalls a normal workload never makes. It sits in the
# pod context on purpose: from here it covers every container in the pod
# including init containers, while a container-level seccompProfile would
# have to be repeated for each one (and silently missed on the next one
# added). A container that genuinely needs a different filter can still
# override it under securityContext.container, which wins over this value.
seccompProfile:
type: RuntimeDefault
container:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true