Skip to content

security(longhorn): retrofit C-0211 onto the longhorn-csi-plugin DaemonSet #3998

Description

@devantler

🤖 Generated by the Agentic Engineer

Evidence

Measured against live prod on 2026-09-21: the longhorn-csi-plugin DaemonSet's stored template carries an empty pod securityContext and no container seLinuxOptions. It was created on 2026-08-21, before the longhorn-system baseline-context opt-in (2026-09-06). Its managed fields show no template writer since, so the CREATE/UPDATE opt-in rules never reach it. It is one of the four DaemonSets left in #3918's residual. The other three are the engine-image DaemonSets, which #3966 / #3967 handle.

Audience and problem

Whoever reads the platform's C-0211 posture. This DaemonSet keeps a namespace that has already opted in looking unfinished, and it will not change on its own.

Expected behaviour

The stored DaemonSet template carries fsGroupChangePolicy and container-level seLinuxOptions, and no existing security field changes.

Acceptance criteria

  • An exact, add-only mutate-existing retrofit reaches only longhorn-system/longhorn-csi-plugin. It reuses the existing resourceNames-pinned grant and adds no new RBAC.
  • A regression test pins scope, shape, convergence and the grant, with ablations recorded.
  • After deploy, the live stored spec is read back: both fields present, and the privileged containers unchanged.
  • No volume is left detached or degraded after the one-node-at-a-time roll.

Size: S. Part of #3918.

Activity

  1. self-assigned this
    on Sep 21, 2026
  2. moved this to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Sep 21, 2026
  3. moved this from 🏃🏻‍♂️ In Progress to 👀 In Review in 🌊 Project Boardon Sep 21, 2026
  4. moved this from 👀 In Review to ✅ Done in 🌊 Project Boardon Sep 21, 2026
  5. devantler commented on Sep 21, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Post-deploy read-back, 2026-09-21T09:27Z, after #3999 merged at d4cb7db0:

    • Stored spec: longhorn-system/longhorn-csi-plugin (generation 3) carries fsGroupChangePolicy: OnRootMismatch at the pod level and an empty seLinuxOptions on all three containers. Privilege is unchanged: node-driver-registrar and longhorn-csi-plugin are still privileged, and the latter still adds SYS_ADMIN.
    • Roll: 4/4 pods are ready on the updated template.
    • Volumes: all 14 are attached and healthy; none is detached or degraded.

    This covers criteria 3 and 4; criteria 1 and 2 were proven in the PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

No fields configured for Security.

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions