Remove unnecessary pods RBAC permissions - #2003
Conversation
OpenStackClient's workload rbacRules granted full CRUD on core Pods to the
ServiceAccount mounted into the OpenStackClient pod itself. That pod's
entrypoint is a bare `sleep infinity` - any capability comes from what an
admin runs interactively via exec, not from Kubernetes API access, so this
grant is unnecessary and is removed entirely. The operator's own
kubebuilder marker for pods on this same controller is untouched: it's
independently justified by OpenStackClientReconciler directly
creating/patching/deleting and watching (Owns(&corev1.Pod{})) that pod.
Also narrow two dataplane controllers to their real usage:
- OpenStackDataPlaneNodeSetReconciler only lists Pods (raw clientset,
diagnostic listing of failed-deployment pods). Narrow its marker from
full CRUD to list.
- OpenStackDataPlaneDeploymentReconciler had no pods marker of its own at
all, despite GetAnsibleExecutionSummary listing Pods via the cached
client (needs list;watch for the informer) to build the ansible
execution summary. It only worked by relying on the nodeset
controller's now-narrowed marker via the ClusterRole merge - add its own
list;watch marker so a future change to the nodeset controller can't
silently break it.
config/rbac/role.yaml is unchanged: OpenStackClient's own marker already
grants full CRUD on pods for a real, direct need, so the merged ClusterRole
doesn't shrink. The change is scoped to what gets delegated to workload
ServiceAccounts and to per-controller marker correctness.
Signed-off-by: Martin Schuppert <mschuppert@redhat.com>
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: stuggi The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
OpenStackControlPlane CRD Size Report
Threshold reference
|
|
@stuggi: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
Build failed (check pipeline). Post ✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 13m 10s |
OpenStackClient's workload rbacRules granted full CRUD on core Pods to the ServiceAccount mounted into the OpenStackClient pod itself. That pod's entrypoint is a bare
sleep infinity- any capability comes from what an admin runs interactively via exec, not from Kubernetes API access, so this grant is unnecessary and is removed entirely. The operator's own kubebuilder marker for pods on this same controller is untouched: it's independently justified by OpenStackClientReconciler directly creating/patching/deleting and watching (Owns(&corev1.Pod{})) that pod.Also narrow two dataplane controllers to their real usage:
config/rbac/role.yaml is unchanged: OpenStackClient's own marker already grants full CRUD on pods for a real, direct need, so the merged ClusterRole doesn't shrink. The change is scoped to what gets delegated to workload ServiceAccounts and to per-controller marker correctness.