# Fission Multi-Tenant — Progress ## Задача Добиться 5/5 PASS в `test_layer1.sh`: динамически добавленный NS с меткой `fission.io/managed=true` должен работать без рестарта Fission. --- ## Статус задач | # | Задача | Статус | |---|--------|--------| | 1 | Добавить `EnsureNamespaceSA` в `pkg/utils/serviceaccount.go` | ✅ DONE | | 2 | Вызов `EnsureNamespaceSA` из `ns_watcher.go` при регистрации NS | ✅ DONE | | 3 | Сборка образа `naeel/fission-bundle:v1.22.0-multi-ns-8` | ✅ DONE | | 4 | Деплой образа v8 в кластер (executor/router/buildermgr) | ✅ DONE | | 5 | Коммит `161de70` "multi-tenant: EnsureNamespaceSA + ns_watcher SA provisioning (v8)" | ✅ DONE | | 6 | Исправить RBAC: добавить полный набор прав для SA provisioning в `deploy/multitenant/rbac.yaml` | ✅ DONE | | 7 | Применить RBAC через `kubectl apply`, верифицировать SA/Role/RoleBinding | ✅ DONE | | 8 | Коммит RBAC fix | 🔄 IN PROGRESS | | 9 | Запустить `test_layer1.sh`, добиться 5/5 PASS | ⏳ TODO | --- ## Текущий результат теста `test_layer1.sh` — 4/5: - Шаг 5 падает: `serviceaccount "fission-fetcher" not found` в NS `l1-test-77773` ## Диагностика (2026-04-26) - Код `EnsureNamespaceSA` присутствует в `serviceaccount.go` ✅ - `ns_watcher.go` строка 168 вызывает `EnsureNamespaceSA` ✅ - RBAC: `kubectl auth can-i create serviceaccounts --as=...fission-executor -n l1-test-77773` → **`no`** ❌ - ClusterRole `fission-executor-multi-ns` не имеет `create` для `serviceaccounts`, и нет rules для `roles`/`rolebindings` - Вывод: `setupSAAndRoleBindings` вызывается, но получает 403 Forbidden и тихо фейлится → SA не создаётся → pod не стартует ## Решение Добавить в `deploy/multitenant/rbac.yaml` новый ClusterRole + ClusterRoleBinding с правами: - `serviceaccounts`: `get/list/watch/create/update/patch` - `roles`, `rolebindings`: `get/list/watch/create/update/patch` - `events`: `create` - `localsubjectaccessreviews.authorization.k8s.io`: `create` Применить через `kubectl apply`. **Пересборка образа НЕ нужна** — логика правильная, проблема только в RBAC. ## Последняя верификация - `kubectl auth can-i create events --as=system:serviceaccount:fission:fission-executor` → `yes` - `kubectl auth can-i create localsubjectaccessreviews.authorization.k8s.io --as=system:serviceaccount:fission:fission-executor` → `yes` - В новом NS `rbac-verify-83117` автоматически созданы: - `ServiceAccount/fission-fetcher` - `Role/fission-fetcher-role-*` - `RoleBinding/fission-fetcher-rolebinding-*`