Настройка сервиса Editor

Editor – это компонент .

Это приложение, построенное на Spring Boot.

Конфигурация Editor состоит из двух файлов:

  • application.yaml - общие системные настройки
  • application-seatmap.yaml - настройки, специфичные для приложения

Среда выполнения и обновление с 1.74

Образ frontend запускает Node и обслуживает editor core рядом со статическими файлами. Используйте точку входа образа и /healthz для проверок готовности и работоспособности frontend. Сервис core отвечает по пути /core на веб-порту frontend (PORT, по умолчанию 8081) и требует действительный токен редактора от каждого вызова. Editor-service сопровождает каждый свой вызов короткоживущим токеном, подписанным его закрытым ключом, и обращается к core по seatmap.services.core.url. Значение по умолчанию, http://127.0.0.1:8081/, указывает на контейнер frontend того же пода Helm; если они работают не в одном поде, например как отдельные сервисы Docker Compose, укажите адрес frontend, а на разных хостах синхронизируйте их часы. Порт метрик (CORE_METRICS_PORT, по умолчанию 9091) оставляйте внутренним. Раздача только статических файлов не предоставляет сервис core.

Согласуйте настроенные ключи RSA между backend и frontend. Helm использует существующий Secret <release>-rsa с private-key и public-key; публичный ключ frontend монтируется только для чтения в /keys/public-key. Для собственной установки frontend смонтируйте туда соответствующий публичный ключ или укажите путь через CORE_PUBLIC_KEY_FILE. Без ключа frontend записывает ошибку в журнал при запуске, а /core отклоняет все вызовы; если файл не содержит читаемого публичного ключа, frontend останавливается при запуске.

Значение Helm По умолчанию Назначение
editor.frontend.coreWorkers 1 Число воркеров core; при увеличении добавьте CPU и память.
editor.frontend.jobTimeoutMs 20000 Срок выполнения задания в миллисекундах.
editor.frontend.drainTimeoutMs 15000 Срок завершения работы при остановке в миллисекундах.
editor.terminationGracePeriodSeconds 30 Время завершения pod в секундах.

Допустимы положительные целые до 2147483647. Для отсутствующих значений или null используются значения по умолчанию. Время завершения pod должно превышать срок остановки минимум на пять секунд. Chart задаёт срок чтения backend на пять секунд больше срока задания с округлением вниз до целых секунд. Ресурсы frontend задаются в global.resources.frontend.

Вне Helm настройте CORE_WORKERS, CORE_JOB_TIMEOUT_MS и CORE_DRAIN_TIMEOUT_MS и согласуйте срок чтения backend. Без CORE_WORKERS среда может выбирать число воркеров автоматически; Helm по умолчанию задаёт один.

В Docker Compose два контейнера редактора работают как обычные сервисы. Укажите в SEATMAP_SERVICES_CORE_URL для editor-service сервис frontend в сети Compose, например http://editor-client:8081/. Смонтируйте соответствующий публичный ключ в /keys/public-key контейнера frontend и задайте обоим контейнерам редактора время остановки 30 секунд: стандартные для Compose 10 секунд меньше 15-секундного срока завершения. Пакет Docker Compose для 1.74 настраивает всё это, создаёт пару ключей подписи для каждой установки и содержит руководство по обновлению существующих установок на Compose.

При обновлении до 1.74 editor-service применяет V121–V127 до запуска нового booking-service. Перед V122 проверьте повторяющиеся подтверждённые ссылки на бронирование в пределах события. Порядок, запрос проверки и совместимость схем описаны в руководстве по развёртыванию версии.

application.yaml

Настройки задержки

Задержка перед запуском задач после старта системы.

Parameter Environment variable Описание Default value
initial INITIAL_DELAY Задержка в миллисекундах 5000 (five seconds)

Свойства фреймворка Java Spring

Parameter Environment variable Описание Default value
spring.profiles.include SPRING_PROFILES_INCLUDE Добавлять ли свойства из другого профиля seatmap
spring.jpa.generate-ddl SPRING_JPA_GENERATE_DDL Включать ли генерацию DDL true
spring.jpa.properties.hibernate.jdbc.batch_size SPRING_JPA_PROPERTIES_HIBERNATE_JDBC_BATCH_SIZE Количество операторов INSERT, UPDATE и DELETE, выполняемых за один вызов базы данных 50
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults SPRING_JPA_PROPERTIES_HIBERNATE_TEMP_USE_JDBC_METADATA_DEFAULTS Использовать ли метаданные JDBC для определения значений некоторых настроек по умолчанию, когда база данных может быть недоступна false
spring.jpa.properties.hibernate.order_inserts SPRING_JPA_PROPERTIES_HIBERNATE_ORDER_INSERTS Упорядочивать ли SQL-вставки по значению первичного ключа вставляемых элементов false
spring.jpa.properties.javax.persistence.schema-generation.create-source SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_CREATE_SOURCE Генерировать ли команды DDL для схемы metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_SCRIPTS_ACTION Создавать или обновлять схему базы данных update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target SPRING_JPA_PROPERTIES_JAVAX_PERSISTENCE_SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET Имя файла для генерации скрипта ddl_jpa_creation.sql
spring.jpa.hibernate.ddl-auto SPRING_JPA_HIBERNATE_DDL_AUTO Как инициализировать базу данных update
spring.jpa.hibernate.use-new-id-generator-mappings SPRING_JPA_HIBERNATE_USE_NEW_ID_GENERATOR_MAPPINGS Генерировать ли значения идентификаторов на основе sequence-структуры базы данных true
spring.jpa.database-platform SPRING_JPA_DATABASE_PLATFORM Используемая база данных org.hibernate.dialect.PostgreSQLDialect
spring.jpa.open-in-view SPRING_JPA_OPEN_IN_VIEW Включать ли OSIV false
spring.jackson.mapper.DEFAULT_VIEW_INCLUSION SPRING_JACKSON_MAPPER_DEFAULT_VIEW_INCLUSION Включать ли неаннотированные свойства во все представления true
spring.flyway.baseline-on-migrate SPRING_FLYWAY_BASELINE_ON_MIGRATE Автоматически ли вызывать baseline при выполнении migrate для непустой схемы без таблицы истории схемы ’true'
spring.datasource.hikari.data-source-properties.reWriteBatchedInserts SPRING_DATASOURCE_HIKARI_DATA_SOURCE_PROPERTIES_REWRITEBATCHEDINSERTS Переписывать ли обычные операторы вставки в многозначные для пакетных вставок true
spring.datasource.hikari.maximum-pool-size SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE Максимальный размер пула 20
spring.datasource.hikari.connection-timeout SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT Тайм-аут подключения 60000
spring.datasource.driver-class-name SPRING_DATASOURCE_DRIVER_CLASS_NAME JDBC-драйвер для связи с базой данных org.postgresql.Driver
spring.datasource.password SPRING_DATASOURCE_PASSWORD Пароль для подключения к базе данных ${DB_PASSWORD:postgres}
spring.datasource.username SPRING_DATASOURCE_USERNAME Имя пользователя для подключения к базе данных ${DB_USERNAME:seatmap}
spring.datasource.url SPRING_DATASOURCE_URL Расположение базы данных ${DB_URL:jdbc:postgresql://localhost:15432/seatmap}
spring.servlet.multipart.enabled SPRING_SERVLET_MULTIPART_ENABLED Включать ли поддержку multipart-загрузок true
spring.servlet.multipart.max-file-size SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE Максимальный допустимый размер загружаемых файлов 200MB
spring.servlet.multipart.max-request-size SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE Максимальный допустимый размер запросов multipart/form-data 215MB
spring.servlet.multipart.file-size-threshold SPRING_SERVLET_MULTIPART_FILE_SIZE_THRESHOLD Порог размера, после которого файлы будут записаны на диск 2KB
spring.mvc.pathmatch.matching-strategy SPRING_MVC_PATHMATCH_MATCHING_STRATEGY Стратегия сопоставления путей запросов с обработчиками контроллеров ant_path_matcher
spring.data.redis.port SPRING_DATA_REDIS_PORT Порт сервера Redis 16379
spring.data.redis.host SPRING_DATA_REDIS_HOST Хост сервера Redis localhost

Настройки логирования

Настройки логирования, применяемые к классам в пакете pro.seatmap.

Parameter Environment variable Описание Default value
logging.level.pro.seatmap LOGGING_LEVEL_PRO_SEATMAP Уровень логирования DEBUG

Настройки сервера

Parameter Environment variable Описание Default value
server.compression.min-response-size SERVER_COMPRESSION_MIN_RESPONSE_SIZE Минимальный размер файлов для сжатия 1024
server.compression.enabled SERVER_COMPRESSION_ENABLED Сжимать ли данные true
server.compression.mime-types SERVER_COMPRESSION_MIME_TYPES MIME-типы для сжатия text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
server.servlet.session.timeout SERVER_SERVLET_SESSION_TIMEOUT Время жизни сессии сервлета 2d
server.tomcat.max-http-form-post-size SERVER_TOMCAT_MAX_HTTP_FORM_POST_SIZE Максимальный размер POST-запроса 20MB

Настройки уведомлений

Путь для уведомлений Image Ready.

Parameter Environment variable Описание Default value
notify.path NOTIFY_PATH Путь уведомления /topic/venues/

application-seatmap.yaml

В файле application-seatmap.yaml вы можете настроить параметры, описанные ниже.

Настройки безопасности

Блок security позволяет задать время жизни refresh- и access-токенов, а также управлять ключами.

Parameter Environment variable Описание Default value
seatmap.security.token.refresh.expire-duration SEATMAP_SECURITY_TOKEN_REFRESH_EXPIRE_DURATION Время жизни refresh-токена. Формат: PTnHnMnS, где n – соответствующие часы, минуты или секунды PT2H (two hours)
seatmap.security.token.access.expire-length SEATMAP_SECURITY_TOKEN_ACCESS_EXPIRE_LENGTH Время жизни access-токена в миллисекундах 300000 (five minutes)
seatmap.security.rsa.private-key SEATMAP_SECURITY_RSA_PRIVATE_KEY Расположение приватного ключа Ресурс конкретной установки
seatmap.security.rsa.public-key SEATMAP_SECURITY_RSA_PUBLIC_KEY Расположение публичного ключа Ресурс конкретной установки
seatmap.security.sso.user-default-password SEATMAP_SECURITY_SSO_USER_DEFAULT_PASSWORD Пароль пользователя по умолчанию PASSWORD

Ключ Google API

API-ключ – это уникальный идентификатор, который аутентифицирует запросы, связанные с вашим проектом, для целей учёта использования и биллинга.

Parameter Environment variable Описание Default value
google.api.key GOOGLE_API_KEY Значение API-ключа KEY_VALUE

Настройки первого запуска

Эти настройки применяются при первом запуске системы.

Parameter Environment variable Описание Default value
seatmap.first-run.organization SEATMAP_FIRST_RUN_ORGANIZATION Имя первой созданной организации seatmap.pro
seatmap.first-run.email SEATMAP_FIRST_RUN_EMAIL Email суперадмина admin@seatmap.pro
seatmap.first-run.password SEATMAP_FIRST_RUN_PASSWORD Пароль суперадмина PASSWORD

Настройки сброса пароля

Parameter Environment variable Описание Default value
seatmap.reset.fromMail SEATMAP_RESET_FROMMAIL Email-адрес, с которого пользователю отправляется сообщение со ссылкой для сброса пароля Не задано
seatmap.reset.token.expire-duration SEATMAP_RESET_TOKEN_EXPIRE_DURATION Время жизни ссылки. Формат: PTnHnMnS, где n – соответствующие часы, минуты или секунды PT30M (thirty minutes)

Настройки сервисов

URL-адреса, по которым расположены сервисы.

Parameter Environment variable Описание Default value
seatmap.services.booking.url SEATMAP_SERVICES_BOOKING_URL Адрес сервиса бронирования https://booking.seatmap.pro/
seatmap.services.metrics.url SEATMAP_SERVICES_METRICS_URL Адрес сервиса для отправки сервисных метрик https://stat.seatmap.pro/editor-metrics
seatmap.services.editor.url SEATMAP_SERVICES_EDITOR_URL Адрес сервиса редактора http://localhost:3000/
seatmap.services.core.url SEATMAP_SERVICES_CORE_URL Адрес editor core в среде frontend. Editor-service подписывает каждый вызов своим закрытым ключом http://127.0.0.1:8081/
seatmap.services.preview.url SEATMAP_SERVICES_PREVIEW_URL Адрес сервиса предпросмотра http://localhost:5000/
seatmap.services.preview.api-key SEATMAP_SERVICES_PREVIEW_API_KEY Общий секрет, передаваемый конвертеру как bearer-токен. Helm-чарт создаёт и подключает его сам (пусто)
seatmap.services.preview.jobs SEATMAP_SERVICES_PREVIEW_JOBS Путь относительно URL конвертера для опроса состояния конверсии в очереди jobs/
seatmap.services.preview.await-timeout SEATMAP_SERVICES_PREVIEW_AWAIT_TIMEOUT Сколько ждать конверсию из очереди, прежде чем считать её неудачной PT5M
seatmap.services.preview.poll-interval SEATMAP_SERVICES_PREVIEW_POLL_INTERVAL Интервал между опросами состояния конверсии PT2S

Настройки почты

Параметры почтового сервиса для восстановления паролей. Укажите имя пользователя и пароль вашего почтового сервера или оставьте оба пустыми, если сервер принимает почту без входа. Стратегия принимает SMTPS для неявного TLS, SMTP_TLS для STARTTLS или SMTP, который отправляет почту без шифрования, если сервер не предлагает STARTTLS, поэтому используйте его только в доверенной сети. Если стратегия не задана, используется SMTPS на порту 465 и SMTP_TLS на любом другом порту.

Если хост или адрес отправителя (seatmap.reset.fromMail) пуст или пароль задан без имени пользователя, редактор при запуске пишет предупреждение в журнал, а запрос на сброс пароля получает ответ HTTP 503, и письмо не отправляется. Страница сброса пароля в этом случае предлагает пользователю обратиться к администратору.

Parameter Environment variable Описание Default value
seatmap.mail.username SEATMAP_MAIL_USERNAME Имя пользователя Не задано
seatmap.mail.password SEATMAP_MAIL_PASSWORD Пароль Не задано
seatmap.mail.host SEATMAP_MAIL_HOST Хост Не задано
seatmap.mail.port SEATMAP_MAIL_PORT Порт 587
seatmap.mail.strategy SEATMAP_MAIL_STRATEGY Защита соединения Выбирается по порту

Введите название функции, настройки, эндпоинта или метода SDK.