From a199745c7702a0cb2ca7b58f420458d1d255c2a4 Mon Sep 17 00:00:00 2001 From: Naeel Date: Wed, 15 Apr 2026 15:05:27 +0300 Subject: [PATCH] fix: restore 15 functions and roll console favicon image --- console/deploy/console.yaml | 6 ++++- doc/progress.md | 40 +++++++++++++++++++++++++++++ doc/thinking/2026-04-15.md | 50 ++++++++++++++++++++++++++++++++++++ examples/multi-env-1/main.tf | 39 ++++++++++++++++++++++++++++ examples/multi-env-2/main.tf | 39 ++++++++++++++++++++++++++++ examples/multi-env-3/main.tf | 39 ++++++++++++++++++++++++++++ 6 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 examples/multi-env-1/main.tf create mode 100644 examples/multi-env-2/main.tf create mode 100644 examples/multi-env-3/main.tf diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml index ce50647..cb9adfb 100644 --- a/console/deploy/console.yaml +++ b/console/deploy/console.yaml @@ -46,7 +46,7 @@ spec: serviceAccountName: fission-console containers: - name: console - image: naeel/fission-console:v0.2.5 + image: naeel/fission-console:v0.3.1 ports: - containerPort: 8090 env: @@ -56,6 +56,10 @@ spec: value: "http://router.fission.svc.cluster.local" - name: PORT value: "8090" + - name: FISSION_HTTP_TIMEOUT + value: "30s" + - name: FISSION_INVOKE_TIMEOUT + value: "20s" - name: FISSION_AUTH_USERNAME valueFrom: secretKeyRef: diff --git a/doc/progress.md b/doc/progress.md index f3ec9b9..785ecb4 100644 --- a/doc/progress.md +++ b/doc/progress.md @@ -466,3 +466,43 @@ ### Финальная валидация - Для каждой из 6 функций: `code=OK`, `invoke=OK`. + +## 2026-04-15 (дополнение) — Наращивание до 15 функций + исправление фавикона в live UI + +### Запрос +- Увеличить набор до 15 функций, включая error-кейсы. +- Прогнать тесты и чинить код/манифесты при расхождении с ожиданием. +- Исправить favicon в реальном UI (а не только в репозитории). + +### Что сделано по функциям +- Подняты функции из `examples`: `hello-python`, `deep-recursion`, `destroy-test`, `frequent-update`, `orphan-test`, `multi-env-1/2/3`. +- Добавлен негативный кейс `tf-neg-syntax-fn` с route `/neg/syntax`. +- Доведено до ровно `functions=15`, `httptriggers=15`. + +### Фиксы по коду/манифестам (по результатам тестов) +- `examples/multi-env-1/main.tf` + - исправлен `source_dir` с `"$\{path.module\}/code"` на `"${path.module}/code"`. + - заменен image env с `ghcr.io/fission/python-env:v1.20.0` на `ghcr.io/fission/python-env`. +- `examples/multi-env-2/main.tf` + - аналогичные исправления `source_dir` и image. +- `examples/multi-env-3/main.tf` + - аналогичные исправления `source_dir` и image. + +### Тест-матрица (router + JWT) +- Итог: `PASS 15 / FAIL 0`. +- Успешные (`HTTP 200`): + - `/auth-test2`, `/js-acc`, `/js-direct`, `/hello`, `/auto/ok`, `/destroy-test`, `/freq-update`, `/tf-hello`, `/multi-env-1`, `/multi-env-2`, `/multi-env-3`, `/orphan-test`, `/stress/fast`. +- Ожидаемые error-кейсы: + - `/deep-recursion` -> timeout (`curl rc=28`, `HTTP 000`) + - `/neg/syntax` -> timeout (`curl rc=28`, `HTTP 000`) +- Доп. проверка через Console invoke: + - `tf-multi-env-1-fn` -> `status=200` + - `tf-hello-fn` -> `status=200` + - `tf-neg-syntax-fn` и `tf-deep-recursion-fn` -> ожидаемая fail-fast ошибка invoke timeout. + +### Фавикон (live) +- Причина «старого фавикона»: в кластере работал старый образ `naeel/fission-console:v0.3.0`. +- Собран и выкачен новый образ: `naeel/fission-console:v0.3.1`. +- Deployment обновлен и успешно прокатан. +- Проверено в live HTML: отдается + - ``. diff --git a/doc/thinking/2026-04-15.md b/doc/thinking/2026-04-15.md index 0b9cfc3..9c6f250 100644 --- a/doc/thinking/2026-04-15.md +++ b/doc/thinking/2026-04-15.md @@ -368,3 +368,53 @@ User → POST /console/api/functions/NAME/invoke ### Вывод - Финальный набор теперь соответствует строгому критерию "однозначно работает и показывается". + +--- + +## Сессия: Возврат к 15 функциям + проверка ожиданий + live favicon + +### Наблюдение в начале + +- После строгой чистки в кластере оставалось 6 функций. +- В live UI favicon оставался старым, хотя в репозитории правка уже была. +- Проверка deployment показала: работал старый image `naeel/fission-console:v0.3.0`. + +### Расширение набора до 15 + +- Добавлены функции из примеров: + - `tf-hello-fn`, `tf-deep-recursion-fn`, `tf-destroy-test-fn`, `tf-freq-update-fn`, `tf-orphan-fn` + - `tf-multi-env-1-fn`, `tf-multi-env-2-fn`, `tf-multi-env-3-fn` +- Добавлен негативный кейс: + - `tf-neg-syntax-fn` + route `/neg/syntax` +- Итоговый размер: + - functions = 15 + - httptriggers = 15 + +### Что сломалось и как починено + +1. `multi-env-1/2/3` не применялись: + - ошибка Terraform: `Invalid escape sequence` из-за `"$\{path.module\}/code"`. + - фикс: заменено на `"${path.module}/code"` во всех трех `main.tf`. + +2. После применения `multi-env-1/2/3` маршруты таймаутили (`rc=28`): + - причина: image env `ghcr.io/fission/python-env:v1.20.0`. + - фикс: переключено на `ghcr.io/fission/python-env`, re-apply всех трех модулей. + - результат: `/multi-env-1`, `/multi-env-2`, `/multi-env-3` -> `HTTP 200`. + +### Финальная тест-матрица + +- Router tests с JWT: `PASS=15, FAIL=0`. +- Успешные 200: базовые + multi-env + tf-hello + stress-fast. +- Ожидаемые ошибки: + - `/deep-recursion` -> timeout (`HTTP 000`, `rc=28`) + - `/neg/syntax` -> timeout (`HTTP 000`, `rc=28`) +- Console invoke подтверждает: + - positive функции -> `status=200` + - negative функции -> fail-fast timeout error. + +### Favicon в live + +- Собран и выкачен `naeel/fission-console:v0.3.1`. +- `deployment/fission-console` обновлен и rollout успешен. +- Проверка `https://fission.kube5s.ru/console/` показывает нужный favicon URL: + - `https://nubes.ru/themes/custom/nubes_2025/favicon.png`. diff --git a/examples/multi-env-1/main.tf b/examples/multi-env-1/main.tf new file mode 100644 index 0000000..5d8884e --- /dev/null +++ b/examples/multi-env-1/main.tf @@ -0,0 +1,39 @@ +terraform { + required_providers { + fission = { + source = "nail/fission" + version = "~> 0.1.0" + } + } +} + +provider "fission" { + kubeconfig_path = "/home/naeel/.kube/config" + namespace = "default" +} + +resource "fission_environment" "python" { + name = "tf-multi-env-1" + image = "ghcr.io/fission/python-env" + version = 3 +} + +resource "fission_package" "pkg" { + name = "tf-multi-env-1-pkg" + environment = fission_environment.python.name + source_dir = "${path.module}/code" +} + +resource "fission_function" "fn" { + name = "tf-multi-env-1-fn" + environment = fission_environment.python.name + package_name = fission_package.pkg.name + entrypoint = "main.main" +} + +resource "fission_http_trigger" "route" { + name = "tf-multi-env-1-route" + function = fission_function.fn.name + url = "/multi-env-1" + methods = ["GET"] +} diff --git a/examples/multi-env-2/main.tf b/examples/multi-env-2/main.tf new file mode 100644 index 0000000..70a5fb0 --- /dev/null +++ b/examples/multi-env-2/main.tf @@ -0,0 +1,39 @@ +terraform { + required_providers { + fission = { + source = "nail/fission" + version = "~> 0.1.0" + } + } +} + +provider "fission" { + kubeconfig_path = "/home/naeel/.kube/config" + namespace = "default" +} + +resource "fission_environment" "python" { + name = "tf-multi-env-2" + image = "ghcr.io/fission/python-env" + version = 3 +} + +resource "fission_package" "pkg" { + name = "tf-multi-env-2-pkg" + environment = fission_environment.python.name + source_dir = "${path.module}/code" +} + +resource "fission_function" "fn" { + name = "tf-multi-env-2-fn" + environment = fission_environment.python.name + package_name = fission_package.pkg.name + entrypoint = "main.main" +} + +resource "fission_http_trigger" "route" { + name = "tf-multi-env-2-route" + function = fission_function.fn.name + url = "/multi-env-2" + methods = ["GET"] +} diff --git a/examples/multi-env-3/main.tf b/examples/multi-env-3/main.tf new file mode 100644 index 0000000..fe42331 --- /dev/null +++ b/examples/multi-env-3/main.tf @@ -0,0 +1,39 @@ +terraform { + required_providers { + fission = { + source = "nail/fission" + version = "~> 0.1.0" + } + } +} + +provider "fission" { + kubeconfig_path = "/home/naeel/.kube/config" + namespace = "default" +} + +resource "fission_environment" "python" { + name = "tf-multi-env-3" + image = "ghcr.io/fission/python-env" + version = 3 +} + +resource "fission_package" "pkg" { + name = "tf-multi-env-3-pkg" + environment = fission_environment.python.name + source_dir = "${path.module}/code" +} + +resource "fission_function" "fn" { + name = "tf-multi-env-3-fn" + environment = fission_environment.python.name + package_name = fission_package.pkg.name + entrypoint = "main.main" +} + +resource "fission_http_trigger" "route" { + name = "tf-multi-env-3-route" + function = fission_function.fn.name + url = "/multi-env-3" + methods = ["GET"] +}