1.5 KiB
1.5 KiB
2026-04-26 — NamespaceManager rewrite, step 2
Цель шага
Убрать еще один прямой проход по FissionResourceNS и закрыть конкретный баг в
pkg/utils/serviceaccount.go.
Проблема
runSACheck() сейчас:
- итерируется по
sa.nsResolver.FissionResourceNSнапрямую; - переиспользует переменную
nsвнутри внутреннего цикла по permissions.
Из-за этого код выглядит безобидно, но фактически смешивает два разных namespace path:
- fetcher path через
GetFunctionNS(); - builder path через
GetBuilderNS().
Если FunctionNamespace и BuilderNamespace различаются, builder SA может начать
резолвиться уже не от исходного namespace, а от результата предыдущего шага цикла.
Что меняем
- Берем base namespaces через thread-safe
Snapshot(). - Для каждого permission вычисляем
targetNSиз исходногоbaseNS, а не из мутированной переменной. - Добавляем unit test на routing function/builder namespace.
Что НЕ меняем на этом шаге
- не трогаем глобальные
fetcherCheck/builderCheckструктуры; - не меняем
LocalSubjectAccessReviewpath; - не делаем большой refactor всего SA provisioning.