Apache Airflow 2/3. Установка с использованием Docker

Apache Airflow 2/3. Установка с использованием Docker
Содержимое страницы

Apache Airflow - свободное программное обеспечение, родившееся внутри компании Airbnb для управления многочисленными и разветвленными рабочими процессами.

Эта статья про установку Apache Airflow 2 с использованием Docker. Обращаю внимание, что в данном мануале рассматривается стандартная установка приложения с CeleryExecutor. Модификацию yaml под LocalExecutor возможно опишу в последующих статьях.

Статья разделена на 3 части:

Полезные ссылки

1. Перед началом работы

Предполагаю, что у вас имеются минимальные навыки работы с командной строкой Docker. Если есть вопросы к этой части, то, возможно, вам необходимо ознакомиться со статьей Использование Docker для разработки на Python

На основании собственного опыта замечу, что некоторые шероховатости в установке становятся более гладкими, если вы используете последние стабильные версии продуктов. Версии docker и docker-compose, которые вы устанавливаете через apt из стандартного репозитория Ubuntu для наших целей не подходят.

Для установки нам понадобятся:

  • Docker Engine
  • Docker Compose

2. Устанавливаем Docker

Находим целевой дистрибутив операционной системы на странице https://docs.docker.com/engine/install/, в нашем случае Ubutnu, изучаем возможные способы установки. В моем случае я пошел по пути описанному в разделе Install using the convenience script.

Сначала необходимо удалить версии установленные через apt. Если произойдет ошибка в связи с тем, что какой-то пакет не установлен, на это можно не обращать внимания.

sudo apt-get remove docker docker-engine docker.io containerd runc
# Загрузка скрипта установки
curl -fsSL https://get.docker.com -o get-docker.sh
# Запуск скрипта
sudo sh get-docker.sh

Docker установлен.

3. Устанавливаем docker-compose

Docker Compose - это инструмент, позволяющий скомпоновать многоконтейнерное приложение использующее несколько исходных образов. Согласно документации Apache Airflow 2 минимальная версия docker-compose == 1.27.0

На момент написания статьи в репозитории Ubuntu находится версия 1.25 с помощью которой собрать Airflow не получится (проверено). Установку производим по документации: https://docs.docker.com/compose/install/.

Установка пакета docker-compose:

# Загрузка
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Устанавливаем права на выполнение
sudo chmod +x /usr/local/bin/docker-compose

docker-compose установлен

4. Проверяем Docker

~$ docker --version
Docker version 20.10.6, build 370c289
~$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

С версиями все ОК, можно идти дальше.

5. Установка Apache Airflow 2

Сначала создаем каталог для Airflow (для краткости у меня air) и одновременно вложенные папки dags, logs и plugins:

# Готовим окружение
mkdir -p air/{dags,logs,plugins} 
cd air
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
# Загрузка конфигурационного файkа для docker-compose
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.1.0/docker-compose.yaml'

Инициализация метаданных в базе данных и создание пользователя с правами администратора:

sudo docker-compose up airflow-init

airflow-download

Ошибки
Если на этапе запуска docker-compose происходят ошибки, то возможны следующие причины:

  • Вы забыли использовать sudo
  • Возможно не запущен docker, сделайте sudo systemctl start docker.service
  • Версия docker-compose < 1.27. Проверьте docker-compose --version. Иногда путаницу вносит pyenv, проверьте which docker-compose

На этом этапе загружены необходимые образы, выполнена установка и создан пользователь:

LoginPassword
airflowairflow

6. Запуск Airflow

Здесь все очень просто:

# Для запуска в фоне используем ключ -d
sudo docker-compose up -d

После этого Airflow доступен по адресу: http://localhost:8080

airflow-started

Первая часть статьи описывает установку без использования Docker.