console: remove namespace hint
This commit is contained in:
+113
-1
@@ -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;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
@@ -377,6 +415,7 @@
|
||||
<div class="row" style="margin:0;">
|
||||
<button class="btn ghost" onclick="reloadAll()">Refresh</button>
|
||||
<button class="btn" onclick="openCreate()">+ Создать функцию</button>
|
||||
<button class="btn ghost" onclick="openHelp()">Help</button>
|
||||
<button class="btn ghost" onclick="doLogout()" style="margin-left:8px;">Выход</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -424,7 +463,7 @@
|
||||
<tbody id="fn-rows"></tbody>
|
||||
</table>
|
||||
<div id="status" class="status"></div>
|
||||
<div class="hint">Namespace: default. CRUD происходит напрямую через CRD Fission.</div>
|
||||
<div class="hint">Изменения применяются напрямую через CRD Fission.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -543,6 +582,71 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="help-modal" class="modal">
|
||||
<div class="panel">
|
||||
<h3>Help</h3>
|
||||
|
||||
<div class="help-section">
|
||||
<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>Timeout (сек)</strong> — максимум времени выполнения именно этой функции.</div>
|
||||
<div><strong>Код</strong> — исходный код функции.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-section">
|
||||
<h4>Поля при редактировании функции</h4>
|
||||
<div class="help-list">
|
||||
<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>Код</strong> — редактируется и обновляет Package функции.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
<div class="help-code">export TOKEN="<router-jwt>"
|
||||
curl -sk https://fission.kube5s.ru/ВАШ_ROUTE \
|
||||
-H "Authorization: Bearer $TOKEN"</div>
|
||||
<div class="help-code">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}'</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>
|
||||
<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>
|
||||
|
||||
<div class="actions">
|
||||
<button class="btn ghost" onclick="closeHelp()">Закрыть</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="invoke-modal" class="modal">
|
||||
<div class="panel">
|
||||
<h3 id="i-title">Вызов</h3>
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user