53 lines
3.0 KiB
Markdown
53 lines
3.0 KiB
Markdown
# Fission Multi-Tenant — Progress
|
||
|
||
## Задача
|
||
Добиться 5/5 PASS в `test_layer1.sh`: динамически добавленный NS с меткой `fission.io/managed=true` должен работать без рестарта Fission.
|
||
|
||
---
|
||
|
||
## Статус задач
|
||
|
||
| # | Задача | Статус |
|
||
|---|--------|--------|
|
||
| 1 | Добавить `EnsureNamespaceSA` в `pkg/utils/serviceaccount.go` | ✅ DONE |
|
||
| 2 | Вызов `EnsureNamespaceSA` из `ns_watcher.go` при регистрации NS | ✅ DONE |
|
||
| 3 | Сборка образа `naeel/fission-bundle:v1.22.0-multi-ns-8` | ✅ DONE |
|
||
| 4 | Деплой образа v8 в кластер (executor/router/buildermgr) | ✅ DONE |
|
||
| 5 | Коммит `161de70` "multi-tenant: EnsureNamespaceSA + ns_watcher SA provisioning (v8)" | ✅ DONE |
|
||
| 6 | Исправить RBAC: добавить полный набор прав для SA provisioning в `deploy/multitenant/rbac.yaml` | ✅ DONE |
|
||
| 7 | Применить RBAC через `kubectl apply`, верифицировать SA/Role/RoleBinding | ✅ DONE |
|
||
| 8 | Коммит RBAC fix | 🔄 IN PROGRESS |
|
||
| 9 | Запустить `test_layer1.sh`, добиться 5/5 PASS | ⏳ TODO |
|
||
|
||
---
|
||
|
||
## Текущий результат теста
|
||
`test_layer1.sh` — 4/5:
|
||
- Шаг 5 падает: `serviceaccount "fission-fetcher" not found` в NS `l1-test-77773`
|
||
|
||
## Диагностика (2026-04-26)
|
||
- Код `EnsureNamespaceSA` присутствует в `serviceaccount.go` ✅
|
||
- `ns_watcher.go` строка 168 вызывает `EnsureNamespaceSA` ✅
|
||
- RBAC: `kubectl auth can-i create serviceaccounts --as=...fission-executor -n l1-test-77773` → **`no`** ❌
|
||
- ClusterRole `fission-executor-multi-ns` не имеет `create` для `serviceaccounts`, и нет rules для `roles`/`rolebindings`
|
||
- Вывод: `setupSAAndRoleBindings` вызывается, но получает 403 Forbidden и тихо фейлится → SA не создаётся → pod не стартует
|
||
|
||
## Решение
|
||
Добавить в `deploy/multitenant/rbac.yaml` новый ClusterRole + ClusterRoleBinding с правами:
|
||
- `serviceaccounts`: `get/list/watch/create/update/patch`
|
||
- `roles`, `rolebindings`: `get/list/watch/create/update/patch`
|
||
- `events`: `create`
|
||
- `localsubjectaccessreviews.authorization.k8s.io`: `create`
|
||
|
||
Применить через `kubectl apply`.
|
||
|
||
**Пересборка образа НЕ нужна** — логика правильная, проблема только в RBAC.
|
||
|
||
## Последняя верификация
|
||
- `kubectl auth can-i create events --as=system:serviceaccount:fission:fission-executor` → `yes`
|
||
- `kubectl auth can-i create localsubjectaccessreviews.authorization.k8s.io --as=system:serviceaccount:fission:fission-executor` → `yes`
|
||
- В новом NS `rbac-verify-83117` автоматически созданы:
|
||
- `ServiceAccount/fission-fetcher`
|
||
- `Role/fission-fetcher-role-*`
|
||
- `RoleBinding/fission-fetcher-rolebinding-*`
|