Перейти к содержанию

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

Сервисы конфигурируются посредством переменных окружения. Также, при запуске сервисы пытаются загрузить файл .env, если он есть.

Связь сервисов

Для связи между сервисами используются переменные вида <NAME>_URL, <NAME>_IGNORE_SSL и, в некоторых случаях, <NAME>_TOKEN. Первая переменная отвечает за базовый URL сервиса, вторая — будет ли проверяться сертификат при HTTPS-соединении.

Помимо этого, каждый сервис конфигурируется через переменные KEYCLOAK_CLIENT_ID/KEYCLOAK_CLIENT_SECRET (клиент в Keycloak, по которому сервис получает свой служебный токен) и AUTH_URL/AUTH_IGNORE_SSL (куда ходить для валидации токенов).

Известные названия сервисов

Наименование Сервис Комментарий
KEYCLOAK Keycloak Используется только auth-service
KROKI_SERVER Kroki Используется только kroki-proxy
AUTH auth-service Авторизация и валидация токенов
CLUSTER cluster-manager Управление нодами Proxmox
DEPLOYMENT deployment-api Развертывание и шаблоны
KROKI kroki-proxy Рендер диаграмм
JOBSERVICE jobservice-api Приём задач и управление задачами
REDIS Redis Кеш и распределённые блокировки
RABBITMQ RabbitMQ Очередь задач (используется jobservice/jobservice-api)
POSTGRES PostgreSQL База данных

Сервисы, которые обращаются к другим сервисам, задают их URL через соответствующие переменные. Например, frontend-server использует AUTH_URL, CLUSTER_URL, DEPLOYMENT_URL, KROKI_URL, JOBSERVICE_URL; deployment-api — CLUSTER_URL, JOBSERVICE_URL, AUTH_URL; jobservice — DEPLOYMENT_URL, CLUSTER_URL, JOBSERVICE_URL, AUTH_URL.

websockify-go использует PROXMOX_API_URL и PROXMOX_API_TOKEN для создания временных VNC proxy. Для внутреннего CA можно задать PROXMOX_CA_FILE; PROXMOX_INSECURE_SKIP_VERIFY=true явно отключает проверку сертификата и по умолчанию выключен.

Пример конфигурации

Файлы *-sample.env в корне проекта содержат образцы конфигурации. Утилита make fill-envs создаёт из них рабочие файлы (например, auth.env, cluster.env, deployment.env, frontend.env, kroki.env, jobservice.env, jobservice-api.env), подставляя данные клиентов из .clients.json (генерируется опцией make fill-keycloak).