rbac: add fission-executor-sa-provisioner for SA/Role/RoleBinding creation in user NS

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.
This commit is contained in:
Naeel
2026-04-26 07:46:33 +03:00
parent 161de70576
commit 8ccc9fb342
3 changed files with 100 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
# 2026-04-26 — RBAC fix для multi-tenant SA provisioning
## Симптом
`test_layer1.sh` шаг 5 падает: pod poolmgr не создаётся в динамически добавленном NS.
Event: `serviceaccount "fission-fetcher" not found`
## Путь диагностики
1. **Код есть**`EnsureNamespaceSA` добавлена в `serviceaccount.go`, вызывается из `ns_watcher.go:168`
2. **Образ задеплоен** — v8 работает, executor регистрирует NS (шаги 1-4 PASS)
3. **RBAC проверка**: `kubectl auth can-i create serviceaccounts --as=...fission-executor -n l1-test-77773`**`no`**
4. **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` в NS `fission`
- `kubectl apply` — применено
- Верификация: `kubectl auth can-i create serviceaccounts/roles/rolebindings`**`yes/yes/yes`** ✅
## Следующий шаг
Применить `kubectl apply -f deploy/multitenant/rbac.yaml`, коммит, запустить тест.