console: add user token fn gateway

This commit is contained in:
Naeel
2026-04-27 11:24:36 +03:00
parent e5ce0794a4
commit feb4ae735d
5 changed files with 229 additions and 26 deletions
+27 -24
View File
@@ -590,10 +590,13 @@
<h4>Поля при создании функции</h4>
<div class="help-list">
<div><strong>Name</strong> — имя Function в Fission. Используется в CRD и в связанных объектах.</div>
<div><strong>Language</strong> — язык runtime. От него зависят environment, шаблон кода и entrypoint по умолчанию.</div>
<div><strong>Entrypoint</strong> — точка входа внутри пакета. Например, <span class="mono">main.main</span> для Python или <span class="mono">main.php::handler</span> для PHP.</div>
<div><strong>Route</strong>HTTP путь функции. По нему функцию можно вызвать вне морды через ingress.</div>
<div><strong>Методы</strong> — HTTP методы route, например <span class="mono">GET</span> или <span class="mono">GET,POST</span>.</div>
<div><strong>Language</strong> — язык runtime. От него зависят environment, шаблон кода и entrypoint по
умолчанию.</div>
<div><strong>Entrypoint</strong>точка входа внутри пакета. Например, <span class="mono">main.main</span>
для Python или <span class="mono">main.php::handler</span> для PHP.</div>
<div><strong>Route</strong> — HTTP путь функции. Внешний пользовательский вызов идёт через <span class="mono">/fn + ваш Route</span>.</div>
<div><strong>Методы</strong> — HTTP методы route, например <span class="mono">GET</span> или <span
class="mono">GET,POST</span>.</div>
<div><strong>Timeout (сек)</strong> — максимум времени выполнения именно этой функции.</div>
<div><strong>Код</strong> — исходный код функции.</div>
</div>
@@ -605,7 +608,8 @@
<div><strong>Name</strong> — только для просмотра, не редактируется.</div>
<div><strong>Environment</strong> — только для просмотра, не редактируется из этой формы.</div>
<div><strong>Entrypoint</strong> — только для просмотра, не редактируется из этой формы.</div>
<div><strong>Timeout (сек)</strong> — редактируется и сохраняется в <span class="mono">spec.functionTimeout</span>.</div>
<div><strong>Timeout (сек)</strong> — редактируется и сохраняется в <span
class="mono">spec.functionTimeout</span>.</div>
<div><strong>Код</strong> — редактируется и обновляет Package функции.</div>
</div>
</div>
@@ -613,32 +617,31 @@
<div class="help-section">
<h4>Как вызвать функцию вне морды</h4>
<div class="help-list">
<div>Функция вызывается по её <strong>Route</strong>, то есть по HTTP пути, который задан при создании.</div>
<div>Для прямого вызова через публичный route нужен JWT router-а в заголовке <span class="mono">Authorization: Bearer ...</span>.</div>
<div>Альтернатива — вызывать через <span class="mono">/console/api/functions/ИМЯ/invoke</span>, но тогда нужен токен console в заголовках <span class="mono">X-Auth-Token</span> и <span class="mono">X-Auth-Env</span>.</div>
<div>Обычный пользователь вызывает функцию через HTTP gateway console: <span class="mono">/fn/...</span>.</div>
<div>Используется только ваш токен из личного кабинета в заголовке <span class="mono">Authorization: Bearer &lt;token&gt;</span>.</div>
<div>Работают обычные HTTP методы: <span class="mono">GET</span>, <span class="mono">POST</span>, <span class="mono">PUT</span>, <span class="mono">DELETE</span> и другие, если они разрешены в поле Методы.</div>
</div>
<div class="help-code">export TOKEN="&lt;router-jwt&gt;"
curl -sk https://fission.kube5s.ru/ВАШ_ROUTE \
-H "Authorization: Bearer $TOKEN"</div>
<div class="help-code">export TOKEN="&lt;router-jwt&gt;"
curl -sk -X POST https://fission.kube5s.ru/ВАШ_ROUTE \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"x":1,"y":2}'</div>
<div class="help-code">export TOKEN="&lt;ваш пользовательский токен&gt;"
curl -sk -X POST https://fission.kube5s.ru/fn/ВАШ_ROUTE \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"x":1,"y":2}'</div>
<div class="help-code">export TOKEN="&lt;ваш пользовательский токен&gt;"
curl -sk https://fission.kube5s.ru/fn/ВАШ_ROUTE \
-H "Authorization: Bearer $TOKEN"</div>
</div>
<div class="help-section">
<h4>Где взять токен</h4>
<div class="help-list">
<div><strong>Для входа в console</strong> — токен пользователя берётся в личном кабинете: Профиль пользователя → Токены.</div>
<div><strong>Для прямого вызова route</strong> — нужен router JWT. Его можно получить через <span class="mono">/auth/login</span> с логином <span class="mono">admin</span> и паролем из секрета <span class="mono">router</span>.</div>
<div>Токен удобно класть в переменную окружения и потом подставлять в curl как <span class="mono">$TOKEN</span>.</div>
<div><strong>Для обычного пользователя</strong> — используйте ваш пользовательский токен из личного кабинета:
Профиль пользователя → Токены.</div>
<div>Тот же пользовательский токен подходит и для входа в console, и для внешнего вызова через <span
class="mono">/fn/...</span>.</div>
<div>Токен удобно класть в переменную окружения и потом подставлять в curl как <span
class="mono">$TOKEN</span>.</div>
</div>
<div class="help-code">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"])')</div>
<div class="help-code">export TOKEN="&lt;вставьте сюда токен из личного кабинета&gt;"</div>
</div>
<div class="actions">