doc: add multi-tenant quick reference card
Краткий справочник команд и концепций мультитенантного Fission. Содержит: жизненный цикл namespace, CLI команды, схему RBAC, структуру URL функций, типичные сценарии использования.
This commit is contained in:
@@ -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 внутренняя ошибка |
|
||||
Reference in New Issue
Block a user