You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为已创建的Azure Container App添加多缩放规则并避免覆盖

Azure Container App 缩放规则添加问题解答

1. 如何添加多个规则而不覆盖原有设置?

直接使用单组--scale-rule-name类参数执行az containerapp update会覆盖原有缩放规则,要实现规则追加,有两种可靠方式:

  • 多次使用--scale-rule参数:每个规则用一组完整的--scale-rule参数定义(包含名称、类型、元数据),多个规则依次声明即可实现追加,不会覆盖原有配置。示例:
az containerapp update -n $name -g $rg \
  --scale-rule "name=cron-rule,type=cron,metadata.start=0 0 * * *,metadata.end=0 6 * * *,metadata.timezone=Asia/Shanghai,metadata.desiredReplicas=5" \
  --scale-rule "name=mem-rule,type=memory,metadata.target=70"
  • 先导出现有配置,追加后全量更新:先用az containerapp show将当前配置导出为JSON文件,手动或通过脚本在properties.template.scaling.rules数组中添加新规则,再用az containerapp update --configuration或--set参数导入更新后的配置,确保原有规则不丢失。

2. 无需az containerapp update的其他方案

有两种脚本化的替代方案:

  • Azure PowerShell Az模块:通过Get-AzContainerApp获取现有容器应用对象,在其Template.Scaling.Rules属性中添加新的缩放规则对象,再调用Set-AzContainerApp提交增量更新,不会覆盖原有配置。示例:
$app = Get-AzContainerApp -Name $name -ResourceGroupName $rg
# 创建Cron规则对象
$cronRule = New-AzContainerAppScaleRuleObject -Name "cron-rule" -Type "cron" -Metadata @{start="0 0 * * *"; end="0 6 * * *"; timezone="Asia/Shanghai"; desiredReplicas="5"}
# 创建内存规则对象
$memRule = New-AzContainerAppScaleRuleObject -Name "mem-rule" -Type "memory" -Metadata @{target="70"}
# 追加规则并提交更新
$app.Template.Scaling.Rules += $cronRule, $memRule
Set-AzContainerApp -InputObject $app
  • Azure REST API PATCH请求:调用容器应用的PATCH API,仅提交新增的缩放规则部分实现增量更新。请求URL格式为https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/containerApps/{containerAppName}?api-version=2023-05-01,请求体使用JSON Patch语法指定规则追加操作。

3. 是否无法在容器应用创建后添加多个缩放规则?

完全可以在创建后添加多个缩放规则,只要使用上述增量修改方式,避免用单组--scale-rule-name类参数直接覆盖原有配置即可。容器应用的缩放规则支持动态追加,不存在创建后无法添加的限制。

内容的提问来源于stack exchange,提问作者Pedro Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:02:19