Веб-интерфейс: страница /clusters, навигация и крошки для кластеров
- Выделена страница списка кластеров, панель упрощена; nav_active и крошки ведут в раздел Кластеры; theme.js синхронизирует активную пилюлю по URL. - Доработки дашборда, аддонов, журнала, стилей и API-документации. - Поддержка Podman: docker-compose.podman.yml, скрипты сокета; Makefile и env.
This commit is contained in:
@@ -32,3 +32,22 @@ def data_root() -> Path:
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user