From 72004dd943b3b511975ed2aaa98a1468a070c940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 4 May 2026 15:39:53 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20fission-src=20vs=20=D0=BE=D1=84=D0=B8=D1=86=D0=B8?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20Fission=20(multi-tenant)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fission-src-multitenant-changes.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 doc/descriptions/fission-src-multitenant-changes.md diff --git a/doc/descriptions/fission-src-multitenant-changes.md b/doc/descriptions/fission-src-multitenant-changes.md new file mode 100644 index 0000000..c646e11 --- /dev/null +++ b/doc/descriptions/fission-src-multitenant-changes.md @@ -0,0 +1,58 @@ +# Изменения в 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: +```bash +kubectl label namespace fission.io/managed=true +``` + +Fission автоматически начнёт обслуживать функции в этом namespace без рестарта.