Веб-интерфейс: страница /clusters, навигация и крошки для кластеров
- Выделена страница списка кластеров, панель упрощена; nav_active и крошки ведут в раздел Кластеры; theme.js синхронизирует активную пилюлю по URL. - Доработки дашборда, аддонов, журнала, стилей и API-документации. - Поддержка Podman: docker-compose.podman.yml, скрипты сокета; Makefile и env.
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
|
||||
<p class="cluster-detail-breadcrumb muted" aria-label="Навигация">
|
||||
<a href="/">Панель</a>
|
||||
<a href="/clusters">Кластеры</a>
|
||||
<span aria-hidden="true"> / </span>
|
||||
<span>Кластер <code>{{ cluster_name | e }}</code></span>
|
||||
</p>
|
||||
@@ -78,7 +78,9 @@
|
||||
<h2 id="cluster-k8s-heading" class="cluster-detail-section-title">Kubernetes (kubectl)</h2>
|
||||
<p class="muted cluster-k8s-scope-hint">
|
||||
Данные по <strong>всему кластеру</strong>: ресурсы в namespace — со всех пространств имён; узлы и список
|
||||
namespace — без ограничения по отдельному ns.
|
||||
namespace — без ограничения по отдельному ns. В карточках ресурсов выпадающий список справа от заголовка
|
||||
содержит все namespace из ответа API и из фактических объектов в таблицах; при выборе «Все namespace» строки
|
||||
таблицы упорядочены по namespace, затем по имени ресурса.
|
||||
</p>
|
||||
<p id="cluster-kube-global-hint" class="muted cluster-kube-hint hidden" role="status"></p>
|
||||
</section>
|
||||
@@ -94,52 +96,182 @@
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-pods-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-pods-title">Поды</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-pods-title">Поды</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-pods" class="sr-only">Поды: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-pods"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="pods"
|
||||
aria-label="Поды: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-pods-root" class="cluster-k8s-root" role="region" aria-label="Поды"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-deploy-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-deploy-title">Deployments</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-deploy-title">Deployments</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-deployments" class="sr-only">Deployments: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-deployments"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="deployments"
|
||||
aria-label="Deployments: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-deployments-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-sts-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-sts-title">StatefulSets</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-sts-title">StatefulSets</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-statefulsets" class="sr-only">StatefulSets: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-statefulsets"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="statefulsets"
|
||||
aria-label="StatefulSets: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-statefulsets-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-ds-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-ds-title">DaemonSets</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-ds-title">DaemonSets</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-daemonsets" class="sr-only">DaemonSets: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-daemonsets"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="daemonsets"
|
||||
aria-label="DaemonSets: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-daemonsets-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-rs-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-rs-title">ReplicaSets</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-rs-title">ReplicaSets</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-replicasets" class="sr-only">ReplicaSets: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-replicasets"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="replicasets"
|
||||
aria-label="ReplicaSets: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-replicasets-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-jobs-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-jobs-title">Jobs</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-jobs-title">Jobs</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-jobs" class="sr-only">Jobs: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-jobs"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="jobs"
|
||||
aria-label="Jobs: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-jobs-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-cj-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-cj-title">CronJobs</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-cj-title">CronJobs</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-cronjobs" class="sr-only">CronJobs: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-cronjobs"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="cronjobs"
|
||||
aria-label="CronJobs: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-cronjobs-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-svc-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-svc-title">Сервисы</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-svc-title">Сервисы</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-services" class="sr-only">Сервисы: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-services"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="services"
|
||||
aria-label="Сервисы: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-services-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-ing-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-ing-title">Ingresses</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-ing-title">Ingresses</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-ingresses" class="sr-only">Ingresses: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-ingresses"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="ingresses"
|
||||
aria-label="Ingresses: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-ingresses-root" class="cluster-k8s-root" role="region"></div>
|
||||
</section>
|
||||
|
||||
<section class="card cluster-k8s-resource-card" aria-labelledby="k8s-pvc-title">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-pvc-title">PVC</h2>
|
||||
<div class="cluster-k8s-card-header">
|
||||
<h2 class="cluster-detail-section-title" id="k8s-pvc-title">PVC</h2>
|
||||
<div class="cluster-k8s-ns-filter-wrap">
|
||||
<label for="cluster-k8s-filter-pvcs" class="sr-only">PVC: фильтр по namespace</label>
|
||||
<select
|
||||
id="cluster-k8s-filter-pvcs"
|
||||
class="cluster-k8s-ns-select"
|
||||
data-cluster-k8s-ns-filter="pvcs"
|
||||
aria-label="PVC: фильтр по namespace"
|
||||
>
|
||||
<option value="">Все namespace</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cluster-k8s-pvcs-root" class="cluster-k8s-root" role="region" aria-label="PersistentVolumeClaim"></div>
|
||||
</section>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user