Terraform:如何检索 aks 管理的出站 ip

Terraform: How to retrieve the aks managed outbound ip

在标准 sku 的 aks 托管 slb 中,azure 自动分配一个 public ip。

此 public ip 的名称是自动生成的,但具有以下标签

"tags": {
          "aks-managed-type": "aks-slb-managed-outbound-ip"
        },

创建后我无法检索此 ip。

名称也是自动生成的

"name": "[parameters('publicIPAddresses_837ca1c7_1817_43b7_8f4d_34b750419d4b_name')]",

我尝试使用 azurerm_public_ip 数据源进行过滤并使用标签进行过滤,但这不起作用。

data "azurerm_public_ip" "example" {
  resource_group_name = "rg-sample-004"
  filter {
    name = "tag:aks-managed-type"
    values = [ "aks-slb-managed-outbound-ip" ]
  }
}

上面的代码是不正确的,因为没有提供 name 参数,但在创建之前我不知道名称。

我想为我在申请阶段创建的 Azure MySQL 数据库将此 IP 列入白名单。

是否有任何其他方法可以在 terraform 应用期间检索此 public ip?

给你,我们用它来将从 AKS 到密钥保管库等的访问列入白名单:

data "azurerm_public_ip" "aks_outgoing" {
  name                = join("", (regex("([^/]+)$", join("", azurerm_kubernetes_cluster.aks.network_profile[0].load_balancer_profile[0].effective_outbound_ips))))
  resource_group_name = "YOUR_RG"
}