76 lines
2.3 KiB
Markdown
76 lines
2.3 KiB
Markdown
# 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` в корне указанной директории.
|
|
- Реализация ориентирована на Python flow через `spec.deployment.literal`.
|
|
- Дополнительные сценарии сборки (`build_command`, многофайловые архивы и т.д.) будут расширены в следующих этапах.
|