【发布时间】:2021-10-16 06:25:46
【问题描述】:
我正在尝试使用 Terraform 的 azurerm_kubernetes_cluster 升级默认节点池 k8s 版本,但它告诉我没有什么可以改变的。以下是相关细节:
tfstate 文件(已编辑,从 Terraform Cloud 中提取):
{
"version": 4,
"terraform_version": "1.0.2",
"resources": [
{
"mode": "managed",
"type": "azurerm_kubernetes_cluster",
"name": "aks",
"provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"default_node_pool": [
{
"orchestrator_version": "1.19.7", // tfstate shows 1.19.7
"type": "VirtualMachineScaleSets"
}
],
"kubernetes_version": "1.20.7"
}
}
]
}
]
}
资源定义:
resource "azurerm_kubernetes_cluster" "aks" {
.
.
.
kubernetes_version = local.aks.kubernetes_version
default_node_pool {
name = local.aks.default_node_pool.name
vm_size = local.aks.default_node_pool.vm_size
node_count = local.aks.default_node_pool.node_count
orchestrator_version = local.aks.default_node_pool.orchestrator_version
}
.
.
.
}
变量:
variable "aks" {
description = "Kubernetes Service values"
type = object({
name = string
dns_prefix = optional(string)
kubernetes_version = optional(string)
default_node_pool = object({
name = optional(string)
vm_size = optional(string)
node_count = optional(number)
orchestrator_version = optional(string)
})
identity_type = optional(string)
})
}
locals {
aks = defaults(var.aks, {
dns_prefix = var.aks.name
kubernetes_version = "1.20.7"
default_node_pool = {
name = "agentpool"
vm_size = "Standard_D4s_v3"
node_count = 3
orchestrator_version = "1.20.7"
}
})
}
指定kubernetes_version 有助于升级 Azure 中的 k8s 控制计划,但默认节点池没有更新。经过一番研究,我找到了orchestrator_version,据我了解,这应该升级虚拟机规模集的 k8s 版本。
当我运行terraform plan 时,它告诉我“您的基础架构与配置匹配”,即使 tfstate 清楚地将 orchestrator_version 显示为“1.19.7”,并且我的变量(我也尝试过硬编码)设置为“1.20.7”。
为什么 Terraform / azurerm_kubernetes_cluster 不能识别 orchestrator_version 变化?
【问题讨论】:
-
defaults函数即使在 1.0 中也是实验性功能的一部分。您是否在任何地方启用了该功能?它不存在于您问题的配置中。 -
我已经启用了,是的。为了简洁,我没有在这里包含它
标签: terraform terraform-provider-azure azure-rm