Repository navigation
fix(helm): default to the documented capability set instead of privileged - #666
Merged
Merged
Conversation
pirog-spb
approved these changes
Oct 12, 2026
Contributor
Author
|
The red |
pirog-spb
force-pushed
the
helm-capabilities-default
branch
from
October 12, 2026 18:35
257e922 to
f5ffddf
Compare
martin-mat
force-pushed
the
helm-capabilities-default
branch
from
October 12, 2026 18:44
f5ffddf to
69e4627
Compare
…eged (edgecomllc#665) The chart ran the container as privileged: true by default and documented the capability set NET_ADMIN, SYS_ADMIN, SYS_RESOURCE, BPF, PERFMON as an alternative. The capability set is what the data plane uses: BPF and PERFMON to load and attach programs, NET_ADMIN for XDP and routes, SYS_RESOURCE for RLIMIT_MEMLOCK, SYS_ADMIN for the bpffs and debugfs mounts in the entrypoint. A privileged container is every capability, no device cgroup, unmasked /proc and /sys and no seccomp or AppArmor profile. The capability set is the default now, with privileged: true as the documented fallback for the environments that deny the mounts anyway: an AppArmor profile that forbids mount (the runtime's default on Ubuntu and Debian, which appArmorProfile Unconfined lifts), a seccomp profile that blocks mount or bpf, or a runtime that rejects BPF and PERFMON on a kernel before 5.8. README and NOTES say so. Verified on a three-node kind cluster: the pod starts, the mounts succeed, the UPF serves, and it survives scaling and a node drain. Trivy's config scan flags SYS_ADMIN (KSV-0005); the rule joins .trivyignore with the reason, next to KSV-0118, whose comment is updated. Signed-off-by: Martin Matyas <martin.matyas@tieto.com>
martin-mat
force-pushed
the
helm-capabilities-default
branch
from
October 12, 2026 18:44
69e4627 to
6d40a70
Compare
This was referenced Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #665.
The chart ran the container as
privileged: trueby default and documented the capability setNET_ADMIN, SYS_ADMIN, SYS_RESOURCE, BPF, PERFMONas an alternative. This makes the capability set the default andprivileged: truethe documented fallback.Why: the capability set is what the data plane uses (BPF and PERFMON to load and attach programs, NET_ADMIN for XDP and routes, SYS_RESOURCE for
RLIMIT_MEMLOCK, SYS_ADMIN for the bpffs and debugfs mounts in the entrypoint). A privileged container is every capability, no device cgroup, unmasked/procand/sys, and no seccomp or AppArmor profile. The reasoning in full is in #665.Where the fallback is needed: environments that deny the entrypoint's mounts even with SYS_ADMIN, listed in the README with the remedy: an AppArmor profile that forbids
mount(the runtime's default profile on Ubuntu and Debian;securityContext.appArmorProfile: {type: Unconfined}lifts it on Kubernetes 1.30+), a custom seccomp profile that blocksmountorbpf, or a runtime that rejectsBPFandPERFMONon a kernel before 5.8.Verified on a three-node kind cluster with
net.ipv4.ip_forwardallowed on the kubelets: the pod starts, the mounts succeed, the UPF serves on :8080 and :9090, and it comes back after scaling and after a node drain.Trivy: the config scan flags SYS_ADMIN (AVD-KSV-0005, HIGH); the rule joins
.trivyignorewith its reason next to KSV-0118, whose comment no longer says "privileged".trivy config --config trivy.yaml --ignorefile .trivyignore --severity HIGH,CRITICAL .reports 0 findings;helm lintpasses.Changes:
values.yaml(the default and its comment), the chartREADME.md,NOTES.txt,.trivyignore.