deploying-airflow
Airflow のDAGやプロジェクトをデプロイします。コードのデプロイ、DAGのプッシュ、CI/CDの構築、本番環境へのリリース、またはAirflowのデプロイ戦略について知りたい場合に使用してください。
description の原文を見る
Deploy Airflow DAGs and projects. Use when the user wants to deploy code, push DAGs, set up CI/CD, deploy to production, or asks about deployment strategies for Airflow.
SKILL.md 本文
Airflow のデプロイ
このスキルは、Astro(Astronomer のマネージドプラットフォーム)を使用する場合でも、Docker Compose または Kubernetes 上のオープンソース Airflow を使用する場合でも、Airflow DAG とプロジェクトを本番環境にデプロイすることをカバーしています。
パスの選択: Astro はマネージド運用とより高速な CI/CD に適しています。オープンソースの場合は、開発環境には Docker Compose、本番環境には Helm チャートを使用してください。
Astro (Astronomer)
Astro は、Airflow プロジェクトをデプロイするための CLI コマンドと GitHub 統合を提供します。
デプロイコマンド
| コマンド | 機能 |
|---|---|
astro deploy | 完全なプロジェクトデプロイ — Docker イメージをビルドして DAG をデプロイ |
astro deploy --dags | DAG のみデプロイ — DAG ファイルのみをプッシュ(高速、イメージビルドなし) |
astro deploy --image | イメージのみデプロイ — Docker イメージのみをプッシュ(マルチリポジトリ CI/CD 用) |
astro deploy --dbt | dbt プロジェクトデプロイ — Airflow と並行実行する dbt プロジェクトをデプロイ |
完全なプロジェクトデプロイ
Astro プロジェクトから Docker イメージをビルドして、すべてをデプロイします(DAG、プラグイン、要件、パッケージ):
astro deploy
requirements.txt、Dockerfile、packages.txt、プラグイン、またはその他の非 DAG ファイルを変更した場合に使用してください。
DAG のみデプロイ
Docker イメージを再度ビルドせずに dags/ ディレクトリ内のファイルのみをプッシュします:
astro deploy --dags
これはイメージビルドをスキップするため、完全なデプロイよりも大幅に高速です。DAG ファイルのみを変更し、依存関係または設定を変更していない場合に使用してください。
イメージのみデプロイ
DAG を更新せずに Docker イメージのみをプッシュします:
astro deploy --image
これはマルチリポジトリセットアップで DAG がイメージとは別にデプロイされる場合や、イメージと DAG のデプロイを独立して管理する CI/CD パイプラインで役立ちます。
dbt プロジェクトデプロイ
Astro デプロイで Cosmos と一緒に実行する dbt プロジェクトをデプロイします:
astro deploy --dbt
GitHub 統合
Astro は、自動デプロイのためのブランチ対デプロイメントマッピングをサポートしています:
- ブランチを特定のデプロイメントにマップ(例:
main-> 本番、develop-> ステージング) - マップされたブランチへのプッシュは自動デプロイをトリガー
- マージ時の DAG のみデプロイをサポートして、高速反復を実現
これを Astro UI の Deployment Settings > CI/CD で設定してください。
CI/CD パターン
Astro での一般的な CI/CD 戦略:
- フィーチャーブランチでの DAG のみデプロイ:開発中の高速反復に
astro deploy --dagsを使用 - main へのマージ時に完全デプロイ:本番リリースの際に
astro deployを main へのマージ時に使用 - イメージと DAG パイプラインの分離:独立したリリースサイクルのため、
--imageと--dagsを別々の CI ジョブで使用
デプロイキュー
短期間に複数のデプロイがトリガーされると、Astro はそれらをデプロイキューで順序立てて処理します。各デプロイが完了してから次のデプロイが開始されます。
リファレンス
オープンソース:Docker Compose
公式 Docker Compose セットアップを使用して Airflow をデプロイします。これは学習と探索に推奨されます。本番環境の場合は、Kubernetes と Helm チャートを使用してください(下記参照)。
前提条件
- Docker と Docker Compose v2.14.0 以上
- 公式の
apache/airflowDocker イメージ
クイックスタート
公式 Airflow 3 Docker Compose ファイルをダウンロード:
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml'
これは完全な Airflow 3 アーキテクチャをセットアップします:
| サービス | 目的 |
|---|---|
airflow-apiserver | REST API と UI(ポート 8080) |
airflow-scheduler | DAG 実行のスケジュール |
airflow-dag-processor | DAG ファイルのパースと処理 |
airflow-worker | タスク実行(CeleryExecutor) |
airflow-triggerer | ディファラブル/非同期タスク処理 |
postgres | メタデータベース |
redis | Celery メッセージブローカー |
最小限のセットアップ
LocalExecutor(Celery/Redis なし)でのシンプルなセットアップの場合、docker-compose.yaml を作成:
x-airflow-common: &airflow-common
image: apache/airflow:3 # 最新の Airflow 3.x リリースを使用
environment: &airflow-common-env
AIRFLOW__CORE__EXECUTOR: LocalExecutor
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__CORE__DAGS_FOLDER: /opt/airflow/dags
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
depends_on:
postgres:
condition: service_healthy
services:
postgres:
image: postgres:16
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
volumes:
- postgres-db-volume:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 10s
retries: 5
start_period: 5s
airflow-init:
<<: *airflow-common
entrypoint: /bin/bash
command:
- -c
- |
airflow db migrate
airflow users create \
--username admin \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com \
--password admin
depends_on:
postgres:
condition: service_healthy
airflow-apiserver:
<<: *airflow-common
command: airflow api-server
ports:
- "8080:8080"
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
airflow-scheduler:
<<: *airflow-common
command: airflow scheduler
airflow-dag-processor:
<<: *airflow-common
command: airflow dag-processor
airflow-triggerer:
<<: *airflow-common
command: airflow triggerer
volumes:
postgres-db-volume:
Airflow 3 アーキテクチャの注記:webserver は API サーバー (
airflow api-server) に置き換わり、DAG プロセッサー はスケジューラーから独立したスタンドアロンプロセスとして実行されるようになりました。
一般的な操作
# すべてのサービスを開始
docker compose up -d
# すべてのサービスを停止
docker compose down
# ログを表示
docker compose logs -f airflow-scheduler
# requirements 変更後に再起動
docker compose down && docker compose up -d --build
# 1 回限りの Airflow CLI コマンドを実行
docker compose exec airflow-apiserver airflow dags list
Python パッケージのインストール
requirements.txt にパッケージを追加してリビルド:
# requirements.txt に追加してから実行:
docker compose down
docker compose up -d --build
またはカスタム Dockerfile を使用:
FROM apache/airflow:3 # 再現性のために特定のバージョンにピン(例:3.1.7)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
docker-compose.yaml を更新して Dockerfile からビルド:
x-airflow-common: &airflow-common
build:
context: .
dockerfile: Dockerfile
# ... rest of config
環境変数
docker-compose.yaml の環境変数を通じて Airflow 設定を構成:
environment:
# コア設定
AIRFLOW__CORE__EXECUTOR: LocalExecutor
AIRFLOW__CORE__PARALLELISM: 32
AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG: 16
# メール
AIRFLOW__EMAIL__EMAIL_BACKEND: airflow.utils.email.send_email_smtp
AIRFLOW__SMTP__SMTP_HOST: smtp.example.com
# 接続(URI として)
AIRFLOW_CONN_MY_DB: postgresql://user:pass@host:5432/db
オープンソース:Kubernetes(Helm チャート)
公式 Apache Airflow Helm チャートを使用して Kubernetes で Airflow をデプロイします。
前提条件
- Kubernetes クラスタ
- 設定済みの
kubectl - インストール済みの
helm
インストール
# Airflow Helm リポジトリを追加
helm repo add apache-airflow https://airflow.apache.org
helm repo update
# デフォルト値でインストール
helm install airflow apache-airflow/airflow \
--namespace airflow \
--create-namespace
# カスタム値でインストール
helm install airflow apache-airflow/airflow \
--namespace airflow \
--create-namespace \
-f values.yaml
key values.yaml 設定
# Executor タイプ
executor: KubernetesExecutor # or CeleryExecutor, LocalExecutor
# Airflow イメージ(希望するバージョンにピン)
defaultAirflowRepository: apache/airflow
defaultAirflowTag: "3" # または pin: "3.1.7"
# DAG の Git-sync(本番環境で推奨)
dags:
gitSync:
enabled: true
repo: https://github.com/your-org/your-dags.git
branch: main
subPath: dags
wait: 60 # 同期間隔(秒)
# API サーバー(Airflow 3 で webserver を置き換え)
apiServer:
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "1Gi"
replicas: 1
# スケジューラー
scheduler:
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "1000m"
memory: "2Gi"
# スタンドアロン DAG プロセッサー
dagProcessor:
enabled: true
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "1Gi"
# Triggerer(ディファラブルタスク用)
triggerer:
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "1Gi"
# ワーカーリソース(CeleryExecutor のみ)
workers:
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2000m"
memory: "4Gi"
replicas: 2
# ログの永続性
logs:
persistence:
enabled: true
size: 10Gi
# PostgreSQL(内蔵)
postgresql:
enabled: true
# または外部データベースを使用
# postgresql:
# enabled: false
# data:
# metadataConnection:
# user: airflow
# pass: airflow
# host: your-rds-host.amazonaws.com
# port: 5432
# db: airflow
アップグレード
# 新しい値でアップグレード
helm upgrade airflow apache-airflow/airflow \
--namespace airflow \
-f values.yaml
# 新しい Airflow バージョンにアップグレード
helm upgrade airflow apache-airflow/airflow \
--namespace airflow \
--set defaultAirflowTag="<version>"
Kubernetes 上の DAG デプロイ戦略
- Git-sync(推奨):DAG は Git リポジトリから自動で同期
- 永続ボリューム:DAG を含む共有 PV をマウント
- イメージに焼き込み:DAG をカスタム Docker イメージに含める
便利なコマンド
# Pod ステータスを確認
kubectl get pods -n airflow
# スケジューラーログを表示
kubectl logs -f deployment/airflow-scheduler -n airflow
# API サーバーをポートフォワード
kubectl port-forward svc/airflow-apiserver 8080:8080 -n airflow
# 1 回限りの CLI コマンドを実行
kubectl exec -it deployment/airflow-scheduler -n airflow -- airflow dags list
関連スキル
- setting-up-astro-project:新しい Astro プロジェクトを初期化する場合
- managing-astro-local-env:
astro devでのローカル開発 - authoring-dags:デプロイ前に DAG を書く場合
- testing-dags:デプロイ前に DAG をテストする場合
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- astronomer
- リポジトリ
- astronomer/agents
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/astronomer/agents / ライセンス: Apache-2.0
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。