Skip to content

Commit 9cfee77

Browse files
kvapsclaude
andcommitted
fix(stand): add ClusterRole+CRB for blockstor-satellite ServiceAccount
The Phase 10.6 gRPC cutover moved reconciliation to the satellite side (resource / RD / snapshot / storagepool reconcilers all run inside the satellite manager now), but the dev-stand DaemonSet manifest never got matching RBAC — only the ServiceAccount existed. The result: every satellite came up, controller-runtime tried to sync the Snapshot informer cache, hit `cannot list snapshots ... is forbidden`, the manager exited, and the process continued running as a no-op zombie. e2e symptoms were every Resource sitting at "never reached UpToDate on both peers" forever because nobody was actually rendering .res files or calling drbdadm. Mirror the controller's permission set (events / leases / all blockstor.io CRDs r+w / status+finalizers / secrets read). Secrets read is for the cluster passphrase Secret the encryption reconciler needs. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
1 parent 9cd2124 commit 9cfee77

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

stand/blockstor-satellite-daemonset.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,45 @@ metadata:
1717
name: blockstor-satellite
1818
namespace: blockstor-system
1919
---
20+
# The satellite runs c-r reconcilers for ResourceDefinitions /
21+
# Resources / Snapshots / StoragePools and writes node-scoped Status
22+
# back via SSA — it needs full CRUD on blockstor.io CRDs and access
23+
# to Status / Finalizers subresources, same as the controller. Events
24+
# permission is for `EventRecorder` traces from reconcile loops.
25+
apiVersion: rbac.authorization.k8s.io/v1
26+
kind: ClusterRole
27+
metadata:
28+
name: blockstor-satellite
29+
rules:
30+
- apiGroups: [""]
31+
resources: [events]
32+
verbs: [create, patch]
33+
- apiGroups: [""]
34+
resources: [secrets]
35+
verbs: [get, list, watch]
36+
- apiGroups: [coordination.k8s.io]
37+
resources: [leases]
38+
verbs: [get, list, watch, create, update, patch, delete]
39+
- apiGroups: [blockstor.io.blockstor.io]
40+
resources: ["*"]
41+
verbs: [get, list, watch, create, update, patch, delete]
42+
- apiGroups: [blockstor.io.blockstor.io]
43+
resources: ["*/status", "*/finalizers"]
44+
verbs: [get, update, patch]
45+
---
46+
apiVersion: rbac.authorization.k8s.io/v1
47+
kind: ClusterRoleBinding
48+
metadata:
49+
name: blockstor-satellite
50+
roleRef:
51+
apiGroup: rbac.authorization.k8s.io
52+
kind: ClusterRole
53+
name: blockstor-satellite
54+
subjects:
55+
- kind: ServiceAccount
56+
name: blockstor-satellite
57+
namespace: blockstor-system
58+
---
2059
apiVersion: apps/v1
2160
kind: DaemonSet
2261
metadata:

0 commit comments

Comments
 (0)