Skip to content

Конфигурация сервера ​

Web-версия (kubron-server) настраивается переменными окружения, флагами командной строки и параметрами Helm-чарта. В справочнике перечислены переменные, которыми операторы пользуются чаще всего. Остальное описано в полном руководстве по эксплуатации в репозитории.

Длительности задаются в синтаксисе Go (30s, 15m, 12h). Булевы переменные принимают 1, true, yes или on. У многих настроек есть и флаг командной строки (см. kubron-server --help), но секреты и токены задаются только окружением. Helm-чарт выводит многие из них в values, остальное можно передать через kubron.extraEnv.

Основное ​

ПеременнаяПо умолчаниюНазначение
KUBRON_LISTEN127.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_HOPS1Сколько доверенных прокси стоит перед сервером. Адрес клиента берётся справа из 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_TTL12hСрок жизни веб-сессии, длительность Go, например 8h или 24h.

Ограничения доступа ​

ПеременнаяПо умолчаниюНазначение
KUBRON_DISABLE_EXECвыкл.Отключить терминалы Pod и оболочку узла для всех.
KUBRON_DISABLE_NODE_SHELLвыкл.Отключить оболочку узла для всех.
KUBRON_DISABLE_PORT_FORWARDвыкл.Отключить port-forward для всех.
KUBRON_MAX_TERMINALS8Терминалов на пользователя. 0 — без ограничения.
KUBRON_MAX_LOG_STREAMS20Потоков логов на пользователя. 0 — без ограничения.
KUBRON_MAX_PORT_FORWARDS10Port-forward на пользователя. 0 — без ограничения.
KUBRON_TERMINAL_MAX_DURATION8hМаксимальная длительность терминала. 0 — без ограничения.
KUBRON_TERMINAL_IDLE_TIMEOUT30mЗакрывать терминал после такого простоя без ввода. 0 — без ограничения.

Port-forward ​

ПеременнаяПо умолчаниюНазначение
KUBRON_PF_BASE_DOMAIN—Базовый домен для port-forward в серверном режиме; каждый поток получает https://{id}.pf.<базовый-домен>. Используйте отдельный регистрируемый домен и создайте wildcard DNS-запись и сертификат для *.pf.<базовый-домен>. Без него port-forward в сервисном режиме выключен.
KUBRON_PF_SCHEMEhttpsСхема адресов потоков. http допускается только для локальной разработки.
KUBRON_PF_IDLE_TIMEOUT / KUBRON_PF_MAX_DURATIONзначения сервераСрок простоя и абсолютный срок жизни потока port-forward.

Сетевая политика и вход в кластеры ​

ПеременнаяПо умолчаниюНазначение
KUBRON_CLUSTER_ADDR_POLICYpermissive в сервисном режимеК каким адресам API кластеров и провайдеров идентификации сервер может подключаться: permissive закрывает loopback, link-local и метаданные облака; strict закрывает ещё и частные сети; off отключает проверку (в журнал пишется предупреждение). У однопользовательского сервера на loopback проверки по умолчанию нет.
KUBRON_CLUSTER_ADDR_ALLOW_CIDRS—Исключения из политики: CIDR или адреса через запятую. Адреса метаданных облака они не открывают.
KUBRON_HELM_ADDR_POLICYstrictТа же политика для адресов репозиториев 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_RETENTION0 (бессрочно)Как долго записи аудита хранятся в PostgreSQL. Ненулевое значение — не меньше 24h.
KUBRON_AUDIT_STDOUTвыкл.Дополнительно писать каждую запись аудита JSON-строкой в stdout для внешнего сборщика логов. Журнал в базе остаётся основным.
KUBRON_CLUSTER_CHECK_INTERVAL30sКак часто в фоне проверяется доступность кластеров. 0 отключает проверку.
KUBRON_LOG_LEVELinfodebug, info, warn или error.
KUBRON_LOG_FORMATjsonjson или 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.

Подробности — в руководстве по развёртыванию и описании метрик.

Released under the Apache-2.0 License.