# 2026-04-26 - Layer1 test доведён до PASS=5/5 ## Контекст Внешний исходник Fission, который реально правился и тестировался, находится в отдельной рабочей копии: - `~/terra/fission-src` Этот документ хранится в текущем workspace-репозитории как краткая рабочая фиксация результата и причин, чтобы не потерять контекст между шагами диагностики, скриптами и проверками. ## Что было нужно получить Тест `test_layer1.sh` должен был подтверждать, что новый namespace с label: - `fission.io/managed=true` подхватывается без рестарта Fission, и в нём реально работает: - `Environment` - `Function` - `HTTPTrigger` - вызов через router ## Финальный результат Финальный запуск дал: ```text PASS=5 FAIL=0 ``` Функция ответила `HTTP 200`. ## Две настоящие причины падения ### 1. Executor RBAC был неполным Dynamic namespace registration в executor работал, но `fission-executor` не имел полного набора прав для provisioning `fission-fetcher` в новом namespace. Не хватало не только прав на создание: - `serviceaccounts` - `roles` - `rolebindings` Но ещё и: - `events.create` - `localsubjectaccessreviews.create` Без этого executor не мог создать полный `Role` для fetcher. ### 2. Router RBAC отсутствовал для namespace watcher После починки executor симптом сменился с `500` на `404`. Это показало, что executor-path уже работает, а router не подхватывает новый namespace. Причина: у `fission-router` не было cluster-scope прав: - `namespaces:list` - `namespaces:watch` ## Что было сделано В `fission-src` был расширен `deploy/multitenant/rbac.yaml`: - для executor dynamic SA provisioning - для router namespace watcher После этого: - `fission-fetcher` начал создаваться корректно - `Role` и `RoleBinding` стали появляться автоматически - router начал видеть новые namespace и подхватывать triggers - `test_layer1.sh` прошёл полностью ## Полезный вывод При multi-tenant hot registration нужно проверять не только код watcher-ов, но и весь Kubernetes RBAC contract по цепочке: 1. namespace watch/list 2. provisioning service account и RBAC в tenant namespace 3. делегируемые permission-ы в создаваемых Role 4. router runtime subscription на triggers/functions Если ломается любой из этих этапов, симптомы будут меняться по мере частичных фиксов: - сначала `serviceaccount not found` - потом `500 timeout` - потом `404` Именно такая последовательность и была здесь.