SuperAPI AI 工具集

deployment-stacks-2025

部署与运维

查看项目

更新于 10-15 12:03

技能介绍

用途

Azure Deployment Stacks 是 Azure 中用于管理一组 Azure 资源的资源类型,可将多个资源作为单一、原子单元进行统一管理。它是 Azure Blueprints 的继任者(Blueprints 将于 2026 年 7 月弃用),提供统一的生命周期管理、资源保护和自动清理能力。

主要能力

1. 统一资源管理

  • 将多个资源作为单一实体管理
  • 对整个堆栈执行更新、导出和删除操作
  • 在一处跟踪所有受管资源
  • 跨环境实现一致的部署

2. Deny Settings(资源保护)

防止对受管资源的未授权修改:

  • None:无限制(默认)
  • DenyDelete:防止资源删除
  • DenyWriteAndDelete:防止更新和删除

可通过 --deny-settings-excluded-principals 为特定身份(如紧急访问主体、DevOps 服务主体)绕过拒绝设置。

3. ActionOnUnmanage(清理策略)

控制模板中不再存在的资源如何处理:

  • detachAll:从堆栈管理中移除,保留资源
  • deleteAll:删除不在模板中的资源
  • deleteResources:删除未受管资源,保留资源组

4. 范围灵活性

可在以下范围部署堆栈:

  • 资源组范围
  • 订阅范围
  • 管理组范围

5. 替代 Azure Blueprints

Azure Blueprints 将于 2026 年 7 月弃用,Deployment Stacks 是推荐的替代方案。

使用方式

前置条件

Azure CLI 需 2.61.0 或更高版本:

az version
az upgrade

Azure PowerShell 需 12.0.0 或更高版本:

Get-InstalledModule -Name Az
Update-Module -Name Az

创建堆栈

订阅范围示例:

az stack sub create \
  --name MyProductionStack \
  --location eastus \
  --template-file main.bicep \
  --parameters @parameters.json \
  --deny-settings-mode DenyWriteAndDelete \
  --deny-settings-excluded-principals <devops-service-principal-id> <admin-group-id> \
  --action-on-unmanage deleteAll \
  --description "Production infrastructure managed by deployment stack" \
  --tags Environment=Production ManagedBy=DeploymentStack CostCenter=Engineering

部署前可执行 what-if 分析:

az stack sub what-if \
  --name MyProductionStack \
  --location eastus \
  --template-file main.bicep \
  --parameters @parameters.json

资源组范围使用 az stack group create,管理组范围使用 az stack mg create。

管理堆栈

  • 更新:az stack sub update
  • 查看详情:az stack sub show / az stack sub list
  • 导出模板:az stack sub export --output-file exported-stack.json
  • 删除:az stack sub delete --action-on-unmanage deleteAll --yes(或 detachAll 保留资源)

Bicep 模板

资料提供了生产堆栈模板示例(main.bicep),包含资源组、Log Analytics、AKS Automatic 集群、Container Apps 环境、Azure OpenAI、Cosmos DB、Key Vault 等模块,以及 AKS Automatic 模块示例。

RBAC

内置角色:

  • Azure Deployment Stack Contributor:管理部署堆栈,不能创建或删除 deny-assignments
  • Azure Deployment Stack Owner:完整堆栈管理,可创建和删除 deny-assignments

CI/CD、监控与审计

详细的 GitHub Actions 和 Azure DevOps CI/CD 示例,以及监控、审计查询、部署历史检查等内容位于 references/cicd-monitoring.md。

从 Azure Blueprints 迁移

步骤包括:清点 Blueprints、记录参数、规划转换、在开发环境测试;导出 Blueprint 为 ARM 模板、用 az bicep decompile 转换为 Bicep、创建 Deployment Stack、验证资源、删除 Blueprint 分配。

适用场景

  • 生产基础设施的统一生命周期管理
  • 需要资源保护(防止误删或误改)的合规场景
  • 临时环境(dev、test)的干净部署
  • 资源迁移到另一个堆栈
  • 从 Azure Blueprints 迁移

限制与注意事项

  • 需 Azure CLI 2.61.0+ 或 Azure PowerShell 12.0.0+
  • Azure Blueprints 将于 2026 年 7 月弃用
  • 资料未提供具体收费或价格信息
  • 资料未提供平台支持范围之外的细节

最佳实践(资料列出)

  • 所有新基础设施使用 Deployment Stacks
  • 部署前始终运行 what-if 分析
  • 生产堆栈使用 DenyWriteAndDelete
  • 从拒绝设置中排除 break-glass 主体
  • 为堆栈打上 Environment、CostCenter、Owner 标签
  • 临时环境使用 deleteAll
  • 迁移场景使用 detachAll
  • 为堆栈部署实现 CI/CD 管道
  • 通过活动日志监控堆栈操作
  • 记录堆栈架构和依赖关系