From b5f8a9bf0e714f803020187d4f6924f7cde09299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 15 May 2026 06:59:19 +0400 Subject: [PATCH] doc: add multi-tenant quick reference card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Краткий справочник команд и концепций мультитенантного Fission. Содержит: жизненный цикл namespace, CLI команды, схему RBAC, структуру URL функций, типичные сценарии использования. --- doc/quick-ref.md | 191 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 doc/quick-ref.md diff --git a/doc/quick-ref.md b/doc/quick-ref.md new file mode 100644 index 00000000..13e373d8 --- /dev/null +++ b/doc/quick-ref.md @@ -0,0 +1,191 @@ +# Fission — Краткий справочник команд + +> Базовый URL: `https://fission.kube5s.ru/console/api` +> Токен передаётся через `X-Auth-Token: ` или `Authorization: Bearer ` + +```bash +BASE="https://fission.kube5s.ru/console/api" +T="X-Auth-Token: mylogin@example.com" # demo: любая строка ≥6 символов +``` + +--- + +## Стандартные операции + +### Функции + +```bash +# Создать функцию +curl -X POST "$BASE/functions" -H "$T" -H "Content-Type: application/json" \ + -d '{"name":"hello","language":"python","code":"def main(event, context): return \"hi\""}' + +# Список функций +curl "$BASE/functions" -H "$T" + +# Описание функции +curl "$BASE/functions/hello" -H "$T" + +# Вызвать функцию +curl -X POST "$BASE/functions/hello/invoke" -H "$T" \ + -H "Content-Type: application/json" -d '{}' + +# Обновить код +curl -X PUT "$BASE/functions/hello/code" -H "$T" -H "Content-Type: application/json" \ + -d '{"code":"def main(event, context): return \"v2\""}' + +# Удалить функцию +curl -X DELETE "$BASE/functions/hello" -H "$T" +``` + +**Языки:** `python`, `nodejs`, `go`, `php`, `ruby` + +**Правила имени:** строчные буквы, цифры, дефис; не начинается/не заканчивается дефисом; максимум 57 символов. + +--- + +### Environments + +```bash +# Список environments +curl "$BASE/environments" -H "$T" +``` + +--- + +### Packages + +```bash +# Список пакетов +curl "$BASE/packages" -H "$T" +``` + +--- + +### HTTP Triggers + +```bash +# Список HTTP triggers +curl "$BASE/httptriggers" -H "$T" +``` + +--- + +### Time Triggers (cron) + +```bash +# Создать cron +curl -X POST "$BASE/timetriggers" -H "$T" -H "Content-Type: application/json" \ + -d '{"name":"my-cron","functionName":"hello","cron":"*/5 * * * *"}' + +# Список +curl "$BASE/timetriggers" -H "$T" + +# Обновить +curl -X PUT "$BASE/timetriggers/my-cron" -H "$T" -H "Content-Type: application/json" \ + -d '{"cron":"0 * * * *"}' + +# Удалить +curl -X DELETE "$BASE/timetriggers/my-cron" -H "$T" +``` + +--- + +### Прямой вызов по route + +```bash +# Вызов без JSON-обёртки (чистый HTTP) +curl "https://fission.kube5s.ru/fn/" -H "$T" +``` + +--- + +## Наши расширения + +### Создание из zip-архива + +```bash +# Создать функцию из архива напрямую +curl -X POST "$BASE/functions" -H "$T" \ + -F "name=my-fn" -F "language=python" -F "entrypoint=main.handler" \ + -F "archive=@my-function.zip" + +# Обновить функцию новым архивом +curl -X PUT "$BASE/functions/my-fn/archive" -H "$T" \ + -F "archive=@my-function-v2.zip" +``` + +--- + +### TTL — самоуничтожающиеся функции + +```bash +# Функция исчезнет через 1 час +curl -X POST "$BASE/functions" -H "$T" -H "Content-Type: application/json" \ + -d '{"name":"temp","language":"nodejs","code":"module.exports=async()=>({status:200,body:\"ok\"})","ttl":"1h"}' +``` + +Форматы TTL: `15m`, `2h`, `1d`, `7d` + +--- + +### AI: проверить архив перед деплоем + +```bash +curl -X POST "$BASE/ai/lint-archive" -H "$T" \ + -F "archive=@my-fn.zip" \ + -F "language=python" \ + -F "entrypoint=main.handler" +``` + +Ответ: +```json +{ + "ok": true, + "results": [{"file": "main.py", "ok": true}] +} +``` + +Поддерживает: `.py`, `.js`, `.rb`, `.php` + +--- + +### Обновить только таймаут + +```bash +curl -X PUT "$BASE/functions/hello/timeout" -H "$T" -H "Content-Type: application/json" \ + -d '{"timeout": 120}' +``` + +--- + +### Статус namespace + +```bash +# Готовность namespace (stages: создан → RBAC → control-plane) +curl "$BASE/ns/status" -H "$T" +``` + +--- + +### Аутентификация / получить namespace + +```bash +curl -X POST "$BASE/auth" -H "Content-Type: application/json" \ + -d '{"token":"mylogin@example.com"}' +# → {"ok":true,"namespace":"fission-a3f9c1b2...","email":"..."} +``` + +--- + +## HTTP-коды + +| Код | Значение | +|-----|---------| +| 200 | OK | +| 201 | Создано | +| 400 | Ошибка валидации | +| 401 | Нет/невалидный токен | +| 404 | Не найдено (или чужое) | +| 409 | Уже существует | +| 413 | Слишком большой код/архив | +| 502 | Fission внутренняя ошибка |