Перейти к основному содержимому

Airflow

ETL-оркестратор платформы.

Назначение

Airflow — ETL-оркестратор платформы. Выполняет запланированные аналитические вычисления через Trino по конфигурациям, которые генерирует Configurator.

Компоненты Airflow:

  • Webserver — веб-интерфейс
  • Scheduler — планировщик DAG-ов
  • Worker(ы) — исполнители задач (Celery)
  • Configs Uploader — приём DAG-конфигов от Configurator и загрузка в S3

Деплой

Для установки необходимо заполнить файл с параметрами values-trisigma.yaml.

примечание

values.yaml содержит значения по умолчанию — не изменяйте его напрямую, а переопределяйте нужные параметры в отдельных файлах.

Параметры приложения

Хранятся в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example values-trisigma.yaml.

Образы сервисов

ПараметрОписание
image.repositoryОбраз configs-uploader в Container registry
airflow.images.airflow.repositoryОбраз Airflow в Container registry
warning
Не используйте registry.trisigma.io напрямую

Образы необходимо предварительно зеркалировать в ваш собственный Container Registry.

PostgreSQL

Метадата-БД Airflow.

ПараметрОписание
airflow.data.metadataConnection.hostХостнейм для подключения к PostgreSQL

Valkey (Celery broker)

Подключение к брокеру задаётся одной строкой airflow.data.brokerUrl — она же содержит пароль и описана в разделе Секреты приложения.

Trino

ПараметрОписание
trinoHostХостнейм для подключения к Trino
trinoUserУчетная запись для подключения к Trino

S3 — бакет DAG-конфигов

ПараметрОписание
storage.configs.bucketИмя бакета DAG-конфигов (trisigma-airflow-configs)
storage.configs.storageClassNameИмя StorageClass для S3 CSI driver
storage.configs.csiDriverИмя S3 CSI driver
storage.configs.capacityРазмер PVC
awsRegionРегион S3
awsEndpointUrlEndpoint S3 для подключения

S3 — логи Airflow

ПараметрОписание
airflow.config.logging.remote_base_log_folderS3-путь к логам Airflow (бакет trisigma-airflow-logs)

Configurator

ПараметрОписание
configuratorUrlURL Configurator

Секреты приложения

Большая часть секретов передаётся напрямую через secrets-values.yaml. Для токена configs-uploader дополнительно поддерживается передача через существующий Kubernetes Secret (например, созданного через Vault или External Secrets Operator).

Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.

СекретКлючОписание
PGPASSWORDairflow.data.metadataConnection.passПароль PostgreSQL
BROKER_URLairflow.data.brokerUrlПолный URL Valkey с паролем
WEBSERVER_PASSWORDairflow.webserver.defaultUser.passwordПароль администратора веб-интерфейса1
CONFIGS_UPLOADER_API_TOKENconfigsUploader.apiTokenТокен загрузки DAG-конфигов от Configurator2
AWS_ACCESS_KEY_IDs3.accessKeyS3 access key для доступа к бакету trisigma-airflow-logs
AWS_SECRET_ACCESS_KEYs3.secretAccessKeyS3 secret key для доступа к бакету trisigma-airflow-logs
CONFIGURATOR_API_KEYanalytic.configuratorApiKeyAPI-ключ Configurator для запроса DAG-джоб из фабрики3
TRINO_PASSWORDanalytic.trinoPasswordПароль для подключения к Trino

Использование существующего Secret (existingSecret)

примечание

Через existingSecret можно передать только CONFIGS_UPLOADER_API_TOKEN. Остальные секреты передаются inline через secrets-values.yaml.

kubectl create namespace trisigma-airflow

kubectl create secret generic trisigma-airflow-configs-uploader \
--from-literal=CONFIGS_UPLOADER_API_TOKEN='...' \
-n trisigma-airflow
configsUploader:
existingSecret: trisigma-airflow-configs-uploader
secretKeys:
apiTokenKey: CONFIGS_UPLOADER_API_TOKEN

Если имя ключа в Secret отличается — например, config_copy_token вместо CONFIGS_UPLOADER_API_TOKEN — укажите соответствие через secretKeys:

configsUploader:
existingSecret: trisigma-airflow-configs-uploader
secretKeys:
apiTokenKey: config_copy_token
примечание

Использовать одновременно configsUploader.apiToken и configsUploader.existingSecret нельзя — способы несовместимы друг с другом.

Secret для S3 CSI driver

Бакет DAG-конфигов (trisigma-airflow-configs) монтируется в поды через S3 CSI driver (см. Требования к инфраструктуре → S3). Чарт ожидает Kubernetes Secret csi-s3-secret в namespace kube-system со следующими ключами:

КлючОписание
accessKeyIDS3 access key
secretAccessKeyS3 secret key
endpointEndpoint S3 для подключения
kubectl create secret generic csi-s3-secret -n kube-system \
--from-literal=accessKeyID='<S3 access key>' \
--from-literal=secretAccessKey='<S3 secret key>' \
--from-literal=endpoint='https://<s3-endpoint>'

Если нужно использовать другое имя или namespace — задайте параметры storage.configs.csiSecretName и storage.configs.csiSecretNamespace.

Helm Install

cd trisigma-airflow

helm upgrade --install trisigma-airflow . \
--namespace trisigma-airflow --create-namespace \
-f values-trisigma.yaml \
-f secrets-values.yaml

Footnotes

  1. Соответствует секрету AIRFLOW_PASSWD (airflow.password) в Configurator — используется для логина в Airflow API.

  2. Соответствует секрету AIRFLOW_CONFIG_COPY_TOKEN (airflow.configCopyToken) в Configurator — Configurator использует его для пуша DAG-конфигов в configs-uploader.

  3. Соответствует секрету EXTERNAL_API_KEY (externalApiKey) в Configurator — DAG-фабрика использует его для запроса джоб через /api/GetDwhDatamartJob.