8.9 KiB
8.9 KiB
Progress Log
2026-04-14
План перед работой
- Зафиксировать, что REST
/v2/*недоступен в текущем кластере Fission v1.22.1 и MVP идет через Kubernetes CRD API. - Реализовать первый рабочий Terraform ресурс
fission_environment. - Добавить минимальный CRUD в клиент для CRD
environments.fission.io. - Проверить сборку
go build ./....
Факт выполнения
- Обновлен план в
doc/CODEX_PLAN.md: путь реализации переведен на CRD API. - Создан каркас провайдера и заготовки ресурсов.
- Реализован рабочий
fission_environment:- schema (name, image, version, poolsize, namespace, id, uid)
- Configure() с получением клиента из provider
- Create/Read/Update/Delete через Kubernetes CRD
environments.fission.io
- В
internal/client/client.goдобавлены методы:- CreateEnvironment / GetEnvironment / UpdateEnvironment / DeleteEnvironment
- IsNotFound для обработки удаления/дрейфа state
- Проверка
go build ./...проходит успешно.
Следующий шаг
- Реализовать
fission_package(zip/base64 -> spec.source.literal) через CRDpackages.fission.io.
Обновление этапа (fission_package)
- Реализован CRUD в
internal/client/client.goдляpackages.fission.io:CreatePackageGetPackageUpdatePackageDeletePackage
- Реализован ресурс
fission_packageвinternal/resources/package_resource.go:- schema:
name,environment,source_dir,code_path,code_hash,build_command,namespace, computedid,uid,build_status,build_log - валидация источника кода: задан ровно один из
source_dirилиcode_path - упаковка
source_dirв zip и кодирование base64 вspec.source.literal - Create/Read/Update/Delete через Kubernetes CRD API
- schema:
- Проверка сборки:
go build ./...успешно.
Следующий шаг
- Реализовать
fission_functionчерез CRDfunctions.fission.io.
Обновление этапа (fission_function)
- Реализован CRUD в
internal/client/client.goдляfunctions.fission.io:CreateFunctionGetFunctionUpdateFunctionDeleteFunction
- Реализован ресурс
fission_functionвinternal/resources/function_resource.go:- schema:
name,environment,package_name,entrypoint,namespace, computedid,uid - Configure/Create/Read/Update/Delete
- маппинг в CRD
Function(spec.environment,spec.package.packageref,spec.package.functionName)
- schema:
- Проверка сборки:
go build ./...успешно.
Следующий шаг
- Реализовать
fission_http_triggerчерез CRDhttptriggers.fission.io.
Обновление этапа (fission_http_trigger)
- Реализован CRUD в
internal/client/client.goдляhttptriggers.fission.io:CreateHTTPTriggerGetHTTPTriggerUpdateHTTPTriggerDeleteHTTPTrigger
- Реализован ресурс
fission_http_triggerвinternal/resources/http_trigger_resource.go:- schema:
name,function,url,methods,create_ingress,host,namespace, computedid,uid - Configure/Create/Read/Update/Delete
- маппинг в CRD
HTTPTrigger(spec.relativeurl,spec.methods,spec.functionref,spec.createingress)
- schema:
- Проверка сборки:
go build ./...успешно.
Следующий шаг
- Добавить пример
examples/hello-python/main.tfи выполнить smoke Terraform apply.
Обновление этапа (пример Terraform)
- Создан пример
examples/hello-python/main.tfс использованием ресурсов:fission_environmentfission_packagefission_functionfission_http_trigger
- Добавлен код функции
examples/hello-python/code/main.py.
Следующий шаг
- Подготовить локальную установку бинарника провайдера для
terraform initи выполнить smoketerraform apply.
Обновление этапа (smoke Terraform apply)
- Собран бинарник провайдера и подключен через Terraform
dev_overrides. - Прогнан
terraform planдляexamples/hello-python: план успешен, 4 ресурса к созданию. - Прогнан
terraform applyи выполнена функциональная проверка.
Исправленные баги по факту smoke:
fission_package: после Create computed-поля (build_status,build_log) могли оставатьсяunknown.- Исправлено формирование state в
unstructuredToPackageModel.
- Исправлено формирование state в
fission_function: CRD требовал обязательныйspec.InvokeStrategy.- Добавлен
InvokeStrategyв payload функции.
- Добавлен
fission_http_trigger: несогласованность state (create_ingressnull -> false).- В schema добавлены
Computed+Default(false)дляcreate_ingress. - Для
methodsдобавленComputed.
- В schema добавлены
Дополнительно:
- Для текущего python MVP
fission_packageпереведен наspec.deployment.literal(как у рабочего CLI-пакета). - Проверка endpoint после apply:
GET /tf-hello->hello from fission via terraform.
Следующий шаг
- Добавить README по запуску dev override и оговорить ограничения текущего MVP (
source_dirожидаетmain.py).
Обновление этапа (README)
- Добавлен
README.mdв корень репозитория. - Описаны:
- список реализованных ресурсов MVP
- запуск через Terraform dev override
- текущие ограничения MVP
Обновление этапа (import + тесты)
- Добавлена поддержка
terraform importдля всех 4 ресурсов:fission_environmentfission_packagefission_functionfission_http_trigger
- Формат import ID:
namespace/name. - Добавлены unit-тесты в
terraform/provider/internal/resources/*_test.go:- парсинг import ID
- конвертация model <-> unstructured
- валидация package source
- базовая проверка HTTP trigger round-trip
- Прогон валидации:
go test ./...— успешно- smoke
terraform plan/apply— успешно - endpoint
GET /tf-hello—hello from fission via terraform
Следующий шаг
- Добавить acceptance-тесты с опциональным запуском по env-флагу.
Обновление этапа (acceptance тест)
- Добавлен acceptance-тест
terraform/provider/internal/client/client_acceptance_test.go. - Тест выполняет живой CRUD в кластере для цепочки:
- Environment -> Package -> Function -> HTTPTrigger
- Запуск теста:
ACCEPTANCE_TEST=1 KUBECONFIG=/home/naeel/.kube/config go test ./internal/client -run TestAcceptanceFissionCRUD -v
- Результат: PASS.
Следующий шаг
- Расширить acceptance-тест проверкой реального HTTP-вызова функции через ingress.
Обновление этапа (много функций + суровая нагрузка)
- Добавлен
examples/stress-suite:- функции:
fast,cpu,json - маршруты:
/stress/fast,/stress/cpu,/stress/json - Terraform-конфиг на 10 ресурсов (env + 3 package + 3 function + 3 trigger)
- функции:
- Добавлен скрипт
examples/stress-suite/scripts/load_test.shдля параллельной нагрузки. - Реальный прогон после донастройки:
900запросов на endpoint90параллелизм- итог:
100%success на всех трех endpoint-ах.
Следующий шаг
- Добавить в acceptance-тест проверку HTTP latency/perf budget и порогов SLO.
Обновление этапа (JS/Go source support)
- В
fission_packageрасширена поддержкаsource_dir:main.pymain.jsmain.go
- Добавлены unit-тесты на выбор JS/Go исходников в
package_resource_test.go. - Прогон
go test ./...— успешно.
Следующий шаг
- Добавить отдельные Terraform примеры для Node.js и Go функций.