如何在Terraform 3.49.0中为Azure容器应用环境指定消费和专用工作负载配置文件
配置Azure Container Apps Environment同时支持Consumption和Dedicated工作负载配置文件
要在Terraform中为Azure Container Apps Environment配置两种工作负载配置文件,需要通过workload_profile块定义,结合你现有的for_each和变量结构,按以下步骤修改:
1. 扩展变量定义(variables.tf)
首先更新aca_envs变量,添加workload_profiles字段以支持传入配置:
variable "aca_envs" { type = list(object({ name = string resource_group_name = string location = string subnet_id = string internal_load_balancer_enabled = bool tags = map(string) roles = list(object({ role_name = string principal_id = string })) workload_profiles = list(object({ name = string workload_profile_type = string min_count = optional(number) max_count = optional(number) })) })) description = "Azure Container App Environments 配置列表" }
2. 修改资源配置(main.tf)
在azurerm_container_app_environment资源中添加dynamic "workload_profile"块,遍历变量中的配置:
resource "azurerm_container_app_environment" "aca_env" { for_each = { for aca_env in var.aca_envs : aca_env.name => aca_env} name = each.value.name resource_group_name = each.value.resource_group_name location = each.value.location subnet_id = each.value.subnet_id internal_load_balancer_enabled = each.value.internal_load_balancer_enabled tags = each.value.tags # 保留原有roles配置(如果需要) dynamic "role" { for_each = each.value.roles content { role_name = role.value.role_name principal_id = role.value.principal_id } } # 添加工作负载配置文件 dynamic "workload_profile" { for_each = each.value.workload_profiles content { name = workload_profile.value.name workload_profile_type = workload_profile.value.workload_profile_type min_count = workload_profile.value.min_count max_count = workload_profile.value.max_count } } }
3. 更新变量值(.tfvars)
在aca_envs数组中添加两种工作负载配置文件的具体参数:
aca_envs = [ { name = "myacaenv" resource_group_name = "myrg" location = "West Europe" subnet_id = "mysubnet" internal_load_balancer_enabled = true tags = {} roles = [] workload_profiles = [ # Consumption类型配置(无服务器自动缩放,无需指定min/max) { name = "ConsumptionProfile" workload_profile_type = "Consumption" }, # Dedicated类型配置(需指定至少1个实例,可设置缩放范围) { name = "DedicatedProfile" workload_profile_type = "Dedicated" min_count = 1 max_count = 5 } ] } ]
关键说明
- Consumption类型:无需设置
min_count和max_count,由Azure自动管理实例数量,适合突发、低负载场景。 - Dedicated类型:必须指定
min_count(最小值为1),max_count可选,适合稳定运行的负载,提供固定资源池。 - 每个工作负载配置文件的
name在同一个环境中必须唯一。
内容的提问来源于stack exchange,提问作者RSW
相关产品推荐
相关产品推荐

