用途
该技能帮助用户使用 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 项目