用途
Pulumi Stacks 用于管理同一份 Pulumi 程序在多个环境中的部署。每个 stack 是 Pulumi 程序的一个隔离、可独立配置的实例,拥有自己的状态、配置和资源,因此可以把相同的基础设施代码部署到开发、预发布和生产等不同环境,并保持一致性。
主要能力
- Stack 生命周期管理:初始化项目、创建 stack、列出、选择、查看当前 stack、删除 stack。
- Stack 配置:通过
pulumi config set设置配置值,使用--secret设置加密的敏感值,支持读取、列出和删除配置。 - 配置文件:使用
Pulumi.yaml定义项目级配置及默认值,使用Pulumi.dev.yaml、Pulumi.staging.yaml、Pulumi.prod.yaml等按 stack 定义环境参数(如区域、实例类型、最小/最大规模、是否启用监控、备份保留天数)。 - 代码中读取配置:在 TypeScript 与 Python 中通过
pulumi.Config读取字符串、数字、布尔值和 secret,并据此创建资源。 - 环境差异化资源:根据环境条件决定资源数量与规格,例如生产环境使用多个可用区、创建 NAT 网关、启用多可用区数据库和更长备份保留期。
- 跨 Stack 引用:通过
pulumi.StackReference引用其他 stack 的输出(如 VPC ID、子网 ID),实现基础设施 stack 与应用 stack 的解耦。 - Stack 输出:导出资源 ID、端点、连接字符串等,并通过命令行查看、以 JSON 输出或用于 shell 脚本与环境变量。
- Stack 转换:注册全局或资源级转换,为所有资源自动添加标签,或对特定资源强制加密。
- 标签与组织:定义公共标签并合并到各资源,统一项目、环境、stack、成本中心、负责人等元数据。
- 状态导入导出与迁移:导出 stack 状态为 JSON、导入状态、在 stack 之间迁移。
- 多区域部署:按区域创建 stack 配置,并使用指定 provider 在特定区域创建资源(如 us-east-1 的证书)。
- Stack 策略:对生产资源启用
protect防止误删,以及保留资源等。
使用方式
典型流程为:使用 pulumi new 初始化项目,使用 pulumi stack init 创建环境 stack,使用 pulumi config set 或编辑 Pulumi.<stack>.yaml 设置各环境参数,在代码中读取配置并创建资源,使用 pulumi up 部署,使用 pulumi stack output 查看输出。跨 stack 场景下先部署基础设施 stack,再部署应用 stack,并通过 StackReference 获取其输出。
适用场景
- 需要为开发、预发布、生产维护一致基础设施代码的团队。
- 需要按环境差异化资源配置(实例规格、可用区数量、备份策略、监控开关)的场景。
- 需要将基础设施与应用拆分为多个 stack 并相互引用的场景。
- 需要多区域部署、统一标签治理、强制加密或保护生产资源的场景。
限制
资料未提供关于收费、价格、平台支持范围、性能效果或具体版本要求的信息,暂未提供。