Web: локальный быстрый старт
Эта страница поднимает Web-версию (kubron-server) на вашей машине за несколько минут, чтобы вы могли попробовать веб-интерфейс. Это пробная конфигурация, а не продакшн. Для командной установки за TLS перейдите к развёртыванию в Docker и Kubernetes.
Выберите один из двух путей:
| Путь | Подходит для | Нужно |
|---|---|---|
| A. Один пользователь, из исходников | Самый быстрый взгляд на интерфейс | Go, Node.js и Wails CLI (см. Сборка из исходников) |
| B. Многопользовательская проба в Docker Compose | Увидеть настоящую серверную конфигурацию с PostgreSQL | Docker с плагином Compose и openssl |
A. Один пользователь, из исходников
В этом режиме сервер слушает только ваш компьютер (127.0.0.1) и хранит данные в файлах в ~/.kubron. База данных и ключ шифрования не нужны. Режим рассчитан на одного человека.
Соберите сервер, как описано в Сборка из исходников → Серверный бинарник.
Запустите:
bash./kubron-server --listen 127.0.0.1:8080Откройте http://127.0.0.1:8080 в браузере.
На экране Welcome to Kubron создайте администратора (имя 3–32 символа, пароль не короче 8). На loopback-адресе токен первичной настройки не нужен.
Продолжайте с раздела добавление первого кластера.
Остановите сервер по Ctrl+C. Для сброса удалите ~/.kubron.
WARNING
Не меняйте --listen на публичный адрес в этом режиме. Сервер откажется стартовать на не-loopback адресе, если вы не передадите ещё и --allow-remote (или KUBRON_ALLOW_REMOTE=1): он не обслуживает TLS, и cookie сессии пошла бы по сети открытым текстом.
B. Многопользовательская проба в Docker Compose
Запускает PostgreSQL и опубликованный образ Kubron вместе, ровно как в настоящем развёртывании, кроме TLS. Всё привязано к 127.0.0.1.
1. Создайте секреты
В пустой папке сгенерируйте два секрета и сохраните их в файле .env:
cat > .env <<EOF2
KUBRON_SECRET_KEY=k1:$(openssl rand -base64 32)
KUBRON_SETUP_TOKEN=$(openssl rand -hex 16)
POSTGRES_PASSWORD=$(openssl rand -hex 16)
EOF2
chmod 600 .envKUBRON_SECRET_KEYшифрует kubeconfig, хранящиеся в базе. Формат —id:base64, где base64 кодирует ровно 32 случайных байта. Для пробы достаточно.env. В продакшне храните его в менеджере секретов и делайте резервную копию: без него сохранённые учётные данные не восстановить.KUBRON_SETUP_TOKEN(не короче 16 символов) защищает создание первого администратора, чтобы никто посторонний не занял только что запущенный сервер.
2. Создайте compose.yaml
services:
db:
image: postgres:16
environment:
POSTGRES_USER: kubron
POSTGRES_DB: kubron
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?сначала выполните шаг с .env}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U kubron -d kubron"]
interval: 5s
timeout: 3s
retries: 10
kubron:
image: ghcr.io/24dso-labs/kubron:1.0.0
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:8080:8080"
environment:
KUBRON_ALLOW_REMOTE: "1"
KUBRON_SECRET_KEY: ${KUBRON_SECRET_KEY:?сначала выполните шаг с .env}
KUBRON_SETUP_TOKEN: ${KUBRON_SETUP_TOKEN:?сначала выполните шаг с .env}
KUBRON_DATABASE_URL: postgres://kubron:${POSTGRES_PASSWORD}@db:5432/kubron?sslmode=disable
read_only: true
tmpfs:
- /home/nonroot:uid=65532,gid=65532
- /tmp
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
volumes:
pgdata:Замените 1.0.0 на нужную версию (в теге образа нет ведущей v).
Что важно знать:
KUBRON_ALLOW_REMOTE=1нужен, потому что внутри своей сети контейнер слушает0.0.0.0. Порт при этом опубликован только на127.0.0.1вашей машины.sslmode=disableдопустим здесь лишь потому, что PostgreSQL находится в закрытой сети Compose. В продакшне используйтеsslmode=verify-full.read_onlyи дваtmpfsсоответствуют усилению образа: процесс пишет только в/home/nonrootи/tmp.
3. Запустите
docker compose up -d
docker compose logs -f kubronДождитесь в журнале сообщения, что сервер слушает порт. Проверьте готовность:
curl -fsS http://127.0.0.1:8080/readyz && echo4. Создайте администратора
- Откройте http://127.0.0.1:8080.
- На экране Welcome to Kubron введите токен первичной настройки из
.env, затем имя и пароль администратора. - Нажмите Create administrator.
Администратора можно создать и из командной строки; токен при этом не нужен. Пароль читается со стандартного ввода, а не из аргумента:
printf '%s\n' 'длинная-парольная-фраза' | docker compose exec -T kubron /kubron-server create-admin --username admin5. Остановка и сброс
docker compose down # остановить, данные сохранить
docker compose down -v # остановить и удалить том базы данныхДобавление первого кластера
В Web-версии kubeconfig загружается на сервер, и к кластеру подключается сервер. Он не может читать файлы с вашего компьютера и никогда не выполняет команды из загруженного kubeconfig. Kubron определяет тип учётных данных и, когда нужен вход, открывает окно.
| Учётные данные в kubeconfig | Что происходит на сервере |
|---|---|
Bearer-токен, basic-учётные данные, клиентский сертификат и ключ, встроенные как *-data | Используются как есть |
OIDC (oidc-login: пароль, authorization code, код устройства) | Окно входа. Провайдер идентификации должен работать по HTTPS и быть доступен серверу |
Azure AKS (kubelogin: devicecode, spn, ropc) | Kubron входит сам |
AWS EKS (aws eks get-token, aws-iam-authenticator) | Kubron выпускает токен по ключам доступа или IAM Identity Center |
Google GKE (gke-gcloud-auth-plugin) | Ключ сервисного аккаунта либо аккаунт Google, если администратор настроил OAuth-клиент |
Любой другой exec-плагин | Kubron показывает точную команду; вы выполняете её на своём компьютере и вставляете токен или JSON ExecCredential |
Пути к файлам на сервере (certificate-authority, client-key, tokenFile) | Недоступны. Встройте данные в kubeconfig |
Адреса кластеров проверяет политика адресов сервера: loopback, link-local и адреса метаданных облака по умолчанию закрыты. Кластер kind или minikube на 127.0.0.1 всё равно недоступен изнутри контейнера: укажите в kubeconfig адрес, до которого сервер может дотянуться. Подробности, включая общие командные учётные записи, — в разделе Подключение к Kubernetes.
Затем:
- Войдите и добавьте кластер из списка кластеров.
- Вставьте текст kubeconfig или выберите файл, выберите контекст и проверьте подключение.
- Если появилось окно входа, пройдите его, затем сохраните. Кластер откроется на дашборде.
Подробнее о диалоге: Первый кластер.
Если что-то не работает
| Симптом | Причина и решение |
|---|---|
address ... is not loopback, сервер завершается | Добавьте KUBRON_ALLOW_REMOTE=1 (контейнер) или --allow-remote и поставьте перед сервером TLS-прокси |
KUBRON_SECRET_KEY is required when a database is used | Задайте ключ шифрования всегда, когда задан KUBRON_DATABASE_URL |
| Сервер отказывается стартовать с другим ключом | Нужен тот ключ, которым зашифрованы существующие данные. Верните исходный ключ либо в пробе сбросьте данные: docker compose down -v |
the setup token is missing or invalid на экране приветствия | Токен должен точно совпадать с KUBRON_SETUP_TOKEN. Сама переменная должна быть не короче 16 символов, иначе сервер не запустится |
| Добавление кластера не проходит из-за адреса | Адрес закрыт политикой адресов кластеров (loopback, link-local, метаданные облака). См. справочник по конфигурации |
docker compose не находит образ | Проверьте, что тег существует на странице пакетов |