Files
KindClustersDashboard/app/kind_k8s_paths.py
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

54 lines
2.5 KiB
Python
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.
"""Корень данных kind-k8s: каталог ``clusters/`` и пути в meta.json.
``KIND_K8S_WORKDIR`` — рабочий каталог, внутри него создаётся ``clusters/<имя>/``.
В Docker-образе задаётся ``/work``, куда монтируется том с хоста (только данные).
Локальный запуск из ``kind-k8s/app/*.py``: переменную не задаём — корнем данных
считается **родитель** каталога ``app/`` (каталог ``kind-k8s/``, рядом с ``clusters/``).
Автор: Сергей Антропов
Сайт: https://devops.org.ru
"""
from __future__ import annotations
import os
from pathlib import Path
# Каталог пакета: kind-k8s/app/; в образе: /opt/kind-k8s/app
_LIB = Path(__file__).resolve().parent
# Корень репозитория kind-k8s (рядом с clusters/), если KIND_K8S_WORKDIR не задан
_REPO_KIND_K8S = _LIB.parent
def data_root() -> Path:
"""Корень данных (родитель для ``clusters/``)."""
w = (os.environ.get("KIND_K8S_WORKDIR") or "").strip()
if w:
return Path(w).resolve()
return _REPO_KIND_K8S
def clusters_dir() -> Path:
"""``<data_root>/clusters``."""
return data_root() / "clusters"
def container_cli_name() -> str:
"""
Имя исполняемого файла для вызовов к движку контейнеров (``docker`` / ``podman``).
В образе веб-UI ставится только **docker-cli** (Alpine ``apk add docker-cli``); бинарника
``podman`` в контейнере нет. На хост при этом может быть смонтирован сокет **Podman**
(см. ``CONTAINER_SOCKET``): API совместим с Docker, клиент ``docker`` обращается к нему
через ``DOCKER_HOST`` и смонтированный ``/var/run/docker.sock``.
Поэтому при ``KIND_K8S_IN_CONTAINER`` всегда возвращаем ``"docker"`` — независимо от
``CONTAINER_CLI`` в ``.env`` (его имеет смысл задавать ``podman`` только при локальном
запуске приложения на хосте без контейнера).
"""
raw_in = (os.environ.get("KIND_K8S_IN_CONTAINER") or "").strip().lower()
if raw_in in ("1", "true", "yes", "on"):
return "docker"
return (os.environ.get("CONTAINER_CLI") or "docker").strip() or "docker"