Краткий справочник команд и концепций мультитенантного Fission. Содержит: жизненный цикл namespace, CLI команды, схему RBAC, структуру URL функций, типичные сценарии использования.
192 lines
4.4 KiB
Markdown
192 lines
4.4 KiB
Markdown
# 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 внутренняя ошибка |
|