Azure Terraform Kubernetes VMSS 用户分配的身份

问题描述 投票:0回答:1

我对这个配置和我尝试的一切都迷失了,它根本不起作用。

解释一下。我有一个用于部署 Azure Kubernetes 集群的 terraform 代码,如下所示:

resource "azurerm_kubernetes_cluster" "aks_cluster" {
  location            = var.location
  name                = "aks-${var.environment}-${var.region}-${var.aks_name}"
  resource_group_name = azurerm_resource_group.kubernetes_resource_group.name
  dns_prefix          = "aks-${var.environment}-${var.region}-${var.aks_name}"
  kubernetes_version  = data.azurerm_kubernetes_service_versions.current.latest_version
  node_resource_group = "${azurerm_resource_group.kubernetes_resource_group.name}-nrg"

  default_node_pool {
    name                 = "systempool"
    vm_size              = "Standard_D2_V2"
    orchestrator_version = data.azurerm_kubernetes_service_versions.current.latest_version
    zones                = [1]
    enable_auto_scaling  = true
    min_count            = 1
    max_count            = 2
    os_disk_size_gb      = 64
    type                 = "VirtualMachineScaleSets"
    vnet_subnet_id       = azurerm_subnet.system_pool_subnet.id
    node_labels = {
      "nodepool-type" = "System"
      "environment"   = "${var.environment}"
      "nodepoolOS"    = "linux"
      "app"           = "System"
    }
  }

我想做的是在我的虚拟机规模集中启用 systemAssigned 和 UserAssigned 身份。

在集群配置中我添加了以下内容。

identity {
    type = "UserAssigned"
    user_assigned_identity_ids = data.azurerm_user_assigned_identity.user_assigned.id
  }

但这不会添加我创建的现有托管身份。 所以我认为我做错了什么并尝试仅使用系统分配的身份,但这也没有启用。我在 terraform 文档或配置中找不到任何参考。

所以我尝试运行 az 命令:

az aks update -g <resource-group> -n <cluster-name> --enable-managed-identity

上面的方法可行,但不在规模集上,这是可以理解的。

有人可以告诉我我在这里做错了什么吗?

我想要的是启用用户管理身份并将其分配给我的 VMSS,并且可能同时执行这两项操作(SystemAssigned 和 USerAssigned)。

我希望我能很好地解释我的意图,如果没有,请随时询问更多细节。

terraform azure-aks terraform-provider-azure
1个回答
0
投票

我想做的是在我的虚拟机规模集中启用 systemAssignedUserAssigned 身份

您无法使用 Terraform 将 systemAssignedUserAssigned 身份 分配给

VMSS
,因为它一次仅支持一个 Identity 块。

注意:如果代码中未指定

kubelet_identity
块,则会自动创建用户管理身份并将其分配给 VMSS,但它只接受用户管理身份,而不接受 systemAssigned

enter image description here

这里是更新的代码,用于创建

AKS
并为 VMSS
 启用现有的 
UserAssigned 身份

    provider "azurerm" {
      features {}
    }
    
    data "azurerm_resource_group" "example" {
      name = "Venkat"
    }
    data "azurerm_user_assigned_identity" "example" {
      name                = "Aks-UAMI"
      resource_group_name = "Venkat"
    }
    
    resource "azurerm_kubernetes_cluster" "aks_cluster" {
      location            = "East US "
      name                = "demovenkatakscluster1"
      resource_group_name = data.azurerm_resource_group.example.name
      dns_prefix          = "aks-demo"
      node_resource_group = "${data.azurerm_resource_group.example.name}-rg"
    
      default_node_pool {
        name                 = "systempool"
        vm_size              = "Standard_D2_V2"
        zones                = [1]
        enable_auto_scaling  = true
        min_count            = 1
        max_count            = 2
        os_disk_size_gb      = 64
        type                 = "VirtualMachineScaleSets"
        node_labels = {
          "nodepool-type" = "System"
          "nodepoolOS"    = "linux"
          "app"           = "System"
        }
    
      }
      identity {
        type = "UserAssigned"
        identity_ids = [data.azurerm_user_assigned_identity.example.id]
      }
    
    kubelet_identity{
         client_id  = "user assigned identity Cleint ID"
         object_id = "user assigned identity Object ID"
          user_assigned_identity_id = data.azurerm_user_assigned_identity.example.id
        }
    }

输出:

enter image description here

参考:azurerm_kubernetes_cluster

© www.soinside.com 2019 - 2024. All rights reserved.