本文介绍如何将高级入口与 Azure 容器应用配合使用。 使用高级入口,可以定义入口的缩放方式和配置方式,以更好地处理更高的需求工作负荷。
先决条件
创建资源组
- 登录到 Azure。
az login
- 将 Azure CLI 升级到最新版本。
az upgrade
- 注册所需的资源提供程序。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
- 使用以下命令创建资源组:
az group create --name my-container-apps --location chinanorth3
创建环境
若要创建容器应用环境,请运行以下命令:
az containerapp env create \
--name my-container-apps-env \
--resource-group my-resource-group \
--location chinanorth3
配置工作负载配置文件
将工作负荷配置文件添加到环境(高级入口所必需的)。
az containerapp env workload-profile add \
--resource-group my-resource-group \
--name my-container-apps-env \
--workload-profile-name Ingress-D4 \
--workload-profile-type D4 \
您的工作负载配置文件必须至少有两个节点才能使用高级入口。
配置高级入口
使用以下命令将高级入口设置添加到环境:
az containerapp env premium-ingress add \
--resource-group my-resource-group \
--name my-container-apps-env \
--workload-profile-name Ingress-D4 \
--termination-grace-period 500 \
--request-idle-timeout 4 \
--header-count-limit 100
下表描述了为容器应用环境配置高级入口设置时可以设置的参数。
| 参数 | Description | 违约 | 最小值 | 最大值 |
|---|---|---|---|---|
termination-grace-period |
允许活动连接在终止流入流量之前关闭的时间(以秒为单位)。 | n/a | 0 | 3600 |
request-idle-limit |
请求在断开连接之前可以保持空闲的时间(以分钟为单位)。 | 4 | 4 | 30 |
header-count-limit |
每个请求允许的最大 HTTP 标头数。 | 100 | 1 | n/a |
配置后,将看到刚应用的设置的输出。
{
"headerCountLimit": 100,
"requestIdleTimeout": 4,
"terminationGracePeriodSeconds": 500,
"workloadProfileName": "Ingress-D4"
}
更新和管理高级入口
若要更新环境的高级入口设置,请运行以下命令:
az containerapp env premium-ingress update \
--resource-group my-resource-group \
--name my-container-apps-env \
--workload-profile-name Ingress-D4 \
--termination-grace-period 500 \
--request-idle-timeout 4 \
--header-count-limit 100
若要显示环境的高级入口设置,请运行以下命令:
az containerapp env premium-ingress show \
--resource-group my-resource-group \
--name my-container-apps-env
若要删除环境的高级入口设置,请运行以下命令:
az containerapp env premium-ingress remove \
--resource-group my-resource-group \
--name my-container-apps-env
若要从环境中删除工作负荷配置文件,请运行以下命令:
az containerapp env workload-profile delete \
--resource-group my-resource-group \
--name my-container-apps-env \
--workload-profile-name Ingress-D4
先决条件
使用 Bicep 进行部署
创建以下 Bicep 文件并另存为 ingress.bicep。
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2025-07-01' = {
name: 'my-container-app-env'
location: 'chinanorth3'
tags: tags
properties: {
workloadProfiles: [
{
name: 'Ingress-D4'
workloadProfileType: 'D4'
minimumCount: 2
maximumCount: 4
}
]
ingressConfiguration: {
workloadProfileName: 'Ingress-D4'
terminationGracePeriodSeconds: 600
headerCountLimit: 101
requestIdleTimeout: 5
}
}
}
此步骤使用高级入口配置部署容器应用环境,包括以下设置:
| Name | Description |
|---|---|
name |
用于高级入口的工作负荷配置文件的名称。 |
workloadProfileType |
用于缩放和资源分配的工作负载配置文件(例如 D4)的类型/大小。 |
minimumCount |
工作负荷配置文件的最小实例数。 最小值:2。 |
maximumCount |
工作负荷配置文件的最大实例数。 最大值:50。 |
workloadProfileName |
与入口配置相关联的工作负载配置文件名称。 |
terminationGracePeriodSeconds |
允许活动连接在终止流入流量之前关闭的时间(以秒为单位)。 最小值:0,最大值:60。 |
headerCountLimit |
每个请求允许的最大 HTTP 标头数。 默认值:100,最小值:1。 |
requestIdleTimeout |
请求在断开连接之前可以保持空闲的时间(以分钟为单位)。 默认值:4,最小值:4,最大值:30。 |
部署到 Azure 云
导航到保存 ingress.bicep 文件的目录,然后运行以下命令来部署 Bicep 文件:
# Login to Azure (if not already logged in)
azd auth login
# Provision and deploy the infrastructure
azd up
管理部署
使用以下命令查看容器应用的状态和日志。
# Check deployment status
azd show
# Clean up all resources
azd down
# View deployment logs
azd logs
可以在创建环境后为环境配置入口。
在 Azure 门户中转到容器应用环境。
在设置下选择网络 。
选择 “入口设置 ”选项卡。
根据以下设置配置入口设置。
设置 价值 入口模式 选择“高级”。 工作负载配置文件大小 选择大小从 D4 到 D32。 最小节点实例 输入最小工作负荷配置文件节点实例。 最大节点实例数 输入最大工作负载配置文件节点实例。 终止宽限期 输入终止宽限期(以分钟为单位)。 空闲请求超时 输入空闲请求超时(以分钟为单位)。 请求头计数 输入请求标头计数。 选择应用。
监控和指标
入口指标可通过容器应用环境实例中的 Azure 门户获得。 在“监视”下,选择“指标”。 这些指标在启用默认入口或高级入口时可用。 额外的指标正在进行中。
- 入口 CPU 使用率
- 入口内存使用量字节数
基准测试表明,入口每秒可以处理大约 3000 个 CPU 核心的请求,但容量因应用程序使用情况而异。 如果应用程序接收请求的速度超过环境处理能力,并导致请求在入口层排队,那么内存往往会成为瓶颈。
在每个模式下分配给入口的资源包括:
| 模式 | 实例 | CPU | 内存 | CPU 缩放阈值 | 内存扩展阈值 |
|---|---|---|---|---|---|
| 默认 | 2-10 | 1 个内核 | 2 GB | 75% | 50% |
| 高级 | 每个节点一个 (最小 2) | 节点核心的90% | 节点内存的 90% | 节点核心的 50% | 节点内存的50% |
清理资源
如果你不打算继续使用此应用程序,请运行以下命令以删除资源组以及本快速入门中创建的所有资源。
注意
以下命令删除指定的资源组及其包含的所有资源。 如果本快速入门范围之外的资源存在于指定的资源组中,则这些资源也会被删除。
az group delete --name my-container-apps