You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AKS集成KeyVault:Terraform azurerm 2.75.0插件配置报错求助

问题原因

你使用的Terraform AzureRM Provider 2.75.0版本不支持key_vault_secrets_provider这个add-on配置块——该配置块是在AzureRM Provider 3.0.0及以上版本才正式引入的,用于直接管理AKS的Azure Key Vault Secrets Provider插件。

解决方案

有两种可行的解决方式,根据你的环境需求选择:

方案一:升级AzureRM Provider版本到3.x以上

这是最直接的方式,升级后可以直接通过addon_profile配置插件:

  1. 更新Provider版本约束
    修改Terraform配置中的provider版本声明:
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">=3.0.0" # 推荐使用稳定的新版本,比如3.70.0
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = "=2.6.0"
    }
  }
}
  1. 在AKS的addon_profile中添加key_vault_secrets_provider块
    修改azurerm_kubernetes_cluster资源的addon_profile部分,加入以下配置:
addon_profile {
  ingress_application_gateway {
    enabled      = true
    gateway_name = var.appgw_name
    subnet_id    = var.appgw_subnet_id
  }

  oms_agent {
    enabled                    = "true"
    log_analytics_workspace_id = azurerm_log_analytics_workspace.aks.id
  }
  http_application_routing {
    enabled = "false"
  }

  # 添加Key Vault Secrets Provider配置
  key_vault_secrets_provider {
    enabled = true
    secret_rotation_enabled = true
  }
}

注意:升级到3.x版本后,部分AzureRM资源的语法可能有变更,需根据官方提示调整配置(若遇到兼容性问题)。

方案二:不升级Provider,通过Helm部署插件

如果无法升级Provider,可以使用Terraform的Helm Provider直接部署Azure Key Vault Secrets Provider插件:

  1. 添加Helm Provider配置
    在Terraform配置中加入Helm Provider的声明和配置:
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.75.0"
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = "=2.6.0"
    }
    helm = {
      source  = "hashicorp/helm"
      version = ">=2.0.0"
    }
  }
}

provider "helm" {
  kubernetes {
    host                   = azurerm_kubernetes_cluster.aks.kube_config.0.host
    client_certificate     = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate)
    client_key             = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.client_key)
    cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate)
  }
}
  1. 部署Helm Chart
    添加helm_release资源来部署插件:
resource "helm_release" "akv_secrets_provider" {
  name       = "csi-secrets-store-provider-azure"
  repository = "https://azure.github.io/secrets-store-csi-driver-provider-azure/charts"
  chart      = "csi-secrets-store-provider-azure"
  namespace  = "kube-system"

  # 启用密钥自动旋转
  set {
    name  = "secrets-store-csi-driver.enableSecretRotation"
    value = "true"
  }
}
额外说明

你已经为AKS服务主体配置KeyVault访问策略的步骤是正确的,确保该服务主体的object_id确实指向AKS的托管服务主体或你指定的服务账户即可。

内容的提问来源于stack exchange,提问作者biswajit sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:24:59