在虚拟网络中部署 Azure Spring Apps

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

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

该部署支持:

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

注意

仅当创建新的 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。
    位置 选择“中国北部 2”。
  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 授予虚拟网络的所有者权限。 使用此权限可以在虚拟网络上授予专用和动态服务主体权限,以进一步进行部署和维护。

注意

所需的最低权限为用户访问管理员网络参与者。 如果无法授予 Owner 权限,可以向两者授予角色分配。

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

使用以下步骤授予权限:

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

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

    Screenshot of the Azure portal Access Control (IAM) page showing the Check access tab with the Add role assignment button highlighted.

  3. Owner 角色分配给 Azure Spring Apps 资源提供程序。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色

    注意

    如果找不到 Azure Spring Apps 资源提供程序,请搜索“Azure Spring Cloud 资源提供程序”。

    Screenshot of the Azure portal showing the Access Control (IAM) page, with the Add Role Assignment pane open and search results displaying the Azure Spring Apps Resource Provider.

部署 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”。

    Screenshot of the Azure portal Azure Spring Apps Create page showing the Networking tab.

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

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

    Screenshot of the Azure portal Azure Spring Apps Create page showing the Networking section of the Review and create tab.

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

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

Screenshot of the Azure portal showing the resources for the service runtime.

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

Screenshot of the Azure portal showing the resources for the Spring applications.

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

Screenshot of the Azure portal showing the Connected devices page for a virtual network.

重要

资源组由 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 或其他出口网关。 更新规则时请谨慎,在此情况下只会修改自定义规则。

路由表要求

与自定义 VNet 关联的路由表必须符合以下要求:

  • 仅当创建新的 Azure Spring Apps 服务实例时,才能将 Azure 路由表与 VNet 相关联。 创建 Azure Spring Apps 后,无法改用其他路由表。
  • Spring 应用程序子网和服务运行时子网必须与不同的路由表相关联,或者不与任何路由表相关联。
  • 在创建实例之前必须分配权限。 请务必授予 Azure Spring Apps 资源提供程序对路由表的 Owner 权限(或 User Access AdministratorNetwork 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.microservices.azure.cn 的 IP 地址。

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

后续步骤