Files
fission-console/doc/descriptions/fission-src-multitenant-changes.md
T

3.9 KiB
Raw Blame History

Изменения в fission-src относительно официального Fission

Базовый коммит официального Fission: 82e1ff76 (Add npm dependabot rules, 2025-12-16)


Что менялось

1. Ядро — pkg/utils/

  • namespace_manager.go (+608 строк) — новый компонент: менеджер namespace. Отслеживает появление/исчезновение namespace с меткой fission.io/managed=true в реальном времени без рестарта Fission.
  • namespace_manager_model.go (+181 строк) — модель данных менеджера namespace.
  • namespace.go (+66 строк) — расширена логика работы с namespace.
  • serviceaccount.go (+25 строк) — добавлена функция EnsureNamespaceSA: при появлении нового namespace автоматически создаёт ServiceAccount, Role, RoleBinding, необходимые для работы fetcher/builder.

2. Executor — pkg/executor/

  • multitenant/ns_watcher.go (+137 строк) — watcher namespace-событий для executor. При появлении namespace с меткой fission.io/managed=true — executor начинает обслуживать функции в этом namespace без рестарта.
  • executortype/poolmgr/gpm.go (+69 строк) — poolmgr динамически добавляет новые namespace.
  • executortype/newdeploy/newdeploymgr.go (+61 строка) — аналогично для newdeploy.
  • executortype/container/containermgr.go (+49 строк) — аналогично для container executor.
  • executortype/poolmgr/poolpodcontroller.go (+43 строки) — контроллер подов poolmgr знает о новых namespace.

3. Router — pkg/router/

  • httpTriggers.go (+116 строк) — роутер подписывается на ns_watcher, динамически добавляет маршруты для функций в новых namespace.
  • namespace_subscriber.go (+31 строка) — подписка роутера на namespace-события.
  • ns_watcher.go (+32 строки) — watcher namespace для роутера.
  • functionReferenceResolver.go (+11 строк) — резолвер функций знает о мультинеймспейс.

4. BuilderMgr — pkg/buildermgr/

  • ns_watcher.go (+32 строки) — watcher namespace для buildermgr.
  • namespace_subscriber.go (+43 строки) — подписка buildermgr на namespace-события.
  • envwatcher.go (+45 строк) — watcher окружений теперь реагирует на новые namespace.
  • pkgwatcher.go (+38 строк) — watcher пакетов — аналогично.

5. RBAC — deploy/multitenant/rbac.yaml (+122 строки)

  • Новые ClusterRole и ClusterRoleBinding для автоматического создания SA/Role/RoleBinding в пользовательских namespace.
  • deploy/executor-ns-watcher-rbac.yaml (+26 строк) — дополнительный RBAC для ns_watcher executor.

Обратная совместимость

Полная. Если в кластере нет namespace с меткой fission.io/managed=true — поведение идентично официальному Fission v1.22.0.

  • CRD не изменялись.
  • API (fission CLI) не изменялся.
  • Helm-чарт не изменялся.
  • Существующие функции, env, пакеты работают без изменений.

Как активировать мультитенантность

Добавить метку на namespace:

kubectl label namespace <ns> fission.io/managed=true

Fission автоматически начнёт обслуживать функции в этом namespace без рестарта.