Kubernetes Kind clusters creator and dashboard
227
Образ kind-k8s-tools:local и Makefile поднимают веб-интерфейс (FastAPI) на порту 8080 на хосте по умолчанию (или KIND_K8S_WEB_PORT в .env; внутри контейнера приложение слушает 6000). Порт 6000 на хосте не используем по умолчанию: Chrome и другие браузеры на Chromium отдают ERR_UNSAFE_PORT. Через браузер создаёте и удаляете кластеры, смотрите статистику и вывод kubectl. kubeconfig сохраняется в clusters/<имя>/. На хосте достаточно Docker (или Podman) и make; kind и kubectl — внутри контейнера.
clusters/<имя>/ — том для kubeconfig (доступен в контейнере как /work/clusters/<имя>/).Ниже — полные примеры docker-compose: все переменные environment заданы явно теми же значениями, что использует приложение по умолчанию (см. docker-compose.yml, app/core/*.py, app/kubeconfig_patch.py). .env не нужен. Актуальные копии — в compose/docker-compose.hub.docker.yml и compose/docker-compose.hub.podman.yml.
Docker — вставьте в docker-compose.yml (или сохраните как отдельный файл):
services:
kind-k8s-web:
image: ${KIND_K8S_HUB_IMAGE:-inecs/kind-cluster-dashboard:v1.0.0}
container_name: kind-clusters-dashboard
user: "0:0"
volumes:
- ${KIND_K8S_CLUSTERS_DIR:-./clusters}:/work/clusters
- ${CONTAINER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock
ports:
- "8080:6000"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
HOME: /root
DOCKER_HOST: unix:///var/run/docker.sock
KIND_K8S_IN_CONTAINER: "1"
KIND_K8S_WORKDIR: /work
KIND_K8S_PATCH_KUBECONFIG: "1"
KIND_K8S_KUBECONFIG_CLIENT_HOST: localhost
KIND_K8S_KUBECONFIG_TLS_SERVER_NAME: localhost
KIND_K8S_APISERVER_GATEWAY_HOST: host.docker.internal
CONTAINER_CLI: docker
KIND_K8S_SKIP_VERSION_LIST: "0"
KIND_K8S_VERSION_LIST_DISPLAY: "50"
KIND_K8S_HUB_TAGS_MAX_PAGES: "120"
KIND_K8S_DEBUG: "0"
KIND_K8S_JOB_LOG_MAX_LINES: "2500"
KIND_K8S_STREAM_PTY: "1"
KIND_K8S_DOCKER_PULL_PLAIN: "1"
KIND_K8S_JOB_API_LOG_MAX_LINES: "5000"
KIND_K8S_JOBS_JSON: /work/clusters/kind_k8s_jobs.json
KIND_K8S_README_PATH: /opt/kind-k8s/README.md
KIND_K8S_WAIT_NODES: "1"
KIND_K8S_WAIT_NODES_TIMEOUT_SEC: "300"
KIND_K8S_HELM_TIMEOUT_SEC: "900"
KIND_K8S_HELM_VERSIONS_CACHE_SEC: "600"
KIND_K8S_HELM_VERSIONS_MAX: "80"
KIND_K8S_CLUSTER_JOURNAL_MAX_ENTRIES: "500"
KIND_K8S_CLUSTER_JOURNAL_MAX_LOG_LINES: "2000"
KIND_K8S_HELM_ADDON_LOG_MAX_ENTRIES: "500"
KIND_K8S_APP_TITLE: "Kind Clusters Dashboard"
KIND_K8S_UVICORN_RELOAD: "0"
working_dir: /opt/kind-k8s/app
command: ["/opt/kind-k8s/run_uvicorn.sh"]
Podman — перед запуском: export CONTAINER_SOCKET="$XDG_RUNTIME_DIR/podman/podman.sock" (или фактический путь к podman.sock). При EACCES на сокет подберите user / UID:GID как в основном docker-compose.yml и Makefile для make podman up.
services:
kind-k8s-web:
image: ${KIND_K8S_HUB_IMAGE:-inecs/kind-cluster-dashboard:v1.0.0}
container_name: kind-clusters-dashboard
userns_mode: keep-id
user: "0:0"
volumes:
- ${KIND_K8S_CLUSTERS_DIR:-./clusters}:/work/clusters
- ${CONTAINER_SOCKET}:/run/podman/podman.sock
ports:
- "8080:6000"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
HOME: /tmp
DOCKER_HOST: unix:///run/podman/podman.sock
KIND_K8S_IN_CONTAINER: "1"
KIND_K8S_WORKDIR: /work
KIND_K8S_PATCH_KUBECONFIG: "1"
KIND_K8S_KUBECONFIG_CLIENT_HOST: localhost
KIND_K8S_KUBECONFIG_TLS_SERVER_NAME: localhost
KIND_K8S_APISERVER_GATEWAY_HOST: host.docker.internal
CONTAINER_CLI: podman
KIND_K8S_SKIP_VERSION_LIST: "0"
KIND_K8S_VERSION_LIST_DISPLAY: "50"
KIND_K8S_HUB_TAGS_MAX_PAGES: "120"
KIND_K8S_DEBUG: "0"
KIND_K8S_JOB_LOG_MAX_LINES: "2500"
KIND_K8S_STREAM_PTY: "1"
KIND_K8S_DOCKER_PULL_PLAIN: "1"
KIND_K8S_JOB_API_LOG_MAX_LINES: "5000"
KIND_K8S_JOBS_JSON: /work/clusters/kind_k8s_jobs.json
KIND_K8S_README_PATH: /opt/kind-k8s/README.md
KIND_K8S_WAIT_NODES: "1"
KIND_K8S_WAIT_NODES_TIMEOUT_SEC: "300"
KIND_K8S_HELM_TIMEOUT_SEC: "900"
KIND_K8S_HELM_VERSIONS_CACHE_SEC: "600"
KIND_K8S_HELM_VERSIONS_MAX: "80"
KIND_K8S_CLUSTER_JOURNAL_MAX_ENTRIES: "500"
KIND_K8S_CLUSTER_JOURNAL_MAX_LOG_LINES: "2000"
KIND_K8S_HELM_ADDON_LOG_MAX_ENTRIES: "500"
KIND_K8S_APP_TITLE: "Kind Clusters Dashboard"
KIND_K8S_UVICORN_RELOAD: "0"
working_dir: /opt/kind-k8s/app
command: ["/opt/kind-k8s/run_uvicorn.sh"]
Автор: Сергей Антропов — [devops.org.ru](https://devops.org.ru https://git.antropoff.ru)
Content type
Image
Digest
sha256:4e1fd56d1…
Size
89.4 MB
Last updated
6 months ago
docker pull inecs/kind-cluster-dashboard:v1.0.0