doc: record layer1 multi-tenant pass analysis

This commit is contained in:
Naeel
2026-04-26 09:06:45 +03:00
parent 60646af0c8
commit 6b06db66b9
+93
View File
@@ -0,0 +1,93 @@
# 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`
Именно такая последовательность и была здесь.