Terraform 在 AKS 节点资源组中创建入口应用程序网关

Posted

技术标签:

【中文标题】Terraform 在 AKS 节点资源组中创建入口应用程序网关【英文标题】:Terraform Create Ingress Application Gateway in AKS Node Resource Group 【发布时间】:2022-01-21 15:39:52 【问题描述】:

AKS节点资源组在创建AKS集群之前不能已经存在,所以在同一个节点资源组中创建应用网关意味着需要在AKS集群之后创建应用网关。但是在 AKS 集群中指定了 ingress 应用程序网关插件,这使得循环依赖:

resource "azurerm_kubernetes_cluster" "example" 
    ...
    ingress_application_gateway 
      enabled    = true
      gateway_id = azurerm_application_gateway.example.id
    


resource "azurerm_application_gateway" "example" 
    ...
    resource_group_name = azurerm_kubernetes_cluster.example.node_resource_group

谁能告诉我如何在 AKS 节点资源组中创建入口应用程序网关?非常感谢

【问题讨论】:

【参考方案1】:

无法在 AKS 节点资源组中部署应用网关,因为您需要在 AKS 之前创建应用网关,并且 AKS 节点资源组不能是现有资源组。

我在我的环境中使用 AKS 资源块 中的 可选参数 进行了相同的测试,您可以提及node_resource_group 的名称。


我创建了一个资源组并在那里部署了应用程序网关,然后在AKS资源块中提到使用 same rg 作为 节点资源组,如下所示:

data "azurerm_resource_group" "example"  #existing resource group where the AKS is being deployed
  name="ansumantest"

resource "azurerm_resource_group" "noderg" #new resource group where app gateway will be deployed and used as node resource group for AKS
  name     = "AKS_MG-ansumanaks-eastus"
  location = "East US"

resource "azurerm_application_gateway" "network" 
  name                = "ansuman-appgw"
  resource_group_name = azurerm_resource_group.noderg.name
  location            = azurerm_resource_group.noderg.location
.....

resource "azurerm_kubernetes_cluster" "example" 
  name                = "ansuman-aks1"
  location            = data.azurerm_resource_group.example.location
  resource_group_name = data.azurerm_resource_group.example.name
  dns_prefix          = "ansumanaks1"
  node_resource_group = azurerm_application_gateway.network.resource_group_name ##uses the appgw rg as Node rsource group

addon_profile 
  ingress_application_gateway 
    enabled    = true
    gateway_id = azurerm_application_gateway.network.id
  

....

输出:

因此,您可以在 同一资源组中创建 应用程序网关,其中 正在创建网络组件AKS

【讨论】:

以上是关于Terraform 在 AKS 节点资源组中创建入口应用程序网关的主要内容,如果未能解决你的问题,请参考以下文章

在同一资源组中创建两个 VM,但 Terraform 不希望销毁第一个

使用 vnet_subnet_id 通过 terraform 启动 AKS 群集 - Azure

Terraform 在子 AWS 账户中创建资源

AKS初体验:登录到node节点的几种方式

Terraform AZ CLI 本地执行命令限制

可以用作 AKS 节点的最便宜的 VM 是啥?