Fixes EnsureNamespaceSA getting 403 Forbidden when provisioning fission-fetcher SA in dynamically registered namespaces. Adds ClusterRole + ClusterRoleBinding with create/update/patch for serviceaccounts, roles, rolebindings. Also adds doc/progress.md and doc/thinking/2026-04-26-rbac-fix.md.
1.7 KiB
1.7 KiB
2026-04-26 — RBAC fix для multi-tenant SA provisioning
Симптом
test_layer1.sh шаг 5 падает: pod poolmgr не создаётся в динамически добавленном NS.
Event: serviceaccount "fission-fetcher" not found
Путь диагностики
- Код есть —
EnsureNamespaceSAдобавлена вserviceaccount.go, вызывается изns_watcher.go:168 - Образ задеплоен — v8 работает, executor регистрирует NS (шаги 1-4 PASS)
- RBAC проверка:
kubectl auth can-i create serviceaccounts --as=...fission-executor -n l1-test-77773→no - ClusterRole
fission-executor-multi-nsимеет толькоget/list/watchдля serviceaccounts, нет rules дляroles/rolebindings
Вывод
setupSAAndRoleBindings вызывается, но k8s отвечает 403 → функция тихо логирует ошибку и возвращает → SA не создаётся.
Решение
Исправить deploy/multitenant/rbac.yaml — добавить ClusterRole с нужными правами + ClusterRoleBinding.
Сделано
- Добавлен ClusterRole
fission-executor-sa-provisionerсcreate/update/patchдляserviceaccounts,roles,rolebindings(namespace-scoped через ClusterRole) - Добавлен ClusterRoleBinding к SA
fission-executorв NSfission kubectl apply— применено- Верификация:
kubectl auth can-i create serviceaccounts/roles/rolebindings→yes/yes/yes✅
Следующий шаг
Применить kubectl apply -f deploy/multitenant/rbac.yaml, коммит, запустить тест.