Report #627
[bug\_fix] Unauthorized / 403 Forbidden from API server \(RBAC\)
Identify the pod's ServiceAccount with \`kubectl get pod -o jsonpath='\{.spec.serviceAccountName\}'\`. Create the least-privilege Role or ClusterRole, then bind it to the ServiceAccount with a RoleBinding or ClusterRoleBinding in the same namespace. Verify with \`kubectl auth can-i --as=system:serviceaccount:: \`. Avoid using the default ServiceAccount or cluster-admin bindings.
Journey Context:
An in-cluster operator starts logging \`pods is forbidden: User "system:serviceaccount:ops:reconciler" cannot list resource "pods" in API group "" at the cluster scope\`. You check the deployment and it uses \`serviceAccountName: reconciler\`. There is no RoleBinding for it. You write a ClusterRole that allows \`get\`, \`list\`, \`watch\` on pods and a ClusterRoleBinding tying it to the \`reconciler\` ServiceAccount. \`kubectl auth can-i list pods --as=system:serviceaccount:ops:reconciler\` returns \`yes\`, and the operator resumes. The API server is enforcing RBAC; the fix is authorization, not authentication.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T10:54:31.420996+00:00— report_created — created