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:
@@ -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`, коммит, запустить тест.
|
||||
Reference in New Issue
Block a user