Files
KindClustersDashboard/app/templates/cluster_create.html
T
Sergey Antropoff eb063aec20 Веб-интерфейс: страница /clusters, навигация и крошки для кластеров
- Выделена страница списка кластеров, панель упрощена; nav_active и крошки
  ведут в раздел Кластеры; theme.js синхронизирует активную пилюлю по URL.
- Доработки дашборда, аддонов, журнала, стилей и API-документации.
- Поддержка Podman: docker-compose.podman.yml, скрипты сокета; Makefile и env.
2026-04-04 13:42:21 +03:00

148 lines
5.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{# Создание кластера, журнал задания и последние задания.
Автор: Сергей Антропов — https://devops.org.ru #}
{% extends "base.html" %}
{% block body_attrs %}data-dashboard-mode="create"{% endblock %}
{% block footer %}
<div class="footer-inner">
<p class="footer-copyright">
© {{ app_title }} ·
<a href="https://devops.org.ru" target="_blank" rel="noopener">devops.org.ru</a>
</p>
</div>
{% endblock %}
{% block content %}
<section class="card hero-panel cluster-create-hero" aria-labelledby="create-hero-title">
<h1 class="page-title" id="create-hero-title">Создание кластера</h1>
<p class="muted page-lead">
Укажите имя, версию образа kindest/node и число worker-нод. Операция выполняется в фоне; ход смотрите в журнале ниже.
</p>
</section>
<section class="card create-cluster-card">
<h2 class="create-cluster-card__title">Новый кластер</h2>
<form id="form-create" novalidate>
<div class="create-form-grid">
<div class="create-form-field">
<label for="fld-name">Имя (a-z0-9-)</label>
<input
id="fld-name"
name="name"
required
pattern="[a-z0-9]([-a-z0-9]*[a-z0-9])?"
maxlength="63"
placeholder="dev"
autocomplete="off"
/>
</div>
<div class="create-form-field">
<label for="version-select">
<a
href="https://hub.docker.com/r/kindest/node/tags"
target="_blank"
rel="noopener noreferrer"
class="create-form-doc-link"
title="Список тегов kindest/node на Docker Hub (новое окно)"
>Тег образа</a><span class="create-form-doc-link__ext" aria-hidden="true"></span>
<span class="create-form-label-rest">
kindest/node — список или версия вручную ниже</span>
</label>
<select id="version-select" name="kubernetes_version_preset">
<option value="">— загрузить список —</option>
</select>
</div>
<div class="create-form-field">
<label for="fld-workers">Worker-ноды (020)</label>
<input id="fld-workers" name="workers" type="number" min="0" max="20" step="1" value="2" />
</div>
<div class="create-form-field">
<label for="kubernetes_version">Версия Kubernetes / тег node</label>
<input
name="kubernetes_version"
id="kubernetes_version"
required
placeholder="1.29.4 или v1.29.4"
autocomplete="off"
/>
</div>
<div class="create-form-span">
<div class="row create-actions">
<button type="submit">Создать кластер</button>
</div>
</div>
</div>
<div id="create-progress-wrap" class="create-progress-wrap hidden" aria-hidden="true">
<p class="create-progress-hint muted" id="create-progress-hint">
Идёт операция — шаг <code>kind create</code> может занять несколько минут при первом pull образов.
Ниже выводится журнал (скачивание образов и подъём нод).
</p>
<div
class="progress-track"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="0"
aria-labelledby="create-progress-label"
id="create-progress-track"
>
<div class="progress-bar" id="create-progress-bar" style="width:0%"></div>
</div>
<p class="progress-label" id="create-progress-label"></p>
<div class="job-log-panel-wrap">
<label for="job-log-panel" class="job-log-label muted">Журнал задания</label>
<pre
id="job-log-panel"
class="mono job-log-panel"
role="log"
aria-live="polite"
aria-relevant="additions"
></pre>
</div>
<button type="button" id="btn-cancel-create" class="btn-secondary">Отменить</button>
</div>
<p id="create-msg" class="msg" aria-live="polite"></p>
<details id="job-details" class="job-details hidden">
<summary>Технические детали (JSON)</summary>
<pre id="job-json" class="mono job-json-pre" tabindex="0"></pre>
</details>
</form>
</section>
<section class="card jobs-card">
<div class="row spread jobs-card-toolbar">
<h2 id="jobs-heading" class="jobs-card-title">Последние задания</h2>
<button type="button" id="btn-jobs-refresh" class="btn-secondary">Обновить</button>
</div>
<div class="table-wrap journal-table-wrap">
<table id="tbl-jobs" class="journal-table" aria-label="Последние задания из журналов кластеров">
<thead>
<tr>
<th scope="col">Завершено (UTC)</th>
<th scope="col">Кластер</th>
<th scope="col">Тип задания</th>
<th scope="col">Статус</th>
<th scope="col">Сообщение</th>
<th scope="col">Лог</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<p id="jobs-msg" class="msg muted"></p>
</section>
{% include "partials/dashboard_modals.html" %}
{% endblock %}
{% block scripts %}
<script src="/static/js/dashboard.js" defer></script>
{% endblock %}