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