Commit Graph
43 Commits
Author SHA1 Message Date
Naeel 71906a40d5 fix(api): DELETE несуществующего ресурса — 404 вместо 204 (function/service/trigger/job) 2026-03-21 06:45:55 +03:00
Naeel 4d107870fb docs(progress): итоги deploy v0.1.43, terraform apply POSTGRES Succeeded 2026-03-21 06:32:50 +03:00
Naeel 6415e4c51b chore: operator image v0.1.43 2026-03-21 06:24:01 +03:00
Naeel 9ceca27cbb fix(controller): ждать S3Key перед startJobBuild — provider загружает код после создания CRD 2026-03-21 06:21:16 +03:00
Naeel 036ac8e49d chore(postgres): provider version 0.1.18 → 0.1.19 (sless_job self-contained) 2026-03-20 22:08:19 +03:00
Naeel bef3b2b8dd chore(crd): регенерация — FunctionJobSpec самодостаточен (runtime/entrypoint/env) 2026-03-20 22:02:28 +03:00
Naeel e9a405c3aa fix(operator): добавить imagePullSecrets sless-registry-auth для pearlharbor 2026-03-20 22:00:20 +03:00
Naeel c3ea8c692b chore: operator image v0.1.42 — pearlharbor registry 2026-03-20 21:56:16 +03:00
Naeel 55b503b515 fix(invoke): заменить FunctionRef на поля из Function.Spec — FunctionJobSpec самодостаточен 2026-03-20 21:52:49 +03:00
Naeel 2f36cc1faa docs: убрать упоминания 192.168.1.220, исправить шаблоны SSH 2026-03-20 21:49:51 +03:00
Naeel 96b6d2e640 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 a421929a2e fix(postgres): исправлен api_endpoint nubes, try() для vault_secrets, стресс-скрипт, документация ошибок 2026-03-20 20:14:36 +03:00
Naeel d28cf59888 chore: comment out all sless resources before PG instance deletion 2026-03-20 13:52:50 +03:00
Naeel 9d3fa8d58f feat: remove stress_* functions from examples/POSTGRES 2026-03-20 13:19:39 +03:00
Naeel 4ca5a7bdfd feat: sless_service CRD + ServiceReconciler, RBAC fix, split postgres/functions.tf, operator v0.1.41 2026-03-20 13:03:12 +03:00
Naeel 955baa45e9 fix: SSH ключ перенесён в ~/.ssh/naeel_vm_id_ed25519 (локально, вне sshfs) 2026-03-20 09:46:32 +03:00
Naeel 3a03bc8e3a doc: стресс-тест ✅ — 45918 ops, 0 ошибок, 76.5 ops/sec за 600s 2026-03-19 21:51:22 +03:00
Naeel 069ba72219 doc: Go runtime v0.1.1, баги 4+5, решения pgx/v5 + dynamic timeout
- progress.md: секция v0.1.1 → ✅ ЗАВЕРШЕНО, все задачи, таблица таймаутов, арх. функции
- errors/log.md: Баг 4 (invoke.go 30s хардкод → context deadline exceeded) + Баг 5 (nginx ingress отсутствие proxy-read-timeout → 504)
- decisions/log.md: pgx/v5 vs database/sql+lib/pq (с обоснованием), динамический таймаут (почему +5s, почему не кешировать, деградация)
2026-03-19 21:39:34 +03:00
Naeel a3ea35d5d8 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 4fdb9a3c3b doc: Tests 3-7, 8 стресс-функций, план Go runtime v0.1.1 + pgx/v5 2026-03-19 20:31:49 +03:00
Naeel 46fdf99214 test: 8 стресс-функций (py/go/js), crash-тесты, stress_test.sh — 32 строки в PG 2026-03-19 19:44:26 +03:00
Naeel c228462133 test: полный прогон POSTGRES example — changes, delete/recreate, new function 2026-03-19 18:45:18 +03:00
Naeel 82ba1531cc fix: убрать --no-cache из kaniko Args — флаг не поддерживается в gcr.io/kaniko-project/executor:latest, кэш отключён по умолчанию 2026-03-19 17:38:07 +03:00
Naeel 9bab2b6f44 feat: event-dispatcher v0.1.0 — Dockerfile, деплой в кластер 2026-03-19 13:51:27 +03:00
Naeel ae0fc54dce feat: event-trigger (Вариант A) — TriggerTypeEvent, event-dispatcher, reconcileEvent 2026-03-19 13:44:35 +03:00
Naeel 86107ca610 doc: архитектура event-trigger — выбран Вариант A (отдельный event-dispatcher) 2026-03-19 13:21:57 +03:00
Naeel f962b9806f 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 84f5903f49 docs: sync all documentation for agent handoff (v0.1.34 + funcs-service v0.2.0) 2026-03-18 20:19:48 +03:00
Naeel 63e2a2b634 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 399b4ce261 feat: web-console — HTML UI + source viewer + trigger toggle
- operator: GET /v1/namespaces/{ns}/functions/{name}/source
  reads build context tar.gz from S3, strips Dockerfile, returns JSON files
- funcs-service v0.2.0:
  - Accept: text/html → dark-themed HTML console with accordion cards
  - GET /funcs/{ns}/source/{fn} → proxy to operator (service token auth)
  - PATCH /funcs/{ns}/triggers/{name} → proxy enable/disable (only enabled field)
  - curl (no text/html Accept) → plain text as before (backward compat)
- highlight.js syntax highlighting per file extension
- operator v0.1.34, funcs-service v0.2.0
2026-03-18 17:24:43 +03:00
Naeel 90e4b845cd docs: document all changes and web-console plan
- doc/progress.md: funcs global service v0.1.x, URLs, next steps
- doc/decisions/log.md: storage architecture, funcs service decision, web-console plan
- doc/api/design.md: current + planned endpoints (/source, PATCH trigger)
- doc/architecture/overview.md: funcs-service component, S3 storage diagram
2026-03-18 16:38:18 +03:00
Naeel 56ec1d548f feat: funcs-service v0.1.3 — /funcs/<namespace> URL without token
- /funcs/<namespace>: user opens URL in browser, no auth needed
  service uses SLESS_SERVICE_TOKEN to query operator internally
- /funcs?token=<jwt>: token as query param (bookmarkable URL)
- /funcs: returns usage hint with both URL formats
- SLESS_SERVICE_TOKEN set via kubectl set env (not stored in repo)
2026-03-18 16:11:17 +03:00
Naeel 1960ac33cb 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 ec61c2764f 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 84a54671ee feat: add funcs endpoint — list all functions with triggers for UI 2026-03-18 10:05:15 +03:00
Naeel 87d2422e8b feat: POSTGRES example — add pg-table-reader HTTP function 2026-03-18 09:23:13 +03:00
Naeel 44283a6d26 docs: 2026-03-18 DNS incident — sless-api→sless.kube5s.ru, POSTGRES E2E PASS 2026-03-18 09:07:47 +03:00
Naeel cd5695d0cc 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 9bfed0dc77 fix: remove all prod endpoint references from examples (test stand only) 2026-03-18 08:08:20 +03:00
Naeel 00e4be5e28 docs: E2E results 2026-03-17 — all 4 examples PASS on test stand 2026-03-18 06:27:57 +03:00
Naeel e222dacbe4 feat: demo managed functions with harbor-backed operator setup 2026-03-14 18:16:53 +03:00
Naeel 2516ed61a2 chore: ignore *.tfvars in examples, remove ai_hint_level from pg-list-python 2026-03-12 09:21:20 +03:00
Naeel 29be4b7b5e chore: provider v0.1.18, update examples (harbor branch) 2026-03-12 09:19:17 +03:00