如何修改Azure容器应用默认内部负载均衡器设置?
修改Azure容器应用自动生成的内部负载均衡器会话持久性与空闲超时
通过Azure Portal直接修改容器应用环境自动创建的内部负载均衡器(ILB)规则会失败,因为该ILB属于容器应用服务托管的资源,需通过Azure CLI或ARM模板来覆盖这些配置,以下是具体操作方法:
方法一:使用Azure CLI更新容器应用环境
- 导出当前容器应用环境配置到本地JSON文件:
az containerapp env show --name <你的环境名称> --resource-group <你的资源组名称> --output json > env-config.json
- 编辑
env-config.json,在properties.configuration节点下添加/修改ingress配置项,指定会话持久性和空闲超时参数:
"ingress": { "external": false, "targetPort": 80, "traffic": [ { "latestRevision": true, "weight": 100 } ], "sessionAffinity": "Sticky", // 可选值:None/Sticky "sessionAffinityTtlSeconds": 1800, // 会话持久性超时,单位为秒 "idleTimeoutInMinutes": 30 // 空闲超时,单位为分钟 }
- 用修改后的配置更新容器应用环境:
az containerapp env update --name <你的环境名称> --resource-group <你的资源组名称> --set properties.configuration.ingress=@env-config.json
方法二:使用ARM模板部署更新
创建或修改ARM模板,在容器应用环境的properties.configuration.ingress节点中定义目标参数:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ { "type": "Microsoft.App/managedEnvironments", "apiVersion": "2023-05-01", "name": "<你的环境名称>", "location": "<你的区域>", "properties": { "vnetConfiguration": { "infrastructureSubnetId": "/subscriptions/<你的订阅ID>/resourceGroups/<你的资源组名称>/providers/Microsoft.Network/virtualNetworks/<你的VNet名称>/subnets/<你的子网名称>" }, "configuration": { "ingress": { "external": false, "sessionAffinity": "Sticky", "sessionAffinityTtlSeconds": 1800, "idleTimeoutInMinutes": 30 } } } } ] }
- 执行模板部署:
az deployment group create --resource-group <你的资源组名称> --template-file <模板文件路径>
注意事项
sessionAffinity设为Sticky时,sessionAffinityTtlSeconds参数才会生效;设为None则关闭会话持久性。- 空闲超时
idleTimeoutInMinutes允许的取值范围为1-60分钟。 - 修改配置后容器应用环境会重启相关组件,需提前做好业务容错准备。
内容的提问来源于stack exchange,提问作者Amrish
相关产品推荐
相关产品推荐

