Skip to content

Azure 部署 ​

更新: 2026-10-16 15:20:09   字数: 0 字   时长: 0 分钟

Aspire 对 Azure 的支持最完整:从资源预配、容器镜像推送到环境部署,都可以由 aspire deploy 一条命令完成。

前置条件 ​

用 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

这条命令会:

  1. 生成部署清单与 Azure 基础设施定义(Bicep)。
  2. 构建并向容器注册表推送镜像。
  3. 预配所需的 Azure 资源。
  4. 把应用部署到 Azure Container Apps(或 App Service)。

支持的 Azure 目标 ​

目标环境 API
Azure Container AppsAddAzureContainerAppEnvironment(name)
Azure App ServiceAddAzureAppServiceEnvironment(name)

两者都可以在同一 AppHost 中与本地开发资源共存。

部署后的仪表板 ​

使用 aspire deploy 部署到 Azure Container Apps 时,Aspire 仪表板会作为环境的一部分被一并部署,让您在云上也能用熟悉的界面查看遥测。

找到仪表板地址 ​

部署成功后,aspire deploy 的输出会包含各资源(含仪表板)的 URL。也可以在 Azure 门户中:

  1. 打开资源组。
  2. 找到 Container Apps Environment。
  3. 在 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 门户中删除资源组,避免遗忘的资源持续计费。

下一步 ​

你觉得这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度