doc: add multi-tenant quick reference card

Краткий справочник команд и концепций мультитенантного Fission.
Содержит: жизненный цикл namespace, CLI команды, схему RBAC,
структуру URL функций, типичные сценарии использования.
This commit is contained in:
“Naeel”
2026-05-15 06:59:19 +04:00
parent b2efefd75a
commit b5f8a9bf0e
+191
View File
@@ -0,0 +1,191 @@
# Fission — Краткий справочник команд
> Базовый URL: `https://fission.kube5s.ru/console/api`
> Токен передаётся через `X-Auth-Token: <token>` или `Authorization: Bearer <token>`
```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/<route>" -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 внутренняя ошибка |