你当前正在访问 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 容器应用

本文适用于:✔️ Java ✔️ C#

本文适用于:❌ 基本版 ✔️ 标准版 ✔️ 企业版

本教程介绍如何在虚拟网络中部署 Azure Spring Apps 实例。 此部署有时称为 VNet 注入。

该部署支持:

  • 从企业网络中的 Internet 隔离 Azure Spring Apps 应用和服务运行时。
  • Azure Spring Apps 与本地数据中心内的系统或其他虚拟网络中的 Azure 服务进行交互。
  • 授权客户控制 Azure Spring Apps 的入站和出站网络通信。

以下视频介绍了如何使用托管虚拟网络保护 Spring Boot 应用程序。


注意

仅当创建新的 Azure Spring Apps 服务实例时,才能选择 Azure 虚拟网络。 创建 Azure Spring Apps 后,不能改为使用其他虚拟网络。

先决条件

根据在 Azure 门户上注册资源提供程序中的说明或运行以下 Azure CLI 命令来注册 Azure Spring Apps 资源提供程序 Microsoft.AppPlatformMicrosoft.ContainerService

az provider register --namespace Microsoft.AppPlatform
az provider register --namespace Microsoft.ContainerService

虚拟网络要求

将 Azure Spring Apps 实例部署到其中的虚拟网络必须满足以下要求:

  • 位置:该虚拟网络必须与 Azure Spring Apps 实例位于同一位置。
  • 订阅:该虚拟网络必须与 Azure Spring Apps 实例位于同一订阅中。
  • 子网:虚拟网络必须包含两个专用于 Azure Spring Apps 实例的子网:
    • 一个用于服务运行时。
    • 一个用于 Spring 应用程序。
    • 这些子网和 Azure Spring Apps 实例之间存在一对一关系。 请为部署的每个服务实例使用一个新子网。 每个子网只能包含一个服务实例。
  • 地址空间:对于服务运行时子网和 Spring 应用程序子网,CIDR 块最大为 /28。
  • 路由表:默认情况下,子网不需要现有的路由表处于关联状态。 你可以使用自己的路由表

使用以下步骤设置虚拟网络以包含 Azure Spring Apps 实例。

创建虚拟网络

如果已有用于托管 Azure Spring Apps 实例的虚拟网络,请跳过步骤 1、2 和 3。 可以从步骤 4 开始,为虚拟网络准备子网。

  1. 在 Azure 门户菜单中,选择“创建资源”。 在 Azure 市场中,选择“网络”“虚拟网络”。

  2. 在“创建虚拟网络”对话框中,输入或选择以下信息:

    设置
    订阅 选择订阅。
    资源组 选择你的资源组,或新建一个资源组。
    名称 输入 azure-spring-apps-vnet。
    位置 选择美国东部
  3. 在完成时选择“下一步:IP 地址”。

  4. 对于 IPv4 地址空间,输入 10.1.0.0/16。

  5. 选择“添加子网”。 然后输入 service-runtime-subnet 作为“子网名称”,输入 10.1.0.0/24 作为“子网地址范围”。 然后选择“添加” 。

  6. 再次选择“添加子网”,然后输入子网名称和子网地址范围。 例如,输入“apps-subnet”和“10.1.1.0/24”。 然后选择“添加” 。

  7. 选择“查看 + 创建”。 将其余的设置保留默认值,然后选择“创建”。

向虚拟网络授予服务权限

本部分介绍如何在虚拟机上向 Azure Spring Apps 授予“用户访问管理员”和“网络参与者”权限。 使用此权限可以在虚拟网络上授予专用和动态服务主体权限,以进一步进行部署和维护。

注意

如果使用自己的路由表或用户定义的路由功能,则还需要向 Azure Spring Apps 授予对路由表相同的角色分配。 有关详细信息,请参阅自带路由表部分和控制 Azure Spring Apps 实例的出口流量

使用以下步骤授予权限:

  1. 选择之前创建的虚拟网络 azure-spring-apps-vnet

  2. 选择“访问控制(IAM)”,然后选择“添加”“添加角色分配”。

    Azure 门户访问控制 (IAM) 页的屏幕截图,其中显示了“检查访问权限”选项卡,该选项卡中突出显示了“添加角色分配”按钮。

  3. 向 Azure Spring Cloud 资源提供程序授予“Network Contributor”和“User Access Administrator”角色。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色

    注意

    角色“User Access Administrator”位于“特权管理员角色”中,“Network Contributor”位于“工作职能角色”中。

部署 Azure Spring Apps 实例

使用以下步骤在虚拟网络中部署 Azure Spring Apps 实例:

  1. 打开 Azure 门户

  2. 在顶部搜索框中,搜索“Azure Spring Apps”。 从结果中选择“Azure Spring Apps”。

  3. 在“Azure Spring Apps”页面上,选择“添加”。

  4. 在 Azure Spring Apps 的“创建”页中填写表单。

  5. 选择与虚拟网络相同的资源组和区域。

  6. 对于“服务详细信息”下的“名称”,请选择“azure-spring-apps-vnet”。

  7. 选择“网络”选项卡,然后选择以下值:

    设置
    在自己的虚拟网络中部署 请选择“是”。
    虚拟网络 选择“azure-spring-apps-vnet”。
    服务运行时子网 选择“service-runtime-subnet”。
    Spring Boot 微服务应用子网 选择“apps-subnet”。

    Azure 门户 Azure Spring Apps“创建”页的屏幕截图,其中显示了“网络”选项卡。

  8. 选择“查看并创建”。

  9. 验证你的规范,并选择“创建”。

    Azure 门户 Azure Spring Apps“创建”页的屏幕截图,其中显示了“查看并创建”选项卡的“网络”部分。

部署后,订阅中将创建另外两个资源组来托管 Azure Spring Apps 实例的网络资源。 转到“主页”,然后从顶部菜单项中选择“资源组”,以查找以下新资源组 。

名为 ap-svc-rt_{service instance name}_{service instance region} 的资源组包含服务实例的服务运行时网络资源。

Azure 门户的屏幕截图,其中显示了服务运行时的资源。

名为 ap-app_{service instance name}_{service instance region} 的资源组包含服务实例的 Spring 应用程序网络资源。

Azure 门户的屏幕截图,其中显示了 Spring 应用程序的资源。

这些网络资源连接到在上图中创建的虚拟网络。

Azure 门户的屏幕截图,其中显示了虚拟网络的“已连接设备”页。

重要

资源组由 Azure Spring Apps 服务完全托管。 请不要手动删除或修改内部的任何资源。

使用较小的子网范围

该表显示了 Azure Spring Apps 在使用较小的子网范围时支持的最大应用实例数。

应用子网 CIDR IP 总数 可用的 IP 最大应用实例
/28 16 8

具有 0.5 个核心的应用:192
具有 1 个核心的应用:96
具有两个核心的应用:48
具有三个核心的应用:32
具有四个核心的应用:24

/27 32 24

具有 0.5 个核心的应用:456
具有一个核心的应用:228
具有两个核心的应用:144
具有三个核心的应用:96
具有四个核心的应用:72

/26 64 56

具有 0.5 个核心的应用:500
具有一个核心的应用:500
具有两个核心的应用:336
具有三个核心的应用:224
具有四个核心的应用:168

/25 128 120

具有 0.5 个核心的应用:500
具有一个核心的应用:500
具有两个核心的应用:500
具有三个核心的应用:480
具有四个核心的应用:360

/24 256 248

具有 0.5 个核心的应用:500
具有一个核心的应用:500
具有两个核心的应用:500
具有三个核心的应用:500
具有四个核心的应用:500

对于子网,Azure 将保留五个 IP 地址,Azure Spring Apps 至少需要三个 IP 地址。 至少需要 8 个 IP 地址,因此 /29 和/30 不适用。

对于服务运行时子网,最小大小为 /28。

注意

较小的子网范围会影响可用于系统组件(例如入口控制器)的基础资源。 Azure Spring Apps 使用基础入口控制器来处理应用程序流量管理。 随着应用程序流量的增加,入口控制器实例的数量会自动增加。 如果应用程序流量将来可能会增加,请保留更大的虚拟网络子网 IP 范围。 对于每秒 10000 个请求的流量,通常保留一个 IP 地址。

使用自己的路由表

Azure Spring Apps 支持使用现有的子网和路由表。

如果自定义子网不包含路由表,Azure Spring Apps 将为每个子网创建路由表,并在整个实例生命周期中将规则添加到路由表。 如果自定义子网包含路由表,Azure Spring Apps 将在实例操作期间确认现有路由表,并相应地添加/更新和/或删除操作规则。

警告

可将自定义规则添加到自定义路由表中并对其进行更新。 但是,规则由 Azure Spring Apps 添加,且不可更新或删除。 诸如 0.0.0.0/0 的规则必须始终存在于给定的路由表中,并映射到 internet 网关的目标,例如 NVA 或其他出口网关。 更新规则时请谨慎,在此情况下只会修改自定义规则。

路由表要求

与自定义虚拟网络关联的路由表必须符合以下要求:

  • 仅当创建新的 Azure Spring Apps 服务实例时,才能将 Azure 路由表与虚拟网络相关联。 创建 Azure Spring Apps 实例后,无法改用其他路由表。
  • Spring 应用程序子网和服务运行时子网必须与不同的路由表相关联,或者不与任何路由表相关联。
  • 在创建实例之前必须分配权限。 确保向 Azure Spring Cloud 资源提供程序授予对路由表的“User Access Administrator”和“Network Contributor”权限。
  • 创建群集后,无法更新关联的路由表资源。 虽然无法更新路由表资源,但可以修改路由表上的自定义规则。
  • 不能重复使用具有多个实例的路由表,因为这可能导致路由规则冲突。

使用自定义 DNS 服务器

Azure Spring Apps 支持在虚拟网络中使用自定义 DNS 服务器。

如果未在 DNS 服务器虚拟网络设置中指定自定义 DNS 服务器,则默认情况下,Azure Spring Apps 将使用 Azure DNS 来解析 IP 地址。 如果虚拟网络配置了自定义 DNS 设置,请将 Azure DNS IP 168.63.129.16 添加为自定义 DNS 服务器中的上游 DNS 服务器。 Azure DNS 可解析虚拟网络中运行 Azure Spring Apps 的客户责任中提及的所有公共 FQDN 的 IP 地址。 它还可以解析虚拟网络中 *.svc.private.azuremicroservices.io 的 IP 地址。

如果自定义 DNS 服务器无法将 Azure DNS IP 168.63.129.16 添加为上游 DNS 服务器,请执行以下步骤:

后续步骤