添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Azure 容器应用在虚拟网络 (VNet) 支持的 环境 上下文中运行。 默认情况下,容器应用环境是使用自动生成的 VNet 创建的。 在 Microsoft 租户中创建生成的 VNet 时,你无法访问这些 VNet。 可以通过 Internet 公开访问此 VNet,它只能连接到可通过 Internet 访问的终结点,并支持有限的一部分网络功能,例如入口 IP 限制和容器应用级入口控制。

如果你需要更多 Azure 网络功能,请使用自定义 VNet 配置来提供你自己的 VNet,例如:

  • 与应用程序网关集成
  • 网络安全组
  • 与虚拟网络中专用终结点后面的资源通信
  • 可用的功能取决于环境选择。

    容器应用中有两个环境:仅消耗环境仅支持 GA) 消耗计划 ( ,工作负荷配置文件环境支持 消耗 + 专用计划结构 (预览) 。 这两个环境共享许多相同的网络特征。 但是,两者也存在一些重要差异。

    工作负载配置文件环境 (预览) 支持用户定义的路由 (UDR) 和通过 NAT 网关处理出口流量。 所需的最小子网大小为 /27。

    由于工作负荷配置文件目前处于预览状态,因此支持的区域数有限。 若要了解详细信息,请访问 工作负载配置文件概述 。 仅消耗环境 不支持用户定义的路由 (UDR) 和通过 NAT 网关处理出口流量。 所需的最小子网大小为 /23。

    可访问性级别

    在容器应用中,可以在环境级别配置容器应用是允许公共入口流量,还是仅允许来自 VNet 内部的入口流量。

    可访问性级别

    HTTP 边缘代理行为

    Azure 容器应用使用 Envoy 代理 作为边缘 HTTP 代理。 TLS 在边缘终止,请求根据其流量拆分规则进行路由,流量将路由到正确的应用程序。

    HTTP 应用程序根据 HTTP 请求和连接的数量进行缩放。 Envoy 在群集内路由内部流量。 下游连接支持 HTTP1.1 和 HTTP2,如果客户端连接升级,Envoy 会自动检测和升级连接。 上游连接是通过设置 ingress 对象的 transport 属性来定义的。

    ingress 部分下,可以配置以下设置:

  • 可访问性级别 :可以在环境中将容器应用设置为外部或内部可访问。 环境变量 CONTAINER_APP_ENV_DNS_SUFFIX 用于为环境自动解析 FQDN 后缀。 在同一环境中的容器应用之间通信时,也可以使用应用名称。 有关如何访问应用的详细信息,请参阅 入口

  • 流量拆分规则:可以在应用程序的不同修订之间定义流量拆分规则。 有关详细信息,请参阅 流量拆分

    有关入口配置的详细信息,请参阅 Azure 容器应用中的入口

    有关方案的详细信息,请参阅 Azure 容器应用中的入口

    门户依赖项

    Azure 容器应用中的每个应用都有两个 URL。

    容器应用将生成第一个 URL 用于访问应用。 有关容器应用的完全限定域名 (FQDN),请参阅 Azure 门户中容器应用“概述”窗口中的“应用程序 URL”。

    第二个 URL 授予对日志流式处理服务和控制台的访问权限。 如有必要,可以将 https://azurecontainerapps.dev/ 添加到防火墙或代理的允许列表中。

    端口和 IP 地址

    为入站连接公开了以下端口。

    出站公共 IP 用作离开虚拟网络的出站连接的“来源”IP。 这些连接不会通过 VPN 路由。 无法保证出站 IP,这些 IP 可能会随时间而更改。 仅在工作负荷配置文件环境中支持对来自容器应用环境的出站流量使用 NAT 网关或其他代理。 内部负载均衡器 IP 地址 此地址仅存在于内部部署中。 应用分配的基于 IP 的 TLS/SSL 地址 只有采用了外部部署并且配置了基于 IP 的 TLS/SSL 绑定时才可使用这些地址。

    虚拟网络集成取决于专用子网。 在子网中分配 IP 地址的方式以及支持的子网大小取决于你在 Azure 容器应用中使用的计划。 根据容器应用的规模选择适当大小的子网非常重要,因为在 Azure 中创建子网后无法修改子网大小。

  • 仅消耗环境:

  • /23 是虚拟网络集成所需的最小子网大小。
  • 容器应用为 VNet 中的基础结构保留至少 60 个 IP,随着容器环境的扩展,该数量可能会增加到最多 256 个地址。
  • 随着应用的扩展,将为每个新副本分配一个新的 IP 地址。
  • 工作负载配置文件环境:

  • /27 是虚拟网络集成所需的最小子网大小。
  • 要与容器应用集成的子网必须委托给 Microsoft.App/environments
  • 将自动保留 11 个 IP 地址用于与子网集成。 当应用在工作负载配置文件上运行时,基础结构集成所需的 IP 地址数量不会因容器应用的规模而变化。
  • 根据容器应用的工作负载配置文件分配更多 IP 地址:
    • 对容器应用使用消耗工作负载配置文件时,IP 地址分配的行为与在仅限消耗环境中运行时的行为相同。 随着应用的扩展,将为每个新副本分配一个新的 IP 地址。
    • 对容器应用使用专用工作负载配置文件时,将为每个节点分配 1 个 IP 地址。
    • 创建容器应用环境时,需要为单个子网提供资源 ID。

      如果使用 CLI,则定义子网资源 ID 的参数为 infrastructure-subnet-resource-id 。 子网托管基础结构组件和用户应用容器。

      此外,如果将 Azure CLI 与仅限消耗环境配合使用,并且定义了 platformReservedCidr 范围,则这两个子网不得与 中 platformReservedCidr 定义的 IP 范围重叠。

      子网地址范围限制

      子网地址范围不能与 AKS 保留的以下范围重叠:

    • 169.254.0.0/16
    • 172.30.0.0/16
    • 172.31.0.0/16
    • 192.0.2.0/24
    • 此外,工作负载配置文件环境中的容器应用会保留以下地址:

    • 100.100.0.0/17
    • 100.100.128.0/19
    • 100.100.160.0/19
    • 100.100.192.0/19
    • 工作负载配置文件环境(预览版)支持通过 NAT 网关 (UDR) 和控制出口的用户定义的路由。 在仅限消耗的环境中,不支持这些功能。

      用户定义的路由 (UDR) - 预览版

      在 Azure 容器应用中将 UDR 与 Azure 防火墙 配合使用时,需要将某些 FQDN 和服务标记添加到防火墙的允许列表中。 若要了解详细信息,请参阅 使用 Azure 防火墙 配置 UDR

      可以在工作负载配置文件体系结构上使用 UDR,以通过 Azure 防火墙或其他网络设备限制来自容器应用的出站流量。 UDR 配置是在容器应用环境范围之外完成的。 外部环境不支持 UDR。

      在创建虚拟网络时,Azure 将为虚拟网络创建一个默认路由表。 通过实现用户定义的路由表,可以控制流量在虚拟网络中的路由方式。 例如,你可以创建一个 UDR,用于将所有流量路由到防火墙。

      使用 Azure 防火墙 配置 UDR - 预览版:

      UDR 仅在工作负荷配置文件环境中受支持。 以下应用程序和网络规则必须添加到防火墙的允许列表中,具体取决于你使用的资源。

      有关如何为容器应用设置 UDR 以使用 Azure 防火墙限制出站流量的指南,请访问 容器应用和 Azure 防火墙

      Azure 防火墙 - 应用程序规则

      应用程序规则基于应用程序层允许或拒绝流量。 根据方案需要以下出站防火墙应用程序规则。

      mcr.microsoft.com ,* .data.mcr.microsoft.com Azure 容器应用使用这些适用于 Microsoft 容器注册表的 FQDN (MCR) ,在将 Azure 容器应用与Azure 防火墙配合使用时,必须将这些应用程序规则或 MCR 的网络规则添加到允许列表中。 Azure 容器注册表 (ACR) Your-ACR-address ,* .blob.windows.net 将 Azure 容器应用与 ACR 和 Azure 防火墙 配合使用时,需要这些 FQDN。 Azure Key Vault Your-Azure-Key-Vault-address login.microsoft.com 除了 Azure 密钥保管库的网络规则所需的服务标记外,还需要这些 FQDN。 Docker Hub注册表 hub.docker.com registry-1.docker.io 、production.cloudflare.docker.com 如果使用 Docker Hub注册表 并希望通过防火墙访问它,则需要将这些 FQDN 添加到防火墙。
      Azure 防火墙 - 网络规则

      网络规则基于网络和传输层允许或拒绝流量。 根据方案需要以下出站防火墙网络规则。

      MicrosoftContainerRegistry AzureFrontDoorFirstParty Azure 容器应用使用这些 Microsoft 容器注册表的服务标记 (MCR) ,在将 Azure 容器应用与 Azure 防火墙 配合使用时,必须将这些网络规则或 MCR 的应用程序规则添加到允许列表中。 Azure 容器注册表 (ACR) AzureContainerRegistry 将 ACR 与 Azure 容器应用配合使用时,需要配置Azure 容器注册表使用的这些应用程序规则。 Azure Key Vault AzureKeyVault AzureActiveDirectory 除了 Azure 密钥保管库 的应用程序规则的 FQDN 外,还需要这些服务标记。

      NAT 网关集成 - 预览版

      可以使用 NAT 网关简化工作负载配置文件环境中虚拟网络中出站 Internet 流量的出站连接。 NAT 网关用于提供静态公共 IP 地址,因此在容器应用子网上配置 NAT 网关时,来自容器应用的所有出站流量都将通过 NAT 网关的静态公共 IP 地址进行路由。

      锁定容器应用环境

      借助工作负载配置文件环境 (预览版) ,可以完全保护入口/出口网络流量。 为此,应使用以下功能:

    • 在工作负载配置文件环境中创建内部容器应用环境。 有关步骤,请参阅 此处
    • 将容器应用与应用程序网关集成。 有关步骤,请参阅 此处
    • 配置 UDR 以通过Azure 防火墙路由所有流量。 有关步骤,请参阅 此处
    • 自定义 DNS:如果 VNet 使用自定义 DNS 服务器而非默认的 Azure 提供的 DNS 服务器,请将 DNS 服务器配置为将未解析的 DNS 查询转发给 168.63.129.16 Azure 递归解析程序 使用此 IP 地址解析请求。 配置 NSG 或防火墙时,请勿阻止该 168.63.129.16 地址,否则容器应用环境将不起作用。

    • VNet 范围入口:如果你打算在内部容器应用环境中使用 VNet 范围 入口 ,请通过以下方式之一配置域:

    • 非自定义域:如果不打算使用自定义域,请创建一个专用 DNS 区域,将容器应用环境的默认域解析为容器应用环境的静态 IP 地址。 可以使用 Azure 专用 DNS 或自己的 DNS 服务器。 如果使用 Azure 专用 DNS,请创建一个名为 的专用 DNS区域,作为容器应用环境的默认域 ( <UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io ) ,其中包含一条 A 记录。 该 A 记录包含容器应用环境的名称 *<DNS Suffix> 和静态 IP 地址。

    • 自定义域:如果打算使用自定义域,请使用可公开解析的域, 添加自定义域和证书 到容器应用。 此外,创建将顶点域解析为容器应用环境的静态 IP 地址的专用 DNS 区域。 可以使用 Azure 专用 DNS 或自己的 DNS 服务器。 如果使用 Azure 专用 DNS,请创建一个名为顶点域的专用 DNS 区域,其中包含指向容器应用环境的静态 IP 地址的 A 记录。

      可以在 Azure 门户中查找容器应用环境的静态 IP 地址(位于容器应用页的“自定义 DNS 后缀”中,也可以使用 Azure CLI az containerapp env list 命令来查找。

      托管的资源

      在你将某个内部或外部环境部署到自己的网络中时,会在托管环境的 Azure 订阅中创建一个新资源组。 此资源组包含 Azure 容器应用平台管理的基础结构组件,请不要修改它。

      仅消耗环境

      默认情况下,在托管环境的 Azure 订阅中创建的资源组的名称带有 MC_ 前缀,在创建容器应用期间 无法 自定义资源组名称。 资源组包含专门用于从环境和负载均衡器进行出站连接的公共 IP 地址。

      除了 Azure 容器应用账单 ,还需要为下列项付费:

    • 一个用于出口的标准静态 公共 IP 。 如果由于 SNAT 问题需要更多个 IP 用于出口,请 创建支持票证以请求替代

    • 如果使用内部环境,则为两个标准 负载均衡器 ;如果使用外部环境,则为一个标准 负载均衡器 。 每个负载均衡器的规则少于 6 条。 已处理的数据 (GB) 的成本包括用于管理操作的流入量和流出量。

      工作负荷配置文件环境

      默认情况下,在托管环境的 Azure 订阅中创建的资源组名称以 ME_ 为前缀,在创建容器应用环境期间可以自定义该资源组的名称。 对于外部环境,该资源组包含一个专门用来与外部环境和负载均衡器建立入站连接的公共 IP 地址。 对于内部环境,该资源组仅包含负载均衡器。

      除了 Azure 容器应用账单 ,还需要为下列项付费:

    • 一个用于外部环境中入口的标准静态 公共 IP 和一个标准 负载均衡器
    • 已处理的数据 (GB) 的成本包括用于管理操作的流入量和流出量。
    • 使用外部环境进行部署
    • 使用内部环境进行部署
  •