Naeel
c033adec11
feat(v0.1.59): in-cluster registry:2 — insecure HTTP mode, ImageExists error handling
2026-03-23 06:41:30 +03: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
7023e0e6fc
feat(builder): add REGISTRY_PROJECT for easy registry migration
...
DockerHub (flat): REGISTRY_HOST=naeel, REGISTRY_PROJECT=<empty>
-> naeel/{nsPrefix}-{func}:{tag}
Harbor/GCR (project): REGISTRY_HOST=host, REGISTRY_PROJECT=proj
-> host/proj/{func}:{tag}
Switch registry by changing 2 env vars only.
2026-03-22 17:51:05 +03:00
Naeel
d87981713d
test: полный прогон POSTGRES example — changes, delete/recreate, new function
2026-03-19 18:45:18 +03:00
Naeel
8a8b815492
fix: убрать --no-cache из kaniko Args — флаг не поддерживается в gcr.io/kaniko-project/executor:latest, кэш отключён по умолчанию
2026-03-19 17:38:07 +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”
babd8e6109
feat: harbor integration — EnsureProject + per-namespace image path
...
- internal/harbor/client.go: новый пакет, EnsureProject (GET+POST idempotent)
- config.go: добавлены HarborUser/HarborPass (из HARBOR_USER/HARBOR_PASS env)
- builder.go: Projecter интерфейс, harborClient поле, ImageRef: {host}/{ns}/{func}:{tag}
EnsureProject вызывается перед каждым Build()
- function_controller.go: HarborClient поле, EnsureProject при создании k8s NS
- main.go: создание harbor.Client если HARBOR_USER+HARBOR_PASS заданы
- operator.yaml: REGISTRY_HOST=pearlharbor..., HARBOR_USER=admin, v0.1.24
- hack/create-registry-secret.sh: переписан для Harbor (HARBOR_USER/HARBOR_PASS)
Смена registry — только через REGISTRY_HOST в ConfigMap, больше нигде.
2026-03-11 14:58:04 +04:00
“Naeel”
59563eba76
fix: operator v0.1.23 — BackoffLimit=2 в kaniko, пересоздание Failed функций; script: mod2 96→128
2026-03-11 12:26:06 +04:00
“Naeel”
f8fe3835a4
fix: уникальный image tag per build вместо :latest (operator v0.1.12)
...
- internal/builder/builder.go: ImageRef() теперь использует sha256(s3Key)[:12]
как тег образа вместо :latest
Пример: naeel/sless-default-hello-http:d431de61e2c9
- controllers/function_controller.go: убран хак с restartedAt аннотацией —
больше не нужен, новый тег = kubelet всегда пул-ит новый образ
- deployments/k8s/operator.yaml: обновлён до v0.1.12
- doc/progress.md: версия обновлена
Преимущества уникального тега:
- imagePullPolicy: IfNotPresent работает корректно
- Rollback к предыдущей версии возможен (теги не перезаписываются)
- Нет race condition при параллельных сборках
2026-03-08 21:05:35 +04:00
“Naeel”
4115e0f172
fix: бесконечный цикл сборки — idempotency guard через last-built-s3key аннотацию
...
Проблема: upload handler сбрасывал phase в Pending ПОСЛЕ того как
контроллер уже выставил Building → бесконечный цикл (94 job'а).
Решение:
- controllers/function_controller.go: startBuild сначала ставит аннотацию
last-built-s3key = spec.S3Key (idempotency guard), потом status.
Reconcile стартует сборку только если spec.S3Key != last-built-s3key.
- handler/upload.go: убран Status().Update() — контроллер сам управляет фазой.
- builder.go: IsAlreadyExists при создании job не ошибка (parallel reconcile).
2026-03-07 09:50:24 +04:00
“Naeel”
8bae4ca69c
fix: kaniko S3 endpoint — добавить https:// схему и S3_FORCE_PATH_STYLE=true
...
Kaniko AWS SDK требует полный URL с протоколом.
Ceph не поддерживает virtual-hosted style — нужен path style.
2026-03-07 09:39:53 +04:00
“Naeel”
c61e822308
feat: python3.11 base runtime image + DockerHub registry support
...
- runtimes/python3.11/: Dockerfile + server.py (HTTP wrapper на :8080)
- builder.go: RegistrySecret field, volume mount docker-creds для kaniko, убран --skip-tls-verify
- config.go: добавлен RegistrySecret (env REGISTRY_SECRET, default sless-registry-auth)
- main.go: передаём RegistrySecret в builder.Config
- hack/create-registry-secret.sh: создаёт k8s Secret из DockerHub токена
Образ наружу: naeel/sless-runtime-python3.11:latest (DockerHub)
K8s secret: sless-registry-auth в namespace sless
2026-03-07 09:32:59 +04:00
“Naeel”
43e7d0ea48
feat: REST API (gorilla/mux + slog) + trigger controller + main.go wiring
...
- controllers/trigger_controller.go: полная реализация, HTTP->Ingress+Service, Cron->CronJob
- internal/config: добавлены IngressHost, APIToken
- internal/api/router.go: gorilla/mux роутер /v1/namespaces/{ns}/...
- internal/api/handler/: functions, triggers, invocations, base handler с slog
- internal/api/middleware/: auth (Bearer token) + logging (slog)
- main.go: запуск operator + HTTP сервера параллельно
- go.sum: добавлен gorilla/mux v1.8.1
2026-03-07 08:46:10 +04:00