FreeRADIUS refuses to start when its -d directory is world-writable (Configuration directory /etc/raddb is globally writable. Refusing to start due to insecure configuration.). The kubelet-created root of the projected raddb volume is world-writable, so both freeradius pods crash-loop.
initContainer raddb-copy (same image and Flux marker, same securityContext) copies the projected volume (/etc/raddb-src, read-only) into /run/raddb/raddb on a Memory emptyDir and sets it to 0750.
radiusd, both probes and raddbdir use /run/raddb/raddb; the emptyDir is mounted read-only in the main container.
Config, secret and certificate changes still take effect through the existing Reloader annotations (freeradius-config, radius-secrets, radius-tls).
tests/radius/run.sh now makes the projected mount root world-writable like kubelet and runs the initContainer from the manifest. Against the previous manifest it fails with the error above; with this change all checks pass.
FreeRADIUS refuses to start when its `-d` directory is world-writable (`Configuration directory /etc/raddb is globally writable. Refusing to start due to insecure configuration.`). The kubelet-created root of the projected `raddb` volume is world-writable, so both `freeradius` pods crash-loop.
- initContainer `raddb-copy` (same image and Flux marker, same securityContext) copies the projected volume (`/etc/raddb-src`, read-only) into `/run/raddb/raddb` on a Memory emptyDir and sets it to `0750`.
- radiusd, both probes and `raddbdir` use `/run/raddb/raddb`; the emptyDir is mounted read-only in the main container.
- Config, secret and certificate changes still take effect through the existing Reloader annotations (`freeradius-config`, `radius-secrets`, `radius-tls`).
- `tests/radius/run.sh` now makes the projected mount root world-writable like kubelet and runs the initContainer from the manifest. Against the previous manifest it fails with the error above; with this change all checks pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
FreeRADIUS refuses a config dir that is globally writable; the kubelet
projected volume root is. Mount it at /etc/raddb-src, copy it into an
emptyDir with an initContainer and run radiusd from the copy. The test
harness now makes the mount world-writable and runs the initContainer
from the manifest.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
FreeRADIUS refuses to start when its
-ddirectory is world-writable (Configuration directory /etc/raddb is globally writable. Refusing to start due to insecure configuration.). The kubelet-created root of the projectedraddbvolume is world-writable, so bothfreeradiuspods crash-loop.raddb-copy(same image and Flux marker, same securityContext) copies the projected volume (/etc/raddb-src, read-only) into/run/raddb/raddbon a Memory emptyDir and sets it to0750.raddbdiruse/run/raddb/raddb; the emptyDir is mounted read-only in the main container.freeradius-config,radius-secrets,radius-tls).tests/radius/run.shnow makes the projected mount root world-writable like kubelet and runs the initContainer from the manifest. Against the previous manifest it fails with the error above; with this change all checks pass.🤖 Generated with Claude Code