Files
fission-console/doc/thinking/2026-04-26-layer1-pass.md

3.3 KiB
Raw Permalink Blame History

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

Финальный результат

Финальный запуск дал:

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

Именно такая последовательность и была здесь.