Skip to content

Web: локальный быстрый старт ​

Эта страница поднимает Web-версию (kubron-server) на вашей машине за несколько минут, чтобы вы могли попробовать веб-интерфейс. Это пробная конфигурация, а не продакшн. Для командной установки за TLS перейдите к развёртыванию в Docker и Kubernetes.

Выберите один из двух путей:

ПутьПодходит дляНужно
A. Один пользователь, из исходниковСамый быстрый взгляд на интерфейсGo, Node.js и Wails CLI (см. Сборка из исходников)
B. Многопользовательская проба в Docker ComposeУвидеть настоящую серверную конфигурацию с PostgreSQLDocker с плагином Compose и openssl

A. Один пользователь, из исходников ​

В этом режиме сервер слушает только ваш компьютер (127.0.0.1) и хранит данные в файлах в ~/.kubron. База данных и ключ шифрования не нужны. Режим рассчитан на одного человека.

  1. Соберите сервер, как описано в Сборка из исходников → Серверный бинарник.

  2. Запустите:

    bash
    ./kubron-server --listen 127.0.0.1:8080
  3. Откройте http://127.0.0.1:8080 в браузере.

  4. На экране Welcome to Kubron создайте администратора (имя 3–32 символа, пароль не короче 8). На loopback-адресе токен первичной настройки не нужен.

  5. Продолжайте с раздела добавление первого кластера.

Остановите сервер по 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:

bash
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 .env
  • KUBRON_SECRET_KEY шифрует kubeconfig, хранящиеся в базе. Формат — id:base64, где base64 кодирует ровно 32 случайных байта. Для пробы достаточно .env. В продакшне храните его в менеджере секретов и делайте резервную копию: без него сохранённые учётные данные не восстановить.
  • KUBRON_SETUP_TOKEN (не короче 16 символов) защищает создание первого администратора, чтобы никто посторонний не занял только что запущенный сервер.

2. Создайте compose.yaml ​

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. Запустите ​

bash
docker compose up -d
docker compose logs -f kubron

Дождитесь в журнале сообщения, что сервер слушает порт. Проверьте готовность:

bash
curl -fsS http://127.0.0.1:8080/readyz && echo

4. Создайте администратора ​

  1. Откройте http://127.0.0.1:8080.
  2. На экране Welcome to Kubron введите токен первичной настройки из .env, затем имя и пароль администратора.
  3. Нажмите Create administrator.

Администратора можно создать и из командной строки; токен при этом не нужен. Пароль читается со стандартного ввода, а не из аргумента:

bash
printf '%s\n' 'длинная-парольная-фраза' | docker compose exec -T kubron /kubron-server create-admin --username admin

5. Остановка и сброс ​

bash
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.

Затем:

  1. Войдите и добавьте кластер из списка кластеров.
  2. Вставьте текст kubeconfig или выберите файл, выберите контекст и проверьте подключение.
  3. Если появилось окно входа, пройдите его, затем сохраните. Кластер откроется на дашборде.

Подробнее о диалоге: Первый кластер.

Если что-то не работает ​

СимптомПричина и решение
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 не находит образПроверьте, что тег существует на странице пакетов

Дальше ​

Released under the Apache-2.0 License.