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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:46