Конфигурация сервера
Web-версия (kubron-server) настраивается переменными окружения, флагами командной строки и параметрами Helm-чарта. В справочнике перечислены переменные, которыми операторы пользуются чаще всего. Остальное описано в полном руководстве по эксплуатации в репозитории.
Длительности задаются в синтаксисе Go (30s, 15m, 12h). Булевы переменные принимают 1, true, yes или on. У многих настроек есть и флаг командной строки (см. kubron-server --help), но секреты и токены задаются только окружением. Helm-чарт выводит многие из них в values, остальное можно передать через kubron.extraEnv.
Основное
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_LISTEN | 127.0.0.1:8080 | Адрес прослушивания HTTP. |
KUBRON_ALLOW_REMOTE | выкл. | Нужен для прослушивания не-loopback адреса. Небезопасен без TLS-прокси: сервер сам TLS не обслуживает. |
KUBRON_DATA_DIR | ~/.kubron | Каталог данных для файлового хранилища (когда база не задана). |
KUBRON_REPLICA_ID | имя хоста + случайный суффикс | Уникальный идентификатор реплики: буквы, цифры, - и _, до 63 символов. |
Хранилище и шифрование
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_DATABASE_URL | пусто (файловое хранилище) | Строка подключения PostgreSQL 14+. Её задание включает сервисный режим: пользователи, кластеры, сессии и аудит хранятся в PostgreSQL. Используйте переменную, а не флаг --database-url: значение флага видно в списке процессов. |
KUBRON_DB_LISTEN_URL | — | Прямое подключение PostgreSQL для LISTEN/NOTIFY. Нужно за PgBouncer в режиме transaction, который LISTEN не поддерживает. |
KUBRON_SECRET_KEY | — | Ключ шифрования (id:base64, 32 случайных байта) для kubeconfig и учётных данных в хранилище. Обязателен, когда используется база. |
KUBRON_SECRET_KEY_PREVIOUS | — | Предыдущие ключи через запятую, используются при ротации через kubron-server rekey. |
KUBRON_ALLOW_KEY_MISMATCH | выкл. | Только для восстановления: запуск, даже если ключ не подходит к данным (например, чтобы выгрузить журнал аудита после потери ключа). Секреты кластеров остаются недоступны. |
Первый администратор
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_SETUP_TOKEN | — | Токен не короче 16 символов, нужный для создания первого администратора по сети в сервисном режиме. Только окружение, флага нет. |
KUBRON_ADMIN_PASSWORD | — | Пароль, который читает kubron-server create-admin (альтернатива стандартному вводу). Никогда не передавайте пароль аргументом. |
HTTP, прокси и сессии
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_PUBLIC_URL | — | Публичный origin Kubron, например https://kubron.example.com; адрес возврата для OIDC-входа browser-callback. В продакшне только https; http допускается для локальной разработки. Без пути, учётных данных, query и fragment. Некорректное значение останавливает запуск. |
KUBRON_TRUST_PROXY | выкл. | Доверять X-Forwarded-Proto обратного прокси и помечать cookie сессии как Secure. Включайте, только если сервер доступен лишь через прокси. |
KUBRON_TRUSTED_PROXY_HOPS | 1 | Сколько доверенных прокси стоит перед сервером. Адрес клиента берётся справа из X-Forwarded-For, например 2 для ingress-nginx за облачным балансировщиком. |
KUBRON_TRUSTED_PROXIES | — | CIDR или адреса доверенных прокси через запятую. Если задан, заменяет счётчик: собеседник обязан входить в список, иначе заголовок игнорируется. |
KUBRON_ALLOWED_HOSTS | пусто (проверка выкл.) | Допустимые значения Host через запятую (имя или IP, необязательный порт, IPv6 в скобках); остальные получают 421. *.pf.<домен> разрешается автоматически, когда port-forward включён. |
KUBRON_CSP_REPORT_ONLY | выкл. | Отдавать Content-Security-Policy как Report-Only на время обкатки: нарушения фиксирует браузер, ничего не блокируется. |
KUBRON_SESSION_TTL | 12h | Срок жизни веб-сессии, длительность Go, например 8h или 24h. |
Ограничения доступа
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_DISABLE_EXEC | выкл. | Отключить терминалы Pod и оболочку узла для всех. |
KUBRON_DISABLE_NODE_SHELL | выкл. | Отключить оболочку узла для всех. |
KUBRON_DISABLE_PORT_FORWARD | выкл. | Отключить port-forward для всех. |
KUBRON_MAX_TERMINALS | 8 | Терминалов на пользователя. 0 — без ограничения. |
KUBRON_MAX_LOG_STREAMS | 20 | Потоков логов на пользователя. 0 — без ограничения. |
KUBRON_MAX_PORT_FORWARDS | 10 | Port-forward на пользователя. 0 — без ограничения. |
KUBRON_TERMINAL_MAX_DURATION | 8h | Максимальная длительность терминала. 0 — без ограничения. |
KUBRON_TERMINAL_IDLE_TIMEOUT | 30m | Закрывать терминал после такого простоя без ввода. 0 — без ограничения. |
Port-forward
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_PF_BASE_DOMAIN | — | Базовый домен для port-forward в серверном режиме; каждый поток получает https://{id}.pf.<базовый-домен>. Используйте отдельный регистрируемый домен и создайте wildcard DNS-запись и сертификат для *.pf.<базовый-домен>. Без него port-forward в сервисном режиме выключен. |
KUBRON_PF_SCHEME | https | Схема адресов потоков. http допускается только для локальной разработки. |
KUBRON_PF_IDLE_TIMEOUT / KUBRON_PF_MAX_DURATION | значения сервера | Срок простоя и абсолютный срок жизни потока port-forward. |
Сетевая политика и вход в кластеры
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_CLUSTER_ADDR_POLICY | permissive в сервисном режиме | К каким адресам API кластеров и провайдеров идентификации сервер может подключаться: permissive закрывает loopback, link-local и метаданные облака; strict закрывает ещё и частные сети; off отключает проверку (в журнал пишется предупреждение). У однопользовательского сервера на loopback проверки по умолчанию нет. |
KUBRON_CLUSTER_ADDR_ALLOW_CIDRS | — | Исключения из политики: CIDR или адреса через запятую. Адреса метаданных облака они не открывают. |
KUBRON_HELM_ADDR_POLICY | strict | Та же политика для адресов репозиториев Helm и OCI-реестров (защита от SSRF): strict, permissive или off. |
KUBRON_HELM_ALLOW_CIDRS | — | Исключения для Helm, например внутренний репозиторий 10.20.0.0/16. |
KUBRON_GKE_OAUTH_CLIENT_ID | — | ID OAuth-клиента, позволяющий входить в GKE своим аккаунтом Google. Без него GKE использует ключ сервисного аккаунта. |
KUBRON_GKE_OAUTH_CLIENT_SECRET | — | Секрет этого клиента. Храните в Secret. Сервер не принимает секрет без ID клиента. |
Эксплуатация, аудит и журналы
| Переменная | По умолчанию | Назначение |
|---|---|---|
KUBRON_DRAIN_DELAY | — | Пауза между SIGTERM и закрытием WebSocket-соединений, чтобы балансировщик успел снять реплику. Не более 60s. |
KUBRON_METRICS_LISTEN | пусто (выкл.) | Адрес отдельного listener Prometheus /metrics. Не публикуйте его через ingress. |
KUBRON_AUDIT_RETENTION | 0 (бессрочно) | Как долго записи аудита хранятся в PostgreSQL. Ненулевое значение — не меньше 24h. |
KUBRON_AUDIT_STDOUT | выкл. | Дополнительно писать каждую запись аудита JSON-строкой в stdout для внешнего сборщика логов. Журнал в базе остаётся основным. |
KUBRON_CLUSTER_CHECK_INTERVAL | 30s | Как часто в фоне проверяется доступность кластеров. 0 отключает проверку. |
KUBRON_LOG_LEVEL | info | debug, info, warn или error. |
KUBRON_LOG_FORMAT | json | json или text (читаемый вывод для разработки). |
Секреты и ротация ключа
Используйте secret manager или Secret оркестратора для хранения пароля БД и ключа шифрования. Не помещайте production-секреты в Helm values или аргументы командной строки.
Формат ключа шифрования: id:base64, где base64 кодирует ровно 32 случайных байта. Для ротации задайте новый ключ в KUBRON_SECRET_KEY, старый передайте через KUBRON_SECRET_KEY_PREVIOUS, затем выполните kubron-server rekey. Удаляйте старые ключи только после завершения и проверки перешифрования.
Сеть и TLS
Сервер не завершает TLS. Используйте доверенный reverse proxy или ingress. Доверяйте proxy-заголовкам только если прямой доступ к pod ограничен. Не публикуйте listener метрик через внешний ingress.
Подробности — в руководстве по развёртыванию и описании метрик.