Настройки
Раздел описывает доступные переменные окружения для образов axiom и axiom-web.
Установка приложения описана в инструкции по установке
Приложение Axiom (API / worker)
Значения по-умолчнию указаны через = после имени переменной.
Значения, указанные как = secret:... задаются через хранилище секретов Vault.
ENV_NM="prod": имя средыDEFAULT_PERMISSION_LEVEL="full": уровень доступа по-умолчаниюAPP- настройки приложенияAPP__NAME="axiom": отображаемое имя приложенияAPP__AUTO_LINKS=true: создавать ли авто-связи между сущностямиAPP__MAX_DELETE_BATCH_SIZE=50: максимальное количество датасетов при удаление через/dataset/deleteAPP__DEFAULT_ITEMS_LIMIT=100: количество элементов в ответе пагинированного эндпоинта по умолчаниюAPP__MAX_ITEMS_LIMIT=5000: максимальное количество элементов в ответе пагинированного эндпоинтаAPP__DEFAULT_PREVIEW_LIMIT=100: количество строк, возвращаемое методами/dataset/previewи/v100/sources/{source_rk}/previewпо-умолчаниюAPP__MAX_PREVIEW_LIMIT=100: максимально допустимое для запроса количество строк в методах/dataset/preview/и/v100/sources/{source_rk}/previewAPP__MAX_CHAIN_LENGTH=4: максимальная длина цепочки связейAPP__MAX_CHAINS_COUNT=5000: максимальное количество цепочек связей в ответеAPP__DEFAULT_SOURCE_RK=-1: суррогатный ключ источника по умолчанию для запуска заданийAPP__DEFAULT_ASYNC_DELETE=false: удалять датасеты в фоновом процессе по умолчаниюAPP__STAT_DISTINCT_LIMIT=1000: максимальное количество возвращаемых значений в статистикеDISTINCTAPP__LOCK_TIMEOUT=7200- максимальное время блокировки (в секундах)
API- настройки web-сервисаAPI__ROOT_PATH_PREFIX=null: корневой префикс для всех эндпоинтов
EXECUTOR- Настройки CeleryEXECUTOR__BROKER_URL=secret:executor-broker-url: адрес брокера сообщений redis/sentinel или rabbit-mqEXECUTOR__OPTIONS={}: дополнительные опции приложения Celery в формате JSONTASK_RETRY_COUNT=5: количество попыток повторного запуска задачи после ошибкиTASK_RETRY_DELAY=10: задержка между попыткамиDELETE_DATASET_BATCH_SIZE=null: Размер пачки для разового удаленияDELETE_DATASET_DELAY=0: Задержка после удаления пачки
META- настройки БД с метаданными приложенияMETA__URL=secret:meta-db-url: строка подключения до postgre c метаданнымиMETA__CONN_OPTIONS={}: дополнительные опции движка SQLAlchemy в формате JSONMETA__SCHEMA="meta": схема в БД, где приложение хранит метаданные
DB- настройки БД, где находится витрина с даннымиDB__URL=secret:db-url: строка подключения до движка с витриной (deprecated)DB__CONN_OPTIONS={}: дополнительные опции движка SQLAlchemy в формате JSON (deprecated)DB__STAGE_SCHEMA="stage": схема в БД, используемая как staging area (deprecated)DB__STORE_SCHEMA="store": схема в БД, используемая загрузчиками (deprecated)DB__DATASET_SCHEMA="dataset": схема в БД, используемая для сохранения датасетов в API V2DB__WORK_SCHEMA="work": схема в БД, используемая для создания временных объектов (deprecated)DB__MAX_NAME_LENGTH=63: максимальное допустимая длина имени объектов в БД
ENGINE- настройки поведения конструктораENGINE__TEMP_OBJECTS_DROP=true: удалять ли временные объекты после завершения джобаENGINE__TEMP_OBJECTS_AS="cte": как создавать временные объекты: table/view/cte/subqueryENGINE__FINAL_OBJECTS_AS="table": способ создания целевых таблиц: table/ctas. Еслиtable, то таблица создается черезcreate table + insert, иначе черезcreate table as selectENGINE__ASYNC_FACTOR=4: максимальное количество одновременных SQL запросовENGINE__AUTO_ANALYZE=true: запускать ли сбор статистики в БД над созданными объектамиENGINE__AUTO_INDEX=false: создавать ли индекс на таблицах по ключу сущностиENGINE__DEFAULT_STORAGE_KEY=null: ключ распределения по-умолчанию, если движок его поддерживает (deprecated)
LOG- настройки логированияLOG__PREFIX="axiom-log": префикс строчки в stout, для текстового формата логовLOG__LEVEL="INFO": уровень логированияLOG__FILE_NAME="/var/log/axiom/axiom.log.jsonl": имя файла для логов
TELEMETRY- настройки OpenTelemetryTELEMETRY__ENABLED=false: Включить отправку OpenTelemetry данных по протоколу OTLPTELEMETRY__SERVICE_NAME=$APP__NAME::$SUBSYSTEM: Имя сервиса с которым будут сохраняться данные телеметрии в сборщикеTELEMETRY__EXCLUDE_URLS=['/health/liveness', '/health/readiness', 'favicon.ico']: Список URL, по которых не надо собирать телеметриюTELEMETRY__EVENT_LOGGERS=['$APP__NAME', 'fs-core', 'fs-alchemy']: Список логгеров, записи которых следует добавлять в качестве события в span
KEYCLOAK- настройки аутентификации и авторизацииKEYCLOAK__AUTH_REQUIRED=false: требуется ли авторизацияKEYCLOAK__URL=secret:keycloak-url: адрес сервиса KeycloakKEYCLOAK__SSL_VERIFICATION=true: использовать ли ssl верификацию при подключении к keycloak: true/false/<путь до сертификата>KEYCLOAK__STRATEGY="introspect": стратегия, используемая для авторизации: userinfo/introspectKEYCLOAK__ACCESS_ROLES={"read":"axiom_read","load":"axiom_load","transform":"axiom_transform","admin":"axiom_admin"}: имена ролей, используемых для ролевого доступаKEYCLOAK__CLIENT_ID="axiom_client": имя клиента, в котором заведны роли доступаKEYCLOAK__CLIENT_SECRET=secret:keycloak-client-secret: секрет для доступа к клиенту, если выбрана стратегия introspectKEYCLOAK__CACHE_LIFETIME=7200: время жизни кеша с токенами в секундахKEYCLOAK__SIGN_ALGORITHM="RS256": алгоритм подписи токена, используемый в keycloak
S3- настройки файлового хранилища S3S3__ENABLED=false: присутствует ли S3 в инсталляцииS3__URL=null: адрес API хранилища S3S3__SSL_VERIFICATION=true: использовать ли ssl верификацию при подключении к s3: true/false/<путь до сертификата>S3__BUCKET=null: имя бакета в S3 хранилищеS3__ACCESS_KEY=secret:s3-access: S3 access keyS3__SECRET_ACCESS_KEY=secret:s3-secret: S3 secret access keyS3__DATASET_CSV_PATH="dataset_csv": каталог внутри бакета, куда выгружаются CSV датасетовS3__MAX_FILE_SIZE_MB=64: максимальный размер файла в мегабайтахS3__FILE_ENCODING="utf-8": кодировка, используемая для текстовых файловS3__URL_EXPIRE_INTERVAL=300: как долго живет ссылка для скачивания файлов, в секундахS3__HTTP_TIMEOUT=15: максимальное время ожидания ответа от S3 в секундах
SWAGGER- настройки работы swaggerSWAGGER__ENABLED=true: Доступен ли интерфейс Swagger UI по адресу/api/doc,/tech/docи/api/v100/docSWAGGER__USE_BUNDLED=true: Использовать встроенную версию.jsи.cssресурсов для сваггераSWAGGER__TOKEN_URL=null: кастомный адрес, по которому получать токен
Web-сервер: guincorn
В качестве веб сервера для API приложения используется gunicorn (WSGI) с воркерами uvicorn (ASGI),
полный список настроек доступен в официальной документации.
Рекомендуемые:
WEB_CONCURRENCY=4- количество воркеровuvicornGUNICORN_CMD_ARGS=--keep-alive 65- дополнительные параметры командной строкиFORWARDED_ALLOW_IPS='*'- фильтр на IP, с которых принимаются соединения
Планировщик сelery: redbeat
Запуск заданий на расписании осуществляется через плагин к redbeat.
При запуске планировщик смотрит на следующие переменные окружения:
EXECUTOR__BROKER_URL=secret:executor-broker-url: адрес брокера сообщений redis/sentinel или rabbit-mqEXECUTOR__OPTIONS={}: дополнительные опции Redbeat
Мониторинг celery: flower
Настройка мониторинга описана на странице Monitoring
Менеджер процессов: supervisor
Все компоненты приложения стартуют и управляются через supervisor, полный список настроек доступен в официальной документации.
Настройки менеджера распроложены в axiom/etc/supervisor.conf, дополнительная ручная конфигурация
не предусмотрена.
Web-интерфейс
// адрес API бэкэнда
FS_API = '/api'
// адрес Keycloak
AUTH_URL = 'https://auth.k8s.datasapience.ru/auth'
// клиент авторизации в keycloak
CLIENT_ID = 'frontend'
// Включение / отключение документации в интерфейсе
DOCS_ENABLED = 'false'
// Суффикс после домена адреса WEB интерфейса
ROOT_PATH_PREFIX = ''
// Доступен ли SQL лоадер в интерфейсе
LOADER_SQL = 'false'
// адрес kolmogorov predicate, если предусмотрен в инсталляции
PREDICATE_URL = 'https://predicate-dev.k8s.datasapience.ru'
// Наличие дага расчета статистик датасетов
DENSITY_PLOT = 'false'
// Есть ли sentry сервер
SENTRY_ENABLED = 'true'
// адрес sentry сервера
SENTRY_DSN = 'https://<token>@sentry-kolmogorov.k8s.datasapience.ru/4'
// переименования ключей в логгере
LOG_KEY_REDEFINE = '{\"level\":\"lvl\", \"sdkProcessingMetadata\": \"sdkPM\"}'
// Версия приложения, которая будет отображаться в углу интерфейса,
// при необходимости указать отличную от релиза
DISPLAY_VERSION = ''
// Адрес сервиса генератора Excel каталога
INFOMAP_GENERATOR_API = ''
// Отображаемое название приложения
APP_NAME = 'Morphism'
// Папка с набором логотипов для приложения
IMAGES_FOLDER_KEY = 'morphism'
Поддержка Excel каталога (инфокарты)
Для реализации возможности импорта каталога в формате Excel необходимо:
- Развернуть сервис генератор инфокарты
- Указать в values.yaml адрес сервиса в переменную
INFOMAP_GENERATOR_API
Настройка иконок и логотипов в web-интерфейсе
Предустановлены логотипы/иконки для следующих продуктов: Morphism, Audience, Alphyn.
Значения переменной IMAGES_FOLDER_KEY соответственно morphism, audience, alphyn.
Для настройки собственных иконок и логотипов следующий порядок действий:
- Создать новую папку в
public/images/<folder name> - Загрузить в нее изображения со следующими именами:
logo_favicon.svg- иконка для вкладки браузераlogo_main.svg- иконка на главной странице входаlogo_title.svg- логотип в верхнем левом углу интерфейса
- Указать
<folder name>в переменнойIMAGES_FOLDER_KEY
Пояснения для SSL settings
Настройка SSL верификации доступна для разделов S3 и KEYCLOAK. Правила настройки общие:
- Если SSL верификация не требуется, указать значение переменной
<PREFIX>__SSL_VERIFICATION = false - Если все сервисы, к которым идет обращение, поднимаются с тем же самым
сертификатом, что и приложение axiom, достаточно указать значение
<PREFIX>__SSL_VERIFICATION = true. - Если какой-то из сервисов поднимается с самоподписанным сертификатом, то необходимо:
- Выгрузить его сертификат в файл
<prefix>_cert.crt. - Создать секрет в кластере k8s из файла-сертификата с именем ssl-cert-secret, содержащий в себе все необходимые самоподписанные сертификаты.
- Примонтировать файлы-сертификат к приложению Axiom
(закомметированные строки в values.yaml:service.persistentVolumes -> ssl-verification-cert) - Указать значение переменной
<PREFIX>__SSL_VERIFICATION='/usr/certs/<prefix>_cert.crt'
- Выгрузить его сертификат в файл