- job_journal: collect_recent_journal_entries_page_sync(limit, offset) - GET /api/v1/journal/recent: limit по умолчанию 30, offset, total, page, total_pages - journal.html/js: навигация Первая/Назад/номера/Вперёд/Последняя, стили - app/docs/api_routes.md: описание query и пример ответа - Прочие изменения UI/API (аддоны, helm, job_journal в кластерах) в том же коммите
71 lines
4.3 KiB
YAML
71 lines
4.3 KiB
YAML
# Веб-UI kind: том ./clusters, сокет Docker/Podman. Каталог ./app монтируется в контейнер —
|
||
# правки Python/шаблонов/static без пересборки образа; uvicorn --reload (см. KIND_K8S_UVICORN_RELOAD).
|
||
# Запуск: make docker up
|
||
#
|
||
# Podman (пример rootless):
|
||
# export CONTAINER_SOCKET="$XDG_RUNTIME_DIR/podman/podman.sock"
|
||
# make podman up
|
||
#
|
||
# Автор: Сергей Антропов — https://devops.org.ru
|
||
|
||
services:
|
||
kind-k8s-web:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
args:
|
||
KIND_VERSION: ${KIND_VERSION:-0.24.0}
|
||
KUBECTL_VERSION: ${KUBECTL_VERSION:-}
|
||
HELM_VERSION: ${HELM_VERSION:-v3.16.3}
|
||
image: kind-k8s-tools:local
|
||
volumes:
|
||
- ./clusters:/work/clusters
|
||
- ${CONTAINER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock
|
||
# Локальная разработка: код с хоста сразу в контейнере (пересборка образа не нужна).
|
||
- ./app:/opt/kind-k8s/app
|
||
# README для /documentation и GET /api/v1/docs/readme (без пересборки образа).
|
||
- ./README.md:/opt/kind-k8s/README.md:ro
|
||
working_dir: /opt/kind-k8s/app
|
||
# Хост по умолчанию 8080: порт 6000 в Chrome/Edge даёт ERR_UNSAFE_PORT; внутри контейнера слушает 6000.
|
||
ports:
|
||
- "${KIND_K8S_WEB_PORT:-8080}:6000"
|
||
# Доступ к apiserver kind с проброшенного порта хоста (kubectl внутри контейнера веб-UI).
|
||
extra_hosts:
|
||
- "host.docker.internal:host-gateway"
|
||
environment:
|
||
DOCKER_HOST: unix:///var/run/docker.sock
|
||
KIND_K8S_IN_CONTAINER: "1"
|
||
KIND_K8S_WORKDIR: /work
|
||
# kubeconfig.host на томе; скачивание в UI патчит копию с KIND_K8S_KUBECONFIG_CLIENT_HOST (по умолчанию localhost).
|
||
KIND_K8S_PATCH_KUBECONFIG: ${KIND_K8S_PATCH_KUBECONFIG:-1}
|
||
KIND_K8S_KUBECONFIG_CLIENT_HOST: ${KIND_K8S_KUBECONFIG_CLIENT_HOST:-localhost}
|
||
# Для kubectl внутри контейнера при server=host.docker.internal: SAN kind — localhost (редко менять).
|
||
KIND_K8S_KUBECONFIG_TLS_SERVER_NAME: ${KIND_K8S_KUBECONFIG_TLS_SERVER_NAME:-localhost}
|
||
CONTAINER_CLI: ${CONTAINER_CLI:-docker}
|
||
KIND_K8S_SKIP_VERSION_LIST: ${KIND_K8S_SKIP_VERSION_LIST:-}
|
||
KIND_K8S_VERSION_LIST_DISPLAY: ${KIND_K8S_VERSION_LIST_DISPLAY:-}
|
||
KIND_K8S_HUB_TAGS_MAX_PAGES: ${KIND_K8S_HUB_TAGS_MAX_PAGES:-}
|
||
KIND_K8S_DEBUG: ${KIND_K8S_DEBUG:-}
|
||
KIND_K8S_JOB_LOG_MAX_LINES: ${KIND_K8S_JOB_LOG_MAX_LINES:-}
|
||
# Псевдо-TTY для потоковых команд (0 = pipe). Для docker pull по умолчанию используется --progress=plain без PTY.
|
||
KIND_K8S_STREAM_PTY: ${KIND_K8S_STREAM_PTY:-}
|
||
KIND_K8S_DOCKER_PULL_PLAIN: ${KIND_K8S_DOCKER_PULL_PLAIN:-}
|
||
# Сколько строк журнала отдавать в GET /api/v1/jobs/{id} (по умолчанию 5000 в коде).
|
||
KIND_K8S_JOB_API_LOG_MAX_LINES: ${KIND_K8S_JOB_API_LOG_MAX_LINES:-}
|
||
KIND_K8S_JOBS_JSON: ${KIND_K8S_JOBS_JSON:-}
|
||
KIND_K8S_README_PATH: ${KIND_K8S_README_PATH:-}
|
||
KIND_K8S_WAIT_NODES: ${KIND_K8S_WAIT_NODES:-}
|
||
KIND_K8S_WAIT_NODES_TIMEOUT_SEC: ${KIND_K8S_WAIT_NODES_TIMEOUT_SEC:-}
|
||
# Таймаут subprocess helm/kubectl на странице «Аддоны» (секунды, 60–7200).
|
||
KIND_K8S_HELM_TIMEOUT_SEC: ${KIND_K8S_HELM_TIMEOUT_SEC:-}
|
||
# Кэш списков версий чартов (helm search repo), секунды; лимит строк на чарт — KIND_K8S_HELM_VERSIONS_MAX.
|
||
KIND_K8S_HELM_VERSIONS_CACHE_SEC: ${KIND_K8S_HELM_VERSIONS_CACHE_SEC:-}
|
||
KIND_K8S_HELM_VERSIONS_MAX: ${KIND_K8S_HELM_VERSIONS_MAX:-}
|
||
# Журнал заданий в clusters/<имя>/journal/jobs_history.json
|
||
KIND_K8S_CLUSTER_JOURNAL_MAX_ENTRIES: ${KIND_K8S_CLUSTER_JOURNAL_MAX_ENTRIES:-}
|
||
KIND_K8S_CLUSTER_JOURNAL_MAX_LOG_LINES: ${KIND_K8S_CLUSTER_JOURNAL_MAX_LOG_LINES:-}
|
||
KIND_K8S_APP_TITLE: ${KIND_K8S_APP_TITLE:-}
|
||
# 1 — uvicorn --reload (изменения в ./app); 0 — один процесс без reload.
|
||
KIND_K8S_UVICORN_RELOAD: ${KIND_K8S_UVICORN_RELOAD:-1}
|
||
command: ["/opt/kind-k8s/run_uvicorn.sh"]
|