Agent Skills by ALSEL
Anthropic ClaudeDevOps・インフラ⭐ リポ 0品質スコア 50/100

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 --dagsDAG のみデプロイ — DAG ファイルのみをプッシュ(高速、イメージビルドなし)
astro deploy --imageイメージのみデプロイ — Docker イメージのみをプッシュ(マルチリポジトリ CI/CD 用)
astro deploy --dbtdbt プロジェクトデプロイ — Airflow と並行実行する dbt プロジェクトをデプロイ

完全なプロジェクトデプロイ

Astro プロジェクトから Docker イメージをビルドして、すべてをデプロイします(DAG、プラグイン、要件、パッケージ):

astro deploy

requirements.txtDockerfilepackages.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 戦略:

  1. フィーチャーブランチでの DAG のみデプロイ:開発中の高速反復に astro deploy --dags を使用
  2. main へのマージ時に完全デプロイ:本番リリースの際に astro deploy を main へのマージ時に使用
  3. イメージと DAG パイプラインの分離:独立したリリースサイクルのため、--image--dags を別々の CI ジョブで使用

デプロイキュー

短期間に複数のデプロイがトリガーされると、Astro はそれらをデプロイキューで順序立てて処理します。各デプロイが完了してから次のデプロイが開始されます。

リファレンス


オープンソース:Docker Compose

公式 Docker Compose セットアップを使用して Airflow をデプロイします。これは学習と探索に推奨されます。本番環境の場合は、Kubernetes と Helm チャートを使用してください(下記参照)。

前提条件

  • Docker と Docker Compose v2.14.0 以上
  • 公式の apache/airflow Docker イメージ

クイックスタート

公式 Airflow 3 Docker Compose ファイルをダウンロード:

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml'

これは完全な Airflow 3 アーキテクチャをセットアップします:

サービス目的
airflow-apiserverREST API と UI(ポート 8080)
airflow-schedulerDAG 実行のスケジュール
airflow-dag-processorDAG ファイルのパースと処理
airflow-workerタスク実行(CeleryExecutor)
airflow-triggererディファラブル/非同期タスク処理
postgresメタデータベース
redisCelery メッセージブローカー

最小限のセットアップ

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 デプロイ戦略

  1. Git-sync(推奨):DAG は Git リポジトリから自動で同期
  2. 永続ボリューム:DAG を含む共有 PV をマウント
  3. イメージに焼き込み: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-envastro 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

関連スキル

汎用DevOps・インフラ⭐ リポ 502

superpowers-streamer-cli

SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。

by rohanarun
汎用DevOps・インフラ⭐ リポ 493

catc-client-ops

Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。

by automateyournetwork
汎用DevOps・インフラ⭐ リポ 39,967

ci-cd-and-automation

CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。

by addyosmani
汎用DevOps・インフラ⭐ リポ 39,967

shipping-and-launch

本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。

by addyosmani
OpenAIDevOps・インフラ⭐ リポ 38,974

linear-release-setup

Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。

by novuhq
Anthropic ClaudeDevOps・インフラ⭐ リポ 2,159

tracking-application-response-times

API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。

by jeremylongshore
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: astronomer · astronomer/agents · ライセンス: Apache-2.0