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

如何避免Terraform覆盖AKS AGIC生成的Application Gateway后端地址池

问题根因

AGIC(Application Gateway Ingress Controller)的工作机制就是根据K8s集群中的Ingress资源,自动增删改Application Gateway的后端地址池、路由规则、HTTP设置、健康探针等流量路由相关配置。你在Terraform脚本中显式定义了这些AGIC管控范围的配置,会导致Terraform状态与AGIC实际修改后的配置冲突,每次Terraform执行apply时就会覆盖AGIC生成的配置。

解决方案

方案1:添加Terraform生命周期忽略规则(最便捷)

在你的azurerm_application_gateway资源块中添加lifecycle.ignore_changes配置,忽略所有AGIC会自动修改的配置项,Terraform后续执行apply时就不会检测和覆盖这部分配置的变更,仅管理AGW的基础规格、WAF配置、IP地址这类不会被AGIC修改的属性。
示例配置如下:

resource "azurerm_application_gateway" "main" {
  name                = "你的应用网关名称"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location

  # 直接指定WAF_v2规格满足你的安全需求
  sku {
    name     = "WAF_v2"
    tier     = "WAF_v2"
    capacity = 2 # 可按需调整
  }

  # WAF功能配置,按需调整规则
  waf_configuration {
    enabled          = true
    firewall_mode    = "Prevention" # 可先设为Detection测试
    rule_set_type    = "OWASP"
    rule_set_version = "3.2"
  }

  # 其他基础配置:公网IP、私有IP、监听端口、证书等AGIC不会修改的配置正常保留

  # 核心配置:忽略AGIC管控的所有配置项变更
  lifecycle {
    ignore_changes = [
      backend_address_pool,
      backend_http_settings,
      request_routing_rule,
      http_listener,
      redirect_configuration,
      rewrite_rule_set,
      probe
    ]
  }
}

该方案可以同时解决后端地址池、路由规则被覆盖的问题。

方案2:拆分Terraform管理范围

直接从Terraform脚本中删除所有自定义的后端地址池、路由规则、HTTP设置等流量路由相关配置,只保留AGW的基础规格、WAF、IP等底层配置。这类AGIC管控的配置完全交给AGIC根据Ingress自动生成,从根源上避免配置冲突。

WAF规格需求适配说明

你无需使用AKS自动创建Application Gateway的模式,现有预先创建WAF_v2规格AGW再绑定AGIC的流程完全可行,只要按上述两种方案调整Terraform配置即可,不需要修改现有部署架构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:18:02