diff --git a/console/ui/index.html b/console/ui/index.html
index 2e5560b..04c3313 100644
--- a/console/ui/index.html
+++ b/console/ui/index.html
@@ -295,6 +295,44 @@
.nowrap {
white-space: nowrap;
}
+
+ .help-section {
+ margin-top: 14px;
+ padding-top: 14px;
+ border-top: 1px solid #0b2a48;
+ }
+
+ .help-section:first-of-type {
+ margin-top: 0;
+ padding-top: 0;
+ border-top: 0;
+ }
+
+ .help-section h4 {
+ margin-bottom: 8px;
+ font-size: 14px;
+ }
+
+ .help-list {
+ display: grid;
+ gap: 8px;
+ font-size: 13px;
+ line-height: 1.5;
+ color: var(--text-primary);
+ }
+
+ .help-code {
+ margin-top: 8px;
+ padding: 10px 12px;
+ border-radius: 8px;
+ border: 1px solid #0b2a48;
+ background: #021221;
+ color: #d8e5f2;
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
+ font-size: 12px;
+ white-space: pre-wrap;
+ word-break: break-word;
+ }
@@ -377,6 +415,7 @@
+
@@ -424,7 +463,7 @@
- Namespace: default. CRUD происходит напрямую через CRD Fission.
+ Изменения применяются напрямую через CRD Fission.
@@ -543,6 +582,71 @@
+
+
+
Help
+
+
+
Поля при создании функции
+
+
Name — имя Function в Fission. Используется в CRD и в связанных объектах.
+
Language — язык runtime. От него зависят environment, шаблон кода и entrypoint по умолчанию.
+
Entrypoint — точка входа внутри пакета. Например, main.main для Python или main.php::handler для PHP.
+
Route — HTTP путь функции. По нему функцию можно вызвать вне морды через ingress.
+
Методы — HTTP методы route, например GET или GET,POST.
+
Timeout (сек) — максимум времени выполнения именно этой функции.
+
Код — исходный код функции.
+
+
+
+
+
Поля при редактировании функции
+
+
Name — только для просмотра, не редактируется.
+
Environment — только для просмотра, не редактируется из этой формы.
+
Entrypoint — только для просмотра, не редактируется из этой формы.
+
Timeout (сек) — редактируется и сохраняется в spec.functionTimeout.
+
Код — редактируется и обновляет Package функции.
+
+
+
+
+
Как вызвать функцию вне морды
+
+
Функция вызывается по её Route, то есть по HTTP пути, который задан при создании.
+
Для прямого вызова через публичный route нужен JWT router-а в заголовке Authorization: Bearer ....
+
Альтернатива — вызывать через /console/api/functions/ИМЯ/invoke, но тогда нужен токен console в заголовках X-Auth-Token и X-Auth-Env.
+
+
export TOKEN="<router-jwt>"
+curl -sk https://fission.kube5s.ru/ВАШ_ROUTE \
+ -H "Authorization: Bearer $TOKEN"
+
export TOKEN="<router-jwt>"
+curl -sk -X POST https://fission.kube5s.ru/ВАШ_ROUTE \
+ -H "Authorization: Bearer $TOKEN" \
+ -H "Content-Type: application/json" \
+ -d '{"x":1,"y":2}'
+
+
+
+
Где взять токен
+
+
Для входа в console — токен пользователя берётся в личном кабинете: Профиль пользователя → Токены.
+
Для прямого вызова route — нужен router JWT. Его можно получить через /auth/login с логином admin и паролем из секрета router.
+
Токен удобно класть в переменную окружения и потом подставлять в curl как $TOKEN.
+
+
PASSWORD=$(kubectl -n fission get secret router -o jsonpath={.data.password} | base64 -d)
+TOKEN=$(curl -sk -X POST https://fission.kube5s.ru/auth/login \
+ -H "Content-Type: application/json" \
+ -d "{\"username\":\"admin\",\"password\":\"$PASSWORD\"}" \
+ | python3 -c 'import sys,json; print(json.load(sys.stdin)["accesstoken"])')
+
+
+
+
+
+
+
+
Вызов
@@ -793,6 +897,14 @@
S.currentEdit = null;
}
+ function openHelp() {
+ document.getElementById('help-modal').classList.add('open');
+ }
+
+ function closeHelp() {
+ document.getElementById('help-modal').classList.remove('open');
+ }
+
async function submitEdit() {
if (!S.currentEdit) return;
const btn = document.getElementById('e-submit');