docs: update progress.md, errors/log.md; add gitignore for dist/ and tfstate backups
- doc/progress.md: обновлена версия до operator v0.1.18 / provider v0.1.11, добавлен блок source_dir + fix destroy cleanup (2026-03-09), уточнены комментарии к контроллерам и trigger_resource - doc/errors/log.md: добавлены две записи — source_dir/hashicorp/archive, destroy route cleanup bug (три причины + решения) - .gitignore: добавлены examples/*/dist/ и terraform.tfstate.*.backup - examples/: удалены dist/ zip и tfstate.*.backup из трекинга
This commit is contained in:
@@ -78,6 +78,37 @@ if tr.Schedule != "" {
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-09 — source_dir: hashicorp/archive недоступен без VPN
|
||||
|
||||
**Проблема:** С VPN недоступен `kube5s.ru` (registry провайдера), без VPN — `registry.terraform.io` (hashicorp/archive). Примеры не работали ни с VPN ни без.
|
||||
|
||||
**Причина:** Зависимость от внешнего провайдера `hashicorp/archive` для создания zip.
|
||||
|
||||
**Решение:** Добавить атрибут `source_dir` в `sless_function`. Провайдер сам упаковывает директорию в zip (`archive/zip` in-memory), считает SHA256 (`crypto/sha256`). Файлы сортируются для детерминированного хэша. `hashicorp/archive` убран из всех примеров.
|
||||
|
||||
**Provider:** v0.1.10.
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-09 — Destroy route cleanup bug: endpoint 502 после terraform destroy
|
||||
|
||||
**Проблема:** После `terraform destroy` публичный HTTP-эндпоинт продолжал отвечать — сначала 200, затем 502 `function unreachable`. Тестовый скрипт ждал 120 секунд и падал.
|
||||
|
||||
**Причина:** Три независимые проблемы в связке:
|
||||
1. `trigger_controller.go` `handleTriggerDeletion` намеренно не удалял Service и Ingress (комментарий «оставляем — могут быть нужны другим триггерам»). Неверно: имена Service/Ingress совпадают с именем функции, а не триггера.
|
||||
2. `function_controller.go` `handleDeletion` удалял только Deployment, не трогал Service и Ingress.
|
||||
3. `invoke.go` при DNS NXDOMAIN (`no such host`) возвращал 502, а тестовый скрипт ждёт 404. Итог: Ingress висел вечно → 502 висел 120с.
|
||||
|
||||
**Решение:**
|
||||
1. `handleTriggerDeletion`: для HTTP-триггеров явно удалять `Service` и `Ingress` с именем `fn.Spec.FunctionRef` в `sless-fn-{ns}`.
|
||||
2. `handleDeletion`: добавить удаление `Service` и `Ingress` с именем `fn.Name` в `sless-fn-{ns}` (импорт `netv1`).
|
||||
3. `trigger_resource.go` Delete: polling `GetTrigger` каждые 3с до 90с — провайдер не возвращает успех раньше завершения cleanup.
|
||||
4. `invoke.go`: `no such host` → HTTP 404 вместо 502 — Service удалён, эндпоинт мёртв.
|
||||
|
||||
**Operator:** v0.1.17 (контроллеры), v0.1.18 (invoke.go). **Provider:** v0.1.11.
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-07 — Terraform Provider: "Resource Import Not Implemented"
|
||||
|
||||
**Проблема:** После failed `terraform apply` (Function создалась, Trigger упал) state не содержал созданных ресурсов. Повторный apply падал с `status 409: function already exists`. `terraform import` тоже не работал:
|
||||
|
||||
Reference in New Issue
Block a user