关于 deploying-on-azure
为 Azure 架构设计与实施提供指导的技能,面向构建云应用的开发者和架构师。内容涵盖服务选型、安全、成本、治理及基础设施即代码,并依据 Well-Architected Framework 提供模式。
主要功能
- 01Azure 服务选型指导
- 02计算、存储与数据库架构模式
- 03安全与身份管理建议
- 04成本优化与治理实践
- 05Bicep 和 Terraform 示例
适用场景
- 01规划 Azure 新应用架构
- 02比较容器与计算服务
- 03设计云存储和数据库方案
- 04检查网络安全与成本策略
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill deploying-on-azure安装后在 Claude Code 中输入/deploying-on-azure确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
outputs.yamlexamples/bicep/container-apps/main.bicepexamples/sdk/python/azure-openai-rag.pyreferences/ai-integration.mdcompute-services.mddatabase-selection.mdgovernance-compliance.mdidentity-access.mdmessaging-patterns.mdnetworking-architecture.mdsecurity-architecture.mdstorage-patterns.mdwell-architected.md详细介绍
Azure 模式
遵循 Microsoft Well-Architected Framework 和最佳实践,设计并实现 Azure 云架构,涵盖服务选择、成本优化和安全性。
适用场景
在以下情况下使用此技能:
- 为 Azure 云设计新应用程序
- 选择 Azure 计算服务(Container Apps、AKS、Functions、App Service)
- 设计存储解决方案(Blob Storage、Files、Cosmos DB)
- 集成 Azure OpenAI 或 Cognitive Services
- 实现消息传递模式(Service Bus、Event Grid、Event Hubs)
- 使用 Private Endpoints 设计安全网络
- 应用 Azure 治理与合规策略
- 优化 Azure 成本和性能
核心概念
服务选择理念
Azure 提供 200 多种服务。请根据以下因素进行选择:
- 托管服务与 IaaS - 优先选择完全托管的服务(降低运维负担)
- 成本模型 - 按使用量计费还是专用容量
- 集成要求 - Microsoft 365、Active Directory、混合云
- 控制与简洁性 - 控制越多,运维开销越大
Azure Well-Architected Framework(五大支柱)
| 支柱 | 重点 | 关键实践 |
|---|---|---|
| 成本优化 | 在预算范围内实现价值最大化 | 预留实例、自动缩放、生命周期管理 |
| 卓越运营 | 运行可靠的系统 | Azure Policy、自动化、监控 |
| 性能效率 | 扩展以满足需求 | 自动缩放、缓存、CDN |
| 可靠性 | 从故障中恢复 | 可用性区域、多区域、备份 |
| 安全性 | 保护数据和资产 | 托管标识、Private Endpoints、Key Vault |
详细的支柱实施模式请参阅 references/well-architected.md。
计算服务选择
决策框架
Container-based workload?
YES → Need Kubernetes control plane?
YES → Azure Kubernetes Service (AKS)
NO → Azure Container Apps (recommended)
NO → Event-driven function?
YES → Azure Functions
NO → Web application?
YES → Azure App Service
NO → Legacy/specialized → Virtual Machines
服务比较
| 服务 | 最适用于 | 定价模型 | 运维开销 |
|---|---|---|---|
| Container Apps | 微服务、API、后台作业 | 按使用量计费或专用 | 低 |
| AKS | 复杂的 K8s 工作负载、服务网格 | 基于节点 | 高 |
| Functions | 事件驱动的短任务(<10 min) | 按使用量计费或高级 | 低 |
| App Service | Web 应用、简单 API | 专用计划 | 低 |
| Virtual Machines | 旧版应用、专用软件 | 基于 VM | 高 |
建议: 对于 80% 的容器化工作负载,优先从 Azure Container Apps 开始(比 AKS 更简单、更便宜)。
详细比较及 Bicep 和 Terraform 示例请参阅 references/compute-services.md。
存储架构
Blob Storage 层级选择
| 层级 | 访问模式 | 成本/GB/月 | 最短存储时长 |
|---|---|---|---|
| Hot | 每日访问 | $0.018 | 无 |
| Cool | 每月访问少于 1 次 | $0.010 | 30 天 |
| Cold | 访问间隔超过 90 天 | $0.0045 | 90 天 |
| Archive | 很少访问 | $0.00099 | 180 天 |
模式: 使用生命周期管理策略,自动将数据移至成本更低的层级。
存储服务决策
File system interface required?
YES → Protocol?
SMB → Azure Files (or NetApp Files for high performance)
NFS → Azure Files (NFS 4.1)
NO → Object storage → Blob Storage
Block storage → Managed Disks (Standard/Premium SSD/Ultra)
Analytics → Data Lake Storage Gen2
有关生命周期策略、冗余选项和性能调优,请参阅 references/storage-patterns.md。
数据库服务选择
决策框架
Relational data?
YES → SQL Server compatible?
YES → Need VM-level access?
YES → SQL Managed Instance
NO → Azure SQL Database
NO → Open source?
PostgreSQL → PostgreSQL Flexible Server
MySQL → MySQL Flexible Server
NO → Data model?
Document/JSON → Cosmos DB (NoSQL API)
Graph → Cosmos DB (Gremlin API)
Wide-column → Cosmos DB (Cassandra API)
Key-value cache → Azure Cache for Redis
Time-series → Azure Data Explorer
Cosmos DB 一致性级别
| 级别 | 用例 | 延迟 | 吞吐量 |
|---|---|---|---|
| Strong | 金融交易、库存 | 最高 | 最低 |
| Bounded Staleness | 可接受一定延迟的实时排行榜 | 高 | 低 |
| Session | 购物车、用户会话(默认) | 中 | 中 |
| Consistent Prefix | 社交动态、IoT 遥测数据 | 低 | 高 |
| Eventual | 分析、ML 训练数据 | 最低 | 最高 |
有关容量规划、索引策略和迁移模式,请参阅 references/database-selection.md。
AI 与机器学习集成
Azure OpenAI Service
使用场景:
- 聊天机器人和对话式 AI(GPT-4)
- 内容生成与摘要
- 使用嵌入进行语义搜索(RAG 模式)
- 代码生成与补全
- 用于结构化输出的函数调用
主要优势:
- 企业级数据隐私(不会使用客户数据训练模型)
- 支持区域部署,满足数据驻留要求
- Microsoft 企业级 SLA
- 内置内容筛选
集成模式:
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
client = AzureOpenAI(
azure_endpoint="https://myopenai.openai.azure.com",
azure_ad_token_provider=token_provider,
api_version="2024-02-15-preview"
)
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": "Hello!"}]
)
其他 AI 服务
| 服务 | 用途 | 常见使用场景 |
|---|---|---|
| Cognitive Services | 预构建 AI 模型 | 视觉、语音、语言、决策 |
| Azure Machine Learning | 自定义模型训练 | MLOps、模型部署、特征工程 |
| Azure AI Search | 语义搜索引擎 | RAG 模式、文档搜索 |
请参阅 references/ai-integration.md,了解 RAG 架构、函数调用和微调模式。
消息传递与集成
服务选择矩阵
| 服务 | 模式 | 消息大小 | 顺序保证 | 事务 | 最适合 |
|---|---|---|---|---|---|
| Service Bus | 队列/主题 | 256 KB - 100 MB | 是(会话) | 是 | 企业级消息传递 |
| Event Grid | 发布/订阅 | 1 MB | 否 | 否 | 事件驱动架构 |
| Event Hubs | 流式处理 | 1 MB | 是(分区) | 否 | 大数据摄取、遥测 |
| Storage Queues | 简单队列 | 64 KB | 否 | 否 | 异步工作,<500k 条消息/秒 |
如何选择:
- Service Bus: 支持事务的可靠消息传递(例如,订单处理)
- Event Grid: 响应 Azure 资源事件(例如,Blob 已创建、VM 已停止)
- Event Hubs: 高吞吐量流式处理(例如,IoT 遥测、应用程序日志)
请参阅 references/messaging-patterns.md,了解实现示例、重试策略和死信处理。
网络架构
专用终结点与服务终结点
| 方面 | 专用终结点 | 服务终结点 |
|---|---|---|
| 安全模型 | VNet 中的专用 IP | 到公共终结点的优化路由 |
| 数据外泄防护 | 是(网络隔离) | 有限(仅服务防火墙) |
| 成本 | 每个终结点约 $7.30/月 | 免费 |
| 建议 | 生产工作负载 | 开发/测试环境 |
最佳实践: 在生产环境中为所有 PaaS 服务使用专用终结点(将公共终结点视为反模式)。
Hub-and-Spoke 拓扑
组件:
- Hub VNet: 共享服务(Azure Firewall、VPN Gateway、专用终结点)
- Spoke VNet: 应用程序工作负载(按环境或团队隔离)
- VNet Peering: Hub 与 Spoke 之间的低延迟连接
优势:
- 集中式安全(防火墙、DNS)
- 优化成本(共享出站流量)
- 简化治理
请参阅 references/networking-architecture.md,了解 Hub-Spoke Bicep 模板、NSG 模式和 DNS 配置。
身份与访问管理
托管身份模式
始终使用托管身份,而不要使用:
- 代码中的连接字符串
- 存储帐户密钥
- 服务主体凭据
- API 密钥
系统分配与用户分配:
| 类型 | 生命周期 | 使用场景 |
|---|---|---|
| System-Assigned | 与资源绑定 | 单个资源需要访问权限 |
| User-Assigned | 独立 | 多个资源共享身份 |
示例流程:
- 在 Container App 上启用托管身份
- 授予该身份对 Key Vault 的访问权限(RBAC 或访问策略)
- 应用程序自动进行身份验证(无需凭据)
from azure.identity import DefaultAzureCredential
# Works automatically with Managed Identity
credential = DefaultAzureCredential()
keyvault_client = SecretClient(vault_url="...", credential=credential)
Azure RBAC 最佳实践
- 尽可能使用内置角色(Owner、Contributor、Reader)
- 遵循最小权限原则
- 在资源组级别分配角色(而非订阅级别)
- 使用 Azure AD 组管理用户
- 定期审查角色分配
有关 Entra ID 集成、条件访问策略和 B2C 模式,请参阅 references/identity-access.md。
治理与合规
使用 Azure Policy 设置护栏
常见策略模式:
- 要求所有资源添加标记(Environment、Owner、CostCenter)
- 限制允许使用的 Azure 区域
- 强制执行最低 TLS 1.2 版本
- 要求存储帐户使用专用终结点
- 禁止 VM 使用公共 IP 地址
策略效果:
- Deny: 阻止创建不合规资源
- Audit: 记录不合规情况,但允许创建
- DeployIfNotExists: 自动修复缺失的配置
- Modify: 在部署期间更改资源属性
成本管理
优化策略:
| 模式 | 节省幅度 | 适用场景 |
|---|---|---|
| 预留实例(1 年) | 40-50% | 稳定运行的工作负载(数据库、VM) |
| 预留实例(3 年) | 60-70% | 长期承诺 |
| Spot VM | 最高可达 90% | 容错批处理 |
| 自动关闭 | 不定 | 开发/测试资源(非工作时间) |
| 存储生命周期策略 | 50-90% | 转移到 Cool/Archive 层 |
监控:
- 在 Azure Cost Management 中设置预算和警报
- 每周查看 Azure Advisor 的成本建议
- 为资源添加标记以分摊成本
- 使用 FinOps Toolkit 创建 Power BI 仪表板
有关 Azure Landing Zones、Policy 定义和 Blueprints,请参阅 references/governance-compliance.md。
基础设施即代码
工具选择
| 工具 | 最适合 | Azure 集成 | 多云 |
|---|---|---|---|
| Bicep | Azure 原生项目 | 优秀(官方) | 否 |
| Terraform | 多云环境 | 良好(azurerm provider) | 是 |
| Pulumi | 开发者优先的方法 | 良好(原生 SDK) | 是 |
| Azure CLI | 脚本和自动化 | 优秀 | 否 |
建议:
- Azure 基础设施专用项目使用 Bicep(Azure 集成最佳,具备原生类型安全)
- 多云环境或已有 Terraform 团队使用 Terraform
- 快速脚本和 CI/CD 自动化使用 Azure CLI
Bicep 最佳实践
- 使用参数文件设置特定于环境的值
- 利用 Azure Verified Modules (AVM) 中经过测试的模式
- 按资源生命周期组织(网络、数据、计算)
- 使用符号名称(而非字符串插值)
- 在 CI/CD 中启用 lint 和验证
请参阅 examples/bicep/ 和 examples/terraform/ 目录中的 Bicep 和 Terraform 示例。
安全最佳实践
基本安全控制
| 控制措施 | 实施方式 | 优先级 |
|---|---|---|
| 托管标识 | 在所有计算资源上启用 | 严重 |
| 专用终结点 | 在生产环境中用于所有 PaaS 服务 | 严重 |
| Key Vault | 存储机密、密钥和证书 | 严重 |
| 网络分段 | NSG、应用程序安全组 | 高 |
| Microsoft Defender | 为所有资源类型启用 | 高 |
| Azure Policy | 预防性控制 | 高 |
| 即时访问 | 用于 VM 和特权访问 | 中 |
深度防御层
- 网络: 专用终结点、NSG、Azure Firewall
- 身份: Entra ID、托管标识、条件访问
- 应用程序: Web Application Firewall、API Management
- 数据: 静态加密、传输中加密(TLS 1.2+)
- 监控: Microsoft Defender、Azure Monitor、Sentinel
请参阅 references/security-architecture.md(另请参阅 security-hardening 和 auth-security 技能)。
成本估算
定价考量
计算:
- Container Apps:约 $60/月(1 vCPU、2GB RAM、全天候运行)
- AKS:约 $400/月(3 节点 D4s_v5 群集)
- App Service P1v3:约 $145/月(2 vCPU、8GB RAM)
- Functions Consumption:每 100 万次执行约 $0.20
存储:
- Blob Hot:$0.018/GB/月
- Blob Cool:$0.010/GB/月
- Blob Archive:$0.00099/GB/月
- Managed Disks Premium SSD:$0.15/GB/月
数据库:
- Azure SQL Database(2 vCore):约 $280/月
- Cosmos DB Serverless:按消耗的 RU 付费
- PostgreSQL Flexible(2 vCore):约 $125/月
使用 Azure 定价计算器: https://azure.microsoft.com/pricing/calculator/
快速参考表
计算服务决策矩阵
| 如果你需要…… | 选择 |
|---|---|
| Kubernetes 功能(CRD、运算符) | Azure Kubernetes Service |
| 无需承担 K8s 复杂性的微服务 | Azure Container Apps |
| 事件驱动函数(<10 分钟) | Azure Functions |
| 传统 Web 应用(Node、.NET、Python) | Azure App Service |
| 批处理、HPC | Azure Batch 或 VM Scale Sets |
| 旧版应用迁移 | Virtual Machines |
存储服务决策矩阵
| 如果你需要…… | 选择 |
|---|---|
| SMB 文件共享 | Azure Files |
| NFS 文件共享 | Azure Files (NFS 4.1) |
| 对象存储(图像、备份) | Blob Storage |
| 高性能文件存储 | Azure NetApp Files |
| 用于 VM 的块存储 | Managed Disks |
| 大数据分析 | Data Lake Storage Gen2 |
数据库服务决策矩阵
| 如果你需要…… | 选择 |
|---|---|
| SQL Server 功能(T-SQL、SQL Agent) | Azure SQL Database 或 Managed Instance |
| PostgreSQL | PostgreSQL Flexible Server |
| MySQL | MySQL Flexible Server |
| 全球分布、多模型 | Cosmos DB |
| 内存缓存 | Azure Cache for Redis |
| 图数据库 | Cosmos DB (Gremlin API) |
| 时序数据 | Azure Data Explorer |
与其他技能集成
- infrastructure-as-code: 使用 Bicep 或 Terraform 实现 Azure 模式
- kubernetes-operations: AKS 专属配置与运维
- deploying-applications: Container Apps 和 App Service 部署
- building-ci-pipelines: Azure DevOps 和 GitHub Actions 集成
- auth-security: Entra ID 身份验证与授权模式
- observability: Azure Monitor 和 Application Insights
- ai-chat: 用于聊天应用的 Azure OpenAI Service
- databases-nosql: Cosmos DB 实现细节
- secret-management: Azure Key Vault 集成模式
参考文档
如需详细的实现指南,请参阅:
references/compute-services.md- 使用 Bicep/Terraform 配置 Container Apps、AKS、Functions、App Servicereferences/storage-patterns.md- Blob Storage、Files、Disks、生命周期管理references/database-selection.md- SQL Database、Cosmos DB、PostgreSQL 模式references/ai-integration.md- Azure OpenAI、RAG 架构、函数调用references/messaging-patterns.md- Service Bus、Event Grid、Event Hubs 示例references/networking-architecture.md- Hub-spoke、Private Endpoints、DNS 配置references/identity-access.md- Entra ID、Managed Identity、RBACreferences/governance-compliance.md- Azure Policy、Landing Zones、成本优化references/well-architected.md- 五大支柱实现指南
代码示例
可在以下位置找到可运行的示例:
examples/bicep/- 基础设施模板(Container Apps、AKS、网络、数据库)examples/terraform/- 多云 IaC 示例examples/sdk/python/- Python SDK 集成(OpenAI、Managed Identity、消息传递)examples/sdk/typescript/- TypeScript SDK 示例
Additional Resources
- Azure Architecture Center: https://learn.microsoft.com/azure/architecture/
- Azure Well-Architected Framework: https://learn.microsoft.com/azure/well-architected/
- Azure Verified Modules: https://aka.ms/avm
- Azure Charts (Service Comparison): https://azurecharts.com/
- Azure Updates: https://azure.microsoft.com/updates/