如何为 terraform kubernetes 部署上的虚拟机规模集启用托管标识

时间:2021-01-28 20:00:41

标签: azure kubernetes azure-aks terraform-provider-azure

我正在通过 terraform 部署 AKS。 它运行良好,但我还想在 VMSS 对象上启用身份,以允许 pod 级别的托管身份访问(主要是从密钥库中获取密钥)。

我可以通过转到 Azure 在启动 AKS 群集后创建的自动创建的 VMSS 对象来手动执行此操作。

但是,我在 terraform 资源中没有看到此选项。

有没有人遇到过这个问题并找到了解决方法?

我的部署代码是这样的:

resource "azurerm_kubernetes_cluster" "main" {
  name                = "myaks"
  location            = "centralus"
  resource_group_name = "myrg"
  dns_prefix          = "myaks"

  node_resource_group = "aksmanagedrg"

  default_node_pool {
    name            = "default"
    node_count      = 1
    vm_size         = "Standard_B2ms"
    vnet_subnet_id  = "myakssubnetid"
    os_disk_size_gb = 128
  }

  identity {
    type = "SystemAssigned"
  }

  addon_profile {
    aci_connector_linux {
      enabled = false
    }

    azure_policy {
      enabled = false
    }

    http_application_routing {
      enabled = false
    }

    kube_dashboard {
      enabled = true
    }

    oms_agent {
      enabled = false
    }
  }

  network_profile {
    network_plugin = "azure"
    load_balancer_sku = "standard"
  }

}

谢谢!

1 个答案:

答案 0 :(得分:3)

您似乎在寻找 pod-managed identities in Azure Kubernetes Service。如果是这样,那么不幸的是,Terraform 似乎不支持配置该属性。当您按照上面的文章配置 pod 管理的身份时,您可以看到这样的 pod 身份配置文件:

enter image description here

并且没有这样的选项供您配置。但是,您可以通过 null_resource 和配置程序 local-exec 在 Terraform 中运行 Azure CLI,示例如下:

resource "null_resource" "aks_update" {
  provisioner "local-exec" {
    command = "az aks update --resource-group ${azurerm_resource_group.aks.name} --name ${azurerm_kubernetes_cluster.aks.name} --enable-pod-identity"
  }
}

resource "null_resource" "aks_add_poidentity" {
  provisioner "local-exec" {
    command = "az aks pod-identity add --resource-group ${azurerm_resource_group.aks.name} --cluster-name ${azurerm_kubernetes_cluster.aks.name} --namespace ${var.pod_identity_namespace} --name ${azurerm_user_assigned_identity.aks.name} --identity-resource-id ${azurerm_user_assigned_identity.aks.id}"
  }
}

这可能是一种在 Pod 级别为 AKS 启用身份的方法。