Files
fission-src/doc/thinking/2026-04-26-rbac-fix.md
T
Naeel 8ccc9fb342 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.
2026-04-26 07:46:33 +03:00

1.7 KiB
Raw Blame History

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, коммит, запустить тест.