Repository navigation
Description
🤖 Generated by the Daily AI Engineer
Summary
Replace the two per-app hostUsers: false post-render patches with one opt-in Kyverno default, enabled only for the two stateless workloads already proven healthy in production.
Motivation
whoami and homepage have both run successfully with private user namespaces, but the current rollout mechanism duplicates a HelmRelease post-render patch per app. That does not scale to the wider rollout tracked by #1807 and makes the security default easy to apply inconsistently.
The local Docker provider must remain unchanged because Talos runs nested there and user-namespace/idmapped-mount support is not guaranteed. Stateful workloads must also remain excluded until their storage paths are validated.
Proposed Solution
- Add a CREATE-only rule to
add-security-contextthat conditionally anchorsspec.hostUsers: falsefor Pods whose namespace opts in withpod-security.devantler.tech/user-namespaces: enabled. - Add that label only in the Hetzner app overlay for the already-validated
whoamiandhomepagenamespaces. - Remove the two duplicated HelmRelease post-render patches after the label-gated policy owns the default.
- Keep the mechanism default-off for every other namespace, including all local/CI and stateful workloads.
Acceptance Criteria
- The Kyverno rule is CREATE-only, label-gated, and does not overwrite an explicit workload value.
- Only the Hetzner
whoamiandhomepagenamespaces opt in. - The local overlay remains opted out and contains no
hostUsersrollout change. - The two per-app HelmRelease post-render patches are removed without changing unrelated patches.
- Structural red/green assertions cover the policy, both enabled namespaces, and the disabled local state.
- Local and prod Kustomize renders, embedded-JSON validation, naming validation, and schema-aware KSail validation pass without starting a cluster.
Alternatives Considered
- Keep adding one post-render patch per app: rejected because it duplicates permanent security policy and is easy to drift.
- Apply
hostUsers: falsecluster-wide: rejected until stateful/idmapped-volume workloads are proven safe. - Put the label in base namespaces: rejected because that would enable the behavior on the nested Docker provider instead of keeping rollout default-off.
Additional Context
Child of #1807. The existing whoami and homepage production pilots are healthy; this slice changes only how those two proven workloads receive the same setting.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Start date
Target date
Effort
Projects
- StatusShow more project fields✅ Done
Activity
coderabbitai commentedon Jul 10, 2026
🔗 Related PRs
#2336 - feat(homepage): run inside a user namespace (hostUsers: false) [merged]
#2344 - fix(security-context): pair pod-level runAsUser with injected runAsGroup (
#2292regression) [merged]#2370 - fix(autoscaling): break the DaemonSet-VPA node ratchet; keep Longhorn storage off autoscale nodes [merged]
#2437 - fix(cilium): run the cilium-operator as non-root [merged]
#2455 - fix(security): harden containers with read-only root filesystems (Kubescape C-0017) [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
botantler-1 commentedon Jul 11, 2026
🎉 This issue has been resolved in version 1.112.0 🎉
The release is available on GitHub release
Your semantic-release bot 📦🚀