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>
OpenStackControlPlane CRD Size Report
Threshold reference
|
|
Build failed (check pipeline). Post ✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 13m 10s |
|
/retest |
|
recheck |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: abays, 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 |
469d724
into
openstack-k8s-operators:main
|
/cherry-pick 18-stable |
|
@stuggi: new pull request created: #2005 DetailsIn response to this:
Instructions 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. |
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.