你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
迁移自定义虚拟网络
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✅基本计划/标准计划 ✅ 企业计划
在 Azure Spring Apps 中,你可以在托管虚拟网络中部署应用程序。 此设置使应用程序与虚拟网络中的其他资源(如数据库和其他服务)之间能够安全通信。 Azure 容器应用提供类似的功能,但存在一些差异。 本文探讨这些差异,并提供有关使用托管虚拟网络创建和管理 Azure 容器应用环境的指导。
先决条件
- 一个有效的 Azure 订阅。 如果没有帐户,可以创建一个免费 Azure 帐户。
- Azure CLI。
使用虚拟网络创建 Azure 容器应用环境
在 Azure Spring Apps 中,需要在虚拟网络中配置两个子网:一个用于系统运行时,另一个用于用户应用。 此设置可确保系统组件和用户应用程序的隔离和安全性。 另一方面,Azure 容器应用只需一个子网即可在虚拟网络中为基础结构简化网络配置。
在 Azure 容器应用中,基础结构虚拟网络独立于客户虚拟网络,无需在 Azure Spring Apps 中根据需要向虚拟网络授予服务权限。 支持两种类型的环境。 有关详细信息,请参阅 Azure 容器应用环境的“类型”部分。 使用工作负载配置文件环境时,需要更新虚拟网络以将子网委托给 Microsoft.App/environments
。 有关详细信息,请参阅为 Azure 容器应用环境提供虚拟网络的“创建环境”部分。
此外,两种服务对较小子网范围的要求有所不同。
若要使用虚拟网络创建 Azure 容器应用环境,请使用以下 Azure CLI 命令:
az containerapp env create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT \
--location "$LOCATION" \
--internal-only true \
--infrastructure-subnet-resource-id "$INFRASTRUCTURE_SUBNET"
变量 $INFRASTRUCTURE_SUBNET
是客户虚拟网络中子网的资源 ID,适用于基础结构组件和用户应用容器。 有关详细信息,请参阅为 Azure 容器应用环境提供虚拟网络的“创建环境”部分。
选择在 Azure 容器应用中使用客户虚拟网络并不意味着容器应用不能接受公共请求。 如果只想完全限制对客户虚拟网络的访问,则需要将 --internal-only
参数设置为 true
。 此设置可确保不会创建任何公共终结点。 有关详细信息,请参阅 Azure 容器应用环境中的网络的“虚拟 IP”部分以及为内部 Azure 容器应用环境提供虚拟网络。
将应用迁移到 Azure 容器应用
创建 Azure 容器应用环境后,下一步是将应用迁移到 Azure 容器应用。 有关详细信息,请参阅概念映射。 若要迁移每个 Azure 容器应用,请参阅应用程序迁移概述,并选择容器映像或迁移过程的项目。
更改入口设置
与 Azure Spring Apps 相比,Azure 容器应用提供了更多用于自定义入口设置的选项。 有关详细信息,请参阅在 Azure Spring Apps 中自定义入口配置。
下表映射两个服务之间的配置属性:
功能 | Azure Spring Apps | Azure Container Apps |
---|---|---|
会话关联 | ingressSettings.sessionAffinity |
ingress.stickySessions.affinity |
会话 Cookie 最长时间 | ingressSettings.sessionCookieMaxAge |
EasyAuthConfig.login.cookieExpiration.timeToExpiration |
后端协议 | ingressSettings.backendProtocol |
ingress.transport |
客户端身份验证 | ingressSettings.clientAuth |
ingress.clientCertificateMode |
入口读取超时 | ingressSettings.readTimeoutInSeconds |
240 |
入口发送超时 | ingressSettings.sendTimeoutInSeconds |
240 |
Azure 容器应用不允许用户指定自定义超时值。 相反,它对 HTTP 请求实施了内置的请求超时限制,上限为 240 秒。 因此,如果请求超过此持续时间,则会自动终止连接,以确保高效的资源管理并防止长时间运行的请求垄断系统。
Azure 容器应用不直接支持 session-max-age
配置项。 但是,可以通过其他相关设置管理会话持续时间和行为。 例如,可以使用 EasyAuth
配置中的 cookieExpiration 设置来控制身份验证会话持续的时间。 通过此设置,可以指定身份验证 Cookie 保持有效的持续时间。
有关 Azure 容器应用提供的入口设置的详细信息,请参阅 Azure 容器应用中的入口。
Azure Spring Apps 和 Azure 容器应用都提供了生成可公开访问的终结点的方法。 在 Azure Spring Apps 中,每个部署都有一个唯一的 URL,用于在蓝绿部署期间进行测试。 同样,在 Azure 容器应用中,修订标签提供了唯一的 URL,可用于将流量路由到该标签分配到的特定修订。 有关详细信息,请参阅 Azure 容器应用中更新和部署更改的“标签”部分。
在 Azure Spring Apps 中,系统会自动对基础/标准计划中的应用程序探测端口 1025
,对企业计划中的应用程序探测端口 8080
。 这些探测有助于确定应用程序容器是否准备好接受流量。 另一方面,Azure 容器应用通过允许用户使用 --target-port
参数自行指定探测端口,从而提供更大的灵活性。 此设置可让用户更好地控制其应用程序的配置和行为。
若要更新容器应用的目标入口端口,可以使用以下 Azure CLI 命令:
az containerapp ingress update \
--resource-group <resource-group> \
--name <app-name> \
--target-port <target-port>
下表解释了每个参数:
-
--name
:容器应用的名称。 -
--resource-group
:包含容器应用的资源组。 -
--target-port
:容器应用侦听的端口。
有关详细信息,请参阅 Azure 容器应用中为应用配置入口的“启用入口”部分。
更改出口设置 (UDR)
Azure Spring Apps 和 Azure 容器应用都提供通过自带路由表功能(用户定义的路由 (UDR))和 Azure 防火墙来控制出站流量的方法。 不过,请注意以下差异:
- 无需为 Azure 容器应用资源提供程序添加角色分配。
- 不需要 Azure 容器应用服务运行时子网的专用子网。
- Azure 容器应用提供了一种更灵活的方法来支持 UDR。 在 Azure 容器应用中,无需在预配 Azure Spring Apps 时以显式方式将
--outbound-type
选项设置为userDefinedRouting
。
有关详细信息,请参阅使用 CLI 进行子网配置的“路由”部分,以及使用用户定义的路由控制 Azure 容器应用中的出站流量。
在 Azure 容器应用中,只有“环境”类型的工作负荷配置文件支持 UDR。 此外,Azure 容器应用还支持通过 NAT 网关出口,并在容器应用环境中创建专用终结点。
若要创建支持 UDR 的 Azure 容器应用环境,请使用以下命令:
az containerapp env create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT \
--location "$LOCATION" \
--enable-workload-profiles \
--infrastructure-subnet-resource-id "$INFRASTRUCTURE_SUBNET"
将参数 --enable-workload-profiles
设置为 true
以启用工作负荷配置文件。
带有网络安全组的安全虚拟网络
Azure Spring Apps 和 Azure 容器应用都提供可靠的支持,使你能够使用网络安全组 (NSG) 有效地管理和保护出站流量。 主要区别在于特定配置。
有关更多信息,请参阅使用网络安全组保护 Azure 容器应用中的自定义 VNET。
更改 DNS 设置
Azure Spring Apps 和 Azure 容器应用都支持在客户虚拟网络中使用自定义 DNS 服务器。 我们建议在自定义 DNS 服务器中将 Azure DNS IP 168.63.129.16
作为上游 DNS 服务器进行添加。
有关详细信息,请参阅 Azure 容器应用环境中的网络的“DNS”部分。
目前,仅消耗型环境类型的 Azure 容器应用不支持像 Azure Spring Apps 那样刷新 DNS 设置更改。 有关详细信息,请参阅 Azure Spring Apps 中的刷新 DNS 设置更改。 但是,环境的工作负荷配置文件类型每 5 分钟自动刷新 DNS 设置。
Azure 容器应用支持使用专用 DNS 区域进行部署。 有关详细信息,请参阅向 Azure 容器应用环境提供虚拟网络的“使用专用 DNS 部署”部分。 与使用 Azure Spring Apps 相比,此方法提供了一种更灵活的方法来支持链接专用 DNS 区域。 有关详细信息,请参阅在虚拟网络中访问 Azure Spring Apps 中的应用的“将专用 DNS 区域与 Azure Spring Apps 链接”部分。
在客户虚拟网络中的 Azure 容器应用中访问应用
Azure 容器应用提供公用网络访问和专用终结点功能,用于向 Internet 公开应用程序或在专用网络中保护这些应用程序。 同样,Azure Spring Apps 支持这些功能,如以下文章中所述: