Managed Service for Apache Airflow™
Managed Service for Apache Airflow™ позволяет создавать кластеры Apache Airflow™ в пространствах имен Stackland, загружать DAG-файлы и выполнять задачи по расписанию. Кластер и его настройки описываются в ресурсе AirflowCluster.
В каждом пространстве имен можно создать несколько независимых кластеров. Для выполнения задач используется KubernetesExecutor: каждая задача запускается в отдельном поде.
Состав кластера
В состав кластера входят следующие компоненты Apache Airflow™:
scheduler— планирует выполнение задач;apiServer— предоставляет веб-интерфейс и REST API;triggerer— выполняет отложенные задачи;dagProcessor— загружает и разбирает DAG-файлы.
Количество реплик и ресурсы можно задать отдельно для каждого компонента. Если параметры не заданы, используются платформенные значения по умолчанию. Правила размещения подов через AirflowCluster не настраиваются.
Поддерживаемые версии Apache Airflow™ перечислены в ресурсе AirflowImageCatalog airflow. В текущей поставке доступна версия 3.1.8.
База данных метаданных
База метаданных создается автоматически для каждого кластера Apache Airflow™. Настраивать ее или указывать учетные данные для подключения не требуется. Подключение своей базы и изменение параметров служебной базы не поддерживаются.
При удалении кластера Apache Airflow™ его база метаданных также удаляется.
Хранение истории
Исторические метаданные старше 90 дней автоматически удаляются раз в неделю. DAG-файлы и логи задач в S3 при этом сохраняются. Изменить расписание очистки и срок хранения метаданных нельзя.
Источники DAG-файлов
DAG-файлы можно загружать из Git-репозитория или S3-совместимого хранилища. Источник выбирается в spec.dags.source и после создания кластера не изменяется.
Git
Для публичного HTTPS-репозитория достаточно указать URL и ветку, тег или коммит в поле ref. Для приватного репозитория создайте Secret в том же пространстве имен:
- HTTPS — с ключами
usernameиpassword; - SSH — с ключом
ssh-privatekey.
Для SSH также требуется ConfigMap с ключом known_hosts. Имена ключей фиксированы и не задаются в AirflowCluster.
Обновления Git-репозитория проверяются раз в 60 секунд. Интервал не настраивается.
S3
Для DAG-файлов в S3 доступны два режима:
stackland-storage— автоматическое создание бакета Object Storage или подключение существующего бакета;s3— подключение внешнего S3-совместимого хранилища по указанному эндпоинту и Secret с ключами доступа.
DAG-файлы синхронизируются раз в 60 секунд. Для их локальной копии выделяется 1Gi. Компоненты и задачи, которым нужны DAG-файлы из S3, размещаются на одном узле. Увеличение числа реплик не обеспечивает отказоустойчивость между несколькими узлами в этом режиме.
Логи задач
Если поле spec.taskLogs не задано, логи хранятся локально в подах и теряются при их пересоздании.
Чтобы хранить логи в S3, задайте в spec.taskLogs конфигурацию типа stackland-storage или s3. Секцию можно добавить или удалить после создания кластера, но существующие логи автоматически не переносятся. После включения удаленного хранения новые логи отправляются в S3, а локальная копия удаляется.
Тип и неизменяемые параметры уже настроенного хранилища изменить нельзя. Для перехода на другой бакет или эндпоинт создайте новый AirflowCluster.
Зависимости
Дополнительные Python- и Debian-пакеты для выполнения DAG-файлов задаются в spec.dependencies.pip и spec.dependencies.deb.
Для публичных или приватных репозиториев пакетов можно задать spec.dependencies.repositories. Без этого поля используются репозитории по умолчанию. После изменения пакетов, настроек репозиториев или используемых ими Secret дождитесь завершения обновления кластера, прежде чем запускать задачи с новыми зависимостями. Подробнее — в разделе Дополнительные зависимости.
Сетевой доступ
Публичный HTTPS-доступ к веб-интерфейсу и API включен по умолчанию. Адрес готового веб-интерфейса доступен в status.apiServerURL.
Если установить spec.publicAccess: false, интерфейс будет доступен только внутри кластера Kubernetes. Домен и TLS-сертификат для публичного доступа предоставляются автоматически и не настраиваются через AirflowCluster.
Аутентификация
Для входа в веб-интерфейс используйте имя пользователя и пароль из Secret кластера. Имя пользователя по умолчанию — admin. Порядок получения данных приведен в разделе Получить учетные данные администратора. Не публикуйте содержимое Secret и не сохраняйте его в системе контроля версий.
Изменение ключа password в Secret автоматически запускает повторную настройку учетной записи. После изменения проверьте вход в веб-интерфейс с новым паролем. Порядок действий и ограничения приведены в разделе Ротация пароля.
Защита от удаления
Параметр spec.deletionProtection предотвращает случайное удаление AirflowCluster. Если установлено значение true, команда kubectl delete будет отклонена. По умолчанию защита выключена (false); ее можно включить при создании или изменении настроек кластера.
Защита распространяется только на ресурс AirflowCluster и не блокирует отдельное удаление его Secret и бакетов. Перед удалением кластера отключите защиту.
Состояния кластера
Основное состояние доступно в status.phase:
|
Состояние |
Описание |
|
|
Кластер создается или обновляется. |
|
|
Все обязательные зависимости и компоненты готовы. |
|
|
Основные компоненты остановлены через |
|
|
Последняя попытка применения конфигурации завершилась ошибкой. |
|
|
Кластер и связанные с ним данные удаляются. |
Для диагностики проверяйте также status.conditions, где указаны этап, причина и сообщение об ошибке.
Ограничения
- Поддерживается только Apache Airflow™ 3.x из
AirflowImageCatalog airflow; в текущей поставке —3.1.8. - Консоль управления Stackland не предоставляет отдельной формы для
AirflowCluster; настройка выполняется черезkubectlи YAML-манифесты. - Источник DAG и основные параметры объектного хранилища после создания не изменяются.
- Подключение своей базы метаданных и настройка размещения подов через
AirflowClusterне поддерживаются. - Для локальной копии DAG-файлов из S3 выделяется
1Gi; использующие ее компоненты и задачи размещаются на одном узле. - Новый пароль существующего администратора может не примениться автоматически после изменения Secret. Проверяйте вход с новым паролем; при необходимости воспользуйтесь инструкцией по восстановлению доступа.
- Локальные логи задач не сохраняются при пересоздании подов.
- Исторические метаданные старше 90 дней удаляются при еженедельной очистке.
- Состояние
Readyне подтверждает доступность Git-репозитория или S3-хранилища. После создания кластера проверьте, что DAG-файлы появились в веб-интерфейсе и задачи выполняются.
Инструкции
- Включить Managed Service for Apache Airflow™.
- Создать кластер Apache Airflow™.
- Изменить настройки кластера Apache Airflow™.
- Получить учетные данные администратора Apache Airflow™.
- Открыть веб-интерфейс Apache Airflow™.
- Приостановить или возобновить кластер Apache Airflow™.
- Удалить кластер Apache Airflow™.
- Устранение неполадок Apache Airflow™.
- Отключить Managed Service for Apache Airflow™.