# Terraform Provider Fission (MVP) Текущий MVP провайдера управляет Fission CRD через Kubernetes API: - `fission_environment` - `fission_package` - `fission_function` - `fission_http_trigger` Все ресурсы поддерживают `terraform import` в формате `namespace/name`. ## Быстрый запуск (dev override) 1. Собрать бинарник провайдера: ```bash cd terraform/provider go build -o bin/terraform-provider-fission . ``` 2. Положить бинарник в локальный каталог dev plugins: ```bash mkdir -p ~/.terraform.d/dev-plugins/Nail/fission cp terraform/provider/bin/terraform-provider-fission ~/.terraform.d/dev-plugins/Nail/fission/ ``` 3. Создать файл Terraform CLI config (пример `/tmp/terraformrc-fission`): ```hcl provider_installation { dev_overrides { "nail/fission" = "/home/naeel/.terraform.d/dev-plugins/Nail/fission" } direct {} } ``` 4. Запустить пример: ```bash cd examples/hello-python TF_CLI_CONFIG_FILE=/tmp/terraformrc-fission terraform plan TF_CLI_CONFIG_FILE=/tmp/terraformrc-fission terraform apply -auto-approve ``` ## Тесты Unit-тесты: ```bash cd terraform/provider go test ./... ``` Acceptance-тест (реальный кластер, опционально): ```bash cd terraform/provider ACCEPTANCE_TEST=1 KUBECONFIG=/home/naeel/.kube/config go test ./internal/client -run TestAcceptanceFissionCRUD -v ``` Импорт существующего ресурса (пример): ```bash terraform import fission_environment.python default/tf-python-env terraform import fission_package.hello default/tf-hello-pkg terraform import fission_function.hello default/tf-hello-fn terraform import fission_http_trigger.hello default/tf-hello-route ``` ## Ограничения MVP - `fission_package.source_dir` в текущей реализации ожидает один из файлов: `main.py`, `main.js`, `main.go`. - Реализация ориентирована на Python flow через `spec.deployment.literal`. - Дополнительные сценарии сборки (`build_command`, многофайловые архивы и т.д.) будут расширены в следующих этапах. ## Stress Suite (много функций + нагрузка) Добавлен отдельный пример `examples/stress-suite`: - 3 функции: `fast`, `cpu`, `json` - 3 endpoint-а: `/stress/fast`, `/stress/cpu`, `/stress/json` - Terraform разворачивает полный набор ресурсов для каждого endpoint. Суровый нагрузочный прогон: ```bash cd examples/stress-suite TF_CLI_CONFIG_FILE=/tmp/terraformrc-fission terraform apply -auto-approve ./scripts/load_test.sh https://fission.kube5s.ru 900 90 ``` Где: - `900` — число запросов на endpoint - `90` — параллелизм