SuperAPI AI 工具集

managing-astro-deployments

部署与运维

查看项目

更新于 10-15 03:23

技能介绍

用途

该技能帮助用户使用 Astro CLI 管理 Astronomer 生产部署。本地开发请参考 managing-astro-local-env 技能;生产故障排查请参考 troubleshooting-astro-deployments 技能。

认证

所有部署操作都需要先认证:

# 登录 Astronomer(打开浏览器进行 OAuth)
astro login

认证令牌会保存在本地,供后续命令使用。在执行任何部署操作前先运行此命令。

工作区管理

部署按工作区组织:

# 列出所有可访问的工作区
astro workspace list

# 切换到指定工作区
astro workspace switch <WORKSPACE_ID>

工作区上下文会在会话之间保持。大多数部署命令在当前工作区上下文中运行。

列出与检查部署

# 列出当前工作区中的部署
astro deployment list

# 列出所有工作区中的部署
astro deployment list --all

# 检查特定部署(详细信息)
astro deployment inspect <DEPLOYMENT_ID>

# 按名称检查(ID 的替代方式)
astro deployment inspect --deployment-name data-service-stg

inspect 显示的内容:

  • 部署状态(HEALTHY、UNHEALTHY)
  • 运行时版本和 Airflow 版本
  • 执行器类型(CELERY、KUBERNETES、LOCAL)
  • 调度器配置(大小、数量)
  • Worker 队列设置(最小/最大 worker 数、并发数、worker 类型)
  • 资源配额(CPU、内存)
  • 环境变量
  • 上次部署时间戳和当前标签
  • Webserver 和 API URL
  • 高可用状态

创建部署

# 使用默认设置创建
astro deployment create

# 使用指定执行器创建
astro deployment create --label production --executor celery
astro deployment create --label staging --executor kubernetes

# 执行器选项:
#   - celery:最适合大多数生产工作负载
#   - kubernetes:最适合动态扩缩容、隔离任务
#   - local:仅适合开发

更新部署

# 启用仅 DAG 部署(更快的迭代)
astro deployment update <DEPLOYMENT_ID> --dag-deploy-enabled

# 更新其他设置(使用 --help 查看完整选项)
astro deployment update <DEPLOYMENT_ID> --help

删除部署

# 删除部署(需要确认)
astro deployment delete <DEPLOYMENT_ID>

破坏性操作:此操作无法撤销。所有 DAG、任务历史和元数据都将丢失。

将代码部署到生产环境

完整部署

同时部署 DAG 和 Docker 镜像(依赖变更时必须使用):

astro deploy <DEPLOYMENT_ID>

适用场景:

  • 依赖发生变化(requirements.txt、packages.txt、Dockerfile)
  • 新项目的首次部署
  • 重大基础设施变更

仅 DAG 部署(推荐用于迭代)

仅部署 DAG 文件,跳过 Docker 镜像重建:

astro deploy <DEPLOYMENT_ID> --dags

适用场景:

  • 仅 DAG 文件发生变化(dags/ 目录中的 Python 文件)
  • 开发期间的快速迭代
  • 比完整部署快得多(秒级 vs 分钟级)

要求:部署上已设置 --dag-deploy-enabled 标志(参见更新部署)。

仅镜像部署

仅部署 Docker 镜像,跳过 DAG 同步:

astro deploy <DEPLOYMENT_ID> --image-only

适用场景:

  • 仅依赖发生变化
  • Dockerfile 或 requirements 已更新
  • 无 DAG 变更

强制部署

绕过安全检查并部署:

astro deploy <DEPLOYMENT_ID> --force

注意:会跳过可能阻止损坏部署的验证。

部署 API 令牌

管理用于以编程方式访问部署的 API 令牌:

# 列出部署的令牌
astro deployment token list --deployment-id <DEPLOYMENT_ID>

# 创建新令牌
astro deployment token create \
  --deployment-id <DEPLOYMENT_ID> \
  --name "CI/CD Pipeline" \
  --role DEPLOYMENT_ADMIN

# 创建带过期时间的令牌
astro deployment token create \
  --deployment-id <DEPLOYMENT_ID> \
  --name "Temporary Access" \
  --role DEPLOYMENT_ADMIN \
  --expiry 30  # 过期天数(0 = 永不过期)

角色:

  • DEPLOYMENT_ADMIN:对部署的完全访问权限

注意:令牌值仅在创建时显示。请安全存储。

常见工作流

首次生产部署

# 1. 登录
astro login

# 2. 切换到生产工作区
astro workspace list
astro workspace switch <PROD_WORKSPACE_ID>

# 3. 创建部署
astro deployment create --label production --executor celery

# 4. 记下部署 ID,然后部署
astro deploy <DEPLOYMENT_ID>

迭代式 DAG 开发

# 1. 启用快速部署(一次性设置)
astro deployment update <DEPLOYMENT_ID> --dag-deploy-enabled

# 2. 在本地修改 DAG

# 3. 快速部署
astro deploy <DEPLOYMENT_ID> --dags

将代码从预发晋升到生产

# 1. 先部署到预发
astro workspace switch <STAGING_WORKSPACE_ID>
astro deploy <STAGING_DEPLOYMENT_ID>

# 2. 在预发环境测试

# 3. 将相同代码部署到生产
astro workspace switch <PROD_WORKSPACE_ID>
astro deploy <PROD_DEPLOYMENT_ID>

配置管理

# 查看 CLI 配置
astro config get

# 设置配置值
astro config set <KEY> <VALUE>

# 检查 CLI 版本
astro version

# 将 CLI 升级到最新版本
astro upgrade

提示

  • 使用 --dags 标志进行快速迭代(秒级 vs 分钟级)
  • 在生产环境之前始终在预发工作区测试
  • 部署前使用 deployment inspect 验证部署健康状况
  • 部署 ID 是永久的,名称可以更改
  • 大多数命令使用部署 ID;inspect 也接受 --deployment-name
  • 每个部署设置一次 --dag-deploy-enabled 即可实现快速部署
  • 使用 astro workspace list 保持工作区上下文可见(当前工作区显示星号)

相关技能

  • troubleshooting-astro-deployments:调查部署问题、查看日志、管理环境变量
  • managing-astro-local-env:管理本地 Airflow 开发环境
  • setting-up-astro-project:初始化并配置 Astro 项目