mcpField
D
deploying-on-azure

deploying-on-azure

github.com/ancoleman云与 DevOps52569 次安装46 周前更新
代码仓库

关于 deploying-on-azure

为 Azure 架构设计与实施提供指导的技能,面向构建云应用的开发者和架构师。内容涵盖服务选型、安全、成本、治理及基础设施即代码,并依据 Well-Architected Framework 提供模式。

主要功能

  1. 01Azure 服务选型指导
  2. 02计算、存储与数据库架构模式
  3. 03安全与身份管理建议
  4. 04成本优化与治理实践
  5. 05Bicep 和 Terraform 示例

适用场景

  1. 01规划 Azure 新应用架构
  2. 02比较容器与计算服务
  3. 03设计云存储和数据库方案
  4. 04检查网络安全与成本策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ancoleman/ai-design-components --skill deploying-on-azure

安装后在 Claude Code 中输入/deploying-on-azure确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

outputs.yaml
examples/bicep/container-apps/
main.bicep
examples/sdk/python/
azure-openai-rag.py
references/
ai-integration.md
compute-services.md
database-selection.md
governance-compliance.md
identity-access.md
messaging-patterns.md
networking-architecture.md
security-architecture.md
storage-patterns.md
well-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 多种服务。请根据以下因素进行选择:

  1. 托管服务与 IaaS - 优先选择完全托管的服务(降低运维负担)
  2. 成本模型 - 按使用量计费还是专用容量
  3. 集成要求 - Microsoft 365、Active Directory、混合云
  4. 控制与简洁性 - 控制越多,运维开销越大
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 ServiceWeb 应用、简单 API专用计划低
Virtual Machines旧版应用、专用软件基于 VM高

建议: 对于 80% 的容器化工作负载,优先从 Azure Container Apps 开始(比 AKS 更简单、更便宜)。

详细比较及 Bicep 和 Terraform 示例请参阅 references/compute-services.md。

存储架构

Blob Storage 层级选择
层级访问模式成本/GB/月最短存储时长
Hot每日访问$0.018无
Cool每月访问少于 1 次$0.01030 天
Cold访问间隔超过 90 天$0.004590 天
Archive很少访问$0.00099180 天

模式: 使用生命周期管理策略,自动将数据移至成本更低的层级。

存储服务决策
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独立多个资源共享身份

示例流程:

  1. 在 Container App 上启用托管身份
  2. 授予该身份对 Key Vault 的访问权限(RBAC 或访问策略)
  3. 应用程序自动进行身份验证(无需凭据)
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 集成多云
BicepAzure 原生项目优秀(官方)否
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 和特权访问中
深度防御层
  1. 网络: 专用终结点、NSG、Azure Firewall
  2. 身份: Entra ID、托管标识、条件访问
  3. 应用程序: Web Application Firewall、API Management
  4. 数据: 静态加密、传输中加密(TLS 1.2+)
  5. 监控: 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
批处理、HPCAzure 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
PostgreSQLPostgreSQL Flexible Server
MySQLMySQL 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 Service
  • references/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、RBAC
  • references/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

评论

支持 Markdown