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
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
-- Миграция: 001 — начальная схема
|
||||
-- Создано: 2026-03-07
|
||||
-- Таблица invocations хранит логи вызовов функций.
|
||||
-- Состояние самих функций хранится в k8s CRD (etcd), не здесь.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS invocations (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
-- function_name и namespace — ссылка на CRD Function в k8s
|
||||
function_name VARCHAR(255) NOT NULL,
|
||||
namespace VARCHAR(255) NOT NULL,
|
||||
-- статус выполнения: success, error, timeout
|
||||
status VARCHAR(50) NOT NULL,
|
||||
-- время выполнения в миллисекундах
|
||||
duration_ms INTEGER NOT NULL DEFAULT 0,
|
||||
-- HTTP статус ответа функции (для HTTP триггеров)
|
||||
http_status INTEGER,
|
||||
-- вывод функции (stdout/stderr), ограничен 64KB
|
||||
logs TEXT,
|
||||
-- тип триггера: http, cron
|
||||
trigger_type VARCHAR(50) NOT NULL DEFAULT 'http',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Индексы для быстрой выборки логов по функции
|
||||
CREATE INDEX IF NOT EXISTS idx_invocations_function ON invocations (function_name, namespace);
|
||||
CREATE INDEX IF NOT EXISTS idx_invocations_created_at ON invocations (created_at DESC);
|
||||
Reference in New Issue
Block a user