SuperAPI AI 工具集

pulumi-stacks

部署与运维

查看项目

更新于 10-16 04:06

技能介绍

用途

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 并相互引用的场景。
  • 需要多区域部署、统一标签治理、强制加密或保护生产资源的场景。

限制

资料未提供关于收费、价格、平台支持范围、性能效果或具体版本要求的信息,暂未提供。