
Airflow 2 から Airflow 3 へのアップグレード対応
はじめに
現在利用している環境下に Airflow 2.11.0 を使用しているサーバーがあります。
Airflow のサポート期限が 2026/4/22 のため、 バージョンを 3.0.6 にアップグレードを行う必要が出てきました。
ローカル環境で VSCode と DockerDesktop で検証を行った手順を記載いたします。
準備
- まずは、Airflow 2.11 の環境を構築します。
※VSCode や DockerDescktop などの設定は済んでいるものとします。 - Airflow の公式サイトから、Airflow 2.11.0 の docker-compose.yaml をダウンロードし、任意のフォルダに保存します。
(今回は docker-compose-2.11.0.yamlの名前で保存しました) - 保存したフォルダを VSCode で開き、docker-compose-2.11.0.yaml を実行します。
- VScode では必要なファイルをダウンロードしたことが確認でき、DockerDesktop ではコンテナが起動したことを確認できます。
airflow-webserver-1 の Port(s) にある 8080:8080 をクリックするとWEB UI の画面が開きます。ログインすると、サンプルDAGを確認することができます。
- 以上で準備は完了です。コンテナを停止させてから次へ進みます。
Airflow 3 のアップグレード失敗(悪い例)
※この手順を行ってしまうと中途半端にアップグレード処理が行われてしまうため復旧が手間になりますので行わない方がよいです。
- 同じようにAirflow の公式サイトから、Airflow の最新(3.0.6) の docker-compose.yaml をダウンロードし、先程と同じフォルダに保存します。
(今回は docker-compose-3.0.6.yamlの名前で保存しました) - VSCode から、docker-compose-3.0.6.yaml を実行します。
- エラーになります。
Airflow 3 のアップグレード手順
- Airflow 3 へのアップグレード手順は公式サイトにきちんと記載されていますが、今回は最低限の手当のみを行います。
※コンテナを起動している場合は停止します。 - 同じようにAirflow の公式サイトから、Airflow の最新(3.0.6) の docker-compose.yaml をダウンロードし、先程と同じフォルダに保存します。
(今回は docker-compose-3.0.6.yamlの名前で保存しました) - DB のマイグレーションを行う必要があるため、DB と radis を起動します。
コマンドプロンプトから以下で起動します。docker compose -f docker-compose-3.0.6.yaml up -d postgres radis
- 以下のように airflow-cli を使用して DB のマイグレーションを実行します。
docker compose -f docker-compose-3.0.6.yaml run --rm airflow-cli airflow db migrate
- マイグレーションが成功したことを確認します。
- 起動した DB を以下のコマンドで終了させ、Airflowをもう一度実行します。
docker compose -f docker-compose-3.0.6.yaml run --rm airflow-cli airflow db migrate
- airflow-apiserver-1 の Port(s) にある 8080:8080 をクリックするとWEB UI の画面が開きます。ログインすると、サンプルDAGを確認することができます。
※Airflow 3 からは webserver が apiserver に変わります。
- 以上でアップグレードは完了です。
おわりに
如何でしたでしょうか。
Airflow 2.x から 3.0 へのアップグレードは、上記のように DB のマイグレーションを行うことで実施ができます。
DAG によってはAirflow 3 で廃止になった機能を使用しているために修正が必要なことや、Airflow の Public API の認証方法が変わったことによる対応なども必要になってくるかもしれません。
こちらはいつか機会がありましたら記載できればと思います。
簡単ではありますが、本記事が誰かの助けになれば幸いです。
おまけ
今回はサンプルを使用したため DB は postgres を使用しています。
MySQL を使用している場合は、DB のユーザーに ALTER 権限がないためマイグレーションに失敗するケースがあります。
上記の場合は、DB のユーザーに ALTER 権限を付与するか、root ユーザーなどを使用してマイグレーションを実行してください。