快速入门:将 Aspire 应用部署到 Azure 应用服务

本快速入门介绍如何创建第一个 Aspire 应用并将其部署到 Azure 应用服务。 Azure 应用服务提供了一个完全托管的平台,用于托管内置基础设施维护、安全修补和可扩展性的Web应用程序。

你可以通过使用适用于 GitHub Codespaces 的官方 Aspire 开发容器,直接在浏览器中完成整个快速入门流程。 最后,已将正在运行的 Aspire 应用部署到 Azure 应用服务。

Important

Aspire Azure 应用服务 整合目前處於預覽階段。

本快速入门使用 C# AppHost 和 .NET 项目。 Aspire 还支持 TypeScript 应用主机和多语种应用资源。 更多信息请参见 Aspire AppHostAspire 13.5 的新动态

先决条件

在 GitHub codespace 中创建 Aspire 初学者应用

  1. 用 Aspire 开发容器模板创建一个仓库

  2. 在新仓库中,选择 代码>空间>在主仓库创建代码空间

    你的浏览器会用 Visual Studio Code 打开一个代码空间。 该环境包括 Aspire CLI 和可信的本地 HTTPS 开发证书。

    更多信息请参见使用 GitHub Codespaces 与 Aspire 开发

  3. 在终端中,创建一个新的Aspire应用:

    aspire new aspire-starter --name aspire-starter --output aspire-starter
    

    该命令创建一个名为完整 Aspire 解决方案的新目录 aspire-starter ,包括:

    • 用于编排的 AppHost 项目
    • 共享配置的 ServiceDefaults 项目
    • 示例 API 和 Web 前端项目
  4. 导航到项目目录:

    cd aspire-starter
    

添加 Azure 应用服务集成

将 Aspire 应用配置为部署到 Azure 应用服务。

  1. 添加 Azure 应用服务 托管集成:

    aspire add Aspire.Hosting.Azure.AppService
    

    aspire add 命令检测 AppHost 项目并添加该 Aspire.Hosting.Azure.AppService 包。 有关详细信息,请参阅 aspire add

  2. 打开 aspire-starter/aspire-starter/AppHost/AppHost.cs

  3. CreateBuilder 行后添加 Azure 应用服务环境:

    builder.AddAzureAppServiceEnvironment("app-service-env");
    

    有关详细信息,请参阅是否需要应用服务环境才能运行 Aspire 应用?

  4. 添加.WithExternalHttpEndpoints()apiservice项目。 您的完整 apiservice 资源应如下所示:

    var apiService = builder.AddProject<Projects.aspire_starter_ApiService>("apiservice")
        .WithExternalHttpEndpoints()
        .WithHttpHealthCheck("/health");
    

    注释

    App Service 仅支持外部 HTTP 和 HTTPS 端点,并为每个部署的应用提供一个独立的目标端口。 起始模板已经暴露了前端端点。 欲了解更多信息,请参见 Azure 应用服务 Hosting integration

  5. 从解决方案根节点运行 aspire run 以本地验证 AppHost。

    当前Aspire仪表盘的截图,展示了App Service环境和示例应用资源。

部署到 Azure 云

  1. 登录到 Azure:

    az login
    
  2. 部署应用程序:

    aspire deploy
    

    提示时,选择你的 Azure 订阅、位置和资源组。 Aspire 会将选定的部署设置存储为 AppHost 用户秘密,方便你复用。

    aspire deploy 命令根据 AppHost.cs 代码执行以下作:

    • 创建或重用所选资源组
    • 创建 Azure 应用服务计划
    • 创建一个 Azure 容器注册表
    • 创建两个应用服务 Web 应用(一个用于 API,一个用于前端)
    • 创建一个托管的Aspire仪表板资源
    • 构建并容器化您的应用程序
    • 将容器推送到Azure 容器注册表
    • 将容器部署到应用服务

    有关部署设置和认证的更多信息,请参见部署到Azure

  3. 部署完成后,命令会显示已部署服务和Aspire仪表盘的端点URL。

    有关部署流程的更多信息,请参见“部署到Azure 应用服务”。

浏览 Aspire 应用

  1. 在部署输出中,找到服务的 URL webfrontend 。 它看起来类似于:

    webfrontend: https://webfrontend-xxxxx.chinacloudsites.cn
    
  2. 复制 URL 并在新的浏览器选项卡中打开它。

    您会看到在 Azure 应用服务 上运行的 Aspire 入门应用程序。 Web 前端与 API 服务通信,演示分布式体系结构。

  3. 尝试浏览应用以验证它是否正常工作。

  4. 若要查看 Aspire 仪表板,请在部署输出中找到 Aspire 仪表板 URL,并在新的浏览器选项卡中打开它。

在 Azure 门户中查看部署详细信息

  1. 导航到 Azure 门户

  2. 在搜索栏中,键入 资源组 并选择 “资源组”。

  3. 找到并选择你在 aspire deploy 期间选择的资源组。

    Aspire 部署的 Aspire 应用的资源组视图的屏幕截图。

    您应该能看到以下资源:

    • 应用服务计划:托管基础结构
    • 应用服务:您的 Web 前端和 API 服务应用
    • Aspire Dashboard:一个由基于角色的访问控制(RBAC)保护的托管 Azure 资源。
    • 容器注册表:存储容器映像
    • 用户分配的标识:提供服务之间的安全访问

清理资源

不再需要 Azure 资源时,请将其删除以避免产生费用。

  1. 在 codespace 终端中,运行:

    aspire destroy
    
  2. 出现提示时,确认要销毁已部署的环境。

该命令执行由应用服务环境注册的销毁步骤。 有关详细信息,请参阅 aspire destroy

Caution

aspire destroy 删除整个资源组,包括非Aspire创建的资源。 确认前先查看目标资源组。

常见问题解答

是否需要应用服务环境才能运行 Aspire 应用?

No. 尽管名称如此,AddAzureAppServiceEnvironment并不会在 Isolated 层级中预配 应用服务环境。 它创建了一个Aspire环境资源,代表你应用的应用服务托管基础设施。

调用 AddAzureAppServiceEnvironment时,它会预配:

  • Azure 应用服务计划 (Linux 上的高级 P0V3 层默认)
  • 用于存储容器映像的 Azure 容器注册表
  • 用户分配的托管身份,用于在服务之间实现安全访问

此 Aspire 环境概念将资源组合在一起,并提供将 Aspire 应用部署到 Azure 应用服务所需的基础结构。

如何自定义我的应用服务部署?

可以通过修改AppHost.cs配置来自定义应用服务部署。 Aspire Azure 应用服务集成提供了多种自定义部署的方法:

  • 配置应用服务计划:调整 SKU、级别和伸缩选项
  • 自定义应用服务设置:添加环境变量、连接字符串和应用设置
  • 配置基础结构:修改网络、身份验证和其他Azure资源
  • 使用现有资源:连接到现有应用服务计划或其他 Azure 资源

有关详细信息,请参阅 配置 Aspire 应用程序以用于 Azure 应用服务

有关支持的 App Service 工作负载和部署行为的更多信息,请参见 Azure 应用服务 托管集成部署到 Azure 应用服务

后续步骤

已成功将 Aspire 应用部署到 Azure 应用服务! 下面是一些要探索的后续步骤:

探索 Azure 应用服务功能