我正在通过 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"
}
}
谢谢!
答案 0 :(得分:3)
您似乎在寻找 pod-managed identities in Azure Kubernetes Service。如果是这样,那么不幸的是,Terraform 似乎不支持配置该属性。当您按照上面的文章配置 pod 管理的身份时,您可以看到这样的 pod 身份配置文件:
并且没有这样的选项供您配置。但是,您可以通过 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 启用身份的方法。