Files
fission-console/doc/thinking/2026-06-03-audit.md
T
Naeel fd236d87ea feat: provider audit — builder support, function tuning, source archive
Аудит провайдера vs каноничный Fission. Добавлено:

Environment:
- builder_image, builder_command для Go и языков с build step

Package:
- deploy_type (literal/source) для переключения deployment/source archive
- loadPackageSourceArchive() — zip-упаковка source_dir
- Убран пустой source:{} из literal mode

Function:
- executor_type (poolmgr/newdeploy/container)
- function_timeout, idle_timeout
- min_scale, max_scale для ExecutionStrategy

Все 21 тест пройден. Обратная совместимость проверена.
Документация: doc/AUDIT_PROVIDER_VS_FISSION_2026-06-03.md
2026-04-15 17:46:47 +03:00

2.8 KiB

Thinking Log — Аудит провайдера, 2026-06-03

Задача

Тщательное сравнение нашего Terraform provider для Fission с каноническим поведением Fission CLI и CRD types.

Что было сделано

1. Чтение нашего кода

Прочитаны все 10 .go файлов (~1500 строк):

  • environment_resource.go (136 строк)
  • package_resource.go (460 строк)
  • function_resource.go (350 строк)
  • http_trigger_resource.go (310 строк)
  • client.go (295 строк)
  • validation_helpers.go, import_helpers.go
  • 3 тест-файла

2. Чтение канонических исходников Fission

  • pkg/apis/core/v1/types.go — все CRD Go-структуры
  • pkg/apis/core/v1/const.go — константы (ArchiveLiteralSizeLimit=256KB, BuildStatus*, ExecutorType*)
  • CLI: environment/create.go, package/create.go, package/util/util.go
  • StorageSvc: storagesvc/client/client.go

3. Дамп реальных CRD из кластера

Через kubectl получены ВСЕ объекты всех 4 типов из кластера:

  • 20+ environments (наши tf-* и CLI-созданные)
  • 15+ functions (наши tf-* и CLI-созданные)
  • 15+ packages (наши и CLI)
  • 15+ httptriggers

4. Сравнительный анализ

Для каждого ресурса: поле-за-полем наш payload vs CLI payload vs канон types.go.

Ключевые находки

Что правильно

  • environment: version, runtime.image, poolsize — ок
  • package: deployment.literal base64 — ок
  • function: InvokeStrategy structure, package.functionName — ок
  • httptrigger: relativeurl, methods, functionref, createingress — ок
  • client.go: чистый CRUD, GVR правильные — ок

Что отсутствует (критично)

  1. Environment.builder — нет builder_image/builder_command → Go не работает через builder pipeline
  2. Package source archive — только deployment-only, нет source+build flow

Что отсутствует (важно)

  1. Function executor_type — hardcoded poolmgr, нет newdeploy/container
  2. Function timeouts — нет functionTimeout, idleTimeout
  3. Function scaling — нет minScale, maxScale

Что отсутствует (некритично)

  1. Package: пустой source: {} — мусор но не bug
  2. Environment: resources, imagepullsecret, keeparchive
  3. Function: concurrency, requestsPerPod, resources, secrets
  4. HTTPTrigger: prefix, keepPrefix, полный ingressconfig

Решение

Написан полный аудит-документ: doc/AUDIT_PROVIDER_VS_FISSION_2026-06-03.md