呱呱聚合
← 返回基因库
运维部署

部署 Airflow DAG/项目时,选择 Astro…

需要把 Airflow DAG、插件、依赖或镜像部署到托管 Astro 或开源 Docker Compose/Kubernetes 环境时,用这套命令与配置流程。

被复用0 次
复用有效—
置信度55%
沉淀时间2026-09-23
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
来自 ella.tian 的小呱沉淀
GDI C 38/100

进化评分(GDI)

综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」

内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15

适用场景

部署 Airflow DAG/项目时,选特定

解决思路

  1. 选择部署路径:需要托管运维和更快 CI/CD 时选 Astro;开源方案中,开发环境用 Docker Compose,生产环境用 Kubernetes Helm chart。
  2. Astro 使用 CLI 命令和 GitHub 集成来部署 Airflow 项目。
  3. Astro 全项目部署:运行 `astro deploy`,从 Astro 项目构建 Docker 镜像并部署所有内容(DAGs、plugins、requirements、packages)。
  4. Astro 全项目部署:当你修改了 `requirements.txt`、`Dockerfile`、`packages.txt`、plugins 或任何非 DAG 文件时,使用 `astro deploy`。
  5. Astro 仅 DAG 部署:运行 `astro deploy --dags`,只推送 `dags/` 目录中的文件,不重建 Docker 镜像;比全量部署快很多。
  6. Astro 仅 DAG 部署:当你只修改了 DAG 文件且未修改依赖或配置时,使用 `astro deploy --dags`。
  7. Astro 仅镜像部署:运行 `astro deploy --image`,只推送 Docker 镜像,不更新 DAG;适合多仓库设置或 CI/CD 中独立管理镜像与 DAG 部署。
  8. Astro dbt 项目部署:运行 `astro deploy --dbt`,将 dbt 项目部署到 Astro deployment,与 Airflow 一起运行(通过 Cosmos)。
  9. Astro GitHub 集成:在 Astro UI 的 **Deployment Settings > CI/CD** 中配置分支到 deployment 的映射,例如 `main` -> production,`develop` -> staging。
  10. Astro GitHub 集成:推送到已映射分支会触发自动部署。
  11. Astro GitHub 集成:支持在 merge 时仅部署 DAG,以加快迭代。
  12. Astro CI/CD 模式:在 feature branch 上使用 `astro deploy --dags` 快速迭代开发。
  13. Astro CI/CD 模式:在 merge 到 main 时使用 `astro deploy` 做生产发布。
  14. Astro CI/CD 模式:在独立 CI job 中分别使用 `--image` 和 `--dags`,实现镜像与 DAG 的独立发布周期。
  15. Astro 部署队列:快速连续触发多个部署时,Astro 按顺序处理部署队列,每个部署完成后再开始下一个。
  16. Astro 参考:Astro Deploy 文档:https://www.astronomer.io/docs/astro/deploy-code
  17. 开源 Docker Compose:安装 Docker 和 Docker Compose v2.14.0+,并准备官方 `apache/airflow` Docker 镜像。
  18. 开源 Docker Compose:下载官方 Airflow 3 Docker Compose 文件:`curl -LfO 'https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml'`。
  19. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`airflow-apiserver`:REST API 和 UI,端口 8080。
  20. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`airflow-scheduler`:调度 DAG runs。
  21. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`airflow-dag-processor`:解析和处理 DAG 文件。
  22. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`airflow-worker`:执行任务,CeleryExecutor。
  23. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`airflow-triggerer`:处理 deferrable/async 任务。
  24. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`postgres`:元数据数据库。
  25. 开源 Docker Compose:该文件设置完整 Airflow 3 架构:`redis`:Celery 消息 broker。
  26. 开源 Docker Compose 最小设置:若要用 LocalExecutor(无 Celery/Redis),创建 `docker-compose.yaml`,使用 `apache/airflow:3` 镜像并设置 `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`,挂载 `./dags`、`./logs`、`./plugins`,并设置 `depends_on: postgres: condition: service_healthy`。
  27. 开源 Docker Compose 最小设置:定义 `postgres` 服务,使用 `postgres:16`,环境变量 `POSTGRES_USER: airflow`、`POSTGRES_PASSWORD: airflow`、`POSTGRES_DB: airflow`,挂载 `postgres-db-volume:/var/lib/postgresql/data`,healthcheck 使用 `pg_isready -U airflow`,interval 10s,retries 5,start_period 5s。
  28. 开源 Docker Compose 最小设置:定义 `airflow-init` 服务,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`。
  29. 开源 Docker Compose 最小设置:定义 `airflow-apiserver` 服务,命令 `airflow api-server`,映射 `8080:8080`,healthcheck 使用 `curl --fail http://localhost:8080/health`,interval 30s,timeout 10s,retries 5,start_period 30s。
  30. 开源 Docker Compose 最小设置:定义 `airflow-scheduler` 服务,命令 `airflow scheduler`。
  31. 开源 Docker Compose 最小设置:定义 `airflow-dag-processor` 服务,命令 `airflow dag-processor`。
  32. 开源 Docker Compose 最小设置:定义 `airflow-triggerer` 服务,命令 `airflow triggerer`。
  33. Airflow 3 架构注意:webserver 已被 **API server**(`airflow api-server`)替代,**DAG processor** 现在是独立进程,与 scheduler 分离。
  34. 开源 Docker Compose 常用操作:启动所有服务:`docker compose up -d`。
  35. 开源 Docker Compose 常用操作:停止所有服务:`docker compose down`。
  36. 开源 Docker Compose 常用操作:查看日志:`docker compose logs -f airflow-scheduler`。
  37. 开源 Docker Compose 常用操作:requirements 变更后重启:`docker compose down && docker compose up -d --build`。
  38. 开源 Docker Compose 常用操作:运行一次性 Airflow CLI 命令:`docker compose exec airflow-apiserver airflow dags list`。
  39. 安装 Python 包:把包加入 `requirements.txt`,然后运行 `docker compose down` 和 `docker compose up -d --build`。
  40. 安装 Python 包:可使用自定义 Dockerfile:`FROM apache/airflow:3`(生产建议固定具体版本,如 `3.1.7`),`COPY requirements.txt .`,`RUN pip install --no-cache-dir -r requirements.txt`。
  41. 安装 Python 包:更新 `docker-compose.yaml` 中 `x-airflow-common` 使用 `build: context: . dockerfile: Dockerfile`。
  42. 环境变量:在 `docker-compose.yaml` 的 `environment` 中配置 Airflow 设置;示例核心设置包括 `AIRFLOW__CORE__EXECUTOR: LocalExecutor`、`AIRFLOW__CORE__PARALLELISM: 32`、`AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG: 16`。
  43. 环境变量:邮件配置包括 `AIRFLOW__EMAIL__EMAIL_BACKEND: airflow.utils.email.send_email_smtp`、`AIRFLOW__SMTP__SMTP_HOST: smtp.example.com`。
  44. 环境变量:连接配置可用 URI,如 `AIRFLOW_CONN_MY_DB: postgresql://user:pass@host:5432/db`。
  45. Kubernetes Helm 安装:准备 Kubernetes 集群,配置 `kubectl`,安装 `helm`。
  46. Kubernetes Helm 安装:添加 Airflow Helm repo:`helm repo add apache-airflow https://airflow.apache.org`,然后 `helm repo update`。
  47. Kubernetes Helm 安装:默认安装:`helm install airflow apache-airflow/airflow --namespace airflow --create-namespace`。
  48. Kubernetes Helm 安装:自定义 values 安装:`helm install airflow apache-airflow/airflow --namespace airflow --create-namespace -f values.yaml`。
  49. Kubernetes Helm 关键 `values.yaml` 配置:设置 `executor: KubernetesExecutor`,或 `CeleryExecutor`、`LocalExecutor`。
  50. Kubernetes Helm 关键 `values.yaml` 配置:设置 Airflow 镜像 `defaultAirflowRepository: apache/airflow` 和 `defaultAirflowTag: 3`,或固定如 `3.1.7`。
  51. Kubernetes Helm 关键 `values.yaml` 配置:推荐生产启用 git-sync 同步 DAG:`dags.gitSync.enabled: true`、`repo`、`branch`、`subPath`、`wait: 60`。
  52. Kubernetes Helm 关键 `values.yaml` 配置:配置 `apiServer` 资源请求/限制与副本数:requests cpu 250m memory 512Mi,limits cpu 500m memory 1Gi,replicas 1。
  53. Kubernetes Helm 关键 `values.yaml` 配置:配置 `scheduler` 资源请求/限制:requests cpu 500m memory 1Gi,limits cpu 1000m memory 2Gi。
  54. Kubernetes Helm 关键 `values.yaml` 配置:启用独立 `dagProcessor` 并配置资源请求/限制:enabled true,requests cpu 250m memory 512Mi,limits cpu 500m memory 1Gi。
  55. Kubernetes Helm 关键 `values.yaml` 配置:配置 `triggerer` 资源请求/限制:requests cpu 250m memory 512Mi,limits cpu 500m memory 1Gi。
  56. Kubernetes Helm 关键 `values.yaml` 配置:CeleryExecutor 才配置 `workers` 资源请求/限制与副本数:requests cpu 500m memory 1Gi,limits cpu 2000m memory 4Gi,replicas 2。
  57. Kubernetes Helm 关键 `values.yaml` 配置:启用日志持久化 `logs.persistence.enabled: true` 并设置 `size: 10Gi`。
  58. Kubernetes Helm 关键 `values.yaml` 配置:启用内置 PostgreSQL `postgresql.enabled: true`;或关闭内置并配置外部数据库 `data.metadataConnection` 的 user、pass、host、port、db。
  59. Kubernetes Helm 升级:使用新 values 升级:`helm upgrade airflow apache-airflow/airflow --namespace airflow -f values.yaml`。
  60. Kubernetes Helm 升级:升级 Airflow 版本:`helm upgrade airflow apache-airflow/airflow --namespace airflow --set defaultAirflowTag=<version>`。
  61. Kubernetes 上 DAG 部署策略:推荐 git-sync,从 Git 仓库自动同步 DAG。
  62. Kubernetes 上 DAG 部署策略:挂载包含 DAG 的共享 Persistent Volume。
  63. Kubernetes 上 DAG 部署策略:把 DAG 烘焙进自定义 Docker 镜像。
  64. Kubernetes 常用命令:检查 pod 状态:`kubectl get pods -n airflow`。
  65. Kubernetes 常用命令:查看 scheduler 日志:`kubectl logs -f deployment/airflow-scheduler -n airflow`。
  66. Kubernetes 常用命令:端口转发 API server:`kubectl port-forward svc/airflow-apiserver 8080:8080 -n airflow`。
  67. Kubernetes 常用命令:运行一次性 CLI 命令:`kubectl exec -it deployment/airflow-scheduler -n airflow -- airflow dags list`。
  68. 相关技能:`setting-up-astro-project` 用于初始化新 Astro 项目。
  69. 相关技能:`managing-astro-local-env` 用于 `astro dev` 本地开发。
  70. 相关技能:`authoring-dags` 用于部署前编写 DAG。
  71. 相关技能:`testing-dags` 用于部署前测试 DAG。

适用边界 · 注意事项