Skip to content

Commit 3b118fb

Browse files
committed
using azapi update resource to update aks kubernetes_version when user changed it at Terraform side, ignore all other changes outside of Terraform
1 parent 365167d commit 3b118fb

3 files changed

Lines changed: 39 additions & 0 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,18 @@ The following sections are generated by [terraform-docs](https://github.com/terr
242242
| Name | Version |
243243
|---------------------------------------------------------------------------|------------------|
244244
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3 |
245+
| <a name="requirement_azapi"></a> [azapi](#requirement\_azapi) | >= 1.4.0, < 2.0 |
245246
| <a name="requirement_azurerm"></a> [azurerm](#requirement\_azurerm) | >= 3.47.0, < 4.0 |
247+
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 3.0 |
246248
| <a name="requirement_tls"></a> [tls](#requirement\_tls) | >= 3.1 |
247249

248250
## Providers
249251

250252
| Name | Version |
251253
|---------------------------------------------------------------|------------------|
254+
| <a name="provider_azapi"></a> [azapi](#provider\_azapi) | >= 1.4.0, < 2.0 |
252255
| <a name="provider_azurerm"></a> [azurerm](#provider\_azurerm) | >= 3.47.0, < 4.0 |
256+
| <a name="provider_null"></a> [null](#provider\_null) | >= 3.0 |
253257
| <a name="provider_tls"></a> [tls](#provider\_tls) | >= 3.1 |
254258

255259
## Modules
@@ -260,12 +264,14 @@ No modules.
260264

261265
| Name | Type |
262266
|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|
267+
| [azapi_update_resource.aks_cluster_post_create](https://registry.terraform.io/providers/Azure/azapi/latest/docs/resources/update_resource) | resource |
263268
| [azurerm_kubernetes_cluster.main](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) | resource |
264269
| [azurerm_kubernetes_cluster_node_pool.node_pool](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster_node_pool) | resource |
265270
| [azurerm_log_analytics_solution.main](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/log_analytics_solution) | resource |
266271
| [azurerm_log_analytics_workspace.main](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/log_analytics_workspace) | resource |
267272
| [azurerm_role_assignment.acr](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/role_assignment) | resource |
268273
| [azurerm_role_assignment.network_contributor](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/role_assignment) | resource |
274+
| [null_resource.kubernetes_version_keeper](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
269275
| [tls_private_key.ssh](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key) | resource |
270276
| [azurerm_resource_group.main](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source |
271277

main.tf

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ resource "azurerm_kubernetes_cluster" "main" {
359359
}
360360

361361
lifecycle {
362+
ignore_changes = [kubernetes_version]
363+
362364
precondition {
363365
condition = (var.client_id != "" && var.client_secret != "") || (var.identity_type != "")
364366
error_message = "Either `client_id` and `client_secret` or `identity_type` must be set."
@@ -391,6 +393,27 @@ resource "azurerm_kubernetes_cluster" "main" {
391393
}
392394
}
393395

396+
resource "null_resource" "kubernetes_version_keeper" {
397+
triggers = {
398+
version = var.kubernetes_version
399+
}
400+
}
401+
402+
resource "azapi_update_resource" "aks_cluster_post_create" {
403+
type = "Microsoft.ContainerService/managedClusters@2023-01-02-preview"
404+
body = jsonencode({
405+
properties = {
406+
kubernetesVersion = var.kubernetes_version
407+
}
408+
})
409+
resource_id = azurerm_kubernetes_cluster.main.id
410+
411+
lifecycle {
412+
ignore_changes = all
413+
replace_triggered_by = [null_resource.kubernetes_version_keeper.id]
414+
}
415+
}
416+
394417
resource "azurerm_kubernetes_cluster_node_pool" "node_pool" {
395418
for_each = var.node_pools
396419

@@ -514,6 +537,8 @@ resource "azurerm_kubernetes_cluster_node_pool" "node_pool" {
514537
}
515538
}
516539

540+
depends_on = [azapi_update_resource.aks_cluster_post_create]
541+
517542
lifecycle {
518543
precondition {
519544
condition = var.agents_type == "VirtualMachineScaleSets"

versions.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@ terraform {
22
required_version = ">= 1.3"
33

44
required_providers {
5+
azapi = {
6+
source = "Azure/azapi"
7+
version = ">= 1.4.0, < 2.0"
8+
}
59
azurerm = {
610
source = "hashicorp/azurerm"
711
version = ">= 3.47.0, < 4.0"
812
}
13+
null = {
14+
source = "hashicorp/null"
15+
version = ">= 3.0"
16+
}
917
tls = {
1018
source = "hashicorp/tls"
1119
version = ">= 3.1"

0 commit comments

Comments
 (0)