你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器应用在其自己的虚拟网络(VNet)的环境中运行。 此 VNet 围绕 Azure 容器应用 环境创建安全边界。
Azure 容器应用中的入口配置确定外部网络流量如何到达应用程序。 通过配置入口,可以控制流量路由、提高应用程序性能并实施高级部署策略。 本文将指导你完成 Azure 容器应用中提供的入口配置选项,并帮助你为工作负载选择合适的设置。
Azure 容器应用环境包括一个可缩放的边缘入口代理,负责以下功能:
传输层安全性(TLS)终止,它会在进入环境时解密 TLS 流量。 此作将解密工作从容器应用移开,从而减少其资源消耗并提高其性能。
活动容器应用修订版之间的负载均衡和流量拆分。 通过控制定向传入流量的位置,可以实现 蓝绿部署 和 执行 A/B 测试等模式。
会话相关性,有助于生成需要与同一容器应用副本保持一致连接的有状态应用程序。
下图显示了一个示例环境,其中入口代理将流量路由到两个容器应用。
默认情况下,Azure 容器应用使用默认入口模式创建容器应用环境。 如果应用程序需要以高规模级别运行,可以将入口模式设置为高级。
默认入口模式
使用默认入口模式时,容器应用环境有两个入口代理实例。 容器应用根据需要创建更多实例,最多 10 个实例。 每个实例最多分配 1 个 vCPU 核心和 2 GB 内存。
在默认入口模式下,扩展入口代理或增加 vCPU 核心及内存分配时不适用计费。
高级入口模式
默认入口模式可能会成为大规模环境中的瓶颈。 作为替代方法,高级入口模式包括高级功能,以确保入口跟上流量需求。
这些功能包括:
工作负荷配置文件支持:入口代理实例在所选 的工作负荷配置文件 中运行。 可以控制代理可用的 vCPU 核心数和内存资源数。
可配置的缩放范围规则:代理缩放范围规则是可配置的,因此可以确保具有与应用程序所需的实例数一样多。
高级设置:您可以配置高级设置,例如入口代理实例的空闲等待时长。
为了决定使用默认入口模式还是高级入口模式,应根据服务的请求来评估代理实例所消耗的资源。 首先查看代理实例使用的 vCPU 核心和内存资源。 如果环境在任何长时间内保持最大入口代理计数(默认值 10),请考虑切换到高级入口模式。 有关详细信息,请参阅 指标。
工作负载配置文件
您可以选择一个工作负载配置文件,为您的入口代理实例提供专用节点,以满足您的扩展需求。 建议使用 D4-D32 工作负载配置文件类型。 每个入口代理实例分配 1 个 vCPU 核心。 有关详细信息,请参阅 Azure 容器应用中的工作负载配置文件。
工作负载配置文件:
- 不得是消耗工作负载配置文件。
- 不得与容器应用或作业共享。
- 在用于入口代理时,不得被删除。
在工作负载配置文件中运行入口代理按该工作负载配置文件的费率计费。 有关详细信息,请参阅计费。
还可以配置工作负载概况节点数。 工作负载配置文件是一个可缩放的节点池。 每个节点都包含多个入口代理实例。 节点数根据 vCPU 和内存利用率进行缩放。 节点实例的最小数目为 2。
规模化
入口代理的缩放与容器应用的缩放无关。
当入口代理达到高 vCPU 或内存利用率时,容器应用会创建更多的入口代理实例。 利用率降低时,会删除额外的入口代理实例。
您的最小和最大入口代理实例的确定方式如下:
最小值:至少有两个节点实例。
最大值:最大节点实例数量乘以您的 vCPU 核心数。 例如,如果有 50 个最大节点实例和 4 个 vCPU 核心,则最多有 200 个入口代理实例。
入口代理实例分布在可用的工作负载配置文件节点之间。
高级入口设置
启用高级入口模式后,还可以配置以下设置:
| 设置 | DESCRIPTION | 最小值 | 最大值 | 违约 |
|---|---|---|---|---|
| 终止宽限期 | 容器应用在关闭期间取消请求之前完成处理请求的时间(以秒为单位)。 | 0 | 3,600 | 500 |
| 空闲请求超时 | 空闲请求超时(以分钟为单位)。 | 4 | 30 | 4 |
| 请求头计数 | 如果有发送大量请求标头的客户端,请增加此设置。 | 1 | 无 | 100 |
应仅根据需要增加这些设置,因为提高这些设置可能会导致入口代理实例在较长时间内消耗更多资源,因此更容易受到资源耗尽和拒绝服务攻击的攻击。
配置入口
可以在创建环境后为环境配置入口。
在 Azure 门户中浏览到你的环境。
选择“网络”。
选择 入口设置。
按如下所示配置入口设置。
设置 价值 入口模式 选择 “默认 ”或“ 高级”。 工作负载配置文件大小 选择 从 D4 到 D32 的大小。 最小节点实例 输入最小工作负载配置文件节点实例。 最大节点实例数 输入最大工作负载配置文件节点实例。 终止宽限期 输入 终止宽限期(以分钟为单位)。 空闲请求超时 输入空闲请求超时(分钟)。 请求头计数 输入请求头计数。 选择应用。
基于规则的路由(预览版)
使用基于规则的路由,可以在容器应用环境中创建完全限定的域名(FQDN)。 然后使用规则根据每个请求的路径,将请求路由到此 FQDN 的不同容器应用。 这具有以下优势。
隔离:通过将不同的路径路由到不同的容器应用,可以部署和更新各个组件,而不会影响整个应用程序。
可伸缩性:使用基于规则的路由,可以根据每个容器应用接收的流量独立缩放单个容器应用。
自定义路由规则:例如,可以将用户重定向到应用程序的不同版本或实现 A/B 测试。
安全性:可以实施针对每个容器应用定制的安全措施。 这有助于减少应用程序的攻击面。
若要了解如何在容器应用环境中配置基于规则的路由,请参阅 “使用基于规则的路由”。
Azure 容器应用环境中的对等加密
Azure 容器应用支持环境中的对等 TLS 加密。 启用此功能后,将会使用在 Azure 容器应用环境范围内有效的专用证书加密环境中的所有网络流量。 Azure 容器应用会自动管理这些证书。
注释
默认情况下,对等加密处于禁用状态。 在高负载方案中,为你的应用程序启用对等加密可能会增加响应延迟并降低最大吞吐量。
以下示例演示启用了对等加密的环境。
1 入站 TLS 流量在环境边缘中的入口代理处终止。
2 环境中进出入口代理的流量使用专用证书进行 TLS 加密,并由接收器解密。
3 从应用 A 向应用 B 的 FQDN 发起的调用首先发送到边缘入口代理,并进行 TLS 加密。
4 使用应用 B 的应用名称从应用 A 向应用 B 发出的调用会直接发送到应用 B,并经过 TLS 加密。 应用与 Java 组件之间的调用的处理方式与应用间通信相同,并且都经过了 TLS 加密。
容器应用环境中的应用程序会自动进行身份验证。 但容器应用运行时不支持使用内置对等加密在应用程序之间进行访问控制的授权。
当应用在环境外部与客户端通信时,支持使用 mTLS 进行双向身份验证。 有关详细信息,请参阅配置客户端证书。
可以使用以下命令启用对等加密。
创建时:
az containerapp env create \
--name <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--location <LOCATION> \
--enable-peer-to-peer-encryption
对于现有容器应用:
az containerapp env update \
--name <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--enable-peer-to-peer-encryption