Веб-UI FastAPI, REST API v1, интерактивный setup без env.example
- Дашборд (Jinja2 + static), управление кластерами kind, задания и kubeconfig. - API: health, stats, clusters CRUD, versions, jobs; документация app/docs/api_routes.md. - Docker Compose: том app, uvicorn reload, KIND_K8S_PATCH_KUBECONFIG по умолчанию 1. - setup_env_interactive.py: список переменных в скрипте, удалён env.example. - Makefile: явный префикс docker/podman; прочие правки CLI и ядра кластеров.
This commit is contained in:
@@ -1,36 +1,44 @@
|
||||
# Кластер kind на хосте через сокет Docker/Podman; скрипты внутри образа kind-k8s-tools.
|
||||
# На хост монтируется только ./clusters → артефакты (kubeconfig, meta.json).
|
||||
#
|
||||
# Создание (интерактивно): make create
|
||||
# Веб-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"
|
||||
# podman compose run --rm -it kind-k8s-tools python3 /opt/kind-k8s/app/create_cluster.py
|
||||
# make podman up
|
||||
#
|
||||
# Автор: Сергей Антропов — https://devops.org.ru
|
||||
|
||||
services:
|
||||
kind-k8s-tools:
|
||||
kind-k8s-web:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
KIND_VERSION: ${KIND_VERSION:-0.24.0}
|
||||
KUBECTL_VERSION: ${KUBECTL_VERSION:-}
|
||||
image: kind-k8s-tools:local
|
||||
volumes:
|
||||
- ./clusters:/work/clusters
|
||||
- ${CONTAINER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock
|
||||
working_dir: /work
|
||||
# Локальная разработка: код с хоста сразу в контейнере (пересборка образа не нужна).
|
||||
- ./app:/opt/kind-k8s/app
|
||||
working_dir: /opt/kind-k8s/app
|
||||
ports:
|
||||
- "${KIND_K8S_WEB_PORT:-6000}:6000"
|
||||
environment:
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
KIND_K8S_IN_CONTAINER: "1"
|
||||
# Из файла kind-k8s/.env (см. env.example): патч kubeconfig и CLI к сокету
|
||||
KIND_K8S_PATCH_KUBECONFIG: ${KIND_K8S_PATCH_KUBECONFIG:-}
|
||||
KIND_K8S_WORKDIR: /work
|
||||
# По умолчанию включено: kubeconfig с хоста открывает API через проброшенный порт.
|
||||
KIND_K8S_PATCH_KUBECONFIG: ${KIND_K8S_PATCH_KUBECONFIG:-1}
|
||||
CONTAINER_CLI: ${CONTAINER_CLI:-docker}
|
||||
# Выбор версии kindest/node (create_cluster.py); см. env.example
|
||||
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:-}
|
||||
stdin_open: true
|
||||
tty: true
|
||||
KIND_K8S_WAIT_NODES: ${KIND_K8S_WAIT_NODES:-}
|
||||
KIND_K8S_WAIT_NODES_TIMEOUT_SEC: ${KIND_K8S_WAIT_NODES_TIMEOUT_SEC:-}
|
||||
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"]
|
||||
|
||||
Reference in New Issue
Block a user