Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forced replace after importing azurerm_kubernetes_cluster #7198

Closed
parmus opened this issue Jun 3, 2020 · 2 comments · Fixed by #7233
Closed

Forced replace after importing azurerm_kubernetes_cluster #7198

parmus opened this issue Jun 3, 2020 · 2 comments · Fixed by #7233

Comments

@parmus
Copy link

parmus commented Jun 3, 2020

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform (and AzureRM Provider) Version

Terraform v0.12.26

  • provider.azurerm v2.12.0

Affected Resource(s)

  • azurerm_kubernetes_cluster

Terraform Configuration Files

variable "subscription_id" {
  type    = string
  default = "290907b3-e6a6-4cee-8760-828102dc619a"  # Replace with your own
}

variable "resource_group_prefix" {
  type    = string
  default = "k8-import-test"
}

variable "resource_group_suffix" {
  type        = string
  default     = "01"
  description = "Use the suffix to quickly rerun experiments without waiting for deletion of previous resources"
}

variable "location" {
  type    = string
  default = "West Europe"
}


locals {
  resource_group_name = "${var.resource_group_prefix}-${var.resource_group_suffix}"
}



/**********************************************
 * Pin Terraform and Azure Provider versions
 **********************************************/
terraform {
  required_version = "= 0.12.26"
  backend "local" {
    path = "terraform.tfstate"
  }
}

provider "azurerm" {
  version         = "~> 2.12.0"
  subscription_id = var.subscription_id
  features {}
}


/**********************************************
 * Resource group
 **********************************************/
resource "azurerm_resource_group" "resource_group" {
  name     = local.resource_group_name
  location = var.location
}



/**********************************************
 * Basic virtual network and subnet
 **********************************************/
resource "azurerm_virtual_network" "network" {
  name                = "${azurerm_resource_group.resource_group.name}-network"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
  address_space       = ["10.50.8.0/23"]
}

resource "azurerm_subnet" "subnet" {
  name                 = "${azurerm_resource_group.resource_group.name}-subnet"
  resource_group_name  = azurerm_resource_group.resource_group.name
  virtual_network_name = azurerm_virtual_network.network.name
  address_prefixes     = ["10.50.8.0/24"]
  service_endpoints    = []
}



/**********************************************
 * Kubernetes cluster + node pool
 **********************************************/
resource "azurerm_kubernetes_cluster" "azure-k8s-test" {
  name                = "azure-k8s-test"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
  dns_prefix          = "azure-k8s-test"

  default_node_pool {
    name                = "default"
    enable_auto_scaling = true
    min_count           = 1
    max_count           = 100

    vm_size        = "Standard_F2"
    vnet_subnet_id = azurerm_subnet.subnet.id
  }

  identity {
    type = "SystemAssigned"
  }

  role_based_access_control {
    enabled = true
  }

  network_profile {
    network_plugin    = "kubenet"
    load_balancer_sku = "Standard"
  }
}

resource "azurerm_kubernetes_cluster_node_pool" "compute_nodes" {
  name                  = "computenodes"
  kubernetes_cluster_id = azurerm_kubernetes_cluster.azure-k8s-test.id
  vm_size               = "Standard_F16s_v2"
  vnet_subnet_id        = azurerm_subnet.subnet.id

  enable_auto_scaling = true
  min_count           = 1
  max_count           = 35

  node_labels = {
    prometheus         = "ignore"
    tutkia-worker-type = "cpu"
  }
}

Debug Output

Debug output for

  • terraform plan before import
  • terraform import
  • terraform plan after import

https://gist.github.com/parmus/4b268bca6ab990b755b74daa565e8d9b

Expected Behavior

After importing a cluster I would expect the Terraform state to be up-to-date and terraform plan to report no changes.

Actual Behavior

Terraform wants to replace the cluster even though it was just imported:

Terraform will perform the following actions:

  # azurerm_kubernetes_cluster.azure-k8s-test must be replaced
-/+ resource "azurerm_kubernetes_cluster" "azure-k8s-test" {
      - api_server_authorized_ip_ranges = [] -> null
        dns_prefix                      = "azure-k8s-test"
      - enable_pod_security_policy      = false -> null
      ~ fqdn                            = "azure-k8s-test-c696e77d.hcp.westeurope.azmk8s.io" -> (known after apply)
      ~ id                              = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourcegroups/k8-import-test-01/providers/Microsoft.ContainerService/managedClusters/azure-k8s-test" -> (known after apply)
      ~ kube_admin_config               = [] -> (known after apply)
      + kube_admin_config_raw           = (sensitive value)
      ~ kube_config                     = [
          - {
              - client_certificate     = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUvRENDQXVTZ0F3SUJBZ0lRUXVnSjVGUlNTSkUxdXl5MC9iRTE5ekFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TURBMk1ETXhPRFF4TXpWYUZ3MHlNakEyTURNeE9EVXhNelZhTURBeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1SVXdFd1lEVlFRREV3eHRZWE4wWlhKamJHbGxiblF3CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUR1RzFBTDdSMmFMSEdFdUFxUkUzWmMKcWQ5b0pXRWZCUDFnWndtc2VmOW1xZ3ZuVS91cEsyR0g4SGhFaVphcUllQWxJcVM0dDVDMkxmTU1Nd3ZDYkZzMQpTZDA2L3FQRnRHOVlnQVFsSDRnTVJPWlBzdDB1MUdXTTFrcFVkRkVjbTh6L2RBVkI4WExQVnU0UzFFUERzL3J2CkJSSkFtZ0c1TGNpT09HNFYwYVlvemhRZFNoM2RMUzFURGUzMGd6aXNkWFUxOHNrZ3YyT0xTdE1ucThhWGFxSmEKUml6L2MzU0l0d25SbXdjMXVMdnJ4L1JndFVxSklhb0xsaG1DaWlYZDU0Q1gwOHl3Q1JtNHBRRWJna0tJcWFoNApPL3dVZHNZdEprS0dRK2ZkaHVuZC94Q1pwaHlEazdiM2loTTlVcVBLNkxWam0yalRVZUZmUTIzTXdrNlRnQzFJClBUVFBEZVhaL3c4b1N4WDZKeGQzNG9sMmZGMmxJT3NDeFJMaE5PRUl0dEJ5cXo3b2FLdUpuZHpXdE41OWpJMWkKK2Q5YnJGNjlCOGcxNHdmWVdGeExRUmxjcmN2RjdtZE9lMjRSYVdybXU4bmZOdjZtRUI0SG1MSzFqRVZGT251QQpQNnB1THdtNWhkYlBaUkhLcVNMWFB3UEVEUEVGRVdKc2tUTmQzellYM3ozR0Q0Qy9aM2FqU2J3WXh1QklzRmVBCjlrUEU5RW96Snl4WGY0YjJFMllHaGZJb3hOdERnemhPOHNONGNwUGhyMTJYNmRtT0lGdlMxK0JjdFY3bG5mL2sKTjJTaHE0TWpSRHZ0NkpwMTFEUk9sbXlnQi84T0p2ZnZOSm9TblBWVnF0Wk5FLzZvcUxpcXBPWGJmUndCZ3VNTQpYdkhNYWJZcitIUlYwWjZKZmhhYTZRSURBUUFCb3pVd016QU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsCkJBd3dDZ1lJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUEKV3YrRTY1VTZQbGppalJZSnJsYllVRjFxaStVS0ZwaWd4WElCckJ2NDJEMDJqcFdMVGwwSUd3NnYrOVRVbkMrKwpHWk5rTkx4MWFhOW9vZGtFYjNQZEZ2SlhZcXY1bndiUCt3bWF5dnNUaTB4VUhlcU1PeUxIVVBhNTVDczRNRElYClVpd1JRMmxQMGJPWmpPOGZLVzE5Tkw4cmRvR3JOYUpqczBIZzdoenlSUjlScWYxbnlJRWNMRGZkWnFENi9JZVMKRGFmS1o1SmRDQVFUSWFyS0ptUFp1SlQ5b1BEWkhybWF2LzZBd1I2ZENjc2libmYrNTVHUHVRVnBjL3FIeVZTaApvUkdUWjlQTXlsZ05EeHFQcTY5anJ0dE8rcGVsb29qa05GcmdXMno4d2tweVIvTERIWmJucy9xSzY2d0p4SFY0CjNsWVZZdFFQQWhwWGljWnU5alNTbCsrQWtVMzlNd3VIalZmUm9RVzlDSmFLY01QQjIvRWk2Um9DRU93Y2dQKy8KYXZxbmpJQnQySXVxWG14bDRyRVhDcDVuZ21LWlBOQVV2blZ3a0ZKd3dlbnhuV25weTd4OGdrR3JaazFiTW5OVQp4NmptNkp4eXdoTk5Fb3ZNK0daVWg1TGs1b3ExYUd5c0xsT2pqOWNBYWRlM0VJSGt1ZVRGWExvYkN1eEg4YU5OCmpnNEtQa2hYSksrWWs3ZFMvTit6UVd0UUIybXljQ2lDbjVlVVdwa3QrRVl3SVI0RHFVTHh4blhFK0pMREZIQ1UKNVYrcUFzM0dOTWxNVXpRTm1hckJPODBjQW92RUVVYXVOc0xzeTBMUmc4RjgvMW8xSDFRbk5UVUc3b052d24yRAp5MThyd1E3cisyU0NvdVM1Sy9YOGVZOWZwRmRTbWRVY0ZGZERBZ0RwaW9BPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
              - client_key             = "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBN2h0UUMrMGRtaXh4aExnS2tSTjJYS25mYUNWaEh3VDlZR2NKckhuL1pxb0w1MVA3CnFTdGhoL0I0UkltV3FpSGdKU0trdUxlUXRpM3pERE1Md214Yk5VbmRPdjZqeGJSdldJQUVKUitJREVUbVQ3TGQKTHRSbGpOWktWSFJSSEp2TS8zUUZRZkZ5ejFidUV0UkR3N1A2N3dVU1FKb0J1UzNJampodUZkR21LTTRVSFVvZAozUzB0VXczdDlJTTRySFYxTmZMSklMOWppMHJUSjZ2R2wycWlXa1lzLzNOMGlMY0owWnNITmJpNzY4ZjBZTFZLCmlTR3FDNVlaZ29vbDNlZUFsOVBNc0FrWnVLVUJHNEpDaUttb2VEdjhGSGJHTFNaQ2hrUG4zWWJwM2Y4UW1hWWMKZzVPMjk0b1RQVktqeXVpMVk1dG8wMUhoWDBOdHpNSk9rNEF0U0QwMHp3M2wyZjhQS0VzVitpY1hkK0tKZG54ZApwU0RyQXNVUzRUVGhDTGJRY3FzKzZHaXJpWjNjMXJUZWZZeU5Zdm5mVzZ4ZXZRZklOZU1IMkZoY1MwRVpYSzNMCnhlNW5UbnR1RVdscTVydkozemIrcGhBZUI1aXl0WXhGUlRwN2dEK3FiaThKdVlYV3oyVVJ5cWtpMXo4RHhBengKQlJGaWJKRXpYZDgyRjk4OXhnK0F2MmQybzBtOEdNYmdTTEJYZ1BaRHhQUktNeWNzVjMrRzloTm1Cb1h5S01UYgpRNE00VHZMRGVIS1Q0YTlkbCtuWmppQmIwdGZnWExWZTVaMy81RGRrb2F1REkwUTc3ZWlhZGRRMFRwWnNvQWYvCkRpYjM3elNhRXB6MVZhcldUUlArcUtpNHFxVGwyMzBjQVlMakRGN3h6R20ySy9oMFZkR2VpWDRXbXVrQ0F3RUEKQVFLQ0FnRUFqaDlEWWpzQUpseE16ZGxFaFYvR2tIemMycjhrLzJ6dENETzRkSGpGVjdROE1ySFFUeU9Uclo1OQpTdnVOTUxQVHBKYlBGMnFLT0JPcE5TanE1ZnZqWFNWZnBhMEVlQ2ZCSm1RVEZVMkMyVC91OExka2ltVkEwQlhBCmZEU0pqYmY1WHFrVDBrNmFKdVJPYW5MRWwvVy8zQmQ4MDQ2WlpMek5Md2JEdnNaS2xhU2NJUGR5WitobFcyTy8KR3VtUVZIQXZyQ25rbjJWZHQzRE1KS3ZGZCsrd1JJNEtvZGQ2UVhodnBlc1JIS0hObVdqYWx6YmU3SWRwaGt6cgpvUjF3aU1sNzJpUVQweWM3Y1JrY1ZoMGtOWXAvQW5WYmU2T0Jtc1Z4Zzg3WWdVUGNLQ1BzOXFsTjc4T2x2STl2CitIUnhTOVluSHZOT1dJUlJMNW1CMm14SWxvWTFmL2dVTHgrMkJKRnE5c2N1ZUdaQ0FFcVZralBxZmlzaWdiT3kKU1hiVC83eGhwKy9ZbXFpWnNtVjVmemFvQStkbzNjWkk0c29zdGU4MG10eWxUc005TGRaNVNxcXZlNldRb1lxZApqbUY5OW54Z2xZZUk4YjRlUG15V3RQWlE3M1Z0S2ZaK3RrY0hIU0dxeUt4VnE3YjBZT1BWblhWZ3dKREY0eXIyCmExWS8vWHVXSVpoNk1UTlRmQzJDZGw0Z1duTjRlcXRLY0FxQWNkSFljSGVVTzRRWjZYdUR5TE1XQ1VFU0dDaHgKY3RCa2NtVDkxQVNyZ2hRdXBlaXdxSWd4SS93aEt6SXIxQXo1MW5QL3dYSzJydUxlZ1Mya2R6U1lhOGlPR0R6TQpXY2srMHV5eElHN0tqMlhmejhtVEtoOU9vN0pkMTRISTZuUER0LzlCSmowdzRHWU9QR0VDZ2dFQkFPNzNhTFROCmgvSnR6NElXYVBleGJoQkk0ajNZL3U3T2h0Ti84eVVwYlNHVzNNSEFkSE5hOEVDbWdaUWNVaE1mVHFyeUpYZnIKVkFPOTRUVWFKbHZTd3paQTF3VHFUNHJqSlNtc0NlODM2em5hQWVqa21EWkRCSjZ1c2h4Y1RzR1lMMGlaR1BZSgpNRzhubEI2RC9EWnFpdlFVNWVzREY1QTM0RXdYSHRRcTRsOHN2cjA5UHcrRXpwYjhWUnZneEdEdVkyRjN2UjM2CkpGSDZjenZleTg5WVZpZkprTzNyWjBJRUFFR0F2MVJjVWdidVRZYWdiekN4ZVgvdlR3ckJDdmo2eUhsUGdQTFgKRkc1bWY1MFFHMldCdjJLaEdSSTVBUGxsSjJsMDNMRUlnd3NjbDFVd2pOajd6MnRJVWdVcWhJRU5BVnc2NVA0bApKUGU2bXBCb0NtWXcrWlVDZ2dFQkFQOFVOeFgwd2NjQWYrdExuVnBRUVYyUmVYNlZFeWtxMWoyWHRuZUFFYkVsCm5EeTFMNnJKTjVXbXA0aG1LcGFNRHJ6MVN5QnFXaWtuOW9NRjM3QTBjczFGQk9oQk4yejZQVkxjLzVDaGVnRzIKeVNLQUl3alVva2tnL3BuTFVZMnVnZnZ5QWI3STRiZ3l5OFEzSWlWSmdRWjU4NnQ5UDVLOXdYN3BqVmtPWjRPNwozY3poRFF5V3pZaENZRld1ajE4SVJhV2ZKM2RXc1JjZTJIOWN6bzFEQTc3M2VGNXdQb2VnRWlkMEM3djk3VWpPCjFLMnpURTJtWWU4WklzSitERENUZ1BLcWRFbHV5ejh1dVpQaFd4YjdUamRvNlg5SThyZzFhZ3dQbkZEOXhYa1oKd29VMWNTSWNCcHJPSEZ2Yy80SE9jSG5Vd2U0U1pZeHMvdzB0cWhINkR3VUNnZ0VBV05kNGdRZU1qRS9RL3U4dgo5UzVzMmZjT3phbVlGZGFJZjZjcEVWN1dhTTk2b1RuWTBXNDB0Z1J4Vmt3MUkxRFhZV3lIQzQ5Yys4c2pLQ2ZoCnJPK3RqY1VMYTVObElTQ1RsMnVUZ2ZGTExZWGtnZDVDektHYjNSYmJ0dm1HZWlrSEl6bHY4MEMxVmczajNuaDUKVXczSFBUbHJ4VFN3RlBrQkZhamUyRWhkUXI4UzVxNFhmTUNHUWRIc0htSXhBRXlBZkNNVkYwa0JLYzB2L0VrMwpnbzIzOGpEWkJlc254MzVQVGdyOGx2Ti90MzN2S3FjSXo1U2J0RG1YTEV0YXRmZ2VnaU5Sc0hiUDdMK0VvREwxCnpJWXhUZ3pRa2xySkJ1OVplTFp1dWc2TkVadCtrN2hxRk4yQlhzUlRZZ0pOb3VEZjZaY252V2kzMXJYMGNzMkwKV0RUTEJRS0NBUUVBazM0VjZCMHhteWNmMEdkVm9pNDd6YVhia2FVVGdqOWh5QldjalhiQlJDUlNOZ3d5ZHRlSQp5NENrNk1yaW4xQjNDUzN3OWRwcExka013bkE0Q3NRWkNiWjZBdTRLNVhuQTBkUTE5bVJZanZzcFRFaTVlVmF5ClRBVEhFeGlzbkhjbWRBOVlrUC9JL09CcVVKZnNwNURjQ1dta3l5bE9CRVN5eVBhMUk2U2ZtRjJkLytTMXpleTUKQmF3VDFoZHNrVy9RRGRkOFU1WU9LaWRNMmtCSXN3Zm45NWxTd1pDM3AyYVllTFd5UDA2eDBPSy91WHl1aDB2SQozeDh5cVRHSFRPTk5zWU44WUNXdlltWmJLallwbkoxTmVkNncvVWVxQ1hmaFRQNE56Z3NmRDBvazN5K3FyaVYwCmNEanp6dTUzMDVBU0czQTVmcmFtZjA5Ykh6eWpWV2U1SFFLQ0FRQS9Dd0h3VHpNWVg5Vm1qd0k3MWNrWUVIMzEKdGlCdUdGQVVxYlpJNVhnSStPRkRrQmFjcGtxejN2RDl0UlZCY1NMNkE1VDJIQXBMbElMdlFMU0l3TWNmTjZ4NgplVWNjOURLK2lybXVLS2ZJN0ljbTNFQkFRTGYyMXA2Wis4VExZb0N5cTJwSmllalBSYzFnV3hQd0oxcWRpQXF1ClVBU3pyaFFwUjBYZjJxVmFGcXdBTWNEQ21QVzFYZ0FydEh6WXA4aVhoZi9wN1RDV0VvdTZSN1dDbDVwOFdTRnAKOC94WTBMUUl1RlBmdUdVNFpGeWhRNG1Dc0NmdGlXTXlJYkFiYWMvRmlod28yRnFxODdaTG1Ja3FybXZVRStZMQova1RMS0c5WXg0cG9DTWhNS1VhZE55RnFudE1JbkJXa2pxbVVYVDZVUjNOcUU3dVZWdldEdWN0S0VHemkKLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K"
              - cluster_ca_certificate = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV5akNDQXJLZ0F3SUJBZ0lSQU9jWEdibkZyZUl4cjhyUEowSHU3QXN3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdJQmNOTWpBd05qQXpNVGcwTVRNMVdoZ1BNakExTURBMk1ETXhPRFV4TXpWYQpNQTB4Q3pBSkJnTlZCQU1UQW1OaE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCnZpQStMa2pBaGZrVGZBU1ZBbzVwaUo1VzArY0MrWVkyR0ZBb0xhdnR3dGMwMkFSQ0pQYmFjaElrZmM4L0UwQ1EKczBOUTluUVhIYVR4Z3JmUDB6a09idldpZlM5OFZENGdwMFpMRkRpUWZLK2RNc2srcnlXQ3p3RERwVEh4YXVncwpwNW5wWE9rNDFhbGNDajNodWZtNUxRWXFyWGYrZmpML1VxaWtNS0NGcFgzckZaOVBmc1NKUi9rd1hyMEVyTTFICktnelo3Z2k4eWl1dEhDZG96S25weVpyM1hkSU5GRDE4SFNHb3hKbmJOSVg5ZU4wdzlHUG9DSkRBUWQvbDZIclUKSVFQOE1CZktrcXJSWkJoeldacFpWWEtNVG1tcENyY3hKbnJWTERyMkxOcWFlbzhsZlFsTDY4QWdYTFZsWFBZZwpERndyUEd6Z3kzM2FCN1lFM29yS1JXZ2tSTEgyUXRKOTVKQ1hsZEcrZU1HMjM5Rm02Mmw2NWVZS0FsYmJKWVdNCjRzWDhkYzJ3TjA3WmJDTTlybEx2MUNEZkZSRUdaZTVUQ3ZkNU9EOU4yOCtJeWEwaGNSd1pRbDFrWVZqVGthb08KUFljeFdFeS9MNWRrckJKQ1lJVEhpd1BuUEQ3bUxRcDQxemZhckJ5TE9VNUROYzErS3VTeVlaNUZXcnpoTG93bQpuVXcyYjhJZGxjOTFxcEN3N2k5aC9KaFd3L0ZFNXZ0US9CazBPYVFPeERVRkMxMmtIS0F4WDVIc1kwR3lNYlRwClRHUjhpaTRQYWFnY0lhUjlidmpyeStpdG5aUFF6dWdVclZmRXIzZXNTeXZNMnFUMU9ZMVgxNjFkVTA2UkMxT08KZGVoZ2tkcW4xNTZxOGZDSVd1OGhzQjJSZXBnUjVRUCtQTGFJWmpiakw0RUNBd0VBQWFNak1DRXdEZ1lEVlIwUApBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBQ3RjCnhUUXpxOEt1Z0hFcnFEcFN2T3hnTDltekRoRTlpajhiMFE1eWZRZTUwMUNRaS9kbHlKZVBYbS85VWVUNU05emEKcVg3Vk0rWEpXbXAxZnRkVk5iaytOVkl6M1hzdHpTd0d3U1R0bFQ2eUw5WjhXcENnbFVGR044QVVEZUwrZkhLbQpxY2h0czBXWnRGalFrMlhIK2FQRmdZcFdUbTFnUTdUeWRsUDd3YUhkYmc5TTBBSTNmNmdHOGdFYnBONzdLSEw1Cmdqc1VzanNwVzZvamlja21USHpONTJkZWF4QzJIUVRmQnlGeHllc2RHZy9ySVlqM09PQXR4U3hqVXdmZURtUzgKK1RhUDcxUVBUanVpMm4vdk5YQmFKaXdtTXdpekVZcHBsazRybDAvS2Z3d3NSNnE3ZjJEK2xlTUhDMU5qTHB1cQpkcXgyT2VzOWwwSC94UHcydnlnNXl4NXpaZFN0Sm8zVWZBWHdaYS9SWEEvZVFnbUhFT21wT3Z4RWpGSUczYm9MCjdkZkREaTBGWmxXWEFBaTg5VkR5TVlZMktTZFpDT05EMWpFVUtDZFdtYzhQYTdXRzVvVFJMWFZXY1FCUU8wYlUKL0tnTHgwV2VwcktKRzhFcFVjWldqR3JqbSt3VjFLK0Rpak5aSFlxTU5VbXhsSHY1Z1ZYTWUrZUlxYTRRODlKRgpDa3k0dk1rMTgvYkJsbDZLcVdSNHVPbHJMMXY2Q1BNamRVOTROdzRQK1cxWksraTJSWXR2UVYxdmNaemEyN1NoClVYMkxxMjVQVEJXSXc4OXl5c2VUNjBTbXZad00wejF3UFBPbWtQN0Z6WnN0VUxROTdVV0J5TXAvT2hiL01pcWYKM01Rb2JZeXJsdS9DZGlBN21zTEJmN2N2OC9jWGVHendaOE9yUHlJMAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
              - host                   = "https://azure-k8s-test-c696e77d.hcp.westeurope.azmk8s.io:443"
              - password               = "c1ce392ff64ec74388d0f0b1e41e23eb4b8028c7407241fb9fe3a903c1c76729daf345b752e1fddcec5bbc238026f055d1c6a9a018b4861ee79dc9397e56cdaf"
              - username               = "clusterUser_k8-import-test-01_azure-k8s-test"
            },
        ] -> (known after apply)
      ~ kube_config_raw                 = (sensitive value)
      ~ kubelet_identity                = [
          - {
              - client_id                 = "c283a8d5-33b4-44df-86cf-2226e385f13f"
              - object_id                 = "ccde6087-ef5f-4c27-914d-344455e95f36"
              - user_assigned_identity_id = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourcegroups/MC_k8-import-test-01_azure-k8s-test_westeurope/providers/Microsoft.ManagedIdentity/userAssignedIdentities/azure-k8s-test-agentpool"
            },
        ] -> (known after apply)
      ~ kubernetes_version              = "1.15.11" -> (known after apply)
        location                        = "westeurope"
        name                            = "azure-k8s-test"
      ~ node_resource_group             = "MC_k8-import-test-01_azure-k8s-test_westeurope" -> (known after apply)
      ~ private_cluster_enabled         = false -> (known after apply)
      + private_fqdn                    = (known after apply)
      ~ private_link_enabled            = false -> (known after apply)
        resource_group_name             = "k8-import-test-01"
      - tags                            = {} -> null

      ~ addon_profile {
          ~ aci_connector_linux {
              ~ enabled     = false -> (known after apply)
              + subnet_name = (known after apply)
            }

          ~ azure_policy {
              ~ enabled = false -> (known after apply)
            }

          ~ http_application_routing {
              ~ enabled                            = false -> (known after apply)
              + http_application_routing_zone_name = (known after apply)
            }

          ~ kube_dashboard {
              ~ enabled = false -> (known after apply)
            }

          ~ oms_agent {
              ~ enabled                    = false -> (known after apply)
              + log_analytics_workspace_id = (known after apply)
              ~ oms_agent_identity         = [] -> (known after apply)
            }
        }

      ~ default_node_pool {
          - availability_zones    = [] -> null
            enable_auto_scaling   = true
          - enable_node_public_ip = false -> null
          ~ max_count             = 35 -> 100
          ~ max_pods              = 110 -> (known after apply)
            min_count             = 1
          ~ name                  = "computenodes" -> "default" # forces replacement
          ~ node_count            = 1 -> (known after apply)
          - node_labels           = {
              - "prometheus"         = "ignore"
              - "tutkia-worker-type" = "cpu"
            } -> null # forces replacement
          - node_taints           = [] -> null
          ~ os_disk_size_gb       = 100 -> (known after apply)
          - tags                  = {} -> null
            type                  = "VirtualMachineScaleSets"
          ~ vm_size               = "Standard_F16s_v2" -> "Standard_F2" # forces replacement
            vnet_subnet_id        = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourceGroups/k8-import-test-01/providers/Microsoft.Network/virtualNetworks/k8-import-test-01-network/subnets/k8-import-test-01-subnet"
        }

      ~ identity {
          ~ principal_id = "5c53356a-2cc7-4f23-8c80-796be1e2eb25" -> (known after apply)
          ~ tenant_id    = "7f9add40-5755-496f-a5f8-e03f12cea033" -> (known after apply)
            type         = "SystemAssigned"
        }

      ~ network_profile {
          ~ dns_service_ip     = "10.0.0.10" -> (known after apply)
          ~ docker_bridge_cidr = "172.17.0.1/16" -> (known after apply)
            load_balancer_sku  = "Standard"
            network_plugin     = "kubenet"
          + network_policy     = (known after apply)
            outbound_type      = "loadBalancer"
          ~ pod_cidr           = "10.244.0.0/16" -> (known after apply)
          ~ service_cidr       = "10.0.0.0/16" -> (known after apply)

          ~ load_balancer_profile {
              ~ effective_outbound_ips    = [
                  - "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourceGroups/MC_k8-import-test-01_azure-k8s-test_westeurope/providers/Microsoft.Network/publicIPAddresses/d8215faf-3216-4122-9df1-d21efaaff349",
                ] -> (known after apply)
              ~ managed_outbound_ip_count = 1 -> (known after apply)
              ~ outbound_ip_address_ids   = [] -> (known after apply)
              ~ outbound_ip_prefix_ids    = [] -> (known after apply)
            }
        }

        role_based_access_control {
            enabled = true
        }

      - timeouts {}

      + windows_profile {
          + admin_password = (sensitive value)
          + admin_username = (known after apply)
        }
    }

  # azurerm_kubernetes_cluster_node_pool.compute_nodes must be replaced
-/+ resource "azurerm_kubernetes_cluster_node_pool" "compute_nodes" {
      - availability_zones    = [] -> null
        enable_auto_scaling   = true
      - enable_node_public_ip = false -> null
      ~ id                    = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourcegroups/k8-import-test-01/providers/Microsoft.ContainerService/managedClusters/azure-k8s-test/agentPools/computenodes" -> (known after apply)
      ~ kubernetes_cluster_id = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourcegroups/k8-import-test-01/providers/Microsoft.ContainerService/managedClusters/azure-k8s-test" -> (known after apply) # forces replacement
        max_count             = 35
      ~ max_pods              = 110 -> (known after apply)
        min_count             = 1
        name                  = "computenodes"
      ~ node_count            = 1 -> (known after apply)
        node_labels           = {
            "prometheus"         = "ignore"
            "tutkia-worker-type" = "cpu"
        }
      - node_taints           = [] -> null
      ~ os_disk_size_gb       = 100 -> (known after apply)
        os_type               = "Linux"
      - tags                  = {} -> null
        vm_size               = "Standard_F16s_v2"
        vnet_subnet_id        = "/subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourceGroups/k8-import-test-01/providers/Microsoft.Network/virtualNetworks/k8-import-test-01-network/subnets/k8-import-test-01-subnet"
    }

Plan: 2 to add, 0 to change, 2 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Notice that the import have imported the wrong pool as the default pool.

Steps to Reproduce

  1. terraform apply
  2. terraform plan (no change)
  3. terraform state rm azurerm_kubernetes_cluster.azure-k8s-test
  4. terraform import azurerm_kubernetes_cluster.azure-k8s-test /subscriptions/290907b3-e6a6-4cee-8760-828102dc619a/resourcegroups/k8-import-test-01/providers/Microsoft.ContainerService/managedClusters/azure-k8s-test (replace subscription ID with you own)
  5. terraform plan (now Terraform wants to replace the cluster)

Deleting the node pool and reimporting the cluster will import the correct node pool (default) as the default node pool, and returns Terraform to not reporting any changes.

@ghost
Copy link

ghost commented Jun 11, 2020

This has been released in version 2.14.0 of the provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading. As an example:

provider "azurerm" {
    version = "~> 2.14.0"
}
# ... other configuration ...

@ghost
Copy link

ghost commented Jul 11, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. If you feel I made an error 🤖 🙉 , please reach out to my human friends 👉 [email protected]. Thanks!

@ghost ghost locked and limited conversation to collaborators Jul 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants