Naeel
f8f95d7147
examples/VM: bump nubes provider 5.0.49, rename resources vm-sless
2026-03-28 20:27:16 +03:00
Naeel
547994dc55
examples: DEVfromGround vc_org, NODEJS, VM, POSTGRES updates
2026-03-26 08:33:03 +03:00
Naeel
2b03ba520e
examples/DEVfromGround: add Terraform manifests (nubes_vc_org, DEV endpoint)
2026-03-26 06:43:53 +03:00
Naeel
bc0e00acca
feat(vm): add vApp + VM terraform example
2026-03-25 08:17:08 +03:00
Naeel
b7fa8acf76
feat(web-console): create/edit/delete functions in UI, v0.1.4
...
- services/funcs: новые маршруты POST create-function, POST save-function,
DELETE delete-function — создание/редактирование/удаление через браузер
- index.html: модалка создания с шаблонами Python/Node.js hello world,
кнопки edit/delete на каждой карточке функции
- sless-funcs-service:v0.1.4 задеплоен
- examples/POSTGRES: удалены логи, .bak, backup tfstate, лишние функции
оставлены 2 Python (pg-stats, pg-counter) + 2 Node.js (pg-info, js-idempotent)
2026-03-23 10:19:42 +03:00
Naeel
7a168185ea
fix: cache lag retry, go.work, провайдер rollback, test v4 no -target
2026-03-23 10:03:26 +03:00
“Naeel”
cb77a7f68e
fix: go.work replace + test destroy targets
2026-03-23 09:30:37 +04:00
Naeel
9edd43edc5
feat(v0.1.58): ImageExists cache hit, timing analysis, in-cluster registry plan
2026-03-23 06:22:25 +03:00
Naeel
a76baa62a3
fix: v0.1.50 — runtime 400 + SLESS_ENTRYPOINT в Deployment
...
Bug 1: services.go — k8s IsInvalid error (CRD enum validation) маппился в 500.
Теперь errors.IsInvalid() → 400 Bad Request (invalid service spec).
Bug 2: service_controller.go buildServiceDeployment не передавал env SLESS_ENTRYPOINT
в под. Добавлен в envVars из svc.Spec.Entrypoint. Без него server.py использовал
fallback handler.handle и не замечал неверный entrypoint.
operator_failure_test.sh 12B-2: обновлён под новое правильное поведение —
create ruby3.0 → 400 (не 201). Старый 201-путь сохранён как warn для совместимости.
2026-03-22 08:11:05 +03:00
Naeel
b86ff3a62e
feat(service): timeout_sec без дефолта; 0=нет таймаута; operator v0.1.48
...
- api/v1alpha1/service_types.go: убрать +kubebuilder:default=30
- invoke.go: TimeoutSec=0 → &http.Client{} (без таймаута)
- services.go: валидация timeout_sec < 0 || > 900 → HTTP 400
- service_resource.go: TF schema Optional (без Computed); 0 → Int64Null()
- deployments/k8s/operator.yaml: v0.1.47 → v0.1.48
- doc/: progress.md + api/design.md (модель Service) + decisions/log.md
- examples/POSTGRES/: bug_hunter.sh, chaos_marathon.sh, chaos_marathon.tf
2026-03-21 16:58:43 +03:00
Naeel
7f7aa44e59
chore: удаление устаревших examples, новый doc, правки funcs-service
...
- examples/: удалены старые директории (TNAR, demo-event-log, demo-managed-functions,
hello-go, hello-node, notes-python, pg-list-python, simple-node, simple-python)
- examples/README.md: обновлён (только POSTGRES остался)
- doc/decisions/build-deploy-pipeline.md: новый документ по пайплайну сборки/деплоя
- services/funcs/main.go: правки из текущей сессии
2026-03-21 08:46:30 +03:00
Naeel
778cbc8b32
fix(runtime): Go panic→500 (recover), Python exception→500+threading+backlog
...
- go1.23 v0.1.2: defer recover() в HTTP handler — panic no longer closes connection → HTTP 500
- python3.11 v0.1.5: try/except в do_GET/_handle_with_body/do_HEAD → 500 вместо EOF
- python3.11 v0.1.5: ThreadingHTTPServer — concurrent requests (был single-thread)
- python3.11 v0.1.6: _HighBacklogHTTPServer(request_queue_size=128) — listen(128) вместо listen(5)
- context.go: go1.23 v0.1.1→v0.1.2, python3.11 v0.1.4→v0.1.6
- operator: v0.1.45 → v0.1.47 (два деплоя подряд с новыми runtime-версиями)
- examples/POSTGRES: stress.tf (10 сервисов), full_test.sh (48 тестов, 4 фазы)
- examples/POSTGRES: README.md, очистка от старых файлов (luceUNDnode.tf, funcs_list.py)
Результат: full_test.sh 48/48 PASS
- Фаза 3 PG-стресс: 40/40 parallel writer OK, 30/30 js-async OK, pgstorm 14k ops 0 err
- Фаза 4 краш-шторм: 75/75 × HTTP 500 (паники не роняют платформу)
2026-03-21 08:42:03 +03:00
Naeel
3b3d510def
chore(postgres): provider version 0.1.18 → 0.1.19 (sless_job self-contained)
2026-03-20 22:08:19 +03:00
Naeel
8ca8faedd1
feat(job): merge sless_function into sless_job — self-contained build+run
...
- FunctionJobSpec: убран FunctionRef, добавлены Runtime/Entrypoint/Env/S3Key/MemoryMB/TimeoutSec
- FunctionJobStatus: новый ImageRef, новая фаза Building
- FunctionJobReconciler: Building фаза (kaniko), убрана зависимость от Function CRD
Builder+OperatorNamespace как поля struct; аннотация sless.kube5s.ru/build-job guard
- main.go: Builder+OperatorNamespace переданы в FunctionJobReconciler
- jobs.go handler: jobRequest/jobResponse без FunctionRef; новый UploadJobCode handler
- router.go: /jobs/{name}/upload маршрут
- client.go: JobRequest/JobResponse обновлены; UploadJobCode; uploadCodeToURL общий хелпер
- job_resource.go: полная переработка — источник/среда встроены в JobModel, ModifyPlan,
Create с upload, wait_timeout_sec=900 по умолчанию (kaniko + выполнение)
- examples/POSTGRES/functions.tf: раскомментирован, sless_function удалён,
sless_job самодостаточен (inline source_dir/runtime/entrypoint/env_vars)
2026-03-20 21:27:35 +03:00
Naeel
1b3c8376c0
fix(postgres): исправлен api_endpoint nubes, try() для vault_secrets, стресс-скрипт, документация ошибок
2026-03-20 20:14:36 +03:00
Naeel
861a26cd51
chore: comment out all sless resources before PG instance deletion
2026-03-20 13:52:50 +03:00
Naeel
dac9c3293b
feat: remove stress_* functions from examples/POSTGRES
2026-03-20 13:19:39 +03:00
Naeel
680beb675b
feat: sless_service CRD + ServiceReconciler, RBAC fix, split postgres/functions.tf, operator v0.1.41
2026-03-20 13:03:12 +03:00
Naeel
d7fda15d35
feat: Go runtime v0.1.1 (pgx/v5), stress-go-pgstorm, fix invoke.go dynamic timeout, nginx ingress timeout 900s
...
- runtimes/go1.23: добавлен pgx/v5 v5.7.2 в go.mod, сгенерирован go.sum
- runtimes/go1.23/Dockerfile: один stage golang:1.23-alpine, go mod download кеширует зависимости
- internal/builder/context.go: тег Go runtime v0.1.0 → v0.1.1
- internal/api/handler/invoke.go: таймаут прокси-клиента теперь динамический из Function.Spec.TimeoutSec + 5s буфер (был хардкод 30s)
- examples/POSTGRES/code/stress-go-pgstorm/handler.go: новая функция, 100 горутин, pgxpool, INSERT/COUNT/MAX, параметры: workers/duration_sec/max_delay_ms
- examples/POSTGRES/resources.tf: добавлены sless_function.stress_go_pgstorm + trigger, timeout_sec=700
- deployments/k8s/operator.yaml: nginx ingress proxy-read-timeout=900s, proxy-send-timeout=900s
- examples/*/main.tf: исправлен URL deck-api-test.ngcloud.ru → deck-test.ngcloud.ru (все 9 файлов)
- Оператор: v0.1.39 (pgx/v5) → v0.1.40 (dynamic timeout)
2026-03-19 21:33:41 +03:00
Naeel
014b99ed16
test: 8 стресс-функций (py/go/js), crash-тесты, stress_test.sh — 32 строки в PG
2026-03-19 19:44:26 +03:00
Naeel
d87981713d
test: полный прогон POSTGRES example — changes, delete/recreate, new function
2026-03-19 18:45:18 +03:00
Naeel
d286d92a05
fix: invoke.go — forward Content-Length to proxied request (form POST fix)
...
Without ContentLength, Python BaseHTTPRequestHandler read 0 bytes from body.
operator v0.1.37, python runtime v0.1.4, pg-table-writer HTML form
2026-03-19 08:58:35 +03:00
Naeel
a04dfb2d0c
fix+docs: FunctionJob label bugfix, job ErrAlreadyExists, python str→text/plain, operator.yaml v0.1.33, progress.md
...
- controllers/functionjob_controller.go:
- PodTemplate labels: functionjob=, function= (k8s 1.27+ удалил job-name=)
- getJobPodOutput принимает labelSelector вместо jobName
- захват stderr при Failed job; truncateForStatus() helper
- terraform/provider/internal/client/client.go: ErrJobAlreadyExists (409 Conflict)
- terraform/provider/internal/resources/job_resource.go: при конфликте создания — читаем существующий job
- runtimes/python3.11/server.py: str return → text/plain
- internal/builder/context.go: python runtime base image → v0.1.3
- deployments/k8s/operator.yaml: image → v0.1.33
- doc/progress.md: добавлены секции FunctionJob bugfix, str→text/plain, web-console v0.2.0
2026-03-18 17:41:44 +03:00
Naeel
e8cd62e171
feat: funcs as global Go service (sless-funcs-service:v0.1.1)
...
- services/funcs/main.go: standalone Go HTTP server
extracts JWT sub -> SHA256[:8] -> namespace -> calls operator API
returns plain text list, sorted active first, /health probe endpoint
- services/funcs/Dockerfile: multi-stage Go build -> alpine
- deployments/k8s/funcs-service.yaml: Deployment+Service+Ingress in sless ns
ingress path /funcs -> sless-funcs-service:8090, reuses sless-operator-tls
- examples/POSTGRES/resources.tf: removed funcs_list function+trigger+output
Image: naeel/sless-funcs-service:v0.1.1
2026-03-18 15:58:08 +03:00
Naeel
9bc91841c8
feat: NodeJS pg-info function; funcs endpoint: filter + created_at/last_built_at; operator v0.1.32
2026-03-18 11:03:58 +03:00
Naeel
6010649e7b
feat: add funcs endpoint — list all functions with triggers for UI
2026-03-18 10:05:15 +03:00
Naeel
ba0375d47e
feat: POSTGRES example — add pg-table-reader HTTP function
2026-03-18 09:23:13 +03:00
Naeel
cca3a8cdc1
fix: migrate sless endpoint from sless-api.kube5s.ru to sless.kube5s.ru (new cluster ingress 185.247.187.147)
2026-03-18 08:48:50 +03:00
Naeel
8f841e8c81
fix: remove all prod endpoint references from examples (test stand only)
2026-03-18 08:08:20 +03:00
Naeel
5d9045babc
docs: E2E results 2026-03-17 — all 4 examples PASS on test stand
2026-03-18 06:27:57 +03:00
“Naeel”
1294ad993f
0
2026-03-15 09:38:27 +04:00
Naeel
8dd5b676c0
feat: demo managed functions with harbor-backed operator setup
2026-03-14 18:16:53 +03:00
Naeel
cbd2c8c44c
chore: ignore *.tfvars in examples, remove ai_hint_level from pg-list-python
2026-03-12 09:21:20 +03:00
Naeel
2798f3b896
chore: provider v0.1.18, update examples (harbor branch)
2026-03-12 09:19:17 +03:00
“Naeel”
0011bd0f39
chore: terraform.tfvars.change — инструкция по переименованию
2026-03-11 18:38:51 +04:00
“Naeel”
20fb5f6539
chore: добавлены terraform.tfvars.change — шаблоны для токена (переименовать в terraform.tfvars)
2026-03-11 18:38:07 +04:00
“Naeel”
57193536f3
fix: ModifyPlan — terraform plan теперь видит изменения в source_dir (provider v0.1.16)
2026-03-11 18:27:46 +04:00
“Naeel”
d3c54eb521
security: убраны реальные токены из terraform.tfvars + инструкция в README
2026-03-11 17:41:34 +04:00
“Naeel”
e5e6d273d2
docs: README для примера pg-list-python
2026-03-11 17:24:34 +04:00
“Naeel”
d6a2e224ca
fix: восстановлен requirements.txt после теста
2026-03-11 16:54:53 +04:00
“Naeel”
000d45ad6f
test: невалидный requirements.txt
2026-03-11 16:53:01 +04:00
“Naeel”
5c6a37313b
docs: переработан examples/README.md + комментарии function.tf
2026-03-11 16:48:01 +04:00
“Naeel”
81be52f6ef
fix: Decimal→float для JSON сериализации price
2026-03-11 16:39:56 +04:00
“Naeel”
2ca3137c0b
feat: пример pg-list-python — список из PostgreSQL без джоба
2026-03-11 16:37:22 +04:00
“Naeel”
64bd495cf9
chore: удалён отладочный push-sample (Harbor интеграция закончена)
2026-03-11 16:33:26 +04:00
“Naeel”
c4559dd365
fix: go1.23 build context — COPY . /app/handler/ вместо COPY handler/
2026-03-11 16:14:42 +04:00
“Naeel”
78d11aeb26
refactor: rename handler.go→greeting.go, buildGreeting() in hello-go example
2026-03-11 16:02:49 +04:00
“Naeel”
a709b38f6b
feat: go1.23 runtime support
...
- runtimes/go1.23/server.go: HTTP-wrapper + job-runner (SLESS_MODE=job)
- runtimes/go1.23/go.mod: module sless/fn (изолирует от корневого go.mod)
- runtimes/go1.23/Dockerfile: multi-stage build (golang:1.23-alpine → alpine:3.20)
- internal/builder/context.go: go1.23 в runtimeBaseImage + generateDockerfile
- controllers/functionjob_controller.go: go1.23 runner (nil cmd + SLESS_MODE=job env)
- api/v1alpha1/function_types.go: enum go1.21 → go1.23
- config/crd/bases/...: CRD обновлён
- terraform/provider: OneOf обновлён
- examples/hello-go: HTTP + job примеры на go1.23
- deployments/k8s/operator.yaml: v0.1.25
2026-03-11 15:40:47 +04:00
“Naeel”
869d728684
chore: staged files from prev session (gitignore, examples, harbor guide)
2026-03-11 14:36:32 +04:00
“Naeel”
6c6040d8f8
test: E2E скрипт run_e2e_tests.sh + fix provider token/version в примерах
2026-03-11 10:49:36 +04:00