你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:将微服务应用程序部署到 Azure Spring Apps

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用

本文介绍如何使用已知的示例应用 PetClinic 将微服务应用程序部署到 Azure Spring Apps。

Pet Clinic 示例演示了微服务体系结构模式。 下图显示了 Azure Spring Apps Enterprise 计划上的 PetClinic 应用程序的体系结构。

此图显示了 Azure Spring Apps 企业计划上的 PetClinic 示例的体系结构。

此图显示了 Pet Clinic 示例的以下体系结构流和关系:

  • 使用 Azure Spring Apps 管理前端和后端应用。 后端应用是使用 Spring Boot 生成的,每个应用都使用 HSQLDB 作为持久性存储。 重塑的前端应用基于 Pet Clinic API 网关应用构建,Node.js 充当独立的前端 Web 应用程序。
  • 使用 Azure Spring Apps 上的托管组件,包括服务注册表、应用程序配置服务、Spring Cloud Gateway 和应用程序实时视图。 应用程序配置服务会读取 Git 存储库配置。
  • 公开 Spring Cloud Gateway 的 URL 以将请求路由到后端服务应用,并公开应用程序实时视图的 URL 以监视后端应用。
  • 使用 Log Analytics 工作区分析日志。
  • 使用 Application Insights 来监视性能。

注意

本文使用简化版的 PetClinic,使用的内存中数据库未做好生产准备,无法快速部署到 Azure Spring Apps。

Tanzu 开发人员工具公开了应用程序实时视图的公共访问权限,这是一个风险点。 生产环境需要保证访问安全性。 有关详细信息,请参阅 在 Azure Spring Apps Enterprise 计划中配置 Tanzu 开发人员工具 中的“配置开发人员工具门户”部分。

Pet Clinic 示例演示了微服务体系结构模式。 下图显示了 Azure Spring Apps 标准计划上的 PetClinic 应用程序的体系结构。

此图显示了 Azure Spring Apps 标准计划上的 PetClinic 示例的体系结构。

此图显示了 Pet Clinic 示例的以下体系结构流和关系:

  • 使用 Azure Spring Apps 管理 Spring Boot 应用。 每个应用都使用 HSQLDB 作为永久性存储。
  • 在 Azure Spring Apps 上使用托管组件 Spring Cloud Config Server 和 Eureka Service Registry。 Config Server 会读取 Git 存储库配置。
  • 公开 API 网关的 URL 来对服务应用的请求进行负载均衡,并公开管理服务器的 URL 来管理应用程序。
  • 使用 Log Analytics 工作区分析日志。
  • 使用 Application Insights 来监视性能。

注意

本文使用简化版本的 PetClinic,该版本使用尚不可用于生产环境的内存数据库,以快速部署到 Azure Spring Apps。

部署的应用 admin-server 开放了公共访问,这是一个风险点。 生产环境需要保护 Spring Boot 管理员应用程序。

本文介绍用于部署到 Azure Spring Apps 的以下选项:

  • “Azure 门户”选项是创建资源和部署应用程序的最简单、最快的方式,只需点击一下即可。 此选项适用于需要将应用程序快速部署到 Azure 云服务的 Spring 开发人员。
  • “Azure 门户 + Maven 插件”选项是一种更为传统的方法,可用于分步创建资源和部署应用程序。 此选项适合首次使用 Azure 云服务的 Spring 开发人员。
  • “Azure CLI”选项使用功能强大的命令行工具管理 Azure 资源。 此选项适合熟悉 Azure 云服务的 Spring 开发人员。
  • “Azure 门户 + Maven 插件”选项是一种更为传统的方法,可用于分步创建资源和部署应用程序。 此选项适合首次使用 Azure 云服务的 Spring 开发人员。
  • “Azure Developer CLI”选项是一种更高效的方法,可通过简单的命令自动创建资源和部署应用程序。 Azure Developer CLI 使用模板来预配所需的 Azure 资源并部署应用程序代码。 此选项适合熟悉 Azure 云服务的 Spring 开发人员。

1.先决条件

2. 准备 Spring 项目

使用以下步骤在本地准备示例:

  1. 使用以下命令克隆示例项目:

    git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
    
  2. 导航到项目根目录,然后使用以下命令在本地运行示例项目:

    bash ./scripts/run_all_without_infra.sh
    
  3. 成功完成脚本后,在浏览器中转到 http://localhost:8080 来访问 PetClinic 应用程序。

3. 准备云环境

本部分介绍如何创建 Azure Spring Apps 服务实例和准备 Azure 云环境。

3.1. 登录到 Azure 门户

转到 Azure 门户,输入凭据以登录到门户。 默认视图是服务仪表板。

3.2. 创建 Azure Spring Apps 实例

请执行以下步骤来创建服务实例:

  1. 在 Azure 门户一角选择“创建资源”。

  2. 在“Azure 服务”选项卡上,选择“配置”>“Azure Spring Apps”

    Azure 门户的屏幕截图,其中显示了“创建资源”页面,并且突出显示了 Azure Spring Apps。

  3. 在“创建 Azure Spring Apps”页上,填写“基本信息”选项卡上的窗体。

    Azure 门户的屏幕截图,其中显示了“创建 Azure Spring Apps”页,并且选择了“基本信息”选项卡。

    以下表为指南来填写窗体。 建议的计划为是基本

    设置 建议值 描述
    订阅 你的订阅名称。 要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。
    资源组 myresourcegroup 新的资源组名称,或订阅中的现有资源组。
    名称 myasa 用于标识 Azure Spring Apps 实例的唯一名称。 该名称必须为 4 到 32 个字符,只能包含小写字母、数字及连字符。 服务名称的第一个字符必须是字母,最后一个字符必须是字母或数字。
    规划 标准 定价层会确定与实例关联的资源和成本。
    区域 离用户最近的区域。 最靠近用户的位置。
    区域冗余 未选定 在 Azure 可用性区域中创建 Azure Spring Apps 服务。 目前并非在所有区域都可用。
  4. 导航到“创建 Azure Spring Apps”页上的“诊断设置”选项卡,然后选择“新建”,创建新的 Log Analytics 工作区实例。 在“创建新的 Log Analytics 工作区”页上,根据需要更新 Log Analytics 工作区的名称,然后选择“确定”来确认创建。

    Azure 门户的屏幕截图,其中显示了“创建 Azure Spring Apps”页,选择了“诊断”选项卡并且突出显示了“新建”按钮。

  5. 导航到“创建 Azure Spring Apps”页上的“Application Insights”选项卡,然后选择“新建”,创建新的 Application Insights 实例。 在创建新的 Application Insights 资源页上,根据需要更新 Application Insights 名称,选择基于工作区作为资源模式,然后选择确定来确认创建。

    Azure 门户的屏幕截图,其中显示了“创建 Azure Spring Apps”页和“创建新的 Application Insights 资源”窗格。

  6. 选择“查看 + 创建”,查看所选内容。 然后,选择“创建”以预配 Azure Spring Apps 实例

  7. 选择“通知”图标(铃铛)来监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上创建到此服务“概述”页的快捷方式

    Azure 门户的屏幕截图,其中显示了资源部署和“通知”窗格,以及“转到资源”和“固定到仪表板”按钮。

  8. 选择“转到资源”,转到“Azure Spring Apps 概述”页面。

  9. 在导航窗格中选择“Config Server”

  10. 在“Config Server”页上的“URI”中,输入“https://github.com/Azure-Samples/spring-petclinic-microservices-config.git”,然后选择“验证”

    Azure 门户的屏幕截图,其中显示了“Config Server”页,并突出显示了默认 URI 和“验证”按钮。

  11. 验证后,选择“应用”来完成 Config Server 配置。

4. 将应用部署到 Azure Spring Apps

现在可以将应用部署到 Azure Spring Apps。

按照以下步骤使用适用于 Azure Spring Apps 的 Maven 插件部署微服务应用程序:

  1. 导航到示例项目目录,然后使用以下命令为 Azure Spring Apps 配置应用:

    ./mvnw -P spring-apps com.microsoft.azure:azure-spring-apps-maven-plugin:1.17.0:config
    
  2. 以下列表描述了命令交互:

    • 选择子模块进行配置(以逗号分隔的输入数字,例如 [1-2,4,6],按 Enter 可全选):按 Enter 选择全部。
    • OAuth2 登录:根据 OAuth2 协议授权登录到 Azure。
    • 选择订阅:选择所创建的 Azure Spring Apps 实例的订阅列表编号,它默认为列表中的第一个订阅。 如果使用默认编号,请直接按 Enter
    • 选择要部署的 Azure Spring Apps:选择所创建的 Azure Spring Apps 实例的列表编号。 如果使用默认编号,请直接按 Enter
    • 选择要公开公共访问权限的应用:(以逗号分隔的输入数字,例如 [1-2,4,6],按 Enter 可全选:输入 1,5 表示 admin-serverapi-gateway
    • 确认保存上述所有配置 (Y/n):按 y。 如果按 n,则配置不会保存在 POM 文件中。
  3. 使用以下命令生成并部署每个应用程序:

    ./mvnw azure-spring-apps:deploy
    
  4. 对于“OAuth2 登录”提示,请根据 OAuth2 协议授权登录到 Azure。

    注意

    部署到 Azure Spring Apps 最多可能需要 25 分钟。

运行命令后,日志会显示与下例类似的输出,该输出指示所有部署均成功:

[INFO] Deployment(default) is successfully updated.
[INFO] Deployment Status: Running
[INFO]   InstanceName:admin-server-default-xx-xx-xxx  Status:Running Reason:null       DiscoverStatus:UP
[INFO] Getting public url of app(admin-server)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-admin-server.azuremicroservices.io

...

[INFO] Getting public url of app(api-gateway)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io

2. 准备 Spring 项目

下一部分中的“部署到 Azure”按钮可启动 Azure 门户体验,该体验会部署来自 Spring PetClinic 存储库的源代码。 不需要本地准备步骤。

3. 准备云环境

运行此示例所需的主要资源是 Azure Spring Apps 实例。 本节介绍如何创建此资源。

本部分使用“部署到 Azure”按钮在 Azure 门户中启动部署体验。 此体验使用 ARM 模板来创建 Azure 资源。

3.1. 登录到 Azure 门户

转到 Azure 门户,输入凭据以登录到门户。 默认视图是服务仪表板。

3.2. 创建 Azure 资源

按以下步骤创建应用依赖的所有 Azure 资源:

  1. 选择以下“部署到 Azure”按钮在 Azure 门户中启动部署体验

    用于将资源管理器模板部署到 Azure 的按钮。

  2. 填写“基本信息”选项卡上的表单。填写表单时,请参考下表:

    设置 建议值 描述
    订阅 你的订阅名称。 要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。
    资源组 myresourcegroup 新的资源组名称,或订阅中的现有资源组。
    区域 离用户最近的区域。 此区域用于创建资源组。

    Azure 门户的屏幕截图,显示了“自定义部署”页。

  3. 选择“查看 + 创建”,查看所选内容。 然后选择“创建”将应用部署到 Azure Spring Apps

  4. 在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。

    Azure 门户的屏幕截图,其中显示打开了“自定义部署通知”窗格的“概述”页。

4. 将应用部署到 Azure Spring Apps

上一部分中的“部署到 Azure”按钮将启动包含应用程序部署的 Azure 门户体验,因此无需执行任何其他操作

5. 验证应用

以下部分介绍如何验证部署。

5.1. 访问应用程序

部署完成后,可以从部署输出中找到 Spring Cloud Gateway URL,如以下屏幕截图所示:

Azure 门户的屏幕截图,其中显示了“部署输出”页。

打开网关 URL。 应用程序应该与以下屏幕截图类似:

屏幕截图显示在 Azure Spring Apps 企业计划上运行的 PetClinic 应用程序。

5.2. 查询应用程序日志

浏览完 Pet Clinic 的每个功能后,Log Analytics 工作区会收集每个应用程序的日志。 可使用自定义查询来检查日志,如以下屏幕截图所示:

Azure 门户的屏幕截图,其中显示了 PetClinic 应用程序查询的“日志”页以及企业计划的结果。

5.3. 监视应用程序

Application Insights 监视应用程序依赖项,如以下应用程序跟踪映射所示:

Azure 门户的屏幕截图,显示了 Azure Spring Apps 企业计划的“应用程序映射”页。

可以从部署输出中找到应用程序实时视图 URL。 打开应用程序实时视图 URL 以监视应用程序运行时,如以下屏幕截图所示:

屏幕截图显示 PetClinic 应用程序的应用程序实时视图。

5.1. 访问应用程序

使用部署日志输出中的 URL 信息打开由名为 api-gateway 的应用公开的 URL,例如 https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io。 应用程序应该与以下屏幕截图类似:

在 Azure Spring Apps 上运行的 PetClinic 应用程序的屏幕截图。

5.2. 查询应用程序日志

浏览完 Pet Clinic 的每个功能后,Log Analytics 工作区会收集每个应用程序的日志。 可使用自定义查询来检查日志,如以下屏幕截图所示:

Azure 门户的屏幕截图,其中显示了 PetClinic 应用程序查询的“日志”页和结果。

5.3. 监视应用程序

Application Insights 监视应用程序依赖项,如以下应用程序跟踪映射所示:

Azure 门户的屏幕截图,显示 Application Insights 实例的“应用程序映射”页。

打开应用 admin-server 公开的 URL 来通过 Spring Boot 管理服务器管理应用程序,如以下屏幕截图所示:

PetClinic 应用程序的“Spring Boot 管理服务器”页的屏幕截图,列出了当前的应用程序实例。

6.清理资源

如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。 不再需要资源时,可以清理不必要的资源以避免 Azure 费用。

按以下步骤删除整个资源组,包括新创建的服务实例:

  1. 在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称

  2. 在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。

当不再需要在本文中创建的资源时,请务必将其删除。 可以删除 Azure 资源组,其中包括资源组中的所有资源。

使用以下步骤删除整个资源组:

  1. 在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称

  2. 在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。

7. 后续步骤

有关详细信息,请参阅以下文章: