Azure 部署
更新: 2026-10-16 15:20:09 字数: 0 字 时长: 0 分钟
Aspire 对 Azure 的支持最完整:从资源预配、容器镜像推送到环境部署,都可以由 aspire deploy 一条命令完成。
前置条件
- Azure Developer CLI(
azd) 或 Azure CLI(az)。 - 已通过
azd auth login或az login完成登录。 - 一个可用的 Azure 订阅。
用 aspire doctor 检查
bash
aspire doctor它会报告 CLI 版本、证书、容器运行时等环境问题,在跑部署之前先做一次能省下很多时间。
声明 Azure 环境
csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureContainerAppEnvironment("env");
var cache = builder.AddAzureRedis("cache").RunAsContainer();
var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var blobs = storage.AddBlobs("uploads");
builder.AddProject<Projects.Api>("api")
.WithReference(cache)
.WithReference(blobs)
.WithExternalHttpEndpoints();
builder.Build().Run();注意这里同时体现了两种模式:
- 本地运行:
RunAsContainer()让 Redis 跑在容器里,RunAsEmulator()让存储使用 Azurite。 - 发布到 Azure:自动切换为 Azure Cache for Redis 与 Azure Storage 账户。
部署
bash
aspire deploy这条命令会:
- 生成部署清单与 Azure 基础设施定义(Bicep)。
- 构建并向容器注册表推送镜像。
- 预配所需的 Azure 资源。
- 把应用部署到 Azure Container Apps(或 App Service)。
支持的 Azure 目标
| 目标 | 环境 API |
|---|---|
| Azure Container Apps | AddAzureContainerAppEnvironment(name) |
| Azure App Service | AddAzureAppServiceEnvironment(name) |
两者都可以在同一 AppHost 中与本地开发资源共存。
部署后的仪表板
使用 aspire deploy 部署到 Azure Container Apps 时,Aspire 仪表板会作为环境的一部分被一并部署,让您在云上也能用熟悉的界面查看遥测。
找到仪表板地址
部署成功后,aspire deploy 的输出会包含各资源(含仪表板)的 URL。也可以在 Azure 门户中:
- 打开资源组。
- 找到 Container Apps Environment。
- 在 Overview 页查看 Aspire Dashboard 属性。
或用 Azure CLI 获取域名:
bash
az containerapp env show \
--name {environment-name} \
--resource-group {my-resource-group} \
--query properties.defaultDomain \
--output tsv部署的仪表板默认使用临时存储
- 仪表板容器重启后,遥测数据会丢失。
- 它不能替代生产的遥测后端。
生产环境请同时配置 Azure Monitor 以获得持久化的遥测。
启用 OpenID Connect 认证
暴露在云端的仪表板必须开启认证。请使用 OpenIdConnect 模式接入 Microsoft Entra ID 等身份提供商:
text
Dashboard:Frontend:AuthMode=OpenIdConnect
Dashboard:Frontend:OpenIdConnect:Authority=<authority>
Dashboard:Frontend:OpenIdConnect:ClientId=<client-id>详见安全注意事项。
安全最佳实践
- 优先使用托管标识,避免在配置里放连接字符串与密钥。Aspire 的 Azure 客户端集成默认使用
DefaultAzureCredential。 - 不要把机密写进 AppHost:使用
AddParameter(name, secret: true),让机密走部署平台的参数注入。 - 最小权限:为托管标识授予所需的最小 RBAC 角色。
- 区分开发与生产的资源定义:用
ExecutionContext或参数控制,避免开发用的模拟器配置泄漏到生产。
成本提示
容器应用环境、托管数据库、缓存与容器注册表都会产生持续费用。
记得清理
bash
aspire destroy或在 Azure 门户中删除资源组,避免遗忘的资源持续计费。





